diff --git a/src/main/java/dk/camelot64/kickc/model/Comment.java b/src/main/java/dk/camelot64/kickc/model/Comment.java index 4700a25b3..9a9bc1442 100644 --- a/src/main/java/dk/camelot64/kickc/model/Comment.java +++ b/src/main/java/dk/camelot64/kickc/model/Comment.java @@ -9,6 +9,11 @@ public class Comment { private String comment; + /** The index of the hidden parser token containing the comment. + * Used to prevent comments from being included multiple times. + */ + private int tokenIndex; + public Comment(String comment) { this.comment = comment; } @@ -17,4 +22,11 @@ public class Comment { return comment; } + public int getTokenIndex() { + return tokenIndex; + } + + public void setTokenIndex(int tokenIndex) { + this.tokenIndex = tokenIndex; + } } diff --git a/src/main/java/dk/camelot64/kickc/model/Program.java b/src/main/java/dk/camelot64/kickc/model/Program.java index 72c01dd0d..06aa74f5d 100644 --- a/src/main/java/dk/camelot64/kickc/model/Program.java +++ b/src/main/java/dk/camelot64/kickc/model/Program.java @@ -28,6 +28,8 @@ public class Program { private AsmProgram asm; /** Resource files that should be copied to the output folder to be compiled with the generated ASM. */ private List asmResourceFiles; + /** Comments for the (main) file. */ + private List fileComments; /** The log containing information about the compilation process. */ private CompileLog log; @@ -68,6 +70,14 @@ public class Program { this.asmResourceFiles = new ArrayList<>(); } + public List getFileComments() { + return fileComments; + } + + public void setFileComments(List fileComments) { + this.fileComments = fileComments; + } + public List getImportPaths() { return importPaths; } diff --git a/src/main/java/dk/camelot64/kickc/parser/KickC.g4 b/src/main/java/dk/camelot64/kickc/parser/KickC.g4 index f49f1ddb5..f31a9e1ae 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickC.g4 +++ b/src/main/java/dk/camelot64/kickc/parser/KickC.g4 @@ -212,6 +212,8 @@ fragment NAME_START : [a-zA-Z_]; fragment NAME_CHAR : [a-zA-Z0-9_]; ASMREL: '!' NAME_CHAR* [+-]+ ; -WS : [ \t\r\n\u00a0]+ -> skip ; -COMMENT_LINE : '//' ~[\r\n]* -> channel(HIDDEN); -COMMENT_BLOCK : '/*' .*? '*/' -> channel(HIDDEN); \ No newline at end of file +// Add white space to the hidden channel 1 +WS : [ \t\r\n\u00a0]+ -> channel(1); +// Add comments to the hidden channel 2 +COMMENT_LINE : '//' ~[\r\n]* -> channel(2); +COMMENT_BLOCK : '/*' .*? '*/' -> channel(2); \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java index f986c3a1c..62d0934eb 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java @@ -459,7 +459,7 @@ public class KickCLexer extends Lexer { "\u0385\3\2\2\2\u0385\u0386\b_\3\2\u0386\u00be\3\2\2\2!\2\u02a7\u02af\u02ca"+ "\u02d0\u02d2\u02db\u02e8\u02ec\u02f1\u02f8\u02fd\u0304\u0309\u0310\u0317"+ "\u031c\u0323\u0328\u032f\u0335\u0337\u033c\u0343\u0348\u0354\u035f\u0365"+ - "\u036a\u0374\u037f\4\b\2\2\2\3\2"; + "\u036a\u0374\u037f\4\2\3\2\2\4\2"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java index dd5c495c5..bb2678532 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java @@ -22,6 +22,7 @@ import org.antlr.v4.runtime.tree.TerminalNode; import java.io.File; import java.nio.file.Path; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Stack; import java.util.regex.Matcher; @@ -75,6 +76,10 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { @Override public Void visitFile(KickCParser.FileContext ctx) { + if(program.getFileComments()==null) { + // Only set program file level comments for the first file. + program.setFileComments(getCommentsFile(ctx)); + } this.visit(ctx.importSeq()); this.visit(ctx.declSeq()); return null; @@ -114,7 +119,7 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { String name = ctx.NAME().getText(); Procedure procedure = getCurrentSymbols().addProcedure(name, type); addDirectives(procedure, ctx.directive()); - procedure.setComments(getComments(ctx)); + procedure.setComments(getCommentsSymbol(ctx)); scopeStack.push(procedure); Label procExit = procedure.addLabel(SymbolRef.PROCEXIT_BLOCK_NAME); VariableUnversioned returnVar = null; @@ -144,26 +149,6 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { return null; } - /** - * Find comments preceding the passed context - * @param ctx The parse context to examine - * @return The comments preceding the context - */ - private List getComments(ParserRuleContext ctx) { - List comments = new ArrayList<>(); - List hiddenTokensToLeft = tokenStream.getHiddenTokensToLeft(ctx.start.getTokenIndex()); - if(hiddenTokensToLeft!=null) { - for(Token hiddenToken : hiddenTokensToLeft) { - String text = hiddenToken.getText(); - if(text.startsWith("//")) { - text = text.substring(2); - } - Comment comment = new Comment(text); - comments.add(comment); - } - } - return comments; - } @Override public List visitParameterListDecl(KickCParser.ParameterListDeclContext ctx) { @@ -326,7 +311,7 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { } if(lValue.isDeclaredConstant()) { // Add comments to constant - lValue.setComments(getComments(ctx)); + lValue.setComments(getCommentsSymbol(ctx)); } KickCParser.ExprContext initializer = ctx.expr(); if(initializer != null) { @@ -929,6 +914,100 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { throw new CompileError("Error! Unhandled symbol " + symbol.toString(program)); } + /** The hidden lexer channel containing whitespace. */ + private static final int CHANNEL_WHITESPACE = 1; + /** The hidden lexer channel containing comments. */ + private static final int CHANNEL_COMMENTS = 2; + + /** + * Find all comments preceding the passed context. + * Group the comments into blocks each time an empty line (double newline) is encountered + * + * @param ctx The parse context to examine + * @return The comment blocks preceding the context + */ + private List> getCommentBlocks(ParserRuleContext ctx) { + List> commentBlocks = new ArrayList<>(); + List comments = new ArrayList<>(); + List hiddenTokens = tokenStream.getHiddenTokensToLeft(ctx.start.getTokenIndex()); + if(hiddenTokens != null) { + for(Token hiddenToken : hiddenTokens) { + if(hiddenToken.getChannel() == CHANNEL_WHITESPACE) { + String text = hiddenToken.getText(); + long newlineCount = text.chars().filter(ch -> ch == '\n').count(); + if(newlineCount > 1 && comments.size()>0) { + // Create new comment block + commentBlocks.add(comments); + comments = new ArrayList<>(); + } + } else if(hiddenToken.getChannel() == CHANNEL_COMMENTS) { + String text = hiddenToken.getText(); + if(text.startsWith("//")) { + text = text.substring(2); + } + Comment comment = new Comment(text); + comment.setTokenIndex(hiddenToken.getTokenIndex()); + comments.add( comment); + } + } + } + if(comments.size()>0) { + commentBlocks.add(comments); + } + return commentBlocks; + } + + /** Set containing the token index of all comment blocks that have already been used. */ + HashSet usedCommentTokenIndices = new HashSet<>(); + + /** + * Ensures that the comments have not already been "used" in another context. + * + * @param candidate The comments to examine + * @return The comments if they are unused. An empty comment if they had already been used. + */ + private List ensureUnusedComments(List candidate) { + int tokenIndex = candidate.get(0).getTokenIndex(); + if(usedCommentTokenIndices.contains(tokenIndex)) { + // Comment was already used - Return an empty list + return new ArrayList<>(); + } else { + // Comment unused - Mark as used and return it + usedCommentTokenIndices.add(tokenIndex); + return candidate; + } + } + + /** + * Find the first comments preceding the passed context (search from start until meeting a double newline). + * Only returns comments if they have not already been "used" by another call. + * + * @param ctx The parse context to examine + * @return The first comments preceding the context + */ + private List getCommentsFile(ParserRuleContext ctx) { + List> commentBlocks = getCommentBlocks(ctx); + if(commentBlocks.size()==0) { + return new ArrayList<>(); + } + return ensureUnusedComments(commentBlocks.get(0)); + } + + /** + * Find comments immediately preceding the passed context (search from end until meeting a double newline) + * Only returns comments if they have not already been "used" by another call. + * + * @param ctx The parse context to examine + * @return The comments immediately preceding the context + */ + private List getCommentsSymbol(ParserRuleContext ctx) { + List> commentBlocks = getCommentBlocks(ctx); + if(commentBlocks.size()==0) { + return new ArrayList<>(); + } + return ensureUnusedComments(commentBlocks.get(commentBlocks.size() - 1)); + } + /** A declaration directive. */ private interface Directive { } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java index baaf19a2b..f717502af 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java @@ -45,6 +45,10 @@ public class Pass4CodeGeneration { AsmProgram asm = new AsmProgram(); ScopeRef currentScope = ScopeRef.ROOT; + // Add file level comments + asm.startSegment(currentScope, null, "File Comments"); + addComments(asm, program.getFileComments()); + asm.startSegment(currentScope, null, "Basic Upstart"); asm.addLine(new AsmSetPc("Basic", AsmFormat.getAsmNumber(0x0801))); asm.addLine(new AsmBasicUpstart("bbegin")); diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 3cac0dd5c..6171de390 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -44,6 +44,16 @@ public class TestPrograms { AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false); } + @Test + public void testCommentsSingle() throws IOException, URISyntaxException { + compileAndCompare("test-comments-single"); + } + + @Test + public void testCommentsUsage() throws IOException, URISyntaxException { + compileAndCompare("test-comments-usage"); + } + @Test public void testBgBlack() throws IOException, URISyntaxException { compileAndCompare("bgblack"); @@ -163,7 +173,7 @@ public class TestPrograms { @Test public void testFastMultiply8() throws IOException, URISyntaxException { - compileAndCompare("examples/fastmultiply/fastmultiply8.kc"); + compileAndCompare("examples/fastmultiply/fastmultiply8"); } @Test diff --git a/src/test/kc/test-comments-single.kc b/src/test/kc/test-comments-single.kc new file mode 100644 index 000000000..f740f33e5 --- /dev/null +++ b/src/test/kc/test-comments-single.kc @@ -0,0 +1,30 @@ + // Tests that single-line comments are compiled correctly + // Has a bunch of comments that will be moved into the generated ASM + + // The C64 screen +const byte* SCREEN = $400; + + // One of the bytes used for addition +byte a = 'a'; + + // The program entry point +void main() { + byte i = 0; + // Do some sums + for(byte b: 0..10 ) { + // Output the result on the screen + SCREEN[i++] = sum(a, b); + } + +} + + // Adds up two bytes and returns the result + // a - the first byte + // b - the second byte + // Returns the sum pf the two bytes +byte sum( byte a, byte b) { + // calculate the sum + byte r = a+b; + // return the sum + return r; +} \ No newline at end of file diff --git a/src/test/kc/test-comments-usage.kc b/src/test/kc/test-comments-usage.kc new file mode 100644 index 000000000..251d9a469 --- /dev/null +++ b/src/test/kc/test-comments-usage.kc @@ -0,0 +1,8 @@ + // Tests that single-line comments are only included once in the output + +const byte* SCREEN = $400; + + // The program entry point +void main() { + *SCREEN = 'a'; +} diff --git a/src/test/ref/array-length-symbolic-min.asm b/src/test/ref/array-length-symbolic-min.asm index 03484ba0d..b0092af60 100644 --- a/src/test/ref/array-length-symbolic-min.asm +++ b/src/test/ref/array-length-symbolic-min.asm @@ -1,3 +1,4 @@ +// Illustrates symbolic array lengths .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/array-length-symbolic-min.log b/src/test/ref/array-length-symbolic-min.log index 63ec6d94d..1c6558e9d 100644 --- a/src/test/ref/array-length-symbolic-min.log +++ b/src/test/ref/array-length-symbolic-min.log @@ -136,58 +136,60 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::sub#2 main::sub#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates symbolic array lengths +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const SZ = $f -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main // Fills the array item by item with $is, where i is the item# and s is the sub# main: { .label sub = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta sub jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte[SZ#0]) items#0 + (byte) main::sub#2) ← (byte) main::sub#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG16 [6] *((const byte[SZ#0]) items#0 + (byte) main::sub#2) ← (byte) main::sub#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy sub tya sta items,y - //SEG16 [7] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuz1=_inc_vbuz1 + //SEG17 [7] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuz1=_inc_vbuz1 inc sub - //SEG17 [8] if((byte) main::sub#1!=(const byte) SZ#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::sub#1!=(const byte) SZ#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda sub cmp #SZ+1 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } items: .fill SZ, 0 @@ -203,54 +205,56 @@ Uplifting [main] best 263 combination reg byte x [ main::sub#2 main::sub#1 ] Uplifting [] best 263 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates symbolic array lengths +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const SZ = $f -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main // Fills the array item by item with $is, where i is the item# and s is the sub# main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte[SZ#0]) items#0 + (byte) main::sub#2) ← (byte) main::sub#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte[SZ#0]) items#0 + (byte) main::sub#2) ← (byte) main::sub#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta items,x - //SEG16 [7] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::sub#1!=(const byte) SZ#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::sub#1!=(const byte) SZ#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #SZ+1 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } items: .fill SZ, 0 @@ -302,39 +306,41 @@ reg byte x [ main::sub#2 main::sub#1 ] FINAL ASSEMBLER Score: 161 -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates symbolic array lengths +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const SZ = $f -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main // Fills the array item by item with $is, where i is the item# and s is the sub# main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte[SZ#0]) items#0 + (byte) main::sub#2) ← (byte) main::sub#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte[SZ#0]) items#0 + (byte) main::sub#2) ← (byte) main::sub#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta items,x - //SEG16 [7] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::sub#1!=(const byte) SZ#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::sub#1!=(const byte) SZ#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #SZ+1 bne b1 - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts } items: .fill SZ, 0 diff --git a/src/test/ref/array-length-symbolic.asm b/src/test/ref/array-length-symbolic.asm index ae79e6ec2..794721ad2 100644 --- a/src/test/ref/array-length-symbolic.asm +++ b/src/test/ref/array-length-symbolic.asm @@ -1,3 +1,4 @@ +// Illustrates symbolic array lengths .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/array-length-symbolic.log b/src/test/ref/array-length-symbolic.log index 81674dd13..9f2628584 100644 --- a/src/test/ref/array-length-symbolic.log +++ b/src/test/ref/array-length-symbolic.log @@ -243,30 +243,32 @@ Allocated zp ZP_BYTE:6 [ main::$2 ] Allocated zp ZP_BYTE:7 [ main::$3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates symbolic array lengths +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const ITEM_COUNT = 3 .const ITEM_SIZE = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main // Fills the array item by item with $is, where i is the item# and s is the sub# main: { .label _2 = 6 @@ -274,61 +276,61 @@ main: { .label sub = 5 .label cur_item = 3 .label item = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::cur_item#4 = (const byte[ITEM_COUNT#0*ITEM_SIZE#0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::cur_item#4 = (const byte[ITEM_COUNT#0*ITEM_SIZE#0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #items sta cur_item+1 - //SEG12 [5] phi (byte) main::item#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::item#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta item jmp b1 - //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG14 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG15 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG19 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta sub jmp b2 - //SEG19 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG20 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG20 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG21 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG23 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda item asl asl asl asl sta _2 - //SEG23 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 -- vbuz1=vbuz2_bor_vbuz3 + //SEG24 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 -- vbuz1=vbuz2_bor_vbuz3 lda _2 ora sub sta _3 - //SEG24 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG25 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 -- pbuz1_derefidx_vbuz2=vbuz3 lda _3 ldy sub sta (cur_item),y - //SEG25 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuz1=_inc_vbuz1 + //SEG26 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuz1=_inc_vbuz1 inc sub - //SEG26 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG27 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda sub cmp #ITEM_SIZE-1+1 bne b2_from_b2 jmp b3 - //SEG27 main::@3 + //SEG28 main::@3 b3: - //SEG28 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG29 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 -- pbuz1=pbuz1_plus_vbuc1 lda cur_item clc adc #ITEM_SIZE @@ -336,16 +338,16 @@ main: { bcc !+ inc cur_item+1 !: - //SEG29 [13] (byte) main::item#1 ← ++ (byte) main::item#4 -- vbuz1=_inc_vbuz1 + //SEG30 [13] (byte) main::item#1 ← ++ (byte) main::item#4 -- vbuz1=_inc_vbuz1 inc item - //SEG30 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG31 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda item cmp #ITEM_COUNT-1+1 bne b1_from_b3 jmp breturn - //SEG31 main::@return + //SEG32 main::@return breturn: - //SEG32 [15] return + //SEG33 [15] return rts } items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 @@ -373,81 +375,83 @@ Uplifting [] best 4418 combination Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::cur_item#4 main::cur_item#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates symbolic array lengths +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const ITEM_COUNT = 3 .const ITEM_SIZE = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main // Fills the array item by item with $is, where i is the item# and s is the sub# main: { .label cur_item = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::cur_item#4 = (const byte[ITEM_COUNT#0*ITEM_SIZE#0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::cur_item#4 = (const byte[ITEM_COUNT#0*ITEM_SIZE#0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #items sta cur_item+1 - //SEG12 [5] phi (byte) main::item#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::item#4 = (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::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG14 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG15 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG19 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG19 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG20 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG20 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG21 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 + //SEG23 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 txa asl asl asl asl - //SEG23 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 -- vbuaa=vbuaa_bor_vbuyy + //SEG24 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 -- vbuaa=vbuaa_bor_vbuyy sty $ff ora $ff - //SEG24 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 -- pbuz1_derefidx_vbuyy=vbuaa + //SEG25 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 -- pbuz1_derefidx_vbuyy=vbuaa sta (cur_item),y - //SEG25 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuyy=_inc_vbuyy + //SEG26 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuyy=_inc_vbuyy iny - //SEG26 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG27 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #ITEM_SIZE-1+1 bne b2_from_b2 jmp b3 - //SEG27 main::@3 + //SEG28 main::@3 b3: - //SEG28 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG29 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 -- pbuz1=pbuz1_plus_vbuc1 lda cur_item clc adc #ITEM_SIZE @@ -455,15 +459,15 @@ main: { bcc !+ inc cur_item+1 !: - //SEG29 [13] (byte) main::item#1 ← ++ (byte) main::item#4 -- vbuxx=_inc_vbuxx + //SEG30 [13] (byte) main::item#1 ← ++ (byte) main::item#4 -- vbuxx=_inc_vbuxx inx - //SEG30 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG31 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #ITEM_COUNT-1+1 bne b1_from_b3 jmp breturn - //SEG31 main::@return + //SEG32 main::@return breturn: - //SEG32 [15] return + //SEG33 [15] return rts } items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 @@ -537,62 +541,64 @@ reg byte a [ main::$3 ] FINAL ASSEMBLER Score: 3416 -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates symbolic array lengths +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const ITEM_COUNT = 3 .const ITEM_SIZE = 5 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main // Fills the array item by item with $is, where i is the item# and s is the sub# main: { .label cur_item = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte*) main::cur_item#4 = (const byte[ITEM_COUNT#0*ITEM_SIZE#0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte*) main::cur_item#4 = (const byte[ITEM_COUNT#0*ITEM_SIZE#0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #items sta cur_item+1 - //SEG12 [5] phi (byte) main::item#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::item#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG14 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy - //SEG16 main::@1 + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG15 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG18 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG18 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG19 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG20 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG21 main::@2 + //SEG20 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG21 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG22 main::@2 b2: - //SEG22 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 + //SEG23 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 txa asl asl asl asl - //SEG23 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 -- vbuaa=vbuaa_bor_vbuyy + //SEG24 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 -- vbuaa=vbuaa_bor_vbuyy sty $ff ora $ff - //SEG24 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 -- pbuz1_derefidx_vbuyy=vbuaa + //SEG25 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 -- pbuz1_derefidx_vbuyy=vbuaa sta (cur_item),y - //SEG25 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuyy=_inc_vbuyy + //SEG26 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 -- vbuyy=_inc_vbuyy iny - //SEG26 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG27 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #ITEM_SIZE-1+1 bne b2 - //SEG27 main::@3 - //SEG28 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG28 main::@3 + //SEG29 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 -- pbuz1=pbuz1_plus_vbuc1 lda cur_item clc adc #ITEM_SIZE @@ -600,13 +606,13 @@ main: { bcc !+ inc cur_item+1 !: - //SEG29 [13] (byte) main::item#1 ← ++ (byte) main::item#4 -- vbuxx=_inc_vbuxx + //SEG30 [13] (byte) main::item#1 ← ++ (byte) main::item#4 -- vbuxx=_inc_vbuxx inx - //SEG30 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG31 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #ITEM_COUNT-1+1 bne b1 - //SEG31 main::@return - //SEG32 [15] return + //SEG32 main::@return + //SEG33 [15] return rts } items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 diff --git a/src/test/ref/arrays-init.log b/src/test/ref/arrays-init.log index b0ce21dda..d930342ca 100644 --- a/src/test/ref/arrays-init.log +++ b/src/test/ref/arrays-init.log @@ -116,44 +116,45 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte[3]) b#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte[3]) b#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 lda #'c' sta b - //SEG10 [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG11 [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0) -- _deref_pbuc1=_deref_pbuc2 lda b sta SCREEN - //SEG11 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 + //SEG12 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 lda c+1 sta SCREEN+1 - //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- _deref_pbuc1=_deref_pbuc2 + //SEG13 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- _deref_pbuc1=_deref_pbuc2 lda d+2 sta SCREEN+2 jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [8] return + //SEG15 [8] return rts } b: .fill 3, 0 @@ -174,44 +175,45 @@ Uplifting [main] best 51 combination Uplifting [] best 51 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte[3]) b#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte[3]) b#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 lda #'c' sta b - //SEG10 [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG11 [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0) -- _deref_pbuc1=_deref_pbuc2 lda b sta SCREEN - //SEG11 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 + //SEG12 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 lda c+1 sta SCREEN+1 - //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- _deref_pbuc1=_deref_pbuc2 + //SEG13 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- _deref_pbuc1=_deref_pbuc2 lda d+2 sta SCREEN+2 jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [8] return + //SEG15 [8] return rts } b: .fill 3, 0 @@ -258,33 +260,34 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 32 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte[3]) b#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte[3]) b#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 lda #'c' sta b - //SEG10 [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG11 [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0) -- _deref_pbuc1=_deref_pbuc2 sta SCREEN - //SEG11 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 + //SEG12 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 lda c+1 sta SCREEN+1 - //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- _deref_pbuc1=_deref_pbuc2 + //SEG13 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- _deref_pbuc1=_deref_pbuc2 lda d+2 sta SCREEN+2 - //SEG13 main::@return - //SEG14 [8] return + //SEG14 main::@return + //SEG15 [8] return rts } b: .fill 3, 0 diff --git a/src/test/ref/asm-clobber.asm b/src/test/ref/asm-clobber.asm index 170739e25..085142d87 100644 --- a/src/test/ref/asm-clobber.asm +++ b/src/test/ref/asm-clobber.asm @@ -1,3 +1,4 @@ +// Tests that inline ASM clobbering is taken into account when assigning registers .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/asm-clobber.log b/src/test/ref/asm-clobber.log index 621d895e9..a28af1968 100644 --- a/src/test/ref/asm-clobber.log +++ b/src/test/ref/asm-clobber.log @@ -273,127 +273,129 @@ Allocated zp ZP_BYTE:4 [ main::k#4 main::k#1 ] Allocated zp ZP_BYTE:5 [ main::l#2 main::l#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that inline ASM clobbering is taken into account when assigning registers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label j = 3 .label i = 2 .label l = 5 .label k = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG13 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG21 [7] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda j ldy i sta SCREEN,y - //SEG21 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG22 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG22 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$65 bne b2_from_b2 jmp b5 - //SEG23 main::@5 + //SEG24 main::@5 b5: - //SEG24 [10] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 + //SEG25 [10] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG25 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG26 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$65 bne b1_from_b5 - //SEG26 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3] + //SEG27 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3] b3_from_b5: - //SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 + //SEG28 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 lda #0 sta k jmp b3 - //SEG28 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3] + //SEG29 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3] b3_from_b7: - //SEG29 [12] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy + //SEG30 [12] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy jmp b3 - //SEG30 main::@3 + //SEG31 main::@3 b3: - //SEG31 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG32 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: - //SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@4#0] -- vbuz1=vbuc1 + //SEG33 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@4#0] -- vbuz1=vbuc1 lda #0 sta l jmp b4 - //SEG33 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4] + //SEG34 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4] b4_from_b4: - //SEG34 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy + //SEG35 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy jmp b4 - //SEG35 main::@4 + //SEG36 main::@4 b4: - //SEG36 asm { eor#$55 tax } + //SEG37 asm { eor#$55 tax } eor #$55 tax - //SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG38 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda l ldy k sta SCREEN,y - //SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuz1=_inc_vbuz1 + //SEG39 [16] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG40 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #$65 bne b4_from_b4 jmp b7 - //SEG40 main::@7 + //SEG41 main::@7 b7: - //SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 -- vbuz1=_inc_vbuz1 + //SEG42 [18] (byte) main::k#1 ← ++ (byte) main::k#4 -- vbuz1=_inc_vbuz1 inc k - //SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG43 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda k cmp #$65 bne b3_from_b7 jmp breturn - //SEG43 main::@return + //SEG44 main::@return breturn: - //SEG44 [20] return + //SEG45 [20] return rts } @@ -422,116 +424,118 @@ Uplifting [main] best 6638 combination zp ZP_BYTE:5 [ main::l#2 main::l#1 ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ main::l#2 main::l#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that inline ASM clobbering is taken into account when assigning registers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label l = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG13 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuaa=vbuc1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuaa=vbuc1 lda #0 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG21 [7] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG21 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuaa=_inc_vbuaa + //SEG22 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG22 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuaa_neq_vbuc1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuaa_neq_vbuc1_then_la1 cmp #$65 bne b2_from_b2 jmp b5 - //SEG23 main::@5 + //SEG24 main::@5 b5: - //SEG24 [10] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx + //SEG25 [10] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx inx - //SEG25 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG26 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1_from_b5 - //SEG26 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3] + //SEG27 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3] b3_from_b5: - //SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@3#0] -- vbuyy=vbuc1 + //SEG28 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@3#0] -- vbuyy=vbuc1 ldy #0 jmp b3 - //SEG28 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3] + //SEG29 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3] b3_from_b7: - //SEG29 [12] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy + //SEG30 [12] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy jmp b3 - //SEG30 main::@3 + //SEG31 main::@3 b3: - //SEG31 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG32 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: - //SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@4#0] -- vbuz1=vbuc1 + //SEG33 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@4#0] -- vbuz1=vbuc1 lda #0 sta l jmp b4 - //SEG33 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4] + //SEG34 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4] b4_from_b4: - //SEG34 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy + //SEG35 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy jmp b4 - //SEG35 main::@4 + //SEG36 main::@4 b4: - //SEG36 asm { eor#$55 tax } + //SEG37 asm { eor#$55 tax } eor #$55 tax - //SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG38 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda l sta SCREEN,y - //SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuz1=_inc_vbuz1 + //SEG39 [16] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG40 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #$65 bne b4_from_b4 jmp b7 - //SEG40 main::@7 + //SEG41 main::@7 b7: - //SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 -- vbuyy=_inc_vbuyy + //SEG42 [18] (byte) main::k#1 ← ++ (byte) main::k#4 -- vbuyy=_inc_vbuyy iny - //SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + //SEG43 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 cpy #$65 bne b3_from_b7 jmp breturn - //SEG43 main::@return + //SEG44 main::@return breturn: - //SEG44 [20] return + //SEG45 [20] return rts } @@ -615,85 +619,87 @@ zp ZP_BYTE:2 [ main::l#2 main::l#1 ] FINAL ASSEMBLER Score: 4676 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that inline ASM clobbering is taken into account when assigning registers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label l = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG13 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG14 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuaa=vbuc1 + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuaa=vbuc1 lda #0 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG19 main::@2 + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG19 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG20 main::@2 b2: - //SEG20 [7] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG21 [7] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG21 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuaa=_inc_vbuaa + //SEG22 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG22 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuaa_neq_vbuc1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuaa_neq_vbuc1_then_la1 cmp #$65 bne b2 - //SEG23 main::@5 - //SEG24 [10] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx + //SEG24 main::@5 + //SEG25 [10] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx inx - //SEG25 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG26 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1 - //SEG26 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3] - //SEG27 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@3#0] -- vbuyy=vbuc1 + //SEG27 [12] phi from main::@5 to main::@3 [phi:main::@5->main::@3] + //SEG28 [12] phi (byte) main::k#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@3#0] -- vbuyy=vbuc1 ldy #0 - //SEG28 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3] - //SEG29 [12] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy - //SEG30 main::@3 + //SEG29 [12] phi from main::@7 to main::@3 [phi:main::@7->main::@3] + //SEG30 [12] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy + //SEG31 main::@3 b3: - //SEG31 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG32 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@4#0] -- vbuz1=vbuc1 + //SEG32 [13] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG33 [13] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@4#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG33 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4] - //SEG34 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy - //SEG35 main::@4 + //SEG34 [13] phi from main::@4 to main::@4 [phi:main::@4->main::@4] + //SEG35 [13] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@4->main::@4#0] -- register_copy + //SEG36 main::@4 b4: - //SEG36 asm { eor#$55 tax } + //SEG37 asm { eor#$55 tax } eor #$55 tax - //SEG37 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG38 [15] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda l sta SCREEN,y - //SEG38 [16] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuz1=_inc_vbuz1 + //SEG39 [16] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG39 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG40 [17] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #$65 bne b4 - //SEG40 main::@7 - //SEG41 [18] (byte) main::k#1 ← ++ (byte) main::k#4 -- vbuyy=_inc_vbuyy + //SEG41 main::@7 + //SEG42 [18] (byte) main::k#1 ← ++ (byte) main::k#4 -- vbuyy=_inc_vbuyy iny - //SEG42 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 + //SEG43 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuyy_neq_vbuc1_then_la1 cpy #$65 bne b3 - //SEG43 main::@return - //SEG44 [20] return + //SEG44 main::@return + //SEG45 [20] return rts } diff --git a/src/test/ref/assignment-chained.asm b/src/test/ref/assignment-chained.asm index 88c0f5380..a512994b5 100644 --- a/src/test/ref/assignment-chained.asm +++ b/src/test/ref/assignment-chained.asm @@ -1,7 +1,7 @@ +// Tests that chained assignments work as intended .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Tests that chained assignments work as intended main: { .label screen = $400 lda #'c' diff --git a/src/test/ref/assignment-chained.log b/src/test/ref/assignment-chained.log index dd412eeb5..ca6c9b2dd 100644 --- a/src/test/ref/assignment-chained.log +++ b/src/test/ref/assignment-chained.log @@ -112,55 +112,56 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::a#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that chained assignments work as intended +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Tests that chained assignments work as intended +//SEG9 main main: { .label screen = $400 .label a = 2 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 lda #'c' sta screen - //SEG10 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) 'c' -- _deref_pbuc1=vbuc2 lda #'c' sta screen+$28 - //SEG11 [6] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'm' -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'm' -- _deref_pbuc1=vbuc2 lda #'m' sta screen+1 - //SEG12 [7] (byte) main::a#1 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=_deref_pbuc1 + //SEG13 [7] (byte) main::a#1 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=_deref_pbuc1 lda screen+1 sta a - //SEG13 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) main::a#1 -- _deref_pbuc1=vbuz1 + //SEG14 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) main::a#1 -- _deref_pbuc1=vbuz1 lda a sta screen+$29 - //SEG14 [9] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 1+(byte) 'l' -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 1+(byte) 'l' -- _deref_pbuc1=vbuc2 lda #1+'l' sta screen+2 - //SEG15 [10] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 42) ← (byte) 'l' -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 42) ← (byte) 'l' -- _deref_pbuc1=vbuc2 lda #'l' sta screen+$2a jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [11] return + //SEG18 [11] return rts } @@ -180,52 +181,53 @@ Uplifting [main] best 59 combination reg byte a [ main::a#1 ] Uplifting [] best 59 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that chained assignments work as intended +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Tests that chained assignments work as intended +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 lda #'c' sta screen - //SEG10 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) 'c' -- _deref_pbuc1=vbuc2 lda #'c' sta screen+$28 - //SEG11 [6] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'm' -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'm' -- _deref_pbuc1=vbuc2 lda #'m' sta screen+1 - //SEG12 [7] (byte) main::a#1 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=_deref_pbuc1 + //SEG13 [7] (byte) main::a#1 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=_deref_pbuc1 lda screen+1 - //SEG13 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) main::a#1 -- _deref_pbuc1=vbuaa + //SEG14 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) main::a#1 -- _deref_pbuc1=vbuaa sta screen+$29 - //SEG14 [9] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 1+(byte) 'l' -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 1+(byte) 'l' -- _deref_pbuc1=vbuc2 lda #1+'l' sta screen+2 - //SEG15 [10] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 42) ← (byte) 'l' -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 42) ← (byte) 'l' -- _deref_pbuc1=vbuc2 lda #'l' sta screen+$2a jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [11] return + //SEG18 [11] return rts } @@ -267,40 +269,41 @@ reg byte a [ main::a#1 ] FINAL ASSEMBLER Score: 38 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that chained assignments work as intended +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main -// Tests that chained assignments work as intended +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte) 'c' -- _deref_pbuc1=vbuc2 lda #'c' sta screen - //SEG10 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) 'c' -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) 'c' -- _deref_pbuc1=vbuc2 sta screen+$28 - //SEG11 [6] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'm' -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'm' -- _deref_pbuc1=vbuc2 lda #'m' sta screen+1 - //SEG12 [7] (byte) main::a#1 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=_deref_pbuc1 - //SEG13 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) main::a#1 -- _deref_pbuc1=vbuaa + //SEG13 [7] (byte) main::a#1 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=_deref_pbuc1 + //SEG14 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) main::a#1 -- _deref_pbuc1=vbuaa sta screen+$29 - //SEG14 [9] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 1+(byte) 'l' -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 1+(byte) 'l' -- _deref_pbuc1=vbuc2 lda #1+'l' sta screen+2 - //SEG15 [10] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 42) ← (byte) 'l' -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 42) ← (byte) 'l' -- _deref_pbuc1=vbuc2 lda #'l' sta screen+$2a - //SEG16 main::@return - //SEG17 [11] return + //SEG17 main::@return + //SEG18 [11] return rts } diff --git a/src/test/ref/assignment-compound.asm b/src/test/ref/assignment-compound.asm index 52233bd49..c3a720fdf 100644 --- a/src/test/ref/assignment-compound.asm +++ b/src/test/ref/assignment-compound.asm @@ -1,3 +1,4 @@ +// Test compound assignment operators .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" @@ -71,5 +72,4 @@ test: { sta cols,x jmp breturn } - // Test compound assignment operators ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0 diff --git a/src/test/ref/assignment-compound.log b/src/test/ref/assignment-compound.log index 1687cbba2..cc9fd699a 100644 --- a/src/test/ref/assignment-compound.log +++ b/src/test/ref/assignment-compound.log @@ -752,238 +752,239 @@ Allocated zp ZP_BYTE:2 [ test::a#11 ] Allocated zp ZP_BYTE:3 [ test::i#11 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test compound assignment operators +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen1 = $400 .label cols = $d800 .const GREEN = 5 .const RED = 2 .label screen2 = screen1+$28 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call test - //SEG11 [27] phi from main to test [phi:main->test] + //SEG11 [5] call test + //SEG12 [27] phi from main to test [phi:main->test] test_from_main: - //SEG12 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->test#0] -- vbuz1=vbuc1 + //SEG13 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->test#0] -- vbuz1=vbuc1 lda #0 sta test.i - //SEG13 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main->test#1] -- vbuz1=vbuc1 + //SEG14 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main->test#1] -- vbuz1=vbuc1 lda #3 sta test.a jsr test - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] call test - //SEG17 [27] phi from main::@1 to test [phi:main::@1->test] + //SEG17 [7] call test + //SEG18 [27] phi from main::@1 to test [phi:main::@1->test] test_from_b1: - //SEG18 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#0] -- vbuz1=vbuc1 + //SEG19 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#0] -- vbuz1=vbuc1 lda #1 sta test.i - //SEG19 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#1] -- vbuz1=vbuc1 + //SEG20 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#1] -- vbuz1=vbuc1 lda #3+1 sta test.a jsr test - //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [9] call test - //SEG23 [27] phi from main::@2 to test [phi:main::@2->test] + //SEG23 [9] call test + //SEG24 [27] phi from main::@2 to test [phi:main::@2->test] test_from_b2: - //SEG24 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@2->test#0] -- vbuz1=vbuc1 + //SEG25 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@2->test#0] -- vbuz1=vbuc1 lda #2 sta test.i - //SEG25 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@2->test#1] -- vbuz1=vbuc1 + //SEG26 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@2->test#1] -- vbuz1=vbuc1 lda #3+1-1 sta test.a jsr test - //SEG26 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG27 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG27 main::@3 + //SEG28 main::@3 b3: - //SEG28 [11] call test - //SEG29 [27] phi from main::@3 to test [phi:main::@3->test] + //SEG29 [11] call test + //SEG30 [27] phi from main::@3 to test [phi:main::@3->test] test_from_b3: - //SEG30 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@3->test#0] -- vbuz1=vbuc1 + //SEG31 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@3->test#0] -- vbuz1=vbuc1 lda #3 sta test.i - //SEG31 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6 [phi:main::@3->test#1] -- vbuz1=vbuc1 + //SEG32 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6 [phi:main::@3->test#1] -- vbuz1=vbuc1 lda #(3+1-1)*6 sta test.a jsr test - //SEG32 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG33 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG33 main::@4 + //SEG34 main::@4 b4: - //SEG34 [13] call test - //SEG35 [27] phi from main::@4 to test [phi:main::@4->test] + //SEG35 [13] call test + //SEG36 [27] phi from main::@4 to test [phi:main::@4->test] test_from_b4: - //SEG36 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@4->test#0] -- vbuz1=vbuc1 + //SEG37 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@4->test#0] -- vbuz1=vbuc1 lda #4 sta test.i - //SEG37 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@4->test#1] -- vbuz1=vbuc1 + //SEG38 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@4->test#1] -- vbuz1=vbuc1 lda #(3+1-1)*6/2 sta test.a jsr test - //SEG38 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG39 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG39 main::@5 + //SEG40 main::@5 b5: - //SEG40 [15] call test - //SEG41 [27] phi from main::@5 to test [phi:main::@5->test] + //SEG41 [15] call test + //SEG42 [27] phi from main::@5 to test [phi:main::@5->test] test_from_b5: - //SEG42 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@5->test#0] -- vbuz1=vbuc1 + //SEG43 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@5->test#0] -- vbuz1=vbuc1 lda #5 sta test.i - //SEG43 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@5->test#1] -- vbuz1=vbuc1 + //SEG44 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@5->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2) sta test.a jsr test - //SEG44 [16] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG45 [16] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG45 main::@6 + //SEG46 main::@6 b6: - //SEG46 [17] call test - //SEG47 [27] phi from main::@6 to test [phi:main::@6->test] + //SEG47 [17] call test + //SEG48 [27] phi from main::@6 to test [phi:main::@6->test] test_from_b6: - //SEG48 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@6->test#0] -- vbuz1=vbuc1 + //SEG49 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@6->test#0] -- vbuz1=vbuc1 lda #6 sta test.i - //SEG49 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@6->test#1] -- vbuz1=vbuc1 + //SEG50 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@6->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2 sta test.a jsr test - //SEG50 [18] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG51 [18] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: jmp b7 - //SEG51 main::@7 + //SEG52 main::@7 b7: - //SEG52 [19] call test - //SEG53 [27] phi from main::@7 to test [phi:main::@7->test] + //SEG53 [19] call test + //SEG54 [27] phi from main::@7 to test [phi:main::@7->test] test_from_b7: - //SEG54 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@7->test#0] -- vbuz1=vbuc1 + //SEG55 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@7->test#0] -- vbuz1=vbuc1 lda #7 sta test.i - //SEG55 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->test#1] -- vbuz1=vbuc1 + //SEG56 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1 sta test.a jsr test - //SEG56 [20] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG57 [20] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG57 main::@8 + //SEG58 main::@8 b8: - //SEG58 [21] call test - //SEG59 [27] phi from main::@8 to test [phi:main::@8->test] + //SEG59 [21] call test + //SEG60 [27] phi from main::@8 to test [phi:main::@8->test] test_from_b8: - //SEG60 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@8->test#0] -- vbuz1=vbuc1 + //SEG61 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@8->test#0] -- vbuz1=vbuc1 lda #8 sta test.i - //SEG61 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@8->test#1] -- vbuz1=vbuc1 + //SEG62 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@8->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1^6 sta test.a jsr test - //SEG62 [22] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG63 [22] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG63 main::@9 + //SEG64 main::@9 b9: - //SEG64 [23] call test - //SEG65 [27] phi from main::@9 to test [phi:main::@9->test] + //SEG65 [23] call test + //SEG66 [27] phi from main::@9 to test [phi:main::@9->test] test_from_b9: - //SEG66 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@9->test#0] -- vbuz1=vbuc1 + //SEG67 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@9->test#0] -- vbuz1=vbuc1 lda #9 sta test.i - //SEG67 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@9->test#1] -- vbuz1=vbuc1 + //SEG68 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@9->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1^6|1 sta test.a jsr test - //SEG68 [24] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG69 [24] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG69 main::@10 + //SEG70 main::@10 b10: - //SEG70 [25] call test - //SEG71 [27] phi from main::@10 to test [phi:main::@10->test] + //SEG71 [25] call test + //SEG72 [27] phi from main::@10 to test [phi:main::@10->test] test_from_b10: - //SEG72 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@10->test#0] -- vbuz1=vbuc1 + //SEG73 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@10->test#0] -- vbuz1=vbuc1 lda #$a sta test.i - //SEG73 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1&(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@10->test#1] -- vbuz1=vbuc1 + //SEG74 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1&(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@10->test#1] -- vbuz1=vbuc1 lda #(mod((3+1-1)*6/2,2)<<2>>1^6|1)&1 sta test.a jsr test jmp breturn - //SEG74 main::@return + //SEG75 main::@return breturn: - //SEG75 [26] return + //SEG76 [26] return rts } -//SEG76 test +//SEG77 test test: { .label a = 2 .label i = 3 - //SEG77 [28] *((const byte*) screen1#0 + (byte) test::i#11) ← (byte) test::a#11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) ← (byte) test::a#11 -- pbuc1_derefidx_vbuz1=vbuz2 lda a ldy i sta screen1,y - //SEG78 [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda ref,y sta screen2,y - //SEG79 [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + //SEG80 [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 ldy i lda ref,y cmp a beq b1 jmp b3 - //SEG80 test::@3 + //SEG81 test::@3 b3: - //SEG81 [31] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) RED#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) RED#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #RED sta cols,y jmp breturn - //SEG82 test::@return + //SEG83 test::@return breturn: - //SEG83 [32] return + //SEG84 [32] return rts - //SEG84 test::@1 + //SEG85 test::@1 b1: - //SEG85 [33] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #GREEN sta cols,y jmp breturn } - // Test compound assignment operators ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0 REGISTER UPLIFT POTENTIAL REGISTERS @@ -1013,221 +1014,222 @@ Attempting to uplift remaining variables inzp ZP_BYTE:2 [ test::a#11 ] Uplifting [test] best 250 combination zp ZP_BYTE:2 [ test::a#11 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test compound assignment operators +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen1 = $400 .label cols = $d800 .const GREEN = 5 .const RED = 2 .label screen2 = screen1+$28 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call test - //SEG11 [27] phi from main to test [phi:main->test] + //SEG11 [5] call test + //SEG12 [27] phi from main to test [phi:main->test] test_from_main: - //SEG12 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->test#0] -- vbuxx=vbuc1 + //SEG13 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->test#0] -- vbuxx=vbuc1 ldx #0 - //SEG13 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main->test#1] -- vbuz1=vbuc1 + //SEG14 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main->test#1] -- vbuz1=vbuc1 lda #3 sta test.a jsr test - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] call test - //SEG17 [27] phi from main::@1 to test [phi:main::@1->test] + //SEG17 [7] call test + //SEG18 [27] phi from main::@1 to test [phi:main::@1->test] test_from_b1: - //SEG18 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#0] -- vbuxx=vbuc1 + //SEG19 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#0] -- vbuxx=vbuc1 ldx #1 - //SEG19 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#1] -- vbuz1=vbuc1 + //SEG20 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#1] -- vbuz1=vbuc1 lda #3+1 sta test.a jsr test - //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [9] call test - //SEG23 [27] phi from main::@2 to test [phi:main::@2->test] + //SEG23 [9] call test + //SEG24 [27] phi from main::@2 to test [phi:main::@2->test] test_from_b2: - //SEG24 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@2->test#0] -- vbuxx=vbuc1 + //SEG25 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@2->test#0] -- vbuxx=vbuc1 ldx #2 - //SEG25 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@2->test#1] -- vbuz1=vbuc1 + //SEG26 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@2->test#1] -- vbuz1=vbuc1 lda #3+1-1 sta test.a jsr test - //SEG26 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG27 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG27 main::@3 + //SEG28 main::@3 b3: - //SEG28 [11] call test - //SEG29 [27] phi from main::@3 to test [phi:main::@3->test] + //SEG29 [11] call test + //SEG30 [27] phi from main::@3 to test [phi:main::@3->test] test_from_b3: - //SEG30 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@3->test#0] -- vbuxx=vbuc1 + //SEG31 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@3->test#0] -- vbuxx=vbuc1 ldx #3 - //SEG31 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6 [phi:main::@3->test#1] -- vbuz1=vbuc1 + //SEG32 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6 [phi:main::@3->test#1] -- vbuz1=vbuc1 lda #(3+1-1)*6 sta test.a jsr test - //SEG32 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG33 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG33 main::@4 + //SEG34 main::@4 b4: - //SEG34 [13] call test - //SEG35 [27] phi from main::@4 to test [phi:main::@4->test] + //SEG35 [13] call test + //SEG36 [27] phi from main::@4 to test [phi:main::@4->test] test_from_b4: - //SEG36 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@4->test#0] -- vbuxx=vbuc1 + //SEG37 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@4->test#0] -- vbuxx=vbuc1 ldx #4 - //SEG37 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@4->test#1] -- vbuz1=vbuc1 + //SEG38 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@4->test#1] -- vbuz1=vbuc1 lda #(3+1-1)*6/2 sta test.a jsr test - //SEG38 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG39 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG39 main::@5 + //SEG40 main::@5 b5: - //SEG40 [15] call test - //SEG41 [27] phi from main::@5 to test [phi:main::@5->test] + //SEG41 [15] call test + //SEG42 [27] phi from main::@5 to test [phi:main::@5->test] test_from_b5: - //SEG42 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@5->test#0] -- vbuxx=vbuc1 + //SEG43 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@5->test#0] -- vbuxx=vbuc1 ldx #5 - //SEG43 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@5->test#1] -- vbuz1=vbuc1 + //SEG44 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@5->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2) sta test.a jsr test - //SEG44 [16] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG45 [16] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG45 main::@6 + //SEG46 main::@6 b6: - //SEG46 [17] call test - //SEG47 [27] phi from main::@6 to test [phi:main::@6->test] + //SEG47 [17] call test + //SEG48 [27] phi from main::@6 to test [phi:main::@6->test] test_from_b6: - //SEG48 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@6->test#0] -- vbuxx=vbuc1 + //SEG49 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@6->test#0] -- vbuxx=vbuc1 ldx #6 - //SEG49 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@6->test#1] -- vbuz1=vbuc1 + //SEG50 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@6->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2 sta test.a jsr test - //SEG50 [18] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG51 [18] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: jmp b7 - //SEG51 main::@7 + //SEG52 main::@7 b7: - //SEG52 [19] call test - //SEG53 [27] phi from main::@7 to test [phi:main::@7->test] + //SEG53 [19] call test + //SEG54 [27] phi from main::@7 to test [phi:main::@7->test] test_from_b7: - //SEG54 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@7->test#0] -- vbuxx=vbuc1 + //SEG55 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@7->test#0] -- vbuxx=vbuc1 ldx #7 - //SEG55 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->test#1] -- vbuz1=vbuc1 + //SEG56 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1 sta test.a jsr test - //SEG56 [20] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG57 [20] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG57 main::@8 + //SEG58 main::@8 b8: - //SEG58 [21] call test - //SEG59 [27] phi from main::@8 to test [phi:main::@8->test] + //SEG59 [21] call test + //SEG60 [27] phi from main::@8 to test [phi:main::@8->test] test_from_b8: - //SEG60 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@8->test#0] -- vbuxx=vbuc1 + //SEG61 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@8->test#0] -- vbuxx=vbuc1 ldx #8 - //SEG61 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@8->test#1] -- vbuz1=vbuc1 + //SEG62 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@8->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1^6 sta test.a jsr test - //SEG62 [22] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG63 [22] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG63 main::@9 + //SEG64 main::@9 b9: - //SEG64 [23] call test - //SEG65 [27] phi from main::@9 to test [phi:main::@9->test] + //SEG65 [23] call test + //SEG66 [27] phi from main::@9 to test [phi:main::@9->test] test_from_b9: - //SEG66 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@9->test#0] -- vbuxx=vbuc1 + //SEG67 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@9->test#0] -- vbuxx=vbuc1 ldx #9 - //SEG67 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@9->test#1] -- vbuz1=vbuc1 + //SEG68 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@9->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1^6|1 sta test.a jsr test - //SEG68 [24] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG69 [24] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG69 main::@10 + //SEG70 main::@10 b10: - //SEG70 [25] call test - //SEG71 [27] phi from main::@10 to test [phi:main::@10->test] + //SEG71 [25] call test + //SEG72 [27] phi from main::@10 to test [phi:main::@10->test] test_from_b10: - //SEG72 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@10->test#0] -- vbuxx=vbuc1 + //SEG73 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@10->test#0] -- vbuxx=vbuc1 ldx #$a - //SEG73 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1&(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@10->test#1] -- vbuz1=vbuc1 + //SEG74 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1&(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@10->test#1] -- vbuz1=vbuc1 lda #(mod((3+1-1)*6/2,2)<<2>>1^6|1)&1 sta test.a jsr test jmp breturn - //SEG74 main::@return + //SEG75 main::@return breturn: - //SEG75 [26] return + //SEG76 [26] return rts } -//SEG76 test +//SEG77 test test: { .label a = 2 - //SEG77 [28] *((const byte*) screen1#0 + (byte) test::i#11) ← (byte) test::a#11 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) ← (byte) test::a#11 -- pbuc1_derefidx_vbuxx=vbuz1 lda a sta screen1,x - //SEG78 [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda ref,x sta screen2,x - //SEG79 [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 -- pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1 + //SEG80 [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 -- pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1 lda ref,x cmp a beq b1 jmp b3 - //SEG80 test::@3 + //SEG81 test::@3 b3: - //SEG81 [31] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) RED#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) RED#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #RED sta cols,x jmp breturn - //SEG82 test::@return + //SEG83 test::@return breturn: - //SEG83 [32] return + //SEG84 [32] return rts - //SEG84 test::@1 + //SEG85 test::@1 b1: - //SEG85 [33] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta cols,x jmp breturn } - // Test compound assignment operators ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0 ASSEMBLER OPTIMIZATIONS @@ -1339,165 +1341,166 @@ reg byte x [ test::i#11 ] FINAL ASSEMBLER Score: 199 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test compound assignment operators +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen1 = $400 .label cols = $d800 .const GREEN = 5 .const RED = 2 .label screen2 = screen1+$28 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call test - //SEG11 [27] phi from main to test [phi:main->test] - //SEG12 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->test#0] -- vbuxx=vbuc1 + //SEG11 [5] call test + //SEG12 [27] phi from main to test [phi:main->test] + //SEG13 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->test#0] -- vbuxx=vbuc1 ldx #0 - //SEG13 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main->test#1] -- vbuz1=vbuc1 + //SEG14 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main->test#1] -- vbuz1=vbuc1 lda #3 sta test.a jsr test - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG15 main::@1 - //SEG16 [7] call test - //SEG17 [27] phi from main::@1 to test [phi:main::@1->test] - //SEG18 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#0] -- vbuxx=vbuc1 + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG16 main::@1 + //SEG17 [7] call test + //SEG18 [27] phi from main::@1 to test [phi:main::@1->test] + //SEG19 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#0] -- vbuxx=vbuc1 ldx #1 - //SEG19 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#1] -- vbuz1=vbuc1 + //SEG20 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@1->test#1] -- vbuz1=vbuc1 lda #3+1 sta test.a jsr test - //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG21 main::@2 - //SEG22 [9] call test - //SEG23 [27] phi from main::@2 to test [phi:main::@2->test] - //SEG24 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@2->test#0] -- vbuxx=vbuc1 + //SEG21 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 main::@2 + //SEG23 [9] call test + //SEG24 [27] phi from main::@2 to test [phi:main::@2->test] + //SEG25 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@2->test#0] -- vbuxx=vbuc1 ldx #2 - //SEG25 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@2->test#1] -- vbuz1=vbuc1 + //SEG26 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@2->test#1] -- vbuz1=vbuc1 lda #3+1-1 sta test.a jsr test - //SEG26 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG27 main::@3 - //SEG28 [11] call test - //SEG29 [27] phi from main::@3 to test [phi:main::@3->test] - //SEG30 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@3->test#0] -- vbuxx=vbuc1 + //SEG27 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG28 main::@3 + //SEG29 [11] call test + //SEG30 [27] phi from main::@3 to test [phi:main::@3->test] + //SEG31 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@3->test#0] -- vbuxx=vbuc1 ldx #3 - //SEG31 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6 [phi:main::@3->test#1] -- vbuz1=vbuc1 + //SEG32 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6 [phi:main::@3->test#1] -- vbuz1=vbuc1 lda #(3+1-1)*6 sta test.a jsr test - //SEG32 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG33 main::@4 - //SEG34 [13] call test - //SEG35 [27] phi from main::@4 to test [phi:main::@4->test] - //SEG36 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@4->test#0] -- vbuxx=vbuc1 + //SEG33 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG34 main::@4 + //SEG35 [13] call test + //SEG36 [27] phi from main::@4 to test [phi:main::@4->test] + //SEG37 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@4->test#0] -- vbuxx=vbuc1 ldx #4 - //SEG37 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@4->test#1] -- vbuz1=vbuc1 + //SEG38 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@4->test#1] -- vbuz1=vbuc1 lda #(3+1-1)*6/2 sta test.a jsr test - //SEG38 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - //SEG39 main::@5 - //SEG40 [15] call test - //SEG41 [27] phi from main::@5 to test [phi:main::@5->test] - //SEG42 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@5->test#0] -- vbuxx=vbuc1 + //SEG39 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG40 main::@5 + //SEG41 [15] call test + //SEG42 [27] phi from main::@5 to test [phi:main::@5->test] + //SEG43 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@5->test#0] -- vbuxx=vbuc1 ldx #5 - //SEG43 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@5->test#1] -- vbuz1=vbuc1 + //SEG44 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@5->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2) sta test.a jsr test - //SEG44 [16] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG45 main::@6 - //SEG46 [17] call test - //SEG47 [27] phi from main::@6 to test [phi:main::@6->test] - //SEG48 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@6->test#0] -- vbuxx=vbuc1 + //SEG45 [16] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG46 main::@6 + //SEG47 [17] call test + //SEG48 [27] phi from main::@6 to test [phi:main::@6->test] + //SEG49 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@6->test#0] -- vbuxx=vbuc1 ldx #6 - //SEG49 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@6->test#1] -- vbuz1=vbuc1 + //SEG50 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@6->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2 sta test.a jsr test - //SEG50 [18] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - //SEG51 main::@7 - //SEG52 [19] call test - //SEG53 [27] phi from main::@7 to test [phi:main::@7->test] - //SEG54 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@7->test#0] -- vbuxx=vbuc1 + //SEG51 [18] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG52 main::@7 + //SEG53 [19] call test + //SEG54 [27] phi from main::@7 to test [phi:main::@7->test] + //SEG55 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@7->test#0] -- vbuxx=vbuc1 ldx #7 - //SEG55 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->test#1] -- vbuz1=vbuc1 + //SEG56 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1 sta test.a jsr test - //SEG56 [20] phi from main::@7 to main::@8 [phi:main::@7->main::@8] - //SEG57 main::@8 - //SEG58 [21] call test - //SEG59 [27] phi from main::@8 to test [phi:main::@8->test] - //SEG60 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@8->test#0] -- vbuxx=vbuc1 + //SEG57 [20] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG58 main::@8 + //SEG59 [21] call test + //SEG60 [27] phi from main::@8 to test [phi:main::@8->test] + //SEG61 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@8->test#0] -- vbuxx=vbuc1 ldx #8 - //SEG61 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@8->test#1] -- vbuz1=vbuc1 + //SEG62 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:main::@8->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1^6 sta test.a jsr test - //SEG62 [22] phi from main::@8 to main::@9 [phi:main::@8->main::@9] - //SEG63 main::@9 - //SEG64 [23] call test - //SEG65 [27] phi from main::@9 to test [phi:main::@9->test] - //SEG66 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@9->test#0] -- vbuxx=vbuc1 + //SEG63 [22] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG64 main::@9 + //SEG65 [23] call test + //SEG66 [27] phi from main::@9 to test [phi:main::@9->test] + //SEG67 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@9->test#0] -- vbuxx=vbuc1 ldx #9 - //SEG67 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@9->test#1] -- vbuz1=vbuc1 + //SEG68 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@9->test#1] -- vbuz1=vbuc1 lda #mod((3+1-1)*6/2,2)<<2>>1^6|1 sta test.a jsr test - //SEG68 [24] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - //SEG69 main::@10 - //SEG70 [25] call test - //SEG71 [27] phi from main::@10 to test [phi:main::@10->test] - //SEG72 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@10->test#0] -- vbuxx=vbuc1 + //SEG69 [24] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG70 main::@10 + //SEG71 [25] call test + //SEG72 [27] phi from main::@10 to test [phi:main::@10->test] + //SEG73 [27] phi (byte) test::i#11 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@10->test#0] -- vbuxx=vbuc1 ldx #$a - //SEG73 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1&(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@10->test#1] -- vbuz1=vbuc1 + //SEG74 [27] phi (byte) test::a#11 = (byte/signed byte/word/signed word/dword/signed dword) 3+(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) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1&(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@10->test#1] -- vbuz1=vbuc1 lda #(mod((3+1-1)*6/2,2)<<2>>1^6|1)&1 sta test.a jsr test - //SEG74 main::@return - //SEG75 [26] return + //SEG75 main::@return + //SEG76 [26] return rts } -//SEG76 test +//SEG77 test test: { .label a = 2 - //SEG77 [28] *((const byte*) screen1#0 + (byte) test::i#11) ← (byte) test::a#11 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) ← (byte) test::a#11 -- pbuc1_derefidx_vbuxx=vbuz1 lda a sta screen1,x - //SEG78 [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda ref,x sta screen2,x - //SEG79 [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 -- pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1 + //SEG80 [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 -- pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1 lda ref,x cmp a beq b1 - //SEG80 test::@3 - //SEG81 [31] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) RED#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG81 test::@3 + //SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) RED#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #RED sta cols,x - //SEG82 test::@return + //SEG83 test::@return breturn: - //SEG83 [32] return + //SEG84 [32] return rts - //SEG84 test::@1 + //SEG85 test::@1 b1: - //SEG85 [33] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta cols,x jmp breturn } - // Test compound assignment operators ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0 diff --git a/src/test/ref/bgblack.log b/src/test/ref/bgblack.log index c61071cd0..a2668d639 100644 --- a/src/test/ref/bgblack.log +++ b/src/test/ref/bgblack.log @@ -460,37 +460,38 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 // The colors of the C64 .const BLACK = 0 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] +//SEG7 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -505,37 +506,38 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 // The colors of the C64 .const BLACK = 0 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] +//SEG7 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -650,27 +652,28 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 // The colors of the C64 .const BLACK = 0 -//SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 -//SEG5 [2] call main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG5 @5 +//SEG6 [2] call main +//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/bitmap-plotter.log b/src/test/ref/bitmap-plotter.log index c0f29dac2..7a34f01ab 100644 --- a/src/test/ref/bitmap-plotter.log +++ b/src/test/ref/bitmap-plotter.log @@ -1032,11 +1032,12 @@ Allocated zp ZP_BYTE:35 [ init_plot_tables::$9 ] Allocated zp ZP_BYTE:36 [ init_plot_tables::$10 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label D011 = $d011 .const BMM = $20 .const DEN = $10 @@ -1048,111 +1049,111 @@ INITIAL ASM .label SCREEN = $400 .label BITMAP = $2000 .const plots_cnt = 8 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] +//SEG7 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG10 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta FGCOL - //SEG11 [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 -- _deref_pbuc1=vbuc2 + //SEG12 [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 -- _deref_pbuc1=vbuc2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG12 [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 -- _deref_pbuc1=vbuc2 + //SEG13 [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 -- _deref_pbuc1=vbuc2 lda #SCREEN/$40|BITMAP/$400 sta D018 - //SEG13 [8] call init_screen - //SEG14 [63] phi from main to init_screen [phi:main->init_screen] + //SEG14 [8] call init_screen + //SEG15 [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] + //SEG16 [9] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG16 main::@5 + //SEG17 main::@5 b5: - //SEG17 [10] call init_plot_tables - //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG18 [10] call init_plot_tables + //SEG19 [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 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG21 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2 jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG23 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG23 [13] call plots - //SEG24 [15] phi from main::@3 to plots [phi:main::@3->plots] + //SEG24 [13] call plots + //SEG25 [15] phi from main::@3 to plots [phi:main::@3->plots] plots_from_b3: jsr plots jmp b7 - //SEG25 main::@7 + //SEG26 main::@7 b7: - //SEG26 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG27 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL jmp b2 } -//SEG27 plots +//SEG28 plots plots: { .label i = 2 - //SEG28 [16] phi from plots to plots::@1 [phi:plots->plots::@1] + //SEG29 [16] phi from plots to plots::@1 [phi:plots->plots::@1] b1_from_plots: - //SEG29 [16] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuz1=vbuc1 + //SEG30 [16] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG30 [16] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1] + //SEG31 [16] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1] b1_from_b3: - //SEG31 [16] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy + //SEG32 [16] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy jmp b1 - //SEG32 plots::@1 + //SEG33 plots::@1 b1: - //SEG33 [17] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG34 [17] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda plots_x,y sta plot.x - //SEG34 [18] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG35 [18] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda plots_y,y sta plot.y - //SEG35 [19] call plot + //SEG36 [19] call plot jsr plot jmp b3 - //SEG36 plots::@3 + //SEG37 plots::@3 b3: - //SEG37 [20] (byte) plots::i#1 ← ++ (byte) plots::i#2 -- vbuz1=_inc_vbuz1 + //SEG38 [20] (byte) plots::i#1 ← ++ (byte) plots::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG38 [21] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG39 [21] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #plots_cnt bcc b1_from_b3 jmp breturn - //SEG39 plots::@return + //SEG40 plots::@return breturn: - //SEG40 [22] return + //SEG41 [22] return rts } -//SEG41 plot +//SEG42 plot plot: { .label _1 = $11 .label _3 = $18 @@ -1168,49 +1169,49 @@ plot: { .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 + //SEG43 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy x lda plot_xhi,y sta _6 - //SEG43 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 -- pbuz1=pbuc1_sethi_vbuz2 + //SEG44 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 -- pbuz1=pbuc1_sethi_vbuz2 lda _6 sta plotter_x+1 lda #<0 sta plotter_x - //SEG44 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuz1=_lo_pbuz2 + //SEG45 [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 + //SEG46 [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 - //SEG46 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz2_setlo_vbuz3 + //SEG47 [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 - //SEG47 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG48 [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 - //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 + //SEG49 [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 - //SEG49 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuz1=_lo_vwuz2 + //SEG50 [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 + //SEG51 [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 - //SEG51 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz2_setlo_vbuz3 + //SEG52 [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 - //SEG52 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz2_plus_vwuz3 + //SEG53 [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 @@ -1218,23 +1219,23 @@ plot: { lda plotter_x_2+1 adc plotter_y_2+1 sta plotter+1 - //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 + //SEG54 [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 - //SEG54 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuz2 + //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (plotter),y jmp breturn - //SEG55 plot::@return + //SEG56 plot::@return breturn: - //SEG56 [36] return + //SEG57 [36] return rts } -//SEG57 init_plot_tables +//SEG58 init_plot_tables init_plot_tables: { .label _0 = $1f .label _6 = $20 @@ -1246,110 +1247,110 @@ init_plot_tables: { .label x = 3 .label y = 5 .label yoffs = 6 - //SEG58 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //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 + //SEG60 [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 - //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 + //SEG61 [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 - //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 from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //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 + //SEG63 [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 + //SEG64 [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 - //SEG64 init_plot_tables::@1 + //SEG65 init_plot_tables::@1 b1: - //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 + //SEG66 [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 - //SEG66 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG67 [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 - //SEG67 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG68 [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 - //SEG68 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG69 [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 - //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 + //SEG70 [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 - //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 + //SEG71 [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 - //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 from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //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 + //SEG73 [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 - //SEG73 init_plot_tables::@2 + //SEG74 init_plot_tables::@2 b2: - //SEG74 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuz1=_inc_vbuz1 + //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuz1=_inc_vbuz1 inc x - //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 + //SEG76 [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 - //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 from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //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 + //SEG78 [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 - //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 + //SEG79 [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 - //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 from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //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 + //SEG81 [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 + //SEG82 [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 - //SEG82 init_plot_tables::@3 + //SEG83 init_plot_tables::@3 b3: - //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 + //SEG84 [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 - //SEG84 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG85 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuz1=vbuz2_bor_vbuz3 + //SEG86 [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 - //SEG86 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG87 [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 - //SEG87 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG88 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG89 [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 - //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 + //SEG90 [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 - //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 + //SEG91 [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 - //SEG91 init_plot_tables::@7 + //SEG92 init_plot_tables::@7 b7: - //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 + //SEG93 [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 @@ -1357,92 +1358,92 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 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: - //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 [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 - //SEG95 init_plot_tables::@4 + //SEG96 init_plot_tables::@4 b4: - //SEG96 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuz1=_inc_vbuz1 + //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG98 [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 - //SEG98 init_plot_tables::@return + //SEG99 init_plot_tables::@return breturn: - //SEG99 [61] return + //SEG100 [61] return rts - //SEG100 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG101 [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 - //SEG101 init_plot_tables::@10 + //SEG102 init_plot_tables::@10 b10: - //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 from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //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 + //SEG104 [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 } -//SEG104 init_screen +//SEG105 init_screen init_screen: { .label b = 8 .label c = $a - //SEG105 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG106 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG107 [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 - //SEG107 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG108 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG109 init_screen::@1 + //SEG110 init_screen::@1 b1: - //SEG110 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG111 [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 - //SEG111 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //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 + //SEG113 [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] + //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG114 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG115 [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 - //SEG115 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG116 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG117 init_screen::@2 + //SEG118 init_screen::@2 b2: - //SEG118 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG119 [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 - //SEG119 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //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 + //SEG121 [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 @@ -1450,9 +1451,9 @@ init_screen: { cmp #@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] +//SEG7 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG10 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta FGCOL - //SEG11 [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 -- _deref_pbuc1=vbuc2 + //SEG12 [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 -- _deref_pbuc1=vbuc2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG12 [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 -- _deref_pbuc1=vbuc2 + //SEG13 [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 -- _deref_pbuc1=vbuc2 lda #SCREEN/$40|BITMAP/$400 sta D018 - //SEG13 [8] call init_screen - //SEG14 [63] phi from main to init_screen [phi:main->init_screen] + //SEG14 [8] call init_screen + //SEG15 [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] + //SEG16 [9] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG16 main::@5 + //SEG17 main::@5 b5: - //SEG17 [10] call init_plot_tables - //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG18 [10] call init_plot_tables + //SEG19 [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 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG21 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2 jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG23 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG23 [13] call plots - //SEG24 [15] phi from main::@3 to plots [phi:main::@3->plots] + //SEG24 [13] call plots + //SEG25 [15] phi from main::@3 to plots [phi:main::@3->plots] plots_from_b3: jsr plots jmp b7 - //SEG25 main::@7 + //SEG26 main::@7 b7: - //SEG26 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG27 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL jmp b2 } -//SEG27 plots +//SEG28 plots plots: { - //SEG28 [16] phi from plots to plots::@1 [phi:plots->plots::@1] + //SEG29 [16] phi from plots to plots::@1 [phi:plots->plots::@1] b1_from_plots: - //SEG29 [16] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuxx=vbuc1 + //SEG30 [16] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG30 [16] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1] + //SEG31 [16] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1] b1_from_b3: - //SEG31 [16] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy + //SEG32 [16] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy jmp b1 - //SEG32 plots::@1 + //SEG33 plots::@1 b1: - //SEG33 [17] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG34 [17] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuxx lda plots_x,x sta plot.x - //SEG34 [18] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG35 [18] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuxx lda plots_y,x sta plot.y - //SEG35 [19] call plot + //SEG36 [19] call plot jsr plot jmp b3 - //SEG36 plots::@3 + //SEG37 plots::@3 b3: - //SEG37 [20] (byte) plots::i#1 ← ++ (byte) plots::i#2 -- vbuxx=_inc_vbuxx + //SEG38 [20] (byte) plots::i#1 ← ++ (byte) plots::i#2 -- vbuxx=_inc_vbuxx inx - //SEG38 [21] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG39 [21] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #plots_cnt bcc b1_from_b3 jmp breturn - //SEG39 plots::@return + //SEG40 plots::@return breturn: - //SEG40 [22] return + //SEG41 [22] return rts } -//SEG41 plot +//SEG42 plot plot: { .label x = 4 .label y = 5 .label plotter_x = 2 .label plotter_y = 6 .label plotter = 2 - //SEG42 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG43 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy x lda plot_xhi,y - //SEG43 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 -- pbuz1=pbuc1_sethi_vbuaa + //SEG44 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 -- pbuz1=pbuc1_sethi_vbuaa sta plotter_x+1 lda #<0 sta plotter_x - //SEG44 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuaa=_lo_pbuz1 + //SEG45 [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 + //SEG46 [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy x lda plot_xlo,y - //SEG46 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa + //SEG47 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa sta plotter_x - //SEG47 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG48 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_yhi,y - //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 + //SEG49 [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 - //SEG49 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuaa=_lo_vwuz1 + //SEG50 [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 + //SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_ylo,y - //SEG51 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa + //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa sta plotter_y - //SEG52 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 + //SEG53 [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 @@ -1753,109 +1755,109 @@ plot: { lda plotter+1 adc plotter_y+1 sta plotter+1 - //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 + //SEG54 [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 - //SEG54 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa + //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y jmp breturn - //SEG55 plot::@return + //SEG56 plot::@return breturn: - //SEG56 [36] return + //SEG57 [36] return rts } -//SEG57 init_plot_tables +//SEG58 init_plot_tables init_plot_tables: { .label _6 = 4 .label yoffs = 2 - //SEG58 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //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 + //SEG60 [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 - //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 + //SEG61 [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 - //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 from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //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 + //SEG63 [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 + //SEG64 [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 - //SEG64 init_plot_tables::@1 + //SEG65 init_plot_tables::@1 b1: - //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 + //SEG66 [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 - //SEG66 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG67 [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 - //SEG67 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG68 [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 - //SEG68 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG69 [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 - //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 + //SEG70 [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 - //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 + //SEG71 [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 - //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 from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //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 + //SEG73 [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 - //SEG73 init_plot_tables::@2 + //SEG74 init_plot_tables::@2 b2: - //SEG74 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx + //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG76 [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 - //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 from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //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 + //SEG78 [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 - //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 + //SEG79 [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 - //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 from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //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 + //SEG81 [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 + //SEG82 [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 - //SEG82 init_plot_tables::@3 + //SEG83 init_plot_tables::@3 b3: - //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 + //SEG84 [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 - //SEG84 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG85 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG86 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG87 [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 - //SEG87 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG88 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG89 [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 - //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 + //SEG90 [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 - //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 + //SEG91 [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 - //SEG91 init_plot_tables::@7 + //SEG92 init_plot_tables::@7 b7: - //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 + //SEG93 [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 @@ -1863,91 +1865,91 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 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: - //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 [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 - //SEG95 init_plot_tables::@4 + //SEG96 init_plot_tables::@4 b4: - //SEG96 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx + //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG98 [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 - //SEG98 init_plot_tables::@return + //SEG99 init_plot_tables::@return breturn: - //SEG99 [61] return + //SEG100 [61] return rts - //SEG100 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG101 [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 - //SEG101 init_plot_tables::@10 + //SEG102 init_plot_tables::@10 b10: - //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 from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //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 + //SEG104 [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 } -//SEG104 init_screen +//SEG105 init_screen init_screen: { .label b = 2 .label c = 2 - //SEG105 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG106 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG107 [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 - //SEG107 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG108 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG109 init_screen::@1 + //SEG110 init_screen::@1 b1: - //SEG110 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG111 [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 - //SEG111 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //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 + //SEG113 [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] + //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG114 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG115 [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 - //SEG115 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG116 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG117 init_screen::@2 + //SEG118 init_screen::@2 b2: - //SEG118 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG119 [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 - //SEG119 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //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 + //SEG121 [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 @@ -1955,9 +1957,9 @@ init_screen: { cmp #@5] -//SEG4 @5 -//SEG5 [2] call main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG5 @5 +//SEG6 [2] call main +//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG10 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta FGCOL - //SEG11 [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 -- _deref_pbuc1=vbuc2 + //SEG12 [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 -- _deref_pbuc1=vbuc2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG12 [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 -- _deref_pbuc1=vbuc2 + //SEG13 [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 -- _deref_pbuc1=vbuc2 lda #SCREEN/$40|BITMAP/$400 sta D018 - //SEG13 [8] call init_screen - //SEG14 [63] phi from main to init_screen [phi:main->init_screen] + //SEG14 [8] call init_screen + //SEG15 [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 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG16 [9] phi from main to main::@5 [phi:main->main::@5] + //SEG17 main::@5 + //SEG18 [10] call init_plot_tables + //SEG19 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] jsr init_plot_tables - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG21 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2 - //SEG21 main::@3 - //SEG22 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG22 main::@3 + //SEG23 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG23 [13] call plots - //SEG24 [15] phi from main::@3 to plots [phi:main::@3->plots] + //SEG24 [13] call plots + //SEG25 [15] phi from main::@3 to plots [phi:main::@3->plots] jsr plots - //SEG25 main::@7 - //SEG26 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG26 main::@7 + //SEG27 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL jmp b2 } -//SEG27 plots +//SEG28 plots plots: { - //SEG28 [16] phi from plots to plots::@1 [phi:plots->plots::@1] - //SEG29 [16] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuxx=vbuc1 + //SEG29 [16] phi from plots to plots::@1 [phi:plots->plots::@1] + //SEG30 [16] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG30 [16] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1] - //SEG31 [16] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy - //SEG32 plots::@1 + //SEG31 [16] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1] + //SEG32 [16] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy + //SEG33 plots::@1 b1: - //SEG33 [17] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG34 [17] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuxx lda plots_x,x sta plot.x - //SEG34 [18] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG35 [18] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) -- vbuz1=pbuc1_derefidx_vbuxx lda plots_y,x sta plot.y - //SEG35 [19] call plot + //SEG36 [19] call plot jsr plot - //SEG36 plots::@3 - //SEG37 [20] (byte) plots::i#1 ← ++ (byte) plots::i#2 -- vbuxx=_inc_vbuxx + //SEG37 plots::@3 + //SEG38 [20] (byte) plots::i#1 ← ++ (byte) plots::i#2 -- vbuxx=_inc_vbuxx inx - //SEG38 [21] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG39 [21] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #plots_cnt bcc b1 - //SEG39 plots::@return - //SEG40 [22] return + //SEG40 plots::@return + //SEG41 [22] return rts } -//SEG41 plot +//SEG42 plot plot: { .label x = 4 .label y = 5 .label plotter_x = 2 .label plotter_y = 6 .label plotter = 2 - //SEG42 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG43 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy x lda plot_xhi,y - //SEG43 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 -- pbuz1=pbuc1_sethi_vbuaa + //SEG44 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 -- pbuz1=pbuc1_sethi_vbuaa sta plotter_x+1 lda #<0 sta plotter_x - //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 + //SEG45 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuaa=_lo_pbuz1 + //SEG46 [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 lda plot_xlo,y - //SEG46 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa + //SEG47 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa sta plotter_x - //SEG47 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG48 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_yhi,y - //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 + //SEG49 [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 - //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 + //SEG50 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuaa=_lo_vwuz1 + //SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 lda plot_ylo,y - //SEG51 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa + //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa sta plotter_y - //SEG52 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 + //SEG53 [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 @@ -2328,94 +2331,94 @@ plot: { lda plotter+1 adc plotter_y+1 sta plotter+1 - //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 + //SEG54 [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 - //SEG54 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa + //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y - //SEG55 plot::@return - //SEG56 [36] return + //SEG56 plot::@return + //SEG57 [36] return rts } -//SEG57 init_plot_tables +//SEG58 init_plot_tables init_plot_tables: { .label _6 = 4 .label yoffs = 2 - //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 + //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG60 [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 - //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 + //SEG61 [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 - //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 + //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG63 [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 + //SEG64 [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 + //SEG65 init_plot_tables::@1 b1: - //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 + //SEG66 [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 - //SEG66 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG67 [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 - //SEG67 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG68 [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 - //SEG68 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG69 [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 - //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 + //SEG70 [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 - //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 + //SEG71 [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 - //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 + //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG73 [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 - //SEG73 init_plot_tables::@2 + //SEG74 init_plot_tables::@2 b2: - //SEG74 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx + //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG76 [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 - //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 + //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG78 [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 - //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 + //SEG79 [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 - //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 + //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG81 [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 + //SEG82 [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 + //SEG83 init_plot_tables::@3 b3: - //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 + //SEG84 [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 - //SEG84 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG85 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG86 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG87 [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 - //SEG87 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG88 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG89 [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 - //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 + //SEG90 [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 - //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 + //SEG91 [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 - //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 + //SEG92 init_plot_tables::@7 + //SEG93 [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 @@ -2423,81 +2426,81 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 + //SEG94 [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] + //SEG95 [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 + //SEG96 init_plot_tables::@4 b4: - //SEG96 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx + //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG98 [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 - //SEG98 init_plot_tables::@return - //SEG99 [61] return + //SEG99 init_plot_tables::@return + //SEG100 [61] return rts - //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 + //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG102 init_plot_tables::@10 + //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG104 [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 } -//SEG104 init_screen +//SEG105 init_screen init_screen: { .label b = 2 .label c = 2 - //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 + //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG107 [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 - //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 + //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG110 init_screen::@1 b1: - //SEG110 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG111 [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 - //SEG111 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //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 + //SEG113 [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] - //SEG114 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG115 [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 - //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 + //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG118 init_screen::@2 b2: - //SEG118 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG119 [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 - //SEG119 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //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 + //SEG121 [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 #@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label SCREEN = $400 .label _1 = 3 .label c = 2 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← ~(byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← ~(byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1^$ff sta SCREEN - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #1 sta c jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$1 ← ~ (byte) main::c#2 -- vbuz1=_bnot_vbuz2 + //SEG16 [6] (byte~) main::$1 ← ~ (byte) main::c#2 -- vbuz1=_bnot_vbuz2 lda c eor #$ff sta _1 - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::c#2) ← (byte~) main::$1 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::c#2) ← (byte~) main::$1 -- pbuc1_derefidx_vbuz1=vbuz2 lda _1 ldy c sta SCREEN,y - //SEG17 [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG18 [9] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 27) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 27) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #$1b bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -199,56 +200,57 @@ Uplifting [main] best 289 combination reg byte x [ main::c#2 main::c#1 ] reg byt Uplifting [] best 289 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label SCREEN = $400 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← ~(byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← ~(byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1^$ff sta SCREEN - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$1 ← ~ (byte) main::c#2 -- vbuaa=_bnot_vbuxx + //SEG16 [6] (byte~) main::$1 ← ~ (byte) main::c#2 -- vbuaa=_bnot_vbuxx txa eor #$ff - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::c#2) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::c#2) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG17 [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 27) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 27) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$1b bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -297,42 +299,43 @@ reg byte a [ main::$1 ] FINAL ASSEMBLER Score: 187 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label SCREEN = $400 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← ~(byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← ~(byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1^$ff sta SCREEN - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$1 ← ~ (byte) main::c#2 -- vbuaa=_bnot_vbuxx + //SEG16 [6] (byte~) main::$1 ← ~ (byte) main::c#2 -- vbuaa=_bnot_vbuxx txa eor #$ff - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::c#2) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::c#2) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG17 [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 27) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 27) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$1b bne b1 - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts } diff --git a/src/test/ref/bool-const.asm b/src/test/ref/bool-const.asm index 490b3857d..60133bd8e 100644 --- a/src/test/ref/bool-const.asm +++ b/src/test/ref/bool-const.asm @@ -1,7 +1,7 @@ +// A Minimal test of boolean constants. .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // A Minimal test of boolean constants. .label SCREEN = $400 main: { jsr bool_const_if diff --git a/src/test/ref/bool-const.log b/src/test/ref/bool-const.log index 418857a0b..1aa86fcb0 100644 --- a/src/test/ref/bool-const.log +++ b/src/test/ref/bool-const.log @@ -314,102 +314,103 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A Minimal test of boolean constants. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A Minimal test of boolean constants. +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] b4_from_bbegin: jmp b4 -//SEG4 @4 +//SEG5 @4 b4: -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG7 [3] phi from @4 to @end [phi:@4->@end] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call bool_const_if - //SEG11 [17] phi from main to bool_const_if [phi:main->bool_const_if] + //SEG11 [5] call bool_const_if + //SEG12 [17] phi from main to bool_const_if [phi:main->bool_const_if] bool_const_if_from_main: jsr bool_const_if - //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 bool_const_vars - //SEG15 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] + //SEG15 [7] call bool_const_vars + //SEG16 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] bool_const_vars_from_b1: jsr bool_const_vars - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call bool_const_inline - //SEG19 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] + //SEG19 [9] call bool_const_inline + //SEG20 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] bool_const_inline_from_b2: jsr bool_const_inline jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [10] return + //SEG22 [10] return rts } -//SEG22 bool_const_inline +//SEG23 bool_const_inline // A constant boolean inside an if() bool_const_inline: { jmp b1 - //SEG23 bool_const_inline::@1 + //SEG24 bool_const_inline::@1 b1: - //SEG24 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' -- _deref_pbuc1=vbuc2 + //SEG25 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN+2 jmp breturn - //SEG25 bool_const_inline::@return + //SEG26 bool_const_inline::@return breturn: - //SEG26 [13] return + //SEG27 [13] return rts } -//SEG27 bool_const_vars +//SEG28 bool_const_vars // A bunch of constant boolean vars (used in an if) bool_const_vars: { jmp b3 - //SEG28 bool_const_vars::@3 + //SEG29 bool_const_vars::@3 b3: - //SEG29 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' -- _deref_pbuc1=vbuc2 + //SEG30 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' -- _deref_pbuc1=vbuc2 lda #'f' sta SCREEN+1 jmp breturn - //SEG30 bool_const_vars::@return + //SEG31 bool_const_vars::@return breturn: - //SEG31 [16] return + //SEG32 [16] return rts } -//SEG32 bool_const_if +//SEG33 bool_const_if // A constant boolean inside an if() bool_const_if: { jmp b1 - //SEG33 bool_const_if::@1 + //SEG34 bool_const_if::@1 b1: - //SEG34 [18] *((const byte*) SCREEN#0) ← (byte) 't' -- _deref_pbuc1=vbuc2 + //SEG35 [18] *((const byte*) SCREEN#0) ← (byte) 't' -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN jmp breturn - //SEG35 bool_const_if::@return + //SEG36 bool_const_if::@return breturn: - //SEG36 [19] return + //SEG37 [19] return rts } @@ -432,102 +433,103 @@ Uplifting [bool_const_inline] best 180 combination Uplifting [] best 180 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A Minimal test of boolean constants. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A Minimal test of boolean constants. +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] b4_from_bbegin: jmp b4 -//SEG4 @4 +//SEG5 @4 b4: -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG7 [3] phi from @4 to @end [phi:@4->@end] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call bool_const_if - //SEG11 [17] phi from main to bool_const_if [phi:main->bool_const_if] + //SEG11 [5] call bool_const_if + //SEG12 [17] phi from main to bool_const_if [phi:main->bool_const_if] bool_const_if_from_main: jsr bool_const_if - //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 bool_const_vars - //SEG15 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] + //SEG15 [7] call bool_const_vars + //SEG16 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] bool_const_vars_from_b1: jsr bool_const_vars - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call bool_const_inline - //SEG19 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] + //SEG19 [9] call bool_const_inline + //SEG20 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] bool_const_inline_from_b2: jsr bool_const_inline jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [10] return + //SEG22 [10] return rts } -//SEG22 bool_const_inline +//SEG23 bool_const_inline // A constant boolean inside an if() bool_const_inline: { jmp b1 - //SEG23 bool_const_inline::@1 + //SEG24 bool_const_inline::@1 b1: - //SEG24 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' -- _deref_pbuc1=vbuc2 + //SEG25 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN+2 jmp breturn - //SEG25 bool_const_inline::@return + //SEG26 bool_const_inline::@return breturn: - //SEG26 [13] return + //SEG27 [13] return rts } -//SEG27 bool_const_vars +//SEG28 bool_const_vars // A bunch of constant boolean vars (used in an if) bool_const_vars: { jmp b3 - //SEG28 bool_const_vars::@3 + //SEG29 bool_const_vars::@3 b3: - //SEG29 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' -- _deref_pbuc1=vbuc2 + //SEG30 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' -- _deref_pbuc1=vbuc2 lda #'f' sta SCREEN+1 jmp breturn - //SEG30 bool_const_vars::@return + //SEG31 bool_const_vars::@return breturn: - //SEG31 [16] return + //SEG32 [16] return rts } -//SEG32 bool_const_if +//SEG33 bool_const_if // A constant boolean inside an if() bool_const_if: { jmp b1 - //SEG33 bool_const_if::@1 + //SEG34 bool_const_if::@1 b1: - //SEG34 [18] *((const byte*) SCREEN#0) ← (byte) 't' -- _deref_pbuc1=vbuc2 + //SEG35 [18] *((const byte*) SCREEN#0) ← (byte) 't' -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN jmp breturn - //SEG35 bool_const_if::@return + //SEG36 bool_const_if::@return breturn: - //SEG36 [19] return + //SEG37 [19] return rts } @@ -602,70 +604,71 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 60 -//SEG0 Basic Upstart +//SEG0 File Comments +// A Minimal test of boolean constants. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A Minimal test of boolean constants. +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] -//SEG4 @4 -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] -//SEG7 [3] phi from @4 to @end [phi:@4->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG5 @4 +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call bool_const_if - //SEG11 [17] phi from main to bool_const_if [phi:main->bool_const_if] + //SEG11 [5] call bool_const_if + //SEG12 [17] phi from main to bool_const_if [phi:main->bool_const_if] jsr bool_const_if - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 main::@1 - //SEG14 [7] call bool_const_vars - //SEG15 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call bool_const_vars + //SEG16 [14] phi from main::@1 to bool_const_vars [phi:main::@1->bool_const_vars] jsr bool_const_vars - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 main::@2 - //SEG18 [9] call bool_const_inline - //SEG19 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [9] call bool_const_inline + //SEG20 [11] phi from main::@2 to bool_const_inline [phi:main::@2->bool_const_inline] jsr bool_const_inline - //SEG20 main::@return - //SEG21 [10] return + //SEG21 main::@return + //SEG22 [10] return rts } -//SEG22 bool_const_inline +//SEG23 bool_const_inline // A constant boolean inside an if() bool_const_inline: { - //SEG23 bool_const_inline::@1 - //SEG24 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' -- _deref_pbuc1=vbuc2 + //SEG24 bool_const_inline::@1 + //SEG25 [12] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) 't' -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN+2 - //SEG25 bool_const_inline::@return - //SEG26 [13] return + //SEG26 bool_const_inline::@return + //SEG27 [13] return rts } -//SEG27 bool_const_vars +//SEG28 bool_const_vars // A bunch of constant boolean vars (used in an if) bool_const_vars: { - //SEG28 bool_const_vars::@3 - //SEG29 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' -- _deref_pbuc1=vbuc2 + //SEG29 bool_const_vars::@3 + //SEG30 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) 'f' -- _deref_pbuc1=vbuc2 lda #'f' sta SCREEN+1 - //SEG30 bool_const_vars::@return - //SEG31 [16] return + //SEG31 bool_const_vars::@return + //SEG32 [16] return rts } -//SEG32 bool_const_if +//SEG33 bool_const_if // A constant boolean inside an if() bool_const_if: { - //SEG33 bool_const_if::@1 - //SEG34 [18] *((const byte*) SCREEN#0) ← (byte) 't' -- _deref_pbuc1=vbuc2 + //SEG34 bool_const_if::@1 + //SEG35 [18] *((const byte*) SCREEN#0) ← (byte) 't' -- _deref_pbuc1=vbuc2 lda #'t' sta SCREEN - //SEG35 bool_const_if::@return - //SEG36 [19] return + //SEG36 bool_const_if::@return + //SEG37 [19] return rts } diff --git a/src/test/ref/bool-function.asm b/src/test/ref/bool-function.asm index 1f7bee232..43e86fbab 100644 --- a/src/test/ref/bool-function.asm +++ b/src/test/ref/bool-function.asm @@ -1,7 +1,7 @@ +// Test a function taking boolean parameter and returning boolean result .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test a function taking boolean parameter and returning boolean result main: { .label screen = $400 ldx #0 diff --git a/src/test/ref/bool-function.log b/src/test/ref/bool-function.log index 16cade402..051f6b4d5 100644 --- a/src/test/ref/bool-function.log +++ b/src/test/ref/bool-function.log @@ -255,51 +255,52 @@ Allocated zp ZP_BOOL:9 [ isSet::$1 ] Allocated zp ZP_BOOL:10 [ isSet::return#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a function taking boolean parameter and returning boolean result +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test a function taking boolean parameter and returning boolean result +//SEG10 main main: { .label screen = $400 .label _0 = 3 .label _2 = 7 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG16 [6] (byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _0 - //SEG16 [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuz2_eq_vbuc1 + //SEG17 [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuz2_eq_vbuc1 lda _0 cmp #0 beq !+ @@ -307,54 +308,54 @@ main: { !: eor #1 sta isSet.b - //SEG17 [8] (byte) isSet::i#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG18 [8] (byte) isSet::i#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta isSet.i - //SEG18 [9] call isSet + //SEG19 [9] call isSet jsr isSet - //SEG19 [10] (bool) isSet::return#0 ← (bool) isSet::return#1 -- vboz1=vboz2 + //SEG20 [10] (bool) isSet::return#0 ← (bool) isSet::return#1 -- vboz1=vboz2 lda isSet.return_1 sta isSet.return jmp b7 - //SEG20 main::@7 + //SEG21 main::@7 b7: - //SEG21 [11] (bool~) main::$2 ← (bool) isSet::return#0 -- vboz1=vboz2 + //SEG22 [11] (bool~) main::$2 ← (bool) isSet::return#0 -- vboz1=vboz2 lda isSet.return sta _2 - //SEG22 [12] if((bool~) main::$2) goto main::@2 -- vboz1_then_la1 + //SEG23 [12] if((bool~) main::$2) goto main::@2 -- vboz1_then_la1 lda _2 cmp #0 bne b2 jmp b4 - //SEG23 main::@4 + //SEG24 main::@4 b4: - //SEG24 [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG25 [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 - //SEG25 main::@3 + //SEG26 main::@3 b3: - //SEG26 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG27 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG27 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG28 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$65 bne b1_from_b3 jmp breturn - //SEG28 main::@return + //SEG29 main::@return breturn: - //SEG29 [16] return + //SEG30 [16] return rts - //SEG30 main::@2 + //SEG31 main::@2 b2: - //SEG31 [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG32 [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y jmp b3 } -//SEG32 isSet +//SEG33 isSet // Determine whether to set a char to '*. // Returns true if i&8!=0 or b=true isSet: { @@ -364,25 +365,25 @@ isSet: { .label b = 4 .label return = 6 .label return_1 = $a - //SEG33 [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz2_band_vbuc1 + //SEG34 [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz2_band_vbuc1 lda #8 and i sta _0 - //SEG34 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuz2_neq_vbuc1 + //SEG35 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuz2_neq_vbuc1 lda _0 cmp #0 beq !+ lda #1 !: sta _1 - //SEG35 [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 -- vboz1=vboz2_or_vboz3 + //SEG36 [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 -- vboz1=vboz2_or_vboz3 lda b ora _1 sta return_1 jmp breturn - //SEG36 isSet::@return + //SEG37 isSet::@return breturn: - //SEG37 [21] return + //SEG38 [21] return rts } @@ -425,108 +426,109 @@ Uplifting [] best 735 combination Allocated (was zp ZP_BOOL:4) zp ZP_BOOL:2 [ isSet::b#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a function taking boolean parameter and returning boolean result +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test a function taking boolean parameter and returning boolean result +//SEG10 main main: { .label screen = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG16 [6] (byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG16 [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuaa_eq_vbuc1 + //SEG17 [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuaa_eq_vbuc1 cmp #0 beq !+ lda #1 !: eor #1 sta isSet.b - //SEG17 [8] (byte) isSet::i#0 ← (byte) main::i#2 - //SEG18 [9] call isSet + //SEG18 [8] (byte) isSet::i#0 ← (byte) main::i#2 + //SEG19 [9] call isSet jsr isSet - //SEG19 [10] (bool) isSet::return#0 ← (bool) isSet::return#1 + //SEG20 [10] (bool) isSet::return#0 ← (bool) isSet::return#1 jmp b7 - //SEG20 main::@7 + //SEG21 main::@7 b7: - //SEG21 [11] (bool~) main::$2 ← (bool) isSet::return#0 - //SEG22 [12] if((bool~) main::$2) goto main::@2 -- vboaa_then_la1 + //SEG22 [11] (bool~) main::$2 ← (bool) isSet::return#0 + //SEG23 [12] if((bool~) main::$2) goto main::@2 -- vboaa_then_la1 cmp #0 bne b2 jmp b4 - //SEG23 main::@4 + //SEG24 main::@4 b4: - //SEG24 [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG25 [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 - //SEG25 main::@3 + //SEG26 main::@3 b3: - //SEG26 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG27 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG27 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG28 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1_from_b3 jmp breturn - //SEG28 main::@return + //SEG29 main::@return breturn: - //SEG29 [16] return + //SEG30 [16] return rts - //SEG30 main::@2 + //SEG31 main::@2 b2: - //SEG31 [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG32 [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 } -//SEG32 isSet +//SEG33 isSet // Determine whether to set a char to '*. // Returns true if i&8!=0 or b=true isSet: { .label b = 2 - //SEG33 [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuaa=vbuxx_band_vbuc1 + //SEG34 [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuaa=vbuxx_band_vbuc1 txa and #8 - //SEG34 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboaa=vbuaa_neq_vbuc1 + //SEG35 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboaa=vbuaa_neq_vbuc1 cmp #0 beq !+ lda #1 !: - //SEG35 [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 -- vboaa=vboz1_or_vboaa + //SEG36 [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 -- vboaa=vboz1_or_vboaa ora b jmp breturn - //SEG36 isSet::@return + //SEG37 isSet::@return breturn: - //SEG37 [21] return + //SEG38 [21] return rts } @@ -606,86 +608,87 @@ reg byte a [ isSet::return#1 ] FINAL ASSEMBLER Score: 540 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a function taking boolean parameter and returning boolean result +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main -// Test a function taking boolean parameter and returning boolean result +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG16 [6] (byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG16 [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuaa_eq_vbuc1 + //SEG17 [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuaa_eq_vbuc1 cmp #0 beq !+ lda #1 !: eor #1 sta isSet.b - //SEG17 [8] (byte) isSet::i#0 ← (byte) main::i#2 - //SEG18 [9] call isSet + //SEG18 [8] (byte) isSet::i#0 ← (byte) main::i#2 + //SEG19 [9] call isSet jsr isSet - //SEG19 [10] (bool) isSet::return#0 ← (bool) isSet::return#1 - //SEG20 main::@7 - //SEG21 [11] (bool~) main::$2 ← (bool) isSet::return#0 - //SEG22 [12] if((bool~) main::$2) goto main::@2 -- vboaa_then_la1 + //SEG20 [10] (bool) isSet::return#0 ← (bool) isSet::return#1 + //SEG21 main::@7 + //SEG22 [11] (bool~) main::$2 ← (bool) isSet::return#0 + //SEG23 [12] if((bool~) main::$2) goto main::@2 -- vboaa_then_la1 cmp #0 bne b2 - //SEG23 main::@4 - //SEG24 [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG24 main::@4 + //SEG25 [13] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x - //SEG25 main::@3 + //SEG26 main::@3 b3: - //SEG26 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG27 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG27 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG28 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1 - //SEG28 main::@return - //SEG29 [16] return + //SEG29 main::@return + //SEG30 [16] return rts - //SEG30 main::@2 + //SEG31 main::@2 b2: - //SEG31 [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG32 [17] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 } -//SEG32 isSet +//SEG33 isSet // Determine whether to set a char to '*. // Returns true if i&8!=0 or b=true isSet: { .label b = 2 - //SEG33 [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuaa=vbuxx_band_vbuc1 + //SEG34 [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuaa=vbuxx_band_vbuc1 txa and #8 - //SEG34 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboaa=vbuaa_neq_vbuc1 + //SEG35 [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboaa=vbuaa_neq_vbuc1 cmp #0 beq !+ lda #1 !: - //SEG35 [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 -- vboaa=vboz1_or_vboaa + //SEG36 [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 -- vboaa=vboz1_or_vboaa ora b - //SEG36 isSet::@return - //SEG37 [21] return + //SEG37 isSet::@return + //SEG38 [21] return rts } diff --git a/src/test/ref/bool-ifs.asm b/src/test/ref/bool-ifs.asm index 1aad61f56..be9534f23 100644 --- a/src/test/ref/bool-ifs.asm +++ b/src/test/ref/bool-ifs.asm @@ -1,7 +1,7 @@ +// A test of boolean conditions using && || and ! .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// A test of boolean conditions using && || and ! main: { jsr bool_and jsr bool_or diff --git a/src/test/ref/bool-ifs.log b/src/test/ref/bool-ifs.log index f7b39c7e9..4068f1e48 100644 --- a/src/test/ref/bool-ifs.log +++ b/src/test/ref/bool-ifs.log @@ -553,325 +553,326 @@ Allocated zp ZP_BYTE:9 [ bool_or::$1 ] Allocated zp ZP_BYTE:10 [ bool_and::$1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A test of boolean conditions using && || and ! +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// A test of boolean conditions using && || and ! +//SEG10 main main: { - //SEG10 [5] call bool_and - //SEG11 [46] phi from main to bool_and [phi:main->bool_and] + //SEG11 [5] call bool_and + //SEG12 [46] phi from main to bool_and [phi:main->bool_and] bool_and_from_main: jsr bool_and - //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 bool_or - //SEG15 [36] phi from main::@1 to bool_or [phi:main::@1->bool_or] + //SEG15 [7] call bool_or + //SEG16 [36] phi from main::@1 to bool_or [phi:main::@1->bool_or] bool_or_from_b1: jsr bool_or - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call bool_not - //SEG19 [26] phi from main::@2 to bool_not [phi:main::@2->bool_not] + //SEG19 [9] call bool_not + //SEG20 [26] phi from main::@2 to bool_not [phi:main::@2->bool_not] bool_not_from_b2: jsr bool_not - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [11] call bool_complex - //SEG23 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] + //SEG23 [11] call bool_complex + //SEG24 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] bool_complex_from_b3: jsr bool_complex jmp breturn - //SEG24 main::@return + //SEG25 main::@return breturn: - //SEG25 [12] return + //SEG26 [12] return rts } -//SEG26 bool_complex +//SEG27 bool_complex bool_complex: { .label screen = $478 .label _1 = 6 .label _5 = 7 .label i = 2 - //SEG27 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] + //SEG28 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] b1_from_bool_complex: - //SEG28 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuz1=vbuc1 + //SEG29 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG29 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] + //SEG30 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] b1_from_b3: - //SEG30 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy + //SEG31 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy jmp b1 - //SEG31 bool_complex::@1 + //SEG32 bool_complex::@1 b1: - //SEG32 [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG33 [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _1 - //SEG33 [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG34 [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _5 - //SEG34 [17] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@8 -- vbuz1_lt_vbuc1_then_la1 + //SEG35 [17] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@8 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b8 jmp b7 - //SEG35 bool_complex::@7 + //SEG36 bool_complex::@7 b7: - //SEG36 [18] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG37 [18] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@4 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b4 jmp b9 - //SEG37 bool_complex::@9 + //SEG38 bool_complex::@9 b9: - //SEG38 [19] if((byte~) bool_complex::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4 -- vbuz1_eq_0_then_la1 + //SEG39 [19] if((byte~) bool_complex::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4 -- vbuz1_eq_0_then_la1 lda _5 cmp #0 beq b4 jmp b2 - //SEG39 bool_complex::@2 + //SEG40 bool_complex::@2 b2: - //SEG40 [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG41 [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y jmp b3 - //SEG41 bool_complex::@3 + //SEG42 bool_complex::@3 b3: - //SEG42 [21] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuz1=_inc_vbuz1 + //SEG43 [21] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG43 [22] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG44 [22] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$15 bne b1_from_b3 jmp breturn - //SEG44 bool_complex::@return + //SEG45 bool_complex::@return breturn: - //SEG45 [23] return + //SEG46 [23] return rts - //SEG46 bool_complex::@4 + //SEG47 bool_complex::@4 b4: - //SEG47 [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG48 [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 - //SEG48 bool_complex::@8 + //SEG49 bool_complex::@8 b8: - //SEG49 [25] if((byte~) bool_complex::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2 -- vbuz1_eq_0_then_la1 + //SEG50 [25] if((byte~) bool_complex::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b2 jmp b7 } -//SEG50 bool_not +//SEG51 bool_not bool_not: { .label screen = $450 .label _1 = 8 .label i = 3 - //SEG51 [27] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] + //SEG52 [27] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] b1_from_bool_not: - //SEG52 [27] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuz1=vbuc1 + //SEG53 [27] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG53 [27] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] + //SEG54 [27] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] b1_from_b3: - //SEG54 [27] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy + //SEG55 [27] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy jmp b1 - //SEG55 bool_not::@1 + //SEG56 bool_not::@1 b1: - //SEG56 [28] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG57 [28] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _1 - //SEG57 [29] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG58 [29] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b4 jmp b7 - //SEG58 bool_not::@7 + //SEG59 bool_not::@7 b7: - //SEG59 [30] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuz1_eq_0_then_la1 + //SEG60 [30] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4 jmp b2 - //SEG60 bool_not::@2 + //SEG61 bool_not::@2 b2: - //SEG61 [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG62 [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y jmp b3 - //SEG62 bool_not::@3 + //SEG63 bool_not::@3 b3: - //SEG63 [32] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuz1=_inc_vbuz1 + //SEG64 [32] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG64 [33] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG65 [33] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$15 bne b1_from_b3 jmp breturn - //SEG65 bool_not::@return + //SEG66 bool_not::@return breturn: - //SEG66 [34] return + //SEG67 [34] return rts - //SEG67 bool_not::@4 + //SEG68 bool_not::@4 b4: - //SEG68 [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG69 [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 } -//SEG69 bool_or +//SEG70 bool_or bool_or: { .label screen = $428 .label _1 = 9 .label i = 4 - //SEG70 [37] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] + //SEG71 [37] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] b1_from_bool_or: - //SEG71 [37] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuz1=vbuc1 + //SEG72 [37] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG72 [37] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] + //SEG73 [37] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] b1_from_b3: - //SEG73 [37] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy + //SEG74 [37] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy jmp b1 - //SEG74 bool_or::@1 + //SEG75 bool_or::@1 b1: - //SEG75 [38] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG76 [38] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _1 - //SEG76 [39] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG77 [39] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b2 jmp b7 - //SEG77 bool_or::@7 + //SEG78 bool_or::@7 b7: - //SEG78 [40] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuz1_eq_0_then_la1 + //SEG79 [40] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b2 jmp b4 - //SEG79 bool_or::@4 + //SEG80 bool_or::@4 b4: - //SEG80 [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG81 [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 - //SEG81 bool_or::@3 + //SEG82 bool_or::@3 b3: - //SEG82 [42] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuz1=_inc_vbuz1 + //SEG83 [42] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG83 [43] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG84 [43] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$15 bne b1_from_b3 jmp breturn - //SEG84 bool_or::@return + //SEG85 bool_or::@return breturn: - //SEG85 [44] return + //SEG86 [44] return rts - //SEG86 bool_or::@2 + //SEG87 bool_or::@2 b2: - //SEG87 [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG88 [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y jmp b3 } -//SEG88 bool_and +//SEG89 bool_and bool_and: { .label screen = $400 .label _1 = $a .label i = 5 - //SEG89 [47] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] + //SEG90 [47] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] b1_from_bool_and: - //SEG90 [47] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuz1=vbuc1 + //SEG91 [47] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG91 [47] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] + //SEG92 [47] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] b1_from_b3: - //SEG92 [47] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy + //SEG93 [47] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy jmp b1 - //SEG93 bool_and::@1 + //SEG94 bool_and::@1 b1: - //SEG94 [48] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG95 [48] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _1 - //SEG95 [49] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuz1_lt_vbuc1_then_la1 + //SEG96 [49] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b7 jmp b4 - //SEG96 bool_and::@4 + //SEG97 bool_and::@4 b4: - //SEG97 [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG98 [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 - //SEG98 bool_and::@3 + //SEG99 bool_and::@3 b3: - //SEG99 [51] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuz1=_inc_vbuz1 + //SEG100 [51] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG100 [52] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG101 [52] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$15 bne b1_from_b3 jmp breturn - //SEG101 bool_and::@return + //SEG102 bool_and::@return breturn: - //SEG102 [53] return + //SEG103 [53] return rts - //SEG103 bool_and::@7 + //SEG104 bool_and::@7 b7: - //SEG104 [54] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuz1_eq_0_then_la1 + //SEG105 [54] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b2 jmp b4 - //SEG105 bool_and::@2 + //SEG106 bool_and::@2 b2: - //SEG106 [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG107 [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y @@ -936,287 +937,288 @@ Uplifting [main] best 2548 combination Uplifting [] best 2548 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A test of boolean conditions using && || and ! +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// A test of boolean conditions using && || and ! +//SEG10 main main: { - //SEG10 [5] call bool_and - //SEG11 [46] phi from main to bool_and [phi:main->bool_and] + //SEG11 [5] call bool_and + //SEG12 [46] phi from main to bool_and [phi:main->bool_and] bool_and_from_main: jsr bool_and - //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 bool_or - //SEG15 [36] phi from main::@1 to bool_or [phi:main::@1->bool_or] + //SEG15 [7] call bool_or + //SEG16 [36] phi from main::@1 to bool_or [phi:main::@1->bool_or] bool_or_from_b1: jsr bool_or - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call bool_not - //SEG19 [26] phi from main::@2 to bool_not [phi:main::@2->bool_not] + //SEG19 [9] call bool_not + //SEG20 [26] phi from main::@2 to bool_not [phi:main::@2->bool_not] bool_not_from_b2: jsr bool_not - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [11] call bool_complex - //SEG23 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] + //SEG23 [11] call bool_complex + //SEG24 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] bool_complex_from_b3: jsr bool_complex jmp breturn - //SEG24 main::@return + //SEG25 main::@return breturn: - //SEG25 [12] return + //SEG26 [12] return rts } -//SEG26 bool_complex +//SEG27 bool_complex bool_complex: { .label screen = $478 - //SEG27 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] + //SEG28 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] b1_from_bool_complex: - //SEG28 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuyy=vbuc1 + //SEG29 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG29 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] + //SEG30 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] b1_from_b3: - //SEG30 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy + //SEG31 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy jmp b1 - //SEG31 bool_complex::@1 + //SEG32 bool_complex::@1 b1: - //SEG32 [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_band_vbuc1 + //SEG33 [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_band_vbuc1 tya and #1 tax - //SEG33 [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_band_vbuc1 + //SEG34 [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_band_vbuc1 tya and #1 - //SEG34 [17] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@8 -- vbuyy_lt_vbuc1_then_la1 + //SEG35 [17] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@8 -- vbuyy_lt_vbuc1_then_la1 cpy #$a bcc b8 jmp b7 - //SEG35 bool_complex::@7 + //SEG36 bool_complex::@7 b7: - //SEG36 [18] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@4 -- vbuyy_lt_vbuc1_then_la1 + //SEG37 [18] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@4 -- vbuyy_lt_vbuc1_then_la1 cpy #$a bcc b4 jmp b9 - //SEG37 bool_complex::@9 + //SEG38 bool_complex::@9 b9: - //SEG38 [19] if((byte~) bool_complex::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4 -- vbuaa_eq_0_then_la1 + //SEG39 [19] if((byte~) bool_complex::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 jmp b2 - //SEG39 bool_complex::@2 + //SEG40 bool_complex::@2 b2: - //SEG40 [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG41 [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'*' sta screen,y jmp b3 - //SEG41 bool_complex::@3 + //SEG42 bool_complex::@3 b3: - //SEG42 [21] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuyy=_inc_vbuyy + //SEG43 [21] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuyy=_inc_vbuyy iny - //SEG43 [22] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG44 [22] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$15 bne b1_from_b3 jmp breturn - //SEG44 bool_complex::@return + //SEG45 bool_complex::@return breturn: - //SEG45 [23] return + //SEG46 [23] return rts - //SEG46 bool_complex::@4 + //SEG47 bool_complex::@4 b4: - //SEG47 [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG48 [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuyy=vbuc2 lda #' ' sta screen,y jmp b3 - //SEG48 bool_complex::@8 + //SEG49 bool_complex::@8 b8: - //SEG49 [25] if((byte~) bool_complex::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2 -- vbuxx_eq_0_then_la1 + //SEG50 [25] if((byte~) bool_complex::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2 -- vbuxx_eq_0_then_la1 cpx #0 beq b2 jmp b7 } -//SEG50 bool_not +//SEG51 bool_not bool_not: { .label screen = $450 - //SEG51 [27] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] + //SEG52 [27] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] b1_from_bool_not: - //SEG52 [27] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuxx=vbuc1 + //SEG53 [27] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG53 [27] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] + //SEG54 [27] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] b1_from_b3: - //SEG54 [27] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy + //SEG55 [27] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy jmp b1 - //SEG55 bool_not::@1 + //SEG56 bool_not::@1 b1: - //SEG56 [28] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG57 [28] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG57 [29] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuxx_lt_vbuc1_then_la1 + //SEG58 [29] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b4 jmp b7 - //SEG58 bool_not::@7 + //SEG59 bool_not::@7 b7: - //SEG59 [30] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuaa_eq_0_then_la1 + //SEG60 [30] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 jmp b2 - //SEG60 bool_not::@2 + //SEG61 bool_not::@2 b2: - //SEG61 [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG62 [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 - //SEG62 bool_not::@3 + //SEG63 bool_not::@3 b3: - //SEG63 [32] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuxx=_inc_vbuxx + //SEG64 [32] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuxx=_inc_vbuxx inx - //SEG64 [33] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG65 [33] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1_from_b3 jmp breturn - //SEG65 bool_not::@return + //SEG66 bool_not::@return breturn: - //SEG66 [34] return + //SEG67 [34] return rts - //SEG67 bool_not::@4 + //SEG68 bool_not::@4 b4: - //SEG68 [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG69 [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 } -//SEG69 bool_or +//SEG70 bool_or bool_or: { .label screen = $428 - //SEG70 [37] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] + //SEG71 [37] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] b1_from_bool_or: - //SEG71 [37] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuxx=vbuc1 + //SEG72 [37] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG72 [37] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] + //SEG73 [37] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] b1_from_b3: - //SEG73 [37] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy + //SEG74 [37] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy jmp b1 - //SEG74 bool_or::@1 + //SEG75 bool_or::@1 b1: - //SEG75 [38] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG76 [38] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG76 [39] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG77 [39] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 jmp b7 - //SEG77 bool_or::@7 + //SEG78 bool_or::@7 b7: - //SEG78 [40] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuaa_eq_0_then_la1 + //SEG79 [40] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 jmp b4 - //SEG79 bool_or::@4 + //SEG80 bool_or::@4 b4: - //SEG80 [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG81 [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 - //SEG81 bool_or::@3 + //SEG82 bool_or::@3 b3: - //SEG82 [42] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuxx=_inc_vbuxx + //SEG83 [42] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuxx=_inc_vbuxx inx - //SEG83 [43] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG84 [43] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1_from_b3 jmp breturn - //SEG84 bool_or::@return + //SEG85 bool_or::@return breturn: - //SEG85 [44] return + //SEG86 [44] return rts - //SEG86 bool_or::@2 + //SEG87 bool_or::@2 b2: - //SEG87 [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG88 [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 } -//SEG88 bool_and +//SEG89 bool_and bool_and: { .label screen = $400 - //SEG89 [47] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] + //SEG90 [47] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] b1_from_bool_and: - //SEG90 [47] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuxx=vbuc1 + //SEG91 [47] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG91 [47] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] + //SEG92 [47] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] b1_from_b3: - //SEG92 [47] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy + //SEG93 [47] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy jmp b1 - //SEG93 bool_and::@1 + //SEG94 bool_and::@1 b1: - //SEG94 [48] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG95 [48] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG95 [49] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuxx_lt_vbuc1_then_la1 + //SEG96 [49] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b7 jmp b4 - //SEG96 bool_and::@4 + //SEG97 bool_and::@4 b4: - //SEG97 [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG98 [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 - //SEG98 bool_and::@3 + //SEG99 bool_and::@3 b3: - //SEG99 [51] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuxx=_inc_vbuxx + //SEG100 [51] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuxx=_inc_vbuxx inx - //SEG100 [52] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG101 [52] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1_from_b3 jmp breturn - //SEG101 bool_and::@return + //SEG102 bool_and::@return breturn: - //SEG102 [53] return + //SEG103 [53] return rts - //SEG103 bool_and::@7 + //SEG104 bool_and::@7 b7: - //SEG104 [54] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuaa_eq_0_then_la1 + //SEG105 [54] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 jmp b4 - //SEG105 bool_and::@2 + //SEG106 bool_and::@2 b2: - //SEG106 [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG107 [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 @@ -1379,222 +1381,223 @@ reg byte a [ bool_and::$1 ] FINAL ASSEMBLER Score: 1804 -//SEG0 Basic Upstart +//SEG0 File Comments +// A test of boolean conditions using && || and ! +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] -//SEG7 [3] phi from @5 to @end [phi:@5->@end] -//SEG8 @end -//SEG9 main -// A test of boolean conditions using && || and ! +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG5 @5 +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call bool_and - //SEG11 [46] phi from main to bool_and [phi:main->bool_and] + //SEG11 [5] call bool_and + //SEG12 [46] phi from main to bool_and [phi:main->bool_and] jsr bool_and - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 main::@1 - //SEG14 [7] call bool_or - //SEG15 [36] phi from main::@1 to bool_or [phi:main::@1->bool_or] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call bool_or + //SEG16 [36] phi from main::@1 to bool_or [phi:main::@1->bool_or] jsr bool_or - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 main::@2 - //SEG18 [9] call bool_not - //SEG19 [26] phi from main::@2 to bool_not [phi:main::@2->bool_not] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [9] call bool_not + //SEG20 [26] phi from main::@2 to bool_not [phi:main::@2->bool_not] jsr bool_not - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG21 main::@3 - //SEG22 [11] call bool_complex - //SEG23 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG22 main::@3 + //SEG23 [11] call bool_complex + //SEG24 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] jsr bool_complex - //SEG24 main::@return - //SEG25 [12] return + //SEG25 main::@return + //SEG26 [12] return rts } -//SEG26 bool_complex +//SEG27 bool_complex bool_complex: { .label screen = $478 - //SEG27 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] - //SEG28 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuyy=vbuc1 + //SEG28 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] + //SEG29 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG29 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] - //SEG30 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy - //SEG31 bool_complex::@1 + //SEG30 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] + //SEG31 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy + //SEG32 bool_complex::@1 b1: - //SEG32 [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_band_vbuc1 + //SEG33 [15] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_band_vbuc1 tya and #1 tax - //SEG33 [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_band_vbuc1 + //SEG34 [16] (byte~) bool_complex::$5 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_band_vbuc1 tya and #1 - //SEG34 [17] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@8 -- vbuyy_lt_vbuc1_then_la1 + //SEG35 [17] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@8 -- vbuyy_lt_vbuc1_then_la1 cpy #$a bcc b8 - //SEG35 bool_complex::@7 + //SEG36 bool_complex::@7 b7: - //SEG36 [18] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@4 -- vbuyy_lt_vbuc1_then_la1 + //SEG37 [18] if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@4 -- vbuyy_lt_vbuc1_then_la1 cpy #$a bcc b4 - //SEG37 bool_complex::@9 - //SEG38 [19] if((byte~) bool_complex::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4 -- vbuaa_eq_0_then_la1 + //SEG38 bool_complex::@9 + //SEG39 [19] if((byte~) bool_complex::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG39 bool_complex::@2 + //SEG40 bool_complex::@2 b2: - //SEG40 [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG41 [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'*' sta screen,y - //SEG41 bool_complex::@3 + //SEG42 bool_complex::@3 b3: - //SEG42 [21] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuyy=_inc_vbuyy + //SEG43 [21] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuyy=_inc_vbuyy iny - //SEG43 [22] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG44 [22] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$15 bne b1 - //SEG44 bool_complex::@return - //SEG45 [23] return + //SEG45 bool_complex::@return + //SEG46 [23] return rts - //SEG46 bool_complex::@4 + //SEG47 bool_complex::@4 b4: - //SEG47 [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG48 [24] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuyy=vbuc2 lda #' ' sta screen,y jmp b3 - //SEG48 bool_complex::@8 + //SEG49 bool_complex::@8 b8: - //SEG49 [25] if((byte~) bool_complex::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2 -- vbuxx_eq_0_then_la1 + //SEG50 [25] if((byte~) bool_complex::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2 -- vbuxx_eq_0_then_la1 cpx #0 beq b2 jmp b7 } -//SEG50 bool_not +//SEG51 bool_not bool_not: { .label screen = $450 - //SEG51 [27] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] - //SEG52 [27] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuxx=vbuc1 + //SEG52 [27] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] + //SEG53 [27] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG53 [27] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] - //SEG54 [27] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy - //SEG55 bool_not::@1 + //SEG54 [27] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] + //SEG55 [27] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy + //SEG56 bool_not::@1 b1: - //SEG56 [28] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG57 [28] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG57 [29] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuxx_lt_vbuc1_then_la1 + //SEG58 [29] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b4 - //SEG58 bool_not::@7 - //SEG59 [30] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuaa_eq_0_then_la1 + //SEG59 bool_not::@7 + //SEG60 [30] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG60 bool_not::@2 - //SEG61 [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG61 bool_not::@2 + //SEG62 [31] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x - //SEG62 bool_not::@3 + //SEG63 bool_not::@3 b3: - //SEG63 [32] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuxx=_inc_vbuxx + //SEG64 [32] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuxx=_inc_vbuxx inx - //SEG64 [33] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG65 [33] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1 - //SEG65 bool_not::@return - //SEG66 [34] return + //SEG66 bool_not::@return + //SEG67 [34] return rts - //SEG67 bool_not::@4 + //SEG68 bool_not::@4 b4: - //SEG68 [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG69 [35] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 } -//SEG69 bool_or +//SEG70 bool_or bool_or: { .label screen = $428 - //SEG70 [37] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] - //SEG71 [37] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuxx=vbuc1 + //SEG71 [37] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] + //SEG72 [37] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG72 [37] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] - //SEG73 [37] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy - //SEG74 bool_or::@1 + //SEG73 [37] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] + //SEG74 [37] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy + //SEG75 bool_or::@1 b1: - //SEG75 [38] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG76 [38] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG76 [39] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG77 [39] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 - //SEG77 bool_or::@7 - //SEG78 [40] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuaa_eq_0_then_la1 + //SEG78 bool_or::@7 + //SEG79 [40] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG79 bool_or::@4 - //SEG80 [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG80 bool_or::@4 + //SEG81 [41] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x - //SEG81 bool_or::@3 + //SEG82 bool_or::@3 b3: - //SEG82 [42] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuxx=_inc_vbuxx + //SEG83 [42] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuxx=_inc_vbuxx inx - //SEG83 [43] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG84 [43] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1 - //SEG84 bool_or::@return - //SEG85 [44] return + //SEG85 bool_or::@return + //SEG86 [44] return rts - //SEG86 bool_or::@2 + //SEG87 bool_or::@2 b2: - //SEG87 [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG88 [45] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 } -//SEG88 bool_and +//SEG89 bool_and bool_and: { .label screen = $400 - //SEG89 [47] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] - //SEG90 [47] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuxx=vbuc1 + //SEG90 [47] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] + //SEG91 [47] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG91 [47] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] - //SEG92 [47] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy - //SEG93 bool_and::@1 + //SEG92 [47] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] + //SEG93 [47] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy + //SEG94 bool_and::@1 b1: - //SEG94 [48] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG95 [48] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG95 [49] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuxx_lt_vbuc1_then_la1 + //SEG96 [49] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b7 - //SEG96 bool_and::@4 + //SEG97 bool_and::@4 b4: - //SEG97 [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG98 [50] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x - //SEG98 bool_and::@3 + //SEG99 bool_and::@3 b3: - //SEG99 [51] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuxx=_inc_vbuxx + //SEG100 [51] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuxx=_inc_vbuxx inx - //SEG100 [52] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG101 [52] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1 - //SEG101 bool_and::@return - //SEG102 [53] return + //SEG102 bool_and::@return + //SEG103 [53] return rts - //SEG103 bool_and::@7 + //SEG104 bool_and::@7 b7: - //SEG104 [54] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuaa_eq_0_then_la1 + //SEG105 [54] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 jmp b4 - //SEG105 bool_and::@2 + //SEG106 bool_and::@2 b2: - //SEG106 [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG107 [55] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 diff --git a/src/test/ref/bool-pointer.asm b/src/test/ref/bool-pointer.asm index a84cd0538..6f7d793e2 100644 --- a/src/test/ref/bool-pointer.asm +++ b/src/test/ref/bool-pointer.asm @@ -1,7 +1,7 @@ +// Tests a pointer to a boolean .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Tests a pointer to a boolean main: { lda #1 sta $400 diff --git a/src/test/ref/bool-pointer.log b/src/test/ref/bool-pointer.log index ea3bd5cc9..930ec092a 100644 --- a/src/test/ref/bool-pointer.log +++ b/src/test/ref/bool-pointer.log @@ -114,49 +114,50 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests a pointer to a boolean +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Tests a pointer to a boolean +//SEG9 main main: { - //SEG9 [4] *(((bool*))(word/signed word/dword/signed dword) 1024) ← true -- _deref_pboc1=vboc2 + //SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) 1024) ← true -- _deref_pboc1=vboc2 lda #1 sta $400 - //SEG10 [5] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 1) ← false -- _deref_pboc1=vboc2 + //SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 1) ← false -- _deref_pboc1=vboc2 lda #0 sta $400+1 - //SEG11 [6] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 + //SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 lda #1 sta $400+2 - //SEG12 [7] if(*(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@2 -- _deref_pboc1_then_la1 + //SEG13 [7] if(*(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@2 -- _deref_pboc1_then_la1 lda $400+2 cmp #0 bne b2 jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [8] return + //SEG15 [8] return rts - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [9] *(++((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 + //SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 lda #1 sta $400+2+1 jmp breturn @@ -177,49 +178,50 @@ Uplifting [main] best 56 combination Uplifting [] best 56 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests a pointer to a boolean +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Tests a pointer to a boolean +//SEG9 main main: { - //SEG9 [4] *(((bool*))(word/signed word/dword/signed dword) 1024) ← true -- _deref_pboc1=vboc2 + //SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) 1024) ← true -- _deref_pboc1=vboc2 lda #1 sta $400 - //SEG10 [5] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 1) ← false -- _deref_pboc1=vboc2 + //SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 1) ← false -- _deref_pboc1=vboc2 lda #0 sta $400+1 - //SEG11 [6] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 + //SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 lda #1 sta $400+2 - //SEG12 [7] if(*(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@2 -- _deref_pboc1_then_la1 + //SEG13 [7] if(*(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@2 -- _deref_pboc1_then_la1 lda $400+2 cmp #0 bne b2 jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [8] return + //SEG15 [8] return rts - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [9] *(++((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 + //SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 lda #1 sta $400+2+1 jmp breturn @@ -258,39 +260,40 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 37 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests a pointer to a boolean +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main -// Tests a pointer to a boolean +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *(((bool*))(word/signed word/dword/signed dword) 1024) ← true -- _deref_pboc1=vboc2 + //SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) 1024) ← true -- _deref_pboc1=vboc2 lda #1 sta $400 - //SEG10 [5] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 1) ← false -- _deref_pboc1=vboc2 + //SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 1) ← false -- _deref_pboc1=vboc2 lda #0 sta $400+1 - //SEG11 [6] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 + //SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 lda #1 sta $400+2 - //SEG12 [7] if(*(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@2 -- _deref_pboc1_then_la1 + //SEG13 [7] if(*(((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@2 -- _deref_pboc1_then_la1 cmp #0 bne b2 - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [8] return + //SEG15 [8] return rts - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [9] *(++((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 + //SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2) ← true -- _deref_pboc1=vboc2 lda #1 sta $400+2+1 jmp breturn diff --git a/src/test/ref/bool-vars.asm b/src/test/ref/bool-vars.asm index 1ed3db54b..aa20382f3 100644 --- a/src/test/ref/bool-vars.asm +++ b/src/test/ref/bool-vars.asm @@ -1,7 +1,7 @@ +// A test of boolean conditions using && || and ! .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// A test of boolean conditions using && || and ! main: { jsr bool_and jsr bool_or diff --git a/src/test/ref/bool-vars.log b/src/test/ref/bool-vars.log index be0f6f9bb..1d94c6a3d 100644 --- a/src/test/ref/bool-vars.log +++ b/src/test/ref/bool-vars.log @@ -618,98 +618,99 @@ Allocated zp ZP_BYTE:10 [ bool_or::$1 ] Allocated zp ZP_BYTE:11 [ bool_and::$1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A test of boolean conditions using && || and ! +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// A test of boolean conditions using && || and ! +//SEG10 main main: { - //SEG10 [5] call bool_and - //SEG11 [47] phi from main to bool_and [phi:main->bool_and] + //SEG11 [5] call bool_and + //SEG12 [47] phi from main to bool_and [phi:main->bool_and] bool_and_from_main: jsr bool_and - //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 bool_or - //SEG15 [37] phi from main::@1 to bool_or [phi:main::@1->bool_or] + //SEG15 [7] call bool_or + //SEG16 [37] phi from main::@1 to bool_or [phi:main::@1->bool_or] bool_or_from_b1: jsr bool_or - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call bool_not - //SEG19 [27] phi from main::@2 to bool_not [phi:main::@2->bool_not] + //SEG19 [9] call bool_not + //SEG20 [27] phi from main::@2 to bool_not [phi:main::@2->bool_not] bool_not_from_b2: jsr bool_not - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [11] call bool_complex - //SEG23 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] + //SEG23 [11] call bool_complex + //SEG24 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] bool_complex_from_b3: jsr bool_complex jmp breturn - //SEG24 main::@return + //SEG25 main::@return breturn: - //SEG25 [12] return + //SEG26 [12] return rts } -//SEG26 bool_complex +//SEG27 bool_complex bool_complex: { .label screen = $478 .label _1 = 7 .label o1 = 6 .label o2 = 8 .label i = 2 - //SEG27 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] + //SEG28 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] b1_from_bool_complex: - //SEG28 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuz1=vbuc1 + //SEG29 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG29 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] + //SEG30 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] b1_from_b3: - //SEG30 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy + //SEG31 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy jmp b1 - //SEG31 bool_complex::@1 + //SEG32 bool_complex::@1 b1: - //SEG32 [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte/signed byte/word/signed word/dword/signed dword) 10 -- vboz1=vbuz2_lt_vbuc1 + //SEG33 [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte/signed byte/word/signed word/dword/signed dword) 10 -- vboz1=vbuz2_lt_vbuc1 lda i cmp #$a lda #0 rol eor #1 sta o1 - //SEG33 [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG34 [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _1 - //SEG34 [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuz2_eq_vbuc1 + //SEG35 [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuz2_eq_vbuc1 lda _1 cmp #0 beq !+ @@ -717,238 +718,238 @@ bool_complex: { !: eor #1 sta o2 - //SEG35 [18] if((bool) bool_complex::o1#0) goto bool_complex::@8 -- vboz1_then_la1 + //SEG36 [18] if((bool) bool_complex::o1#0) goto bool_complex::@8 -- vboz1_then_la1 lda o1 cmp #0 bne b8 jmp b7 - //SEG36 bool_complex::@7 + //SEG37 bool_complex::@7 b7: - //SEG37 [19] if((bool) bool_complex::o1#0) goto bool_complex::@4 -- vboz1_then_la1 + //SEG38 [19] if((bool) bool_complex::o1#0) goto bool_complex::@4 -- vboz1_then_la1 lda o1 cmp #0 bne b4 jmp b9 - //SEG38 bool_complex::@9 + //SEG39 bool_complex::@9 b9: - //SEG39 [20] if((bool) bool_complex::o2#0) goto bool_complex::@4 -- vboz1_then_la1 + //SEG40 [20] if((bool) bool_complex::o2#0) goto bool_complex::@4 -- vboz1_then_la1 lda o2 cmp #0 bne b4 jmp b2 - //SEG40 bool_complex::@2 + //SEG41 bool_complex::@2 b2: - //SEG41 [21] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG42 [21] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y jmp b3 - //SEG42 bool_complex::@3 + //SEG43 bool_complex::@3 b3: - //SEG43 [22] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuz1=_inc_vbuz1 + //SEG44 [22] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG44 [23] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG45 [23] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$15 bne b1_from_b3 jmp breturn - //SEG45 bool_complex::@return + //SEG46 bool_complex::@return breturn: - //SEG46 [24] return + //SEG47 [24] return rts - //SEG47 bool_complex::@4 + //SEG48 bool_complex::@4 b4: - //SEG48 [25] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG49 [25] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 - //SEG49 bool_complex::@8 + //SEG50 bool_complex::@8 b8: - //SEG50 [26] if((bool) bool_complex::o2#0) goto bool_complex::@2 -- vboz1_then_la1 + //SEG51 [26] if((bool) bool_complex::o2#0) goto bool_complex::@2 -- vboz1_then_la1 lda o2 cmp #0 bne b2 jmp b7 } -//SEG51 bool_not +//SEG52 bool_not bool_not: { .label screen = $450 .label _1 = 9 .label i = 3 - //SEG52 [28] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] + //SEG53 [28] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] b1_from_bool_not: - //SEG53 [28] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuz1=vbuc1 + //SEG54 [28] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG54 [28] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] + //SEG55 [28] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] b1_from_b3: - //SEG55 [28] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy + //SEG56 [28] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy jmp b1 - //SEG56 bool_not::@1 + //SEG57 bool_not::@1 b1: - //SEG57 [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG58 [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _1 - //SEG58 [30] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG59 [30] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b4 jmp b7 - //SEG59 bool_not::@7 + //SEG60 bool_not::@7 b7: - //SEG60 [31] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuz1_eq_0_then_la1 + //SEG61 [31] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4 jmp b2 - //SEG61 bool_not::@2 + //SEG62 bool_not::@2 b2: - //SEG62 [32] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG63 [32] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y jmp b3 - //SEG63 bool_not::@3 + //SEG64 bool_not::@3 b3: - //SEG64 [33] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuz1=_inc_vbuz1 + //SEG65 [33] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG65 [34] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG66 [34] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$15 bne b1_from_b3 jmp breturn - //SEG66 bool_not::@return + //SEG67 bool_not::@return breturn: - //SEG67 [35] return + //SEG68 [35] return rts - //SEG68 bool_not::@4 + //SEG69 bool_not::@4 b4: - //SEG69 [36] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG70 [36] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 } -//SEG70 bool_or +//SEG71 bool_or bool_or: { .label screen = $428 .label _1 = $a .label i = 4 - //SEG71 [38] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] + //SEG72 [38] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] b1_from_bool_or: - //SEG72 [38] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuz1=vbuc1 + //SEG73 [38] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG73 [38] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] + //SEG74 [38] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] b1_from_b3: - //SEG74 [38] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy + //SEG75 [38] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy jmp b1 - //SEG75 bool_or::@1 + //SEG76 bool_or::@1 b1: - //SEG76 [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG77 [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _1 - //SEG77 [40] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG78 [40] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b2 jmp b7 - //SEG78 bool_or::@7 + //SEG79 bool_or::@7 b7: - //SEG79 [41] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuz1_eq_0_then_la1 + //SEG80 [41] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b2 jmp b4 - //SEG80 bool_or::@4 + //SEG81 bool_or::@4 b4: - //SEG81 [42] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG82 [42] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 - //SEG82 bool_or::@3 + //SEG83 bool_or::@3 b3: - //SEG83 [43] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuz1=_inc_vbuz1 + //SEG84 [43] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG84 [44] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG85 [44] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$15 bne b1_from_b3 jmp breturn - //SEG85 bool_or::@return + //SEG86 bool_or::@return breturn: - //SEG86 [45] return + //SEG87 [45] return rts - //SEG87 bool_or::@2 + //SEG88 bool_or::@2 b2: - //SEG88 [46] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG89 [46] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y jmp b3 } -//SEG89 bool_and +//SEG90 bool_and bool_and: { .label screen = $400 .label _1 = $b .label i = 5 - //SEG90 [48] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] + //SEG91 [48] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] b1_from_bool_and: - //SEG91 [48] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuz1=vbuc1 + //SEG92 [48] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG92 [48] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] + //SEG93 [48] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] b1_from_b3: - //SEG93 [48] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy + //SEG94 [48] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy jmp b1 - //SEG94 bool_and::@1 + //SEG95 bool_and::@1 b1: - //SEG95 [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG96 [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and i sta _1 - //SEG96 [50] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuz1_lt_vbuc1_then_la1 + //SEG97 [50] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b7 jmp b4 - //SEG97 bool_and::@4 + //SEG98 bool_and::@4 b4: - //SEG98 [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG99 [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #' ' sta screen,y jmp b3 - //SEG99 bool_and::@3 + //SEG100 bool_and::@3 b3: - //SEG100 [52] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuz1=_inc_vbuz1 + //SEG101 [52] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG101 [53] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG102 [53] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$15 bne b1_from_b3 jmp breturn - //SEG102 bool_and::@return + //SEG103 bool_and::@return breturn: - //SEG103 [54] return + //SEG104 [54] return rts - //SEG104 bool_and::@7 + //SEG105 bool_and::@7 b7: - //SEG105 [55] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuz1_eq_0_then_la1 + //SEG106 [55] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b2 jmp b4 - //SEG106 bool_and::@2 + //SEG107 bool_and::@2 b2: - //SEG107 [56] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG108 [56] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y @@ -1027,302 +1028,303 @@ Allocated (was zp ZP_BOOL:6) zp ZP_BOOL:2 [ bool_complex::o1#0 ] Allocated (was zp ZP_BOOL:8) zp ZP_BOOL:3 [ bool_complex::o2#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A test of boolean conditions using && || and ! +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// A test of boolean conditions using && || and ! +//SEG10 main main: { - //SEG10 [5] call bool_and - //SEG11 [47] phi from main to bool_and [phi:main->bool_and] + //SEG11 [5] call bool_and + //SEG12 [47] phi from main to bool_and [phi:main->bool_and] bool_and_from_main: jsr bool_and - //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 bool_or - //SEG15 [37] phi from main::@1 to bool_or [phi:main::@1->bool_or] + //SEG15 [7] call bool_or + //SEG16 [37] phi from main::@1 to bool_or [phi:main::@1->bool_or] bool_or_from_b1: jsr bool_or - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call bool_not - //SEG19 [27] phi from main::@2 to bool_not [phi:main::@2->bool_not] + //SEG19 [9] call bool_not + //SEG20 [27] phi from main::@2 to bool_not [phi:main::@2->bool_not] bool_not_from_b2: jsr bool_not - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [11] call bool_complex - //SEG23 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] + //SEG23 [11] call bool_complex + //SEG24 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] bool_complex_from_b3: jsr bool_complex jmp breturn - //SEG24 main::@return + //SEG25 main::@return breturn: - //SEG25 [12] return + //SEG26 [12] return rts } -//SEG26 bool_complex +//SEG27 bool_complex bool_complex: { .label screen = $478 .label o1 = 2 .label o2 = 3 - //SEG27 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] + //SEG28 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] b1_from_bool_complex: - //SEG28 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuxx=vbuc1 + //SEG29 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG29 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] + //SEG30 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] b1_from_b3: - //SEG30 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy + //SEG31 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy jmp b1 - //SEG31 bool_complex::@1 + //SEG32 bool_complex::@1 b1: - //SEG32 [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte/signed byte/word/signed word/dword/signed dword) 10 -- vboz1=vbuxx_lt_vbuc1 + //SEG33 [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte/signed byte/word/signed word/dword/signed dword) 10 -- vboz1=vbuxx_lt_vbuc1 cpx #$a lda #0 rol eor #1 sta o1 - //SEG33 [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG34 [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG34 [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuaa_eq_vbuc1 + //SEG35 [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuaa_eq_vbuc1 cmp #0 beq !+ lda #1 !: eor #1 sta o2 - //SEG35 [18] if((bool) bool_complex::o1#0) goto bool_complex::@8 -- vboz1_then_la1 + //SEG36 [18] if((bool) bool_complex::o1#0) goto bool_complex::@8 -- vboz1_then_la1 lda o1 cmp #0 bne b8 jmp b7 - //SEG36 bool_complex::@7 + //SEG37 bool_complex::@7 b7: - //SEG37 [19] if((bool) bool_complex::o1#0) goto bool_complex::@4 -- vboz1_then_la1 + //SEG38 [19] if((bool) bool_complex::o1#0) goto bool_complex::@4 -- vboz1_then_la1 lda o1 cmp #0 bne b4 jmp b9 - //SEG38 bool_complex::@9 + //SEG39 bool_complex::@9 b9: - //SEG39 [20] if((bool) bool_complex::o2#0) goto bool_complex::@4 -- vboz1_then_la1 + //SEG40 [20] if((bool) bool_complex::o2#0) goto bool_complex::@4 -- vboz1_then_la1 lda o2 cmp #0 bne b4 jmp b2 - //SEG40 bool_complex::@2 + //SEG41 bool_complex::@2 b2: - //SEG41 [21] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG42 [21] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 - //SEG42 bool_complex::@3 + //SEG43 bool_complex::@3 b3: - //SEG43 [22] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuxx=_inc_vbuxx + //SEG44 [22] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuxx=_inc_vbuxx inx - //SEG44 [23] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG45 [23] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1_from_b3 jmp breturn - //SEG45 bool_complex::@return + //SEG46 bool_complex::@return breturn: - //SEG46 [24] return + //SEG47 [24] return rts - //SEG47 bool_complex::@4 + //SEG48 bool_complex::@4 b4: - //SEG48 [25] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG49 [25] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 - //SEG49 bool_complex::@8 + //SEG50 bool_complex::@8 b8: - //SEG50 [26] if((bool) bool_complex::o2#0) goto bool_complex::@2 -- vboz1_then_la1 + //SEG51 [26] if((bool) bool_complex::o2#0) goto bool_complex::@2 -- vboz1_then_la1 lda o2 cmp #0 bne b2 jmp b7 } -//SEG51 bool_not +//SEG52 bool_not bool_not: { .label screen = $450 - //SEG52 [28] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] + //SEG53 [28] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] b1_from_bool_not: - //SEG53 [28] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuxx=vbuc1 + //SEG54 [28] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG54 [28] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] + //SEG55 [28] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] b1_from_b3: - //SEG55 [28] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy + //SEG56 [28] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy jmp b1 - //SEG56 bool_not::@1 + //SEG57 bool_not::@1 b1: - //SEG57 [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG58 [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG58 [30] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuxx_lt_vbuc1_then_la1 + //SEG59 [30] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b4 jmp b7 - //SEG59 bool_not::@7 + //SEG60 bool_not::@7 b7: - //SEG60 [31] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuaa_eq_0_then_la1 + //SEG61 [31] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 jmp b2 - //SEG61 bool_not::@2 + //SEG62 bool_not::@2 b2: - //SEG62 [32] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG63 [32] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 - //SEG63 bool_not::@3 + //SEG64 bool_not::@3 b3: - //SEG64 [33] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuxx=_inc_vbuxx + //SEG65 [33] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuxx=_inc_vbuxx inx - //SEG65 [34] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG66 [34] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1_from_b3 jmp breturn - //SEG66 bool_not::@return + //SEG67 bool_not::@return breturn: - //SEG67 [35] return + //SEG68 [35] return rts - //SEG68 bool_not::@4 + //SEG69 bool_not::@4 b4: - //SEG69 [36] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG70 [36] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 } -//SEG70 bool_or +//SEG71 bool_or bool_or: { .label screen = $428 - //SEG71 [38] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] + //SEG72 [38] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] b1_from_bool_or: - //SEG72 [38] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuxx=vbuc1 + //SEG73 [38] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG73 [38] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] + //SEG74 [38] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] b1_from_b3: - //SEG74 [38] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy + //SEG75 [38] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy jmp b1 - //SEG75 bool_or::@1 + //SEG76 bool_or::@1 b1: - //SEG76 [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG77 [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG77 [40] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG78 [40] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 jmp b7 - //SEG78 bool_or::@7 + //SEG79 bool_or::@7 b7: - //SEG79 [41] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuaa_eq_0_then_la1 + //SEG80 [41] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 jmp b4 - //SEG80 bool_or::@4 + //SEG81 bool_or::@4 b4: - //SEG81 [42] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG82 [42] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 - //SEG82 bool_or::@3 + //SEG83 bool_or::@3 b3: - //SEG83 [43] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuxx=_inc_vbuxx + //SEG84 [43] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuxx=_inc_vbuxx inx - //SEG84 [44] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG85 [44] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1_from_b3 jmp breturn - //SEG85 bool_or::@return + //SEG86 bool_or::@return breturn: - //SEG86 [45] return + //SEG87 [45] return rts - //SEG87 bool_or::@2 + //SEG88 bool_or::@2 b2: - //SEG88 [46] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG89 [46] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 } -//SEG89 bool_and +//SEG90 bool_and bool_and: { .label screen = $400 - //SEG90 [48] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] + //SEG91 [48] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] b1_from_bool_and: - //SEG91 [48] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuxx=vbuc1 + //SEG92 [48] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG92 [48] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] + //SEG93 [48] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] b1_from_b3: - //SEG93 [48] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy + //SEG94 [48] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy jmp b1 - //SEG94 bool_and::@1 + //SEG95 bool_and::@1 b1: - //SEG95 [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG96 [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG96 [50] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuxx_lt_vbuc1_then_la1 + //SEG97 [50] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b7 jmp b4 - //SEG97 bool_and::@4 + //SEG98 bool_and::@4 b4: - //SEG98 [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG99 [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 - //SEG99 bool_and::@3 + //SEG100 bool_and::@3 b3: - //SEG100 [52] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuxx=_inc_vbuxx + //SEG101 [52] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuxx=_inc_vbuxx inx - //SEG101 [53] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG102 [53] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1_from_b3 jmp breturn - //SEG102 bool_and::@return + //SEG103 bool_and::@return breturn: - //SEG103 [54] return + //SEG104 [54] return rts - //SEG104 bool_and::@7 + //SEG105 bool_and::@7 b7: - //SEG105 [55] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuaa_eq_0_then_la1 + //SEG106 [55] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 jmp b4 - //SEG106 bool_and::@2 + //SEG107 bool_and::@2 b2: - //SEG107 [56] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG108 [56] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 @@ -1501,237 +1503,238 @@ reg byte a [ bool_and::$1 ] FINAL ASSEMBLER Score: 2089 -//SEG0 Basic Upstart +//SEG0 File Comments +// A test of boolean conditions using && || and ! +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] -//SEG7 [3] phi from @5 to @end [phi:@5->@end] -//SEG8 @end -//SEG9 main -// A test of boolean conditions using && || and ! +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG5 @5 +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call bool_and - //SEG11 [47] phi from main to bool_and [phi:main->bool_and] + //SEG11 [5] call bool_and + //SEG12 [47] phi from main to bool_and [phi:main->bool_and] jsr bool_and - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 main::@1 - //SEG14 [7] call bool_or - //SEG15 [37] phi from main::@1 to bool_or [phi:main::@1->bool_or] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call bool_or + //SEG16 [37] phi from main::@1 to bool_or [phi:main::@1->bool_or] jsr bool_or - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 main::@2 - //SEG18 [9] call bool_not - //SEG19 [27] phi from main::@2 to bool_not [phi:main::@2->bool_not] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [9] call bool_not + //SEG20 [27] phi from main::@2 to bool_not [phi:main::@2->bool_not] jsr bool_not - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG21 main::@3 - //SEG22 [11] call bool_complex - //SEG23 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG22 main::@3 + //SEG23 [11] call bool_complex + //SEG24 [13] phi from main::@3 to bool_complex [phi:main::@3->bool_complex] jsr bool_complex - //SEG24 main::@return - //SEG25 [12] return + //SEG25 main::@return + //SEG26 [12] return rts } -//SEG26 bool_complex +//SEG27 bool_complex bool_complex: { .label screen = $478 .label o1 = 2 .label o2 = 3 - //SEG27 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] - //SEG28 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuxx=vbuc1 + //SEG28 [14] phi from bool_complex to bool_complex::@1 [phi:bool_complex->bool_complex::@1] + //SEG29 [14] phi (byte) bool_complex::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_complex->bool_complex::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG29 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] - //SEG30 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy - //SEG31 bool_complex::@1 + //SEG30 [14] phi from bool_complex::@3 to bool_complex::@1 [phi:bool_complex::@3->bool_complex::@1] + //SEG31 [14] phi (byte) bool_complex::i#2 = (byte) bool_complex::i#1 [phi:bool_complex::@3->bool_complex::@1#0] -- register_copy + //SEG32 bool_complex::@1 b1: - //SEG32 [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte/signed byte/word/signed word/dword/signed dword) 10 -- vboz1=vbuxx_lt_vbuc1 + //SEG33 [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte/signed byte/word/signed word/dword/signed dword) 10 -- vboz1=vbuxx_lt_vbuc1 cpx #$a lda #0 rol eor #1 sta o1 - //SEG33 [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG34 [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG34 [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuaa_eq_vbuc1 + //SEG35 [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -- vboz1=vbuaa_eq_vbuc1 cmp #0 beq !+ lda #1 !: eor #1 sta o2 - //SEG35 [18] if((bool) bool_complex::o1#0) goto bool_complex::@8 -- vboz1_then_la1 + //SEG36 [18] if((bool) bool_complex::o1#0) goto bool_complex::@8 -- vboz1_then_la1 lda o1 cmp #0 bne b8 - //SEG36 bool_complex::@7 + //SEG37 bool_complex::@7 b7: - //SEG37 [19] if((bool) bool_complex::o1#0) goto bool_complex::@4 -- vboz1_then_la1 + //SEG38 [19] if((bool) bool_complex::o1#0) goto bool_complex::@4 -- vboz1_then_la1 lda o1 cmp #0 bne b4 - //SEG38 bool_complex::@9 - //SEG39 [20] if((bool) bool_complex::o2#0) goto bool_complex::@4 -- vboz1_then_la1 + //SEG39 bool_complex::@9 + //SEG40 [20] if((bool) bool_complex::o2#0) goto bool_complex::@4 -- vboz1_then_la1 lda o2 cmp #0 bne b4 - //SEG40 bool_complex::@2 + //SEG41 bool_complex::@2 b2: - //SEG41 [21] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG42 [21] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x - //SEG42 bool_complex::@3 + //SEG43 bool_complex::@3 b3: - //SEG43 [22] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuxx=_inc_vbuxx + //SEG44 [22] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2 -- vbuxx=_inc_vbuxx inx - //SEG44 [23] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG45 [23] if((byte) bool_complex::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_complex::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1 - //SEG45 bool_complex::@return - //SEG46 [24] return + //SEG46 bool_complex::@return + //SEG47 [24] return rts - //SEG47 bool_complex::@4 + //SEG48 bool_complex::@4 b4: - //SEG48 [25] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG49 [25] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 - //SEG49 bool_complex::@8 + //SEG50 bool_complex::@8 b8: - //SEG50 [26] if((bool) bool_complex::o2#0) goto bool_complex::@2 -- vboz1_then_la1 + //SEG51 [26] if((bool) bool_complex::o2#0) goto bool_complex::@2 -- vboz1_then_la1 lda o2 cmp #0 bne b2 jmp b7 } -//SEG51 bool_not +//SEG52 bool_not bool_not: { .label screen = $450 - //SEG52 [28] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] - //SEG53 [28] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuxx=vbuc1 + //SEG53 [28] phi from bool_not to bool_not::@1 [phi:bool_not->bool_not::@1] + //SEG54 [28] phi (byte) bool_not::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_not->bool_not::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG54 [28] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] - //SEG55 [28] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy - //SEG56 bool_not::@1 + //SEG55 [28] phi from bool_not::@3 to bool_not::@1 [phi:bool_not::@3->bool_not::@1] + //SEG56 [28] phi (byte) bool_not::i#2 = (byte) bool_not::i#1 [phi:bool_not::@3->bool_not::@1#0] -- register_copy + //SEG57 bool_not::@1 b1: - //SEG57 [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG58 [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG58 [30] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuxx_lt_vbuc1_then_la1 + //SEG59 [30] if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b4 - //SEG59 bool_not::@7 - //SEG60 [31] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuaa_eq_0_then_la1 + //SEG60 bool_not::@7 + //SEG61 [31] if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG61 bool_not::@2 - //SEG62 [32] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG62 bool_not::@2 + //SEG63 [32] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x - //SEG63 bool_not::@3 + //SEG64 bool_not::@3 b3: - //SEG64 [33] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuxx=_inc_vbuxx + //SEG65 [33] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#2 -- vbuxx=_inc_vbuxx inx - //SEG65 [34] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG66 [34] if((byte) bool_not::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_not::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1 - //SEG66 bool_not::@return - //SEG67 [35] return + //SEG67 bool_not::@return + //SEG68 [35] return rts - //SEG68 bool_not::@4 + //SEG69 bool_not::@4 b4: - //SEG69 [36] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG70 [36] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x jmp b3 } -//SEG70 bool_or +//SEG71 bool_or bool_or: { .label screen = $428 - //SEG71 [38] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] - //SEG72 [38] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuxx=vbuc1 + //SEG72 [38] phi from bool_or to bool_or::@1 [phi:bool_or->bool_or::@1] + //SEG73 [38] phi (byte) bool_or::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_or->bool_or::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG73 [38] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] - //SEG74 [38] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy - //SEG75 bool_or::@1 + //SEG74 [38] phi from bool_or::@3 to bool_or::@1 [phi:bool_or::@3->bool_or::@1] + //SEG75 [38] phi (byte) bool_or::i#2 = (byte) bool_or::i#1 [phi:bool_or::@3->bool_or::@1#0] -- register_copy + //SEG76 bool_or::@1 b1: - //SEG76 [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG77 [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG77 [40] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG78 [40] if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 - //SEG78 bool_or::@7 - //SEG79 [41] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuaa_eq_0_then_la1 + //SEG79 bool_or::@7 + //SEG80 [41] if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG80 bool_or::@4 - //SEG81 [42] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG81 bool_or::@4 + //SEG82 [42] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x - //SEG82 bool_or::@3 + //SEG83 bool_or::@3 b3: - //SEG83 [43] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuxx=_inc_vbuxx + //SEG84 [43] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#2 -- vbuxx=_inc_vbuxx inx - //SEG84 [44] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG85 [44] if((byte) bool_or::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_or::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1 - //SEG85 bool_or::@return - //SEG86 [45] return + //SEG86 bool_or::@return + //SEG87 [45] return rts - //SEG87 bool_or::@2 + //SEG88 bool_or::@2 b2: - //SEG88 [46] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG89 [46] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 } -//SEG89 bool_and +//SEG90 bool_and bool_and: { .label screen = $400 - //SEG90 [48] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] - //SEG91 [48] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuxx=vbuc1 + //SEG91 [48] phi from bool_and to bool_and::@1 [phi:bool_and->bool_and::@1] + //SEG92 [48] phi (byte) bool_and::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bool_and->bool_and::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG92 [48] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] - //SEG93 [48] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy - //SEG94 bool_and::@1 + //SEG93 [48] phi from bool_and::@3 to bool_and::@1 [phi:bool_and::@3->bool_and::@1] + //SEG94 [48] phi (byte) bool_and::i#2 = (byte) bool_and::i#1 [phi:bool_and::@3->bool_and::@1#0] -- register_copy + //SEG95 bool_and::@1 b1: - //SEG95 [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG96 [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG96 [50] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuxx_lt_vbuc1_then_la1 + //SEG97 [50] if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b7 - //SEG97 bool_and::@4 + //SEG98 bool_and::@4 b4: - //SEG98 [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG99 [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) ' ' -- pbuc1_derefidx_vbuxx=vbuc2 lda #' ' sta screen,x - //SEG99 bool_and::@3 + //SEG100 bool_and::@3 b3: - //SEG100 [52] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuxx=_inc_vbuxx + //SEG101 [52] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#2 -- vbuxx=_inc_vbuxx inx - //SEG101 [53] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG102 [53] if((byte) bool_and::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 21) goto bool_and::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$15 bne b1 - //SEG102 bool_and::@return - //SEG103 [54] return + //SEG103 bool_and::@return + //SEG104 [54] return rts - //SEG104 bool_and::@7 + //SEG105 bool_and::@7 b7: - //SEG105 [55] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuaa_eq_0_then_la1 + //SEG106 [55] if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 jmp b4 - //SEG106 bool_and::@2 + //SEG107 bool_and::@2 b2: - //SEG107 [56] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG108 [56] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x jmp b3 diff --git a/src/test/ref/bresenham.log b/src/test/ref/bresenham.log index 052dce81e..287c448bd 100644 --- a/src/test/ref/bresenham.log +++ b/src/test/ref/bresenham.log @@ -354,30 +354,31 @@ Allocated zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] Allocated zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const STAR = $51 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const x1 = $27 .const y1 = $18 @@ -387,58 +388,58 @@ main: { .label cursor = 2 .label e = 5 .label y = 6 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #4 sta y - //SEG12 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #yd/2 sta e - //SEG13 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1 + //SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1 lda #4 sta x - //SEG14 [5] phi (byte*) main::cursor#3 = (const byte[40*25]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1 + //SEG15 [5] phi (byte*) main::cursor#3 = (const byte[40*25]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1 lda #SCREEN+4*$28+4 sta cursor+1 jmp b1 - //SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG16 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG17 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy - //SEG19 [5] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy + //SEG17 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG18 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG20 [5] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy jmp b1 - //SEG20 main::@1 + //SEG21 main::@1 b1: - //SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 -- _deref_pbuz1=vbuc1 + //SEG22 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 -- _deref_pbuz1=vbuc1 lda #STAR ldy #0 sta (cursor),y - //SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG23 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc x - //SEG23 [8] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG24 [8] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc cursor bne !+ inc cursor+1 !: - //SEG24 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuz1=vbuz1_plus_vbuc1 lda #yd clc adc e sta e - //SEG25 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuz1_then_la1 + //SEG26 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuz1_then_la1 lda e cmp #xd bcc b2_from_b1 jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG28 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc y - //SEG28 [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG29 [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cursor clc adc #$28 @@ -446,28 +447,28 @@ main: { bcc !+ inc cursor+1 !: - //SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuz1=vbuz1_minus_vbuc1 + //SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuz1=vbuz1_minus_vbuc1 lda e sec sbc #xd sta e - //SEG30 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG31 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG32 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy - //SEG33 [14] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy + //SEG32 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG34 [14] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy jmp b2 - //SEG34 main::@2 + //SEG35 main::@2 b2: - //SEG35 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #x1+1 bcc b1_from_b2 jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [16] return + //SEG38 [16] return rts } @@ -504,30 +505,31 @@ Uplifting [main] best 1168 combination zp ZP_BYTE:4 [ main::x#2 main::x#1 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const STAR = $51 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const x1 = $27 .const y1 = $18 @@ -536,56 +538,56 @@ main: { .label x = 4 .label cursor = 2 .label y = 5 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #4 sta y - //SEG12 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #yd/2 - //SEG13 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1 + //SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1 lda #4 sta x - //SEG14 [5] phi (byte*) main::cursor#3 = (const byte[40*25]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1 + //SEG15 [5] phi (byte*) main::cursor#3 = (const byte[40*25]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1 lda #SCREEN+4*$28+4 sta cursor+1 jmp b1 - //SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG16 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG17 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy - //SEG19 [5] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy + //SEG17 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG18 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG20 [5] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy jmp b1 - //SEG20 main::@1 + //SEG21 main::@1 b1: - //SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 -- _deref_pbuz1=vbuc1 + //SEG22 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 -- _deref_pbuz1=vbuc1 lda #STAR ldy #0 sta (cursor),y - //SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG23 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc x - //SEG23 [8] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG24 [8] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc cursor bne !+ inc cursor+1 !: - //SEG24 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #yd tax - //SEG25 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuxx_then_la1 + //SEG26 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuxx_then_la1 cpx #xd bcc b2_from_b1 jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG28 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc y - //SEG28 [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG29 [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cursor clc adc #$28 @@ -593,28 +595,28 @@ main: { bcc !+ inc cursor+1 !: - //SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuxx=vbuxx_minus_vbuc1 + //SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuxx=vbuxx_minus_vbuc1 txa sec sbc #xd tax - //SEG30 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG31 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG32 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy - //SEG33 [14] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy + //SEG32 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG34 [14] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy jmp b2 - //SEG34 main::@2 + //SEG35 main::@2 b2: - //SEG35 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #x1+1 bcc b1_from_b2 jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [16] return + //SEG38 [16] return rts } @@ -701,21 +703,22 @@ zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ] FINAL ASSEMBLER Score: 986 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const STAR = $51 .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .const x1 = $27 .const y1 = $18 @@ -724,49 +727,49 @@ main: { .label x = 4 .label cursor = 2 .label y = 5 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #4 sta y - //SEG12 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #yd/2 - //SEG13 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1 + //SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1 sta x - //SEG14 [5] phi (byte*) main::cursor#3 = (const byte[40*25]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1 + //SEG15 [5] phi (byte*) main::cursor#3 = (const byte[40*25]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1 lda #SCREEN+4*$28+4 sta cursor+1 - //SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG16 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG17 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy - //SEG19 [5] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy - //SEG20 main::@1 + //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG17 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG18 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG20 [5] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy + //SEG21 main::@1 b1: - //SEG21 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 -- _deref_pbuz1=vbuc1 + //SEG22 [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 -- _deref_pbuz1=vbuc1 lda #STAR ldy #0 sta (cursor),y - //SEG22 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG23 [7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc x - //SEG23 [8] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG24 [8] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc cursor bne !+ inc cursor+1 !: - //SEG24 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG25 [9] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #yd tax - //SEG25 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuxx_then_la1 + //SEG26 [10] if((const byte) main::xd#0>(byte) main::e#1) goto main::@2 -- vbuc1_gt_vbuxx_then_la1 cpx #xd bcc b2 - //SEG26 main::@3 - //SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG27 main::@3 + //SEG28 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc y - //SEG28 [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG29 [12] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cursor clc adc #$28 @@ -774,23 +777,23 @@ main: { bcc !+ inc cursor+1 !: - //SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuxx=vbuxx_minus_vbuc1 + //SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuxx=vbuxx_minus_vbuc1 txa sec sbc #xd tax - //SEG30 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] - //SEG31 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG32 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy - //SEG33 [14] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy - //SEG34 main::@2 + //SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG32 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG34 [14] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy + //SEG35 main::@2 b2: - //SEG35 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #x1+1 bcc b1 - //SEG36 main::@return - //SEG37 [16] return + //SEG37 main::@return + //SEG38 [16] return rts } diff --git a/src/test/ref/bresenhamarr.log b/src/test/ref/bresenhamarr.log index e05236ef3..e061bc279 100644 --- a/src/test/ref/bresenhamarr.log +++ b/src/test/ref/bresenhamarr.log @@ -345,28 +345,29 @@ Allocated zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] Allocated zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const STAR = $51 .label screen = $400 @@ -378,33 +379,33 @@ main: { .label idx = 2 .label e = 5 .label y = 6 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG12 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #yd/2 sta e - //SEG13 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 + //SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 lda #0 sta x - //SEG14 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1 + //SEG15 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1 lda #<0 sta idx lda #>0 sta idx+1 jmp b1 - //SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG16 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG17 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy - //SEG19 [5] phi (word) main::idx#3 = (word) main::idx#5 [phi:main::@2->main::@1#3] -- register_copy + //SEG17 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG18 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG20 [5] phi (word) main::idx#3 = (word) main::idx#5 [phi:main::@2->main::@1#3] -- register_copy jmp b1 - //SEG20 main::@1 + //SEG21 main::@1 b1: - //SEG21 [6] *((const byte[40*25]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 -- pbuc1_derefidx_vwuz1=vbuc2 + //SEG22 [6] *((const byte[40*25]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 -- pbuc1_derefidx_vwuz1=vbuc2 lda #=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuz1_then_la1 + //SEG26 [10] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuz1_then_la1 lda #xd cmp e bcs b2_from_b1 jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG28 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc y - //SEG28 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- vwuz1=vwuz1_plus_vbuc1 + //SEG29 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- vwuz1=vwuz1_plus_vbuc1 clc lda idx adc #<$28 @@ -444,28 +445,28 @@ main: { lda idx+1 adc #>$28 sta idx+1 - //SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuz1=vbuz1_minus_vbuc1 + //SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuz1=vbuz1_minus_vbuc1 lda e sec sbc #xd sta e - //SEG30 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG31 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG32 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy - //SEG33 [14] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy + //SEG32 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG34 [14] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy jmp b2 - //SEG34 main::@2 + //SEG35 main::@2 b2: - //SEG35 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #x1+1 bcc b1_from_b2 jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [16] return + //SEG38 [16] return rts } @@ -497,28 +498,29 @@ Uplifting [main] best 1268 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main:: Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const STAR = $51 .label screen = $400 @@ -528,31 +530,31 @@ main: { .const yd = y1-0 .label idx = 2 .label y = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG12 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuyy=vbuc1 + //SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuyy=vbuc1 ldy #yd/2 - //SEG13 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuxx=vbuc1 + //SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG14 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1 + //SEG15 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1 lda #<0 sta idx lda #>0 sta idx+1 jmp b1 - //SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG16 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG17 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy - //SEG19 [5] phi (word) main::idx#3 = (word) main::idx#5 [phi:main::@2->main::@1#3] -- register_copy + //SEG17 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG18 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG20 [5] phi (word) main::idx#3 = (word) main::idx#5 [phi:main::@2->main::@1#3] -- register_copy jmp b1 - //SEG20 main::@1 + //SEG21 main::@1 b1: - //SEG21 [6] *((const byte[40*25]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 -- pbuc1_derefidx_vwuz1=vbuc2 + //SEG22 [6] *((const byte[40*25]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 -- pbuc1_derefidx_vwuz1=vbuc2 lda #=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuyy_then_la1 + //SEG26 [10] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuyy_then_la1 cpy #xd bcc b2_from_b1 beq b2_from_b1 jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG28 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc y - //SEG28 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- vwuz1=vwuz1_plus_vbuc1 + //SEG29 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- vwuz1=vwuz1_plus_vbuc1 clc lda idx adc #<$28 @@ -592,27 +594,27 @@ main: { lda idx+1 adc #>$28 sta idx+1 - //SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuyy=vbuyy_minus_vbuc1 + //SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuyy=vbuyy_minus_vbuc1 tya sec sbc #xd tay - //SEG30 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG31 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG32 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy - //SEG33 [14] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy + //SEG32 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG34 [14] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy jmp b2 - //SEG34 main::@2 + //SEG35 main::@2 b2: - //SEG35 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #x1+1 bcc b1_from_b2 jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [16] return + //SEG38 [16] return rts } @@ -702,19 +704,20 @@ zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ] FINAL ASSEMBLER Score: 1066 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .const STAR = $51 .label screen = $400 @@ -724,25 +727,25 @@ main: { .const yd = y1-0 .label idx = 2 .label y = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG12 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuyy=vbuc1 + //SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuyy=vbuc1 ldy #yd/2 - //SEG13 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuxx=vbuc1 + //SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuxx=vbuc1 tax - //SEG14 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1 + //SEG15 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1 sta idx sta idx+1 - //SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG16 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG17 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy - //SEG19 [5] phi (word) main::idx#3 = (word) main::idx#5 [phi:main::@2->main::@1#3] -- register_copy - //SEG20 main::@1 + //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG17 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG18 [5] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG20 [5] phi (word) main::idx#3 = (word) main::idx#5 [phi:main::@2->main::@1#3] -- register_copy + //SEG21 main::@1 b1: - //SEG21 [6] *((const byte[40*25]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 -- pbuc1_derefidx_vwuz1=vbuc2 + //SEG22 [6] *((const byte[40*25]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 -- pbuc1_derefidx_vwuz1=vbuc2 lda #=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuyy_then_la1 + //SEG26 [10] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 -- vbuc1_ge_vbuyy_then_la1 cpy #xd bcc b2 beq b2 - //SEG26 main::@3 - //SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG27 main::@3 + //SEG28 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc y - //SEG28 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- vwuz1=vwuz1_plus_vbuc1 + //SEG29 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- vwuz1=vwuz1_plus_vbuc1 clc lda idx adc #<$28 @@ -780,22 +783,22 @@ main: { lda idx+1 adc #>$28 sta idx+1 - //SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuyy=vbuyy_minus_vbuc1 + //SEG30 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 -- vbuyy=vbuyy_minus_vbuc1 tya sec sbc #xd tay - //SEG30 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] - //SEG31 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG32 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy - //SEG33 [14] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy - //SEG34 main::@2 + //SEG31 [14] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG32 [14] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [14] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG34 [14] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy + //SEG35 main::@2 b2: - //SEG35 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG36 [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #x1+1 bcc b1 - //SEG36 main::@return - //SEG37 [16] return + //SEG37 main::@return + //SEG38 [16] return rts } diff --git a/src/test/ref/c64dtv-8bppcharstretch.asm b/src/test/ref/c64dtv-8bppcharstretch.asm index 822c4c332..988029e5f 100644 --- a/src/test/ref/c64dtv-8bppcharstretch.asm +++ b/src/test/ref/c64dtv-8bppcharstretch.asm @@ -1,7 +1,7 @@ +// C64DTV 8bpp charmode stretcher .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written diff --git a/src/test/ref/c64dtv-8bppcharstretch.log b/src/test/ref/c64dtv-8bppcharstretch.log index 00bec5dea..50814acd4 100644 --- a/src/test/ref/c64dtv-8bppcharstretch.log +++ b/src/test/ref/c64dtv-8bppcharstretch.log @@ -1914,12 +1914,13 @@ Allocated zp ZP_BYTE:25 [ gfx_init_screen0::$2 ] Allocated zp ZP_BYTE:26 [ gfx_init_screen0::$3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// C64DTV 8bpp charmode stretcher +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -1975,125 +1976,125 @@ INITIAL ASM .label SCREEN = $7c00 // Plane with all pixels .label CHARSET8 = $8000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +//SEG4 [1] phi from @begin to @9 [phi:@begin->@9] b9_from_bbegin: jmp b9 -//SEG4 @9 +//SEG5 @9 b9: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @9 to @end [phi:@9->@end] +//SEG7 [3] phi from @9 to @end [phi:@9->@end] bend_from_b9: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label _32 = $13 .label _33 = $14 .label _34 = $15 .label j = 2 .label rst = $12 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] call gfx_init - //SEG13 [44] phi from main to gfx_init [phi:main->gfx_init] + //SEG13 [7] call gfx_init + //SEG14 [44] phi from main to gfx_init [phi:main->gfx_init] gfx_init_from_main: jsr gfx_init jmp b17 - //SEG14 main::@17 + //SEG15 main::@17 b17: - //SEG15 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG16 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG17 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF sta DTV_CONTROL - //SEG17 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG18 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG19 [12] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>SCREEN sta DTV_PLANEA_START_MI - //SEG21 [14] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG22 [15] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG23 [16] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG24 [17] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG25 [18] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 + //SEG27 [19] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 lda #>CHARSET8 sta DTV_PLANEB_START_MI - //SEG27 [20] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG28 [20] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG28 [21] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG29 [21] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_STEP - //SEG29 [22] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 [22] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG30 [23] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG31 [23] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG31 [24] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG32 [24] *((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 - //SEG32 [25] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) SCREEN#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG33 [25] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) SCREEN#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^SCREEN/$4000 sta CIA2_PORT_A - //SEG33 [26] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG34 [26] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)>>6|(>(SCREEN&$3fff))>>2 sta VIC_MEMORY - //SEG34 [27] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG35 [27] phi from main::@17 to main::@1 [phi:main::@17->main::@1] b1_from_b17: - //SEG35 [27] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 + //SEG36 [27] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG36 [27] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG37 [27] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG37 [27] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG38 [27] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG38 main::@1 + //SEG39 main::@1 b1: - //SEG39 [28] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG40 [28] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy j tya sta DTV_PALETTE,y - //SEG40 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG41 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG41 [30] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG42 [30] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$10 bne b1_from_b1 jmp b3 - //SEG42 main::@3 + //SEG43 main::@3 b3: - //SEG43 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } + //SEG44 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } ldx #$ff rff: cpx RASTER @@ -2130,23 +2131,23 @@ main: { inx cpx #8 bne stabilize - //SEG44 [32] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG45 [32] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG45 [33] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG46 [33] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL jmp b5 - //SEG46 main::@5 + //SEG47 main::@5 b5: - //SEG47 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG48 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$42 bne b5 jmp b7 - //SEG48 main::@7 + //SEG49 main::@7 b7: - //SEG49 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG50 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -2166,33 +2167,33 @@ main: { nop nop jmp b8 - //SEG50 main::@8 + //SEG51 main::@8 b8: - //SEG51 [36] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuz1=_deref_pbuc1 + //SEG52 [36] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuz1=_deref_pbuc1 lda RASTER sta rst - //SEG52 [37] (byte~) main::$32 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG53 [37] (byte~) main::$32 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and rst sta _32 - //SEG53 [38] (byte~) main::$33 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$32 -- vbuz1=vbuc1_bor_vbuz2 + //SEG54 [38] (byte~) main::$33 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$32 -- vbuz1=vbuc1_bor_vbuz2 lda #VIC_DEN|VIC_ECM|VIC_RSEL ora _32 sta _33 - //SEG54 [39] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuz1 + //SEG55 [39] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuz1 lda _33 sta VIC_CONTROL - //SEG55 [40] (byte~) main::$34 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG56 [40] (byte~) main::$34 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda rst asl asl asl asl sta _34 - //SEG56 [41] *((const byte*) BORDERCOL#0) ← (byte~) main::$34 -- _deref_pbuc1=vbuz1 + //SEG57 [41] *((const byte*) BORDERCOL#0) ← (byte~) main::$34 -- _deref_pbuc1=vbuz1 lda _34 sta BORDERCOL - //SEG57 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG58 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -2208,35 +2209,35 @@ main: { nop nop nop - //SEG58 [43] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG59 [43] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuz1_neq_vbuc1_then_la1 lda rst cmp #$f2 bne b8 jmp b3 } -//SEG59 gfx_init +//SEG60 gfx_init // Initialize the different graphics in the memory gfx_init: { - //SEG60 [45] call gfx_init_screen0 - //SEG61 [78] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG61 [45] call gfx_init_screen0 + //SEG62 [78] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] gfx_init_screen0_from_gfx_init: jsr gfx_init_screen0 - //SEG62 [46] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] + //SEG63 [46] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] b1_from_gfx_init: jmp b1 - //SEG63 gfx_init::@1 + //SEG64 gfx_init::@1 b1: - //SEG64 [47] call gfx_init_plane_charset8 - //SEG65 [49] phi from gfx_init::@1 to gfx_init_plane_charset8 [phi:gfx_init::@1->gfx_init_plane_charset8] + //SEG65 [47] call gfx_init_plane_charset8 + //SEG66 [49] phi from gfx_init::@1 to gfx_init_plane_charset8 [phi:gfx_init::@1->gfx_init_plane_charset8] gfx_init_plane_charset8_from_b1: jsr gfx_init_plane_charset8 jmp breturn - //SEG66 gfx_init::@return + //SEG67 gfx_init::@return breturn: - //SEG67 [48] return + //SEG68 [48] return rts } -//SEG68 gfx_init_plane_charset8 +//SEG69 gfx_init_plane_charset8 // Initialize Plane with 8bpp charset gfx_init_plane_charset8: { .const gfxbCpuBank = $ff&CHARSET8/$4000 @@ -2249,195 +2250,195 @@ gfx_init_plane_charset8: { .label cr = 6 .label ch = 3 .label c = $c - //SEG69 [50] call dtvSetCpuBankSegment1 - //SEG70 [74] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG70 [50] call dtvSetCpuBankSegment1 + //SEG71 [74] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_charset8: - //SEG71 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG72 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = (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 - //SEG72 gfx_init_plane_charset8::@9 + //SEG73 gfx_init_plane_charset8::@9 b9: - //SEG73 [51] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG74 [51] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG74 [52] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] + //SEG75 [52] 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: - //SEG75 [52] 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 + //SEG76 [52] 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 - //SEG76 [52] 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 + //SEG77 [52] 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 - //SEG77 [52] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+((word))(const byte*) CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 + //SEG78 [52] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+((word))(const byte*) 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+(CHARSET8&$3fff) sta gfxa lda #>$4000+(CHARSET8&$3fff) sta gfxa+1 - //SEG78 [52] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 + //SEG79 [52] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 lda #CHARGEN+1 sta chargen+1 jmp b1 - //SEG79 [52] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] + //SEG80 [52] 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: - //SEG80 [52] 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 - //SEG81 [52] 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 - //SEG82 [52] 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 - //SEG83 [52] 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 + //SEG81 [52] 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 + //SEG82 [52] 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 + //SEG83 [52] 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 + //SEG84 [52] 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 - //SEG84 gfx_init_plane_charset8::@1 + //SEG85 gfx_init_plane_charset8::@1 b1: - //SEG85 [53] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] + //SEG86 [53] 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: - //SEG86 [53] 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 + //SEG87 [53] 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 - //SEG87 [53] 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 - //SEG88 [53] 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 - //SEG89 [53] 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 + //SEG88 [53] 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 + //SEG89 [53] 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 + //SEG90 [53] 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 - //SEG90 [53] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] + //SEG91 [53] 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: - //SEG91 [53] 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 - //SEG92 [53] 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 - //SEG93 [53] 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 - //SEG94 [53] 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 + //SEG92 [53] 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 + //SEG93 [53] 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 + //SEG94 [53] 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 + //SEG95 [53] 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 - //SEG95 gfx_init_plane_charset8::@2 + //SEG96 gfx_init_plane_charset8::@2 b2: - //SEG96 [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG97 [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG97 [55] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG98 [55] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG98 [56] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] + //SEG99 [56] 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: - //SEG99 [56] 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 + //SEG100 [56] 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 - //SEG100 [56] 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 - //SEG101 [56] 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 - //SEG102 [56] 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 + //SEG101 [56] 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 + //SEG102 [56] 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 + //SEG103 [56] 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 - //SEG103 [56] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] + //SEG104 [56] 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: - //SEG104 [56] 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 - //SEG105 [56] 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 - //SEG106 [56] 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 - //SEG107 [56] 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 + //SEG105 [56] 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 + //SEG106 [56] 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 + //SEG107 [56] 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 + //SEG108 [56] 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 - //SEG108 gfx_init_plane_charset8::@3 + //SEG109 gfx_init_plane_charset8::@3 b3: - //SEG109 [57] (byte~) gfx_init_plane_charset8::$7 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG110 [57] (byte~) gfx_init_plane_charset8::$7 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and bits sta _7 - //SEG110 [58] if((byte~) gfx_init_plane_charset8::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuz1_eq_0_then_la1 + //SEG111 [58] if((byte~) gfx_init_plane_charset8::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b4_from_b3 jmp b5 - //SEG111 gfx_init_plane_charset8::@5 + //SEG112 gfx_init_plane_charset8::@5 b5: - //SEG112 [59] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuz1=vbuz2 + //SEG113 [59] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuz1=vbuz2 lda col sta c - //SEG113 [60] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] + //SEG114 [60] 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: - //SEG114 [60] 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 + //SEG115 [60] 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 - //SEG115 [60] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] + //SEG116 [60] 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: - //SEG116 [60] 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 + //SEG117 [60] 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 - //SEG117 gfx_init_plane_charset8::@4 + //SEG118 gfx_init_plane_charset8::@4 b4: - //SEG118 [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuz2 + //SEG119 [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (gfxa),y - //SEG119 [62] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG120 [62] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG120 [63] (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 + //SEG121 [63] (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 - //SEG121 [64] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG122 [64] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG122 [65] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuz1=_inc_vbuz1 + //SEG123 [65] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuz1=_inc_vbuz1 inc cp - //SEG123 [66] 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 + //SEG124 [66] 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 - //SEG124 gfx_init_plane_charset8::@6 + //SEG125 gfx_init_plane_charset8::@6 b6: - //SEG125 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 + //SEG126 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG126 [68] 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 + //SEG127 [68] 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 - //SEG127 gfx_init_plane_charset8::@7 + //SEG128 gfx_init_plane_charset8::@7 b7: - //SEG128 [69] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 + //SEG129 [69] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG129 [70] 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 + //SEG130 [70] 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 - //SEG130 gfx_init_plane_charset8::@8 + //SEG131 gfx_init_plane_charset8::@8 b8: - //SEG131 [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG132 [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG132 [72] call dtvSetCpuBankSegment1 - //SEG133 [74] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG133 [72] call dtvSetCpuBankSegment1 + //SEG134 [74] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //SEG134 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = ((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 + //SEG135 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = ((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 - //SEG135 gfx_init_plane_charset8::@return + //SEG136 gfx_init_plane_charset8::@return breturn: - //SEG136 [73] return + //SEG137 [73] return rts } -//SEG137 dtvSetCpuBankSegment1 +//SEG138 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff .label cpuBankIdx = $d - //SEG138 [75] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 -- _deref_pbuc1=vbuz1 + //SEG139 [75] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 -- _deref_pbuc1=vbuz1 lda cpuBankIdx sta cpuBank - //SEG139 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG140 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG140 dtvSetCpuBankSegment1::@return + //SEG141 dtvSetCpuBankSegment1::@return breturn: - //SEG141 [77] return + //SEG142 [77] return rts } -//SEG142 gfx_init_screen0 +//SEG143 gfx_init_screen0 // Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos) gfx_init_screen0: { .label _0 = $17 @@ -2447,85 +2448,85 @@ gfx_init_screen0: { .label ch = $10 .label cx = $f .label cy = $e - //SEG143 [79] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG144 [79] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] b1_from_gfx_init_screen0: - //SEG144 [79] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) SCREEN#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 + //SEG145 [79] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) SCREEN#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG145 [79] 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 + //SEG146 [79] 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 - //SEG146 [79] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] + //SEG147 [79] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] b1_from_b3: - //SEG147 [79] 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 - //SEG148 [79] 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 + //SEG148 [79] 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 + //SEG149 [79] 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 - //SEG149 gfx_init_screen0::@1 + //SEG150 gfx_init_screen0::@1 b1: - //SEG150 [80] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] + //SEG151 [80] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] b2_from_b1: - //SEG151 [80] 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 - //SEG152 [80] 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 + //SEG152 [80] 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 + //SEG153 [80] 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 - //SEG153 [80] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] + //SEG154 [80] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] b2_from_b2: - //SEG154 [80] 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 - //SEG155 [80] 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 + //SEG155 [80] 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 + //SEG156 [80] 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 - //SEG156 gfx_init_screen0::@2 + //SEG157 gfx_init_screen0::@2 b2: - //SEG157 [81] (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 + //SEG158 [81] (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 - //SEG158 [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG159 [82] (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 - //SEG159 [83] (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 + //SEG160 [83] (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 - //SEG160 [84] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuz1=vbuz2_bor_vbuz3 + //SEG161 [84] (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 - //SEG161 [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuz2 + //SEG162 [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuz2 lda _3 ldy #0 sta (ch),y - //SEG162 [86] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG163 [86] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG163 [87] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuz1=_inc_vbuz1 + //SEG164 [87] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG164 [88] 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 + //SEG165 [88] 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 - //SEG165 gfx_init_screen0::@3 + //SEG166 gfx_init_screen0::@3 b3: - //SEG166 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG167 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG167 [90] 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 + //SEG168 [90] 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 - //SEG168 gfx_init_screen0::@return + //SEG169 gfx_init_screen0::@return breturn: - //SEG169 [91] return + //SEG170 [91] return rts } @@ -2687,12 +2688,13 @@ Allocated (was zp ZP_WORD:8) zp ZP_WORD:7 [ gfx_init_plane_charset8::gfxa#2 gfx_ Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:9 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// C64DTV 8bpp charmode stretcher +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -2748,117 +2750,117 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $7c00 // Plane with all pixels .label CHARSET8 = $8000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +//SEG4 [1] phi from @begin to @9 [phi:@begin->@9] b9_from_bbegin: jmp b9 -//SEG4 @9 +//SEG5 @9 b9: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @9 to @end [phi:@9->@end] +//SEG7 [3] phi from @9 to @end [phi:@9->@end] bend_from_b9: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] call gfx_init - //SEG13 [44] phi from main to gfx_init [phi:main->gfx_init] + //SEG13 [7] call gfx_init + //SEG14 [44] phi from main to gfx_init [phi:main->gfx_init] gfx_init_from_main: jsr gfx_init jmp b17 - //SEG14 main::@17 + //SEG15 main::@17 b17: - //SEG15 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG16 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG17 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF sta DTV_CONTROL - //SEG17 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG18 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG19 [12] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>SCREEN sta DTV_PLANEA_START_MI - //SEG21 [14] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG22 [15] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG23 [16] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG24 [17] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG25 [18] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 + //SEG27 [19] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 lda #>CHARSET8 sta DTV_PLANEB_START_MI - //SEG27 [20] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG28 [20] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG28 [21] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG29 [21] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_STEP - //SEG29 [22] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 [22] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG30 [23] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG31 [23] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG31 [24] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG32 [24] *((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 - //SEG32 [25] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) SCREEN#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG33 [25] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) SCREEN#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^SCREEN/$4000 sta CIA2_PORT_A - //SEG33 [26] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG34 [26] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)>>6|(>(SCREEN&$3fff))>>2 sta VIC_MEMORY - //SEG34 [27] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG35 [27] phi from main::@17 to main::@1 [phi:main::@17->main::@1] b1_from_b17: - //SEG35 [27] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuxx=vbuc1 + //SEG36 [27] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG36 [27] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG37 [27] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG37 [27] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG38 [27] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG38 main::@1 + //SEG39 main::@1 b1: - //SEG39 [28] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG40 [28] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG40 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG41 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG41 [30] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG42 [30] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b3 - //SEG42 main::@3 + //SEG43 main::@3 b3: - //SEG43 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } + //SEG44 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } ldx #$ff rff: cpx RASTER @@ -2895,23 +2897,23 @@ main: { inx cpx #8 bne stabilize - //SEG44 [32] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG45 [32] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG45 [33] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG46 [33] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL jmp b5 - //SEG46 main::@5 + //SEG47 main::@5 b5: - //SEG47 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG48 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$42 bne b5 jmp b7 - //SEG48 main::@7 + //SEG49 main::@7 b7: - //SEG49 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG50 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -2931,26 +2933,26 @@ main: { nop nop jmp b8 - //SEG50 main::@8 + //SEG51 main::@8 b8: - //SEG51 [36] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuxx=_deref_pbuc1 + //SEG52 [36] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuxx=_deref_pbuc1 ldx RASTER - //SEG52 [37] (byte~) main::$32 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG53 [37] (byte~) main::$32 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG53 [38] (byte~) main::$33 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$32 -- vbuaa=vbuc1_bor_vbuaa + //SEG54 [38] (byte~) main::$33 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$32 -- vbuaa=vbuc1_bor_vbuaa ora #VIC_DEN|VIC_ECM|VIC_RSEL - //SEG54 [39] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuaa + //SEG55 [39] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuaa sta VIC_CONTROL - //SEG55 [40] (byte~) main::$34 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 + //SEG56 [40] (byte~) main::$34 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 txa asl asl asl asl - //SEG56 [41] *((const byte*) BORDERCOL#0) ← (byte~) main::$34 -- _deref_pbuc1=vbuaa + //SEG57 [41] *((const byte*) BORDERCOL#0) ← (byte~) main::$34 -- _deref_pbuc1=vbuaa sta BORDERCOL - //SEG57 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG58 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -2966,34 +2968,34 @@ main: { nop nop nop - //SEG58 [43] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG59 [43] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$f2 bne b8 jmp b3 } -//SEG59 gfx_init +//SEG60 gfx_init // Initialize the different graphics in the memory gfx_init: { - //SEG60 [45] call gfx_init_screen0 - //SEG61 [78] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG61 [45] call gfx_init_screen0 + //SEG62 [78] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] gfx_init_screen0_from_gfx_init: jsr gfx_init_screen0 - //SEG62 [46] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] + //SEG63 [46] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] b1_from_gfx_init: jmp b1 - //SEG63 gfx_init::@1 + //SEG64 gfx_init::@1 b1: - //SEG64 [47] call gfx_init_plane_charset8 - //SEG65 [49] phi from gfx_init::@1 to gfx_init_plane_charset8 [phi:gfx_init::@1->gfx_init_plane_charset8] + //SEG65 [47] call gfx_init_plane_charset8 + //SEG66 [49] phi from gfx_init::@1 to gfx_init_plane_charset8 [phi:gfx_init::@1->gfx_init_plane_charset8] gfx_init_plane_charset8_from_b1: jsr gfx_init_plane_charset8 jmp breturn - //SEG66 gfx_init::@return + //SEG67 gfx_init::@return breturn: - //SEG67 [48] return + //SEG68 [48] return rts } -//SEG68 gfx_init_plane_charset8 +//SEG69 gfx_init_plane_charset8 // Initialize Plane with 8bpp charset gfx_init_plane_charset8: { .const gfxbCpuBank = $ff&CHARSET8/$4000 @@ -3003,260 +3005,260 @@ gfx_init_plane_charset8: { .label col = 9 .label cr = 5 .label ch = 2 - //SEG69 [50] call dtvSetCpuBankSegment1 - //SEG70 [74] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG70 [50] call dtvSetCpuBankSegment1 + //SEG71 [74] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_charset8: - //SEG71 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG72 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 jmp b9 - //SEG72 gfx_init_plane_charset8::@9 + //SEG73 gfx_init_plane_charset8::@9 b9: - //SEG73 [51] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG74 [51] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG74 [52] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] + //SEG75 [52] 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: - //SEG75 [52] 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 + //SEG76 [52] 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 - //SEG76 [52] 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 + //SEG77 [52] 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 - //SEG77 [52] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+((word))(const byte*) CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 + //SEG78 [52] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+((word))(const byte*) 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+(CHARSET8&$3fff) sta gfxa lda #>$4000+(CHARSET8&$3fff) sta gfxa+1 - //SEG78 [52] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 + //SEG79 [52] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 lda #CHARGEN+1 sta chargen+1 jmp b1 - //SEG79 [52] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] + //SEG80 [52] 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: - //SEG80 [52] 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 - //SEG81 [52] 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 - //SEG82 [52] 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 - //SEG83 [52] 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 + //SEG81 [52] 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 + //SEG82 [52] 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 + //SEG83 [52] 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 + //SEG84 [52] 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 - //SEG84 gfx_init_plane_charset8::@1 + //SEG85 gfx_init_plane_charset8::@1 b1: - //SEG85 [53] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] + //SEG86 [53] 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: - //SEG86 [53] 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 + //SEG87 [53] 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 - //SEG87 [53] 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 - //SEG88 [53] 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 - //SEG89 [53] 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 + //SEG88 [53] 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 + //SEG89 [53] 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 + //SEG90 [53] 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 - //SEG90 [53] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] + //SEG91 [53] 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: - //SEG91 [53] 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 - //SEG92 [53] 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 - //SEG93 [53] 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 - //SEG94 [53] 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 + //SEG92 [53] 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 + //SEG93 [53] 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 + //SEG94 [53] 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 + //SEG95 [53] 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 - //SEG95 gfx_init_plane_charset8::@2 + //SEG96 gfx_init_plane_charset8::@2 b2: - //SEG96 [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG97 [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG97 [55] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG98 [55] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG98 [56] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] + //SEG99 [56] 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: - //SEG99 [56] 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 + //SEG100 [56] 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 - //SEG100 [56] 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 - //SEG101 [56] 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 - //SEG102 [56] 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 + //SEG101 [56] 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 + //SEG102 [56] 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 + //SEG103 [56] 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 - //SEG103 [56] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] + //SEG104 [56] 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: - //SEG104 [56] 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 - //SEG105 [56] 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 - //SEG106 [56] 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 - //SEG107 [56] 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 + //SEG105 [56] 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 + //SEG106 [56] 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 + //SEG107 [56] 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 + //SEG108 [56] 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 - //SEG108 gfx_init_plane_charset8::@3 + //SEG109 gfx_init_plane_charset8::@3 b3: - //SEG109 [57] (byte~) gfx_init_plane_charset8::$7 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG110 [57] (byte~) gfx_init_plane_charset8::$7 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG110 [58] if((byte~) gfx_init_plane_charset8::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuaa_eq_0_then_la1 + //SEG111 [58] if((byte~) gfx_init_plane_charset8::$7==(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 - //SEG111 gfx_init_plane_charset8::@5 + //SEG112 gfx_init_plane_charset8::@5 b5: - //SEG112 [59] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 + //SEG113 [59] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 lda col - //SEG113 [60] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] + //SEG114 [60] 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: - //SEG114 [60] 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 + //SEG115 [60] 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 - //SEG115 [60] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] + //SEG116 [60] 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: - //SEG116 [60] 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 + //SEG117 [60] 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 - //SEG117 gfx_init_plane_charset8::@4 + //SEG118 gfx_init_plane_charset8::@4 b4: - //SEG118 [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa + //SEG119 [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxa),y - //SEG119 [62] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG120 [62] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG120 [63] (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 + //SEG121 [63] (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 - //SEG121 [64] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG122 [64] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG122 [65] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx + //SEG123 [65] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx inx - //SEG123 [66] 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 + //SEG124 [66] 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 - //SEG124 gfx_init_plane_charset8::@6 + //SEG125 gfx_init_plane_charset8::@6 b6: - //SEG125 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 + //SEG126 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG126 [68] 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 + //SEG127 [68] 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 - //SEG127 gfx_init_plane_charset8::@7 + //SEG128 gfx_init_plane_charset8::@7 b7: - //SEG128 [69] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 + //SEG129 [69] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG129 [70] 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 + //SEG130 [70] 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 - //SEG130 gfx_init_plane_charset8::@8 + //SEG131 gfx_init_plane_charset8::@8 b8: - //SEG131 [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG132 [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG132 [72] call dtvSetCpuBankSegment1 - //SEG133 [74] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG133 [72] call dtvSetCpuBankSegment1 + //SEG134 [74] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //SEG134 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = ((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 + //SEG135 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = ((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 - //SEG135 gfx_init_plane_charset8::@return + //SEG136 gfx_init_plane_charset8::@return breturn: - //SEG136 [73] return + //SEG137 [73] return rts } -//SEG137 dtvSetCpuBankSegment1 +//SEG138 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG138 [75] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 -- _deref_pbuc1=vbuaa + //SEG139 [75] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG139 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG140 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG140 dtvSetCpuBankSegment1::@return + //SEG141 dtvSetCpuBankSegment1::@return breturn: - //SEG141 [77] return + //SEG142 [77] return rts } -//SEG142 gfx_init_screen0 +//SEG143 gfx_init_screen0 // Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos) gfx_init_screen0: { .label _1 = 5 .label ch = 3 .label cy = 2 - //SEG143 [79] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG144 [79] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] b1_from_gfx_init_screen0: - //SEG144 [79] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) SCREEN#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 + //SEG145 [79] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) SCREEN#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG145 [79] 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 + //SEG146 [79] 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 - //SEG146 [79] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] + //SEG147 [79] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] b1_from_b3: - //SEG147 [79] 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 - //SEG148 [79] 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 + //SEG148 [79] 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 + //SEG149 [79] 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 - //SEG149 gfx_init_screen0::@1 + //SEG150 gfx_init_screen0::@1 b1: - //SEG150 [80] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] + //SEG151 [80] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] b2_from_b1: - //SEG151 [80] 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 - //SEG152 [80] 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 + //SEG152 [80] 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 + //SEG153 [80] 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 - //SEG153 [80] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] + //SEG154 [80] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] b2_from_b2: - //SEG154 [80] 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 - //SEG155 [80] 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 + //SEG155 [80] 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 + //SEG156 [80] 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 - //SEG156 gfx_init_screen0::@2 + //SEG157 gfx_init_screen0::@2 b2: - //SEG157 [81] (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 + //SEG158 [81] (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 - //SEG158 [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG159 [82] (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 - //SEG159 [83] (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 + //SEG160 [83] (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 - //SEG160 [84] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG161 [84] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG161 [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa + //SEG162 [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG162 [86] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG163 [86] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG163 [87] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx + //SEG164 [87] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG164 [88] 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 + //SEG165 [88] 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 - //SEG165 gfx_init_screen0::@3 + //SEG166 gfx_init_screen0::@3 b3: - //SEG166 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG167 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG167 [90] 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 + //SEG168 [90] 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 - //SEG168 gfx_init_screen0::@return + //SEG169 gfx_init_screen0::@return breturn: - //SEG169 [91] return + //SEG170 [91] return rts } @@ -3684,12 +3686,13 @@ reg byte a [ gfx_init_screen0::$3 ] FINAL ASSEMBLER Score: 75377 -//SEG0 Basic Upstart +//SEG0 File Comments +// C64DTV 8bpp charmode stretcher +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -3745,97 +3748,97 @@ Score: 75377 .label SCREEN = $7c00 // Plane with all pixels .label CHARSET8 = $8000 -//SEG2 @begin -//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] -//SEG4 @9 -//SEG5 [2] call main -//SEG6 [3] phi from @9 to @end [phi:@9->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @9 [phi:@begin->@9] +//SEG5 @9 +//SEG6 [2] call main +//SEG7 [3] phi from @9 to @end [phi:@9->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] call gfx_init - //SEG13 [44] phi from main to gfx_init [phi:main->gfx_init] + //SEG13 [7] call gfx_init + //SEG14 [44] phi from main to gfx_init [phi:main->gfx_init] jsr gfx_init - //SEG14 main::@17 - //SEG15 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG15 main::@17 + //SEG16 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG16 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG17 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF sta DTV_CONTROL - //SEG17 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG18 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG19 [12] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>SCREEN sta DTV_PLANEA_START_MI - //SEG21 [14] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG22 [15] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG23 [16] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG24 [17] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEA_MODULO_HI - //SEG25 [18] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 + //SEG27 [19] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) CHARSET8#0 -- _deref_pbuc1=vbuc2 lda #>CHARSET8 sta DTV_PLANEB_START_MI - //SEG27 [20] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG28 [20] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG28 [21] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG29 [21] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_STEP - //SEG29 [22] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 [22] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_LO - //SEG30 [23] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG31 [23] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_HI - //SEG31 [24] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG32 [24] *((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 - //SEG32 [25] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) SCREEN#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG33 [25] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) SCREEN#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^SCREEN/$4000 sta CIA2_PORT_A - //SEG33 [26] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG34 [26] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)>>6|(>(SCREEN&$3fff))>>2 sta VIC_MEMORY - //SEG34 [27] phi from main::@17 to main::@1 [phi:main::@17->main::@1] - //SEG35 [27] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuxx=vbuc1 + //SEG35 [27] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG36 [27] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG36 [27] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG37 [27] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG38 main::@1 + //SEG37 [27] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG38 [27] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG39 main::@1 b1: - //SEG39 [28] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG40 [28] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG40 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG41 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG41 [30] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG42 [30] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG42 main::@3 + //SEG43 main::@3 b3: - //SEG43 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } + //SEG44 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } ldx #$ff rff: cpx RASTER @@ -3872,20 +3875,20 @@ main: { inx cpx #8 bne stabilize - //SEG44 [32] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG45 [32] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG45 [33] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG46 [33] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG46 main::@5 + //SEG47 main::@5 b5: - //SEG47 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG48 [34] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$42 bne b5 - //SEG48 main::@7 - //SEG49 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG49 main::@7 + //SEG50 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -3904,26 +3907,26 @@ main: { nop nop nop - //SEG50 main::@8 + //SEG51 main::@8 b8: - //SEG51 [36] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuxx=_deref_pbuc1 + //SEG52 [36] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuxx=_deref_pbuc1 ldx RASTER - //SEG52 [37] (byte~) main::$32 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG53 [37] (byte~) main::$32 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG53 [38] (byte~) main::$33 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$32 -- vbuaa=vbuc1_bor_vbuaa + //SEG54 [38] (byte~) main::$33 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$32 -- vbuaa=vbuc1_bor_vbuaa ora #VIC_DEN|VIC_ECM|VIC_RSEL - //SEG54 [39] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuaa + //SEG55 [39] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuaa sta VIC_CONTROL - //SEG55 [40] (byte~) main::$34 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 + //SEG56 [40] (byte~) main::$34 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 txa asl asl asl asl - //SEG56 [41] *((const byte*) BORDERCOL#0) ← (byte~) main::$34 -- _deref_pbuc1=vbuaa + //SEG57 [41] *((const byte*) BORDERCOL#0) ← (byte~) main::$34 -- _deref_pbuc1=vbuaa sta BORDERCOL - //SEG57 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG58 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -3939,27 +3942,27 @@ main: { nop nop nop - //SEG58 [43] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG59 [43] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$f2 bne b8 jmp b3 } -//SEG59 gfx_init +//SEG60 gfx_init // Initialize the different graphics in the memory gfx_init: { - //SEG60 [45] call gfx_init_screen0 - //SEG61 [78] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG61 [45] call gfx_init_screen0 + //SEG62 [78] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] jsr gfx_init_screen0 - //SEG62 [46] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] - //SEG63 gfx_init::@1 - //SEG64 [47] call gfx_init_plane_charset8 - //SEG65 [49] phi from gfx_init::@1 to gfx_init_plane_charset8 [phi:gfx_init::@1->gfx_init_plane_charset8] + //SEG63 [46] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] + //SEG64 gfx_init::@1 + //SEG65 [47] call gfx_init_plane_charset8 + //SEG66 [49] phi from gfx_init::@1 to gfx_init_plane_charset8 [phi:gfx_init::@1->gfx_init_plane_charset8] jsr gfx_init_plane_charset8 - //SEG66 gfx_init::@return - //SEG67 [48] return + //SEG67 gfx_init::@return + //SEG68 [48] return rts } -//SEG68 gfx_init_plane_charset8 +//SEG69 gfx_init_plane_charset8 // Initialize Plane with 8bpp charset gfx_init_plane_charset8: { .const gfxbCpuBank = $ff&CHARSET8/$4000 @@ -3969,217 +3972,217 @@ gfx_init_plane_charset8: { .label col = 9 .label cr = 5 .label ch = 2 - //SEG69 [50] call dtvSetCpuBankSegment1 - //SEG70 [74] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] - //SEG71 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG70 [50] call dtvSetCpuBankSegment1 + //SEG71 [74] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG72 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 - //SEG72 gfx_init_plane_charset8::@9 - //SEG73 [51] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG73 gfx_init_plane_charset8::@9 + //SEG74 [51] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG74 [52] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] - //SEG75 [52] 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 + //SEG75 [52] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] + //SEG76 [52] 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 - //SEG76 [52] 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 + //SEG77 [52] 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 - //SEG77 [52] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+((word))(const byte*) CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 + //SEG78 [52] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+((word))(const byte*) 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+(CHARSET8&$3fff) sta gfxa lda #>$4000+(CHARSET8&$3fff) sta gfxa+1 - //SEG78 [52] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 + //SEG79 [52] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 lda #CHARGEN+1 sta chargen+1 - //SEG79 [52] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] - //SEG80 [52] 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 - //SEG81 [52] 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 - //SEG82 [52] 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 - //SEG83 [52] 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 - //SEG84 gfx_init_plane_charset8::@1 + //SEG80 [52] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] + //SEG81 [52] 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 + //SEG82 [52] 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 + //SEG83 [52] 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 + //SEG84 [52] 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 + //SEG85 gfx_init_plane_charset8::@1 b1: - //SEG85 [53] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] - //SEG86 [53] 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 + //SEG86 [53] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] + //SEG87 [53] 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 - //SEG87 [53] 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 - //SEG88 [53] 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 - //SEG89 [53] 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 - //SEG90 [53] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] - //SEG91 [53] 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 - //SEG92 [53] 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 - //SEG93 [53] 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 - //SEG94 [53] 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 - //SEG95 gfx_init_plane_charset8::@2 + //SEG88 [53] 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 + //SEG89 [53] 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 + //SEG90 [53] 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 + //SEG91 [53] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] + //SEG92 [53] 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 + //SEG93 [53] 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 + //SEG94 [53] 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 + //SEG95 [53] 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 + //SEG96 gfx_init_plane_charset8::@2 b2: - //SEG96 [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG97 [54] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG97 [55] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG98 [55] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG98 [56] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] - //SEG99 [56] 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 + //SEG99 [56] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] + //SEG100 [56] 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 - //SEG100 [56] 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 - //SEG101 [56] 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 - //SEG102 [56] 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 - //SEG103 [56] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] - //SEG104 [56] 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 - //SEG105 [56] 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 - //SEG106 [56] 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 - //SEG107 [56] 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 - //SEG108 gfx_init_plane_charset8::@3 + //SEG101 [56] 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 + //SEG102 [56] 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 + //SEG103 [56] 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 + //SEG104 [56] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] + //SEG105 [56] 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 + //SEG106 [56] 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 + //SEG107 [56] 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 + //SEG108 [56] 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 + //SEG109 gfx_init_plane_charset8::@3 b3: - //SEG109 [57] (byte~) gfx_init_plane_charset8::$7 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG110 [57] (byte~) gfx_init_plane_charset8::$7 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG110 [58] if((byte~) gfx_init_plane_charset8::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuaa_eq_0_then_la1 + //SEG111 [58] if((byte~) gfx_init_plane_charset8::$7==(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 - //SEG111 gfx_init_plane_charset8::@5 - //SEG112 [59] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 + //SEG112 gfx_init_plane_charset8::@5 + //SEG113 [59] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 lda col - //SEG113 [60] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] - //SEG114 [60] 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 + //SEG114 [60] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] + //SEG115 [60] 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 - //SEG115 [60] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] + //SEG116 [60] 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: - //SEG116 [60] 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 + //SEG117 [60] 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 - //SEG117 gfx_init_plane_charset8::@4 + //SEG118 gfx_init_plane_charset8::@4 b4: - //SEG118 [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa + //SEG119 [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxa),y - //SEG119 [62] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG120 [62] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG120 [63] (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 + //SEG121 [63] (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 - //SEG121 [64] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG122 [64] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG122 [65] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx + //SEG123 [65] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx inx - //SEG123 [66] 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 + //SEG124 [66] 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 - //SEG124 gfx_init_plane_charset8::@6 - //SEG125 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 + //SEG125 gfx_init_plane_charset8::@6 + //SEG126 [67] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG126 [68] 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 + //SEG127 [68] 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 - //SEG127 gfx_init_plane_charset8::@7 - //SEG128 [69] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 + //SEG128 gfx_init_plane_charset8::@7 + //SEG129 [69] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG129 [70] 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 + //SEG130 [70] 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 - //SEG130 gfx_init_plane_charset8::@8 - //SEG131 [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG131 gfx_init_plane_charset8::@8 + //SEG132 [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG132 [72] call dtvSetCpuBankSegment1 - //SEG133 [74] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] - //SEG134 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = ((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 + //SEG133 [72] call dtvSetCpuBankSegment1 + //SEG134 [74] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG135 [74] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = ((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 - //SEG135 gfx_init_plane_charset8::@return - //SEG136 [73] return + //SEG136 gfx_init_plane_charset8::@return + //SEG137 [73] return rts } -//SEG137 dtvSetCpuBankSegment1 +//SEG138 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG138 [75] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 -- _deref_pbuc1=vbuaa + //SEG139 [75] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG139 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG140 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 - //SEG140 dtvSetCpuBankSegment1::@return - //SEG141 [77] return + //SEG141 dtvSetCpuBankSegment1::@return + //SEG142 [77] return rts } -//SEG142 gfx_init_screen0 +//SEG143 gfx_init_screen0 // Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos) gfx_init_screen0: { .label _1 = 5 .label ch = 3 .label cy = 2 - //SEG143 [79] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] - //SEG144 [79] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) SCREEN#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 + //SEG144 [79] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG145 [79] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) SCREEN#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG145 [79] 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 + //SEG146 [79] 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 - //SEG146 [79] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] - //SEG147 [79] 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 - //SEG148 [79] 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 - //SEG149 gfx_init_screen0::@1 + //SEG147 [79] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] + //SEG148 [79] 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 + //SEG149 [79] 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 + //SEG150 gfx_init_screen0::@1 b1: - //SEG150 [80] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] - //SEG151 [80] 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 - //SEG152 [80] 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 + //SEG151 [80] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] + //SEG152 [80] 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 + //SEG153 [80] 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 - //SEG153 [80] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] - //SEG154 [80] 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 - //SEG155 [80] 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 - //SEG156 gfx_init_screen0::@2 + //SEG154 [80] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] + //SEG155 [80] 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 + //SEG156 [80] 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 + //SEG157 gfx_init_screen0::@2 b2: - //SEG157 [81] (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 + //SEG158 [81] (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 - //SEG158 [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG159 [82] (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 - //SEG159 [83] (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 + //SEG160 [83] (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 - //SEG160 [84] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG161 [84] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG161 [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa + //SEG162 [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG162 [86] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG163 [86] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG163 [87] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx + //SEG164 [87] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG164 [88] 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 + //SEG165 [88] 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 - //SEG165 gfx_init_screen0::@3 - //SEG166 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG166 gfx_init_screen0::@3 + //SEG167 [89] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG167 [90] 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 + //SEG168 [90] 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 - //SEG168 gfx_init_screen0::@return - //SEG169 [91] return + //SEG169 gfx_init_screen0::@return + //SEG170 [91] return rts } diff --git a/src/test/ref/c64dtv-8bppchunkystretch.asm b/src/test/ref/c64dtv-8bppchunkystretch.asm index 4aafc1eb5..9afbbe6d7 100644 --- a/src/test/ref/c64dtv-8bppchunkystretch.asm +++ b/src/test/ref/c64dtv-8bppchunkystretch.asm @@ -1,7 +1,7 @@ +// C64DTV 8bpp charmode stretcher .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written diff --git a/src/test/ref/c64dtv-8bppchunkystretch.log b/src/test/ref/c64dtv-8bppchunkystretch.log index ca63958f6..35c8f07f6 100644 --- a/src/test/ref/c64dtv-8bppchunkystretch.log +++ b/src/test/ref/c64dtv-8bppchunkystretch.log @@ -1565,12 +1565,13 @@ Allocated zp ZP_WORD:14 [ gfx_init_chunky::$6 ] Allocated zp ZP_BYTE:16 [ gfx_init_chunky::c#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// C64DTV 8bpp charmode stretcher +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -1614,107 +1615,107 @@ INITIAL ASM .label DTV_PLANEB_MODULO_HI = $d048 // Plane with all pixels .label CHUNKY = $8000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] b7_from_bbegin: jmp b7 -//SEG4 @7 +//SEG5 @7 b7: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] +//SEG7 [3] phi from @7 to @end [phi:@7->@end] bend_from_b7: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label _31 = $b .label _32 = $c .label _33 = $d .label j = 2 .label rst = $a - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] call gfx_init_chunky - //SEG13 [38] phi from main to gfx_init_chunky [phi:main->gfx_init_chunky] + //SEG13 [7] call gfx_init_chunky + //SEG14 [38] phi from main to gfx_init_chunky [phi:main->gfx_init_chunky] gfx_init_chunky_from_main: jsr gfx_init_chunky jmp b17 - //SEG14 main::@17 + //SEG15 main::@17 b17: - //SEG15 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG16 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_COLORRAM_OFF#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG17 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_COLORRAM_OFF#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF sta DTV_CONTROL - //SEG17 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG18 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG19 [12] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #>CHUNKY sta DTV_PLANEB_START_MI - //SEG21 [14] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG22 [15] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta DTV_PLANEB_STEP - //SEG23 [16] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG24 [17] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG25 [18] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((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 - //SEG26 [19] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG27 [19] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHUNKY/$4000 sta CIA2_PORT_A - //SEG27 [20] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG28 [20] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #(CHUNKY&$3fff)>>6|(0)>>2 sta VIC_MEMORY - //SEG28 [21] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG29 [21] phi from main::@17 to main::@1 [phi:main::@17->main::@1] b1_from_b17: - //SEG29 [21] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 + //SEG30 [21] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG30 [21] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG31 [21] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG31 [21] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG32 [21] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG32 main::@1 + //SEG33 main::@1 b1: - //SEG33 [22] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG34 [22] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy j tya sta DTV_PALETTE,y - //SEG34 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG35 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG35 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG36 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$10 bne b1_from_b1 jmp b3 - //SEG36 main::@3 + //SEG37 main::@3 b3: - //SEG37 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } + //SEG38 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } ldx #$ff rff: cpx RASTER @@ -1751,23 +1752,23 @@ main: { inx cpx #8 bne stabilize - //SEG38 [26] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG39 [26] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG39 [27] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG40 [27] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL jmp b5 - //SEG40 main::@5 + //SEG41 main::@5 b5: - //SEG41 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG42 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$42 bne b5 jmp b7 - //SEG42 main::@7 + //SEG43 main::@7 b7: - //SEG43 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG44 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1787,33 +1788,33 @@ main: { nop nop jmp b8 - //SEG44 main::@8 + //SEG45 main::@8 b8: - //SEG45 [30] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuz1=_deref_pbuc1 + //SEG46 [30] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuz1=_deref_pbuc1 lda RASTER sta rst - //SEG46 [31] (byte~) main::$31 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG47 [31] (byte~) main::$31 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and rst sta _31 - //SEG47 [32] (byte~) main::$32 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$31 -- vbuz1=vbuc1_bor_vbuz2 + //SEG48 [32] (byte~) main::$32 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$31 -- vbuz1=vbuc1_bor_vbuz2 lda #VIC_DEN|VIC_ECM|VIC_RSEL ora _31 sta _32 - //SEG48 [33] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$32 -- _deref_pbuc1=vbuz1 + //SEG49 [33] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$32 -- _deref_pbuc1=vbuz1 lda _32 sta VIC_CONTROL - //SEG49 [34] (byte~) main::$33 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG50 [34] (byte~) main::$33 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda rst asl asl asl asl sta _33 - //SEG50 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuz1 + //SEG51 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuz1 lda _33 sta BORDERCOL - //SEG51 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG52 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1829,13 +1830,13 @@ main: { nop nop nop - //SEG52 [37] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG53 [37] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuz1_neq_vbuc1_then_la1 lda rst cmp #$f2 bne b8 jmp b3 } -//SEG53 gfx_init_chunky +//SEG54 gfx_init_chunky // Initialize Plane with 8bpp chunky gfx_init_chunky: { .label _6 = $e @@ -1844,54 +1845,54 @@ gfx_init_chunky: { .label x = 4 .label gfxbCpuBank = 6 .label y = 3 - //SEG54 [39] call dtvSetCpuBankSegment1 - //SEG55 [58] phi from gfx_init_chunky to dtvSetCpuBankSegment1 [phi:gfx_init_chunky->dtvSetCpuBankSegment1] + //SEG55 [39] call dtvSetCpuBankSegment1 + //SEG56 [58] phi from gfx_init_chunky to dtvSetCpuBankSegment1 [phi:gfx_init_chunky->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_chunky: - //SEG56 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG57 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$ff&CHUNKY/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 - //SEG57 [40] phi from gfx_init_chunky to gfx_init_chunky::@1 [phi:gfx_init_chunky->gfx_init_chunky::@1] + //SEG58 [40] phi from gfx_init_chunky to gfx_init_chunky::@1 [phi:gfx_init_chunky->gfx_init_chunky::@1] b1_from_gfx_init_chunky: - //SEG58 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = ++((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#0] -- vbuz1=vbuc1 + //SEG59 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = ++((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#0] -- vbuz1=vbuc1 lda #($ff&CHUNKY/$4000)+1 sta gfxbCpuBank - //SEG59 [40] phi (byte) gfx_init_chunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky->gfx_init_chunky::@1#1] -- vbuz1=vbuc1 + //SEG60 [40] phi (byte) gfx_init_chunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky->gfx_init_chunky::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG60 [40] phi (byte*) gfx_init_chunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#2] -- pbuz1=pbuc1 + //SEG61 [40] phi (byte*) gfx_init_chunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b1 - //SEG61 [40] phi from gfx_init_chunky::@5 to gfx_init_chunky::@1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1] + //SEG62 [40] phi from gfx_init_chunky::@5 to gfx_init_chunky::@1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1] b1_from_b5: - //SEG62 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#0] -- register_copy - //SEG63 [40] phi (byte) gfx_init_chunky::y#6 = (byte) gfx_init_chunky::y#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#1] -- register_copy - //SEG64 [40] phi (byte*) gfx_init_chunky::gfxb#5 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#2] -- register_copy + //SEG63 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#0] -- register_copy + //SEG64 [40] phi (byte) gfx_init_chunky::y#6 = (byte) gfx_init_chunky::y#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#1] -- register_copy + //SEG65 [40] phi (byte*) gfx_init_chunky::gfxb#5 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#2] -- register_copy jmp b1 - //SEG65 gfx_init_chunky::@1 + //SEG66 gfx_init_chunky::@1 b1: - //SEG66 [41] phi from gfx_init_chunky::@1 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2] + //SEG67 [41] phi from gfx_init_chunky::@1 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2] b2_from_b1: - //SEG67 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#7 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#0] -- register_copy - //SEG68 [41] phi (word) gfx_init_chunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#1] -- vwuz1=vbuc1 + //SEG68 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#7 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#0] -- register_copy + //SEG69 [41] phi (word) gfx_init_chunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#1] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 - //SEG69 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#5 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#2] -- register_copy + //SEG70 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#5 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#2] -- register_copy jmp b2 - //SEG70 [41] phi from gfx_init_chunky::@3 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2] + //SEG71 [41] phi from gfx_init_chunky::@3 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2] b2_from_b3: - //SEG71 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#0] -- register_copy - //SEG72 [41] phi (word) gfx_init_chunky::x#2 = (word) gfx_init_chunky::x#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#1] -- register_copy - //SEG73 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#2] -- register_copy + //SEG72 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#0] -- register_copy + //SEG73 [41] phi (word) gfx_init_chunky::x#2 = (word) gfx_init_chunky::x#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#1] -- register_copy + //SEG74 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#2] -- register_copy jmp b2 - //SEG74 gfx_init_chunky::@2 + //SEG75 gfx_init_chunky::@2 b2: - //SEG75 [42] if((byte*) gfx_init_chunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_chunky::@3 -- pbuz1_neq_vwuc1_then_la1 + //SEG76 [42] if((byte*) gfx_init_chunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_chunky::@3 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b3_from_b2 @@ -1899,38 +1900,38 @@ gfx_init_chunky: { cmp #<$8000 bne b3_from_b2 jmp b4 - //SEG76 gfx_init_chunky::@4 + //SEG77 gfx_init_chunky::@4 b4: - //SEG77 [43] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuz1=vbuz2 + //SEG78 [43] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuz1=vbuz2 lda gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx - //SEG78 [44] call dtvSetCpuBankSegment1 - //SEG79 [58] phi from gfx_init_chunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1] + //SEG79 [44] call dtvSetCpuBankSegment1 + //SEG80 [58] phi from gfx_init_chunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG80 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1#0] -- register_copy + //SEG81 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b8 - //SEG81 gfx_init_chunky::@8 + //SEG82 gfx_init_chunky::@8 b8: - //SEG82 [45] (byte) gfx_init_chunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuz1=_inc_vbuz1 + //SEG83 [45] (byte) gfx_init_chunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuz1=_inc_vbuz1 inc gfxbCpuBank - //SEG83 [46] phi from gfx_init_chunky::@8 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3] + //SEG84 [46] phi from gfx_init_chunky::@8 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3] b3_from_b8: - //SEG84 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#2 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#0] -- register_copy - //SEG85 [46] phi (byte*) gfx_init_chunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#1] -- pbuz1=pbuc1 + //SEG85 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#2 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#0] -- register_copy + //SEG86 [46] phi (byte*) gfx_init_chunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b3 - //SEG86 [46] phi from gfx_init_chunky::@2 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3] + //SEG87 [46] phi from gfx_init_chunky::@2 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3] b3_from_b2: - //SEG87 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#4 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#0] -- register_copy - //SEG88 [46] phi (byte*) gfx_init_chunky::gfxb#4 = (byte*) gfx_init_chunky::gfxb#3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#1] -- register_copy + //SEG88 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#4 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#0] -- register_copy + //SEG89 [46] phi (byte*) gfx_init_chunky::gfxb#4 = (byte*) gfx_init_chunky::gfxb#3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#1] -- register_copy jmp b3 - //SEG89 gfx_init_chunky::@3 + //SEG90 gfx_init_chunky::@3 b3: - //SEG90 [47] (word~) gfx_init_chunky::$6 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG91 [47] (word~) gfx_init_chunky::$6 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -1938,24 +1939,24 @@ gfx_init_chunky: { lda #0 adc x+1 sta _6+1 - //SEG91 [48] (byte) gfx_init_chunky::c#0 ← ((byte)) (word~) gfx_init_chunky::$6 -- vbuz1=_byte_vwuz2 + //SEG92 [48] (byte) gfx_init_chunky::c#0 ← ((byte)) (word~) gfx_init_chunky::$6 -- vbuz1=_byte_vwuz2 lda _6 sta c - //SEG92 [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 -- _deref_pbuz1=vbuz2 + //SEG93 [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (gfxb),y - //SEG93 [50] (byte*) gfx_init_chunky::gfxb#1 ← ++ (byte*) gfx_init_chunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG94 [50] (byte*) gfx_init_chunky::gfxb#1 ← ++ (byte*) gfx_init_chunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG94 [51] (word) gfx_init_chunky::x#1 ← ++ (word) gfx_init_chunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG95 [51] (word) gfx_init_chunky::x#1 ← ++ (word) gfx_init_chunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG95 [52] if((word) gfx_init_chunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_chunky::@2 -- vwuz1_neq_vwuc1_then_la1 + //SEG96 [52] if((word) gfx_init_chunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_chunky::@2 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b2_from_b3 @@ -1963,50 +1964,50 @@ gfx_init_chunky: { cmp #<$140 bne b2_from_b3 jmp b5 - //SEG96 gfx_init_chunky::@5 + //SEG97 gfx_init_chunky::@5 b5: - //SEG97 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1 + //SEG98 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG98 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 51) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG99 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 51) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$33 bne b1_from_b5 - //SEG99 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6] + //SEG100 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6] b6_from_b5: jmp b6 - //SEG100 gfx_init_chunky::@6 + //SEG101 gfx_init_chunky::@6 b6: - //SEG101 [56] call dtvSetCpuBankSegment1 - //SEG102 [58] phi from gfx_init_chunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1] + //SEG102 [56] call dtvSetCpuBankSegment1 + //SEG103 [58] phi from gfx_init_chunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b6: - //SEG103 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG104 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$4000/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 jmp breturn - //SEG104 gfx_init_chunky::@return + //SEG105 gfx_init_chunky::@return breturn: - //SEG105 [57] return + //SEG106 [57] return rts } -//SEG106 dtvSetCpuBankSegment1 +//SEG107 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff .label cpuBankIdx = 9 - //SEG107 [59] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuz1 + //SEG108 [59] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuz1 lda cpuBankIdx sta cpuBank - //SEG108 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG109 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG109 dtvSetCpuBankSegment1::@return + //SEG110 dtvSetCpuBankSegment1::@return breturn: - //SEG110 [61] return + //SEG111 [61] return rts } @@ -2106,12 +2107,13 @@ Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ gfx_init_chunky::gfxb#4 gfx_init_chu Allocated (was zp ZP_WORD:14) zp ZP_WORD:7 [ gfx_init_chunky::$6 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// C64DTV 8bpp charmode stretcher +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -2155,99 +2157,99 @@ ASSEMBLER BEFORE OPTIMIZATION .label DTV_PLANEB_MODULO_HI = $d048 // Plane with all pixels .label CHUNKY = $8000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] b7_from_bbegin: jmp b7 -//SEG4 @7 +//SEG5 @7 b7: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] +//SEG7 [3] phi from @7 to @end [phi:@7->@end] bend_from_b7: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] call gfx_init_chunky - //SEG13 [38] phi from main to gfx_init_chunky [phi:main->gfx_init_chunky] + //SEG13 [7] call gfx_init_chunky + //SEG14 [38] phi from main to gfx_init_chunky [phi:main->gfx_init_chunky] gfx_init_chunky_from_main: jsr gfx_init_chunky jmp b17 - //SEG14 main::@17 + //SEG15 main::@17 b17: - //SEG15 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG16 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_COLORRAM_OFF#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG17 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_COLORRAM_OFF#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF sta DTV_CONTROL - //SEG17 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG18 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG19 [12] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #>CHUNKY sta DTV_PLANEB_START_MI - //SEG21 [14] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG22 [15] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta DTV_PLANEB_STEP - //SEG23 [16] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG24 [17] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG25 [18] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((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 - //SEG26 [19] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG27 [19] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHUNKY/$4000 sta CIA2_PORT_A - //SEG27 [20] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG28 [20] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #(CHUNKY&$3fff)>>6|(0)>>2 sta VIC_MEMORY - //SEG28 [21] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG29 [21] phi from main::@17 to main::@1 [phi:main::@17->main::@1] b1_from_b17: - //SEG29 [21] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuxx=vbuc1 + //SEG30 [21] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG30 [21] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG31 [21] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG31 [21] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG32 [21] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG32 main::@1 + //SEG33 main::@1 b1: - //SEG33 [22] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG34 [22] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG34 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG35 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG35 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG36 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b3 - //SEG36 main::@3 + //SEG37 main::@3 b3: - //SEG37 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } + //SEG38 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } ldx #$ff rff: cpx RASTER @@ -2284,23 +2286,23 @@ main: { inx cpx #8 bne stabilize - //SEG38 [26] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG39 [26] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG39 [27] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG40 [27] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL jmp b5 - //SEG40 main::@5 + //SEG41 main::@5 b5: - //SEG41 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG42 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$42 bne b5 jmp b7 - //SEG42 main::@7 + //SEG43 main::@7 b7: - //SEG43 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG44 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -2320,26 +2322,26 @@ main: { nop nop jmp b8 - //SEG44 main::@8 + //SEG45 main::@8 b8: - //SEG45 [30] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuxx=_deref_pbuc1 + //SEG46 [30] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuxx=_deref_pbuc1 ldx RASTER - //SEG46 [31] (byte~) main::$31 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG47 [31] (byte~) main::$31 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG47 [32] (byte~) main::$32 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$31 -- vbuaa=vbuc1_bor_vbuaa + //SEG48 [32] (byte~) main::$32 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$31 -- vbuaa=vbuc1_bor_vbuaa ora #VIC_DEN|VIC_ECM|VIC_RSEL - //SEG48 [33] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$32 -- _deref_pbuc1=vbuaa + //SEG49 [33] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$32 -- _deref_pbuc1=vbuaa sta VIC_CONTROL - //SEG49 [34] (byte~) main::$33 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 + //SEG50 [34] (byte~) main::$33 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 txa asl asl asl asl - //SEG50 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuaa + //SEG51 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuaa sta BORDERCOL - //SEG51 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG52 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -2355,64 +2357,64 @@ main: { nop nop nop - //SEG52 [37] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG53 [37] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$f2 bne b8 jmp b3 } -//SEG53 gfx_init_chunky +//SEG54 gfx_init_chunky // Initialize Plane with 8bpp chunky gfx_init_chunky: { .label _6 = 7 .label gfxb = 5 .label x = 3 .label y = 2 - //SEG54 [39] call dtvSetCpuBankSegment1 - //SEG55 [58] phi from gfx_init_chunky to dtvSetCpuBankSegment1 [phi:gfx_init_chunky->dtvSetCpuBankSegment1] + //SEG55 [39] call dtvSetCpuBankSegment1 + //SEG56 [58] phi from gfx_init_chunky to dtvSetCpuBankSegment1 [phi:gfx_init_chunky->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_chunky: - //SEG56 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG57 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$ff&CHUNKY/$4000 jsr dtvSetCpuBankSegment1 - //SEG57 [40] phi from gfx_init_chunky to gfx_init_chunky::@1 [phi:gfx_init_chunky->gfx_init_chunky::@1] + //SEG58 [40] phi from gfx_init_chunky to gfx_init_chunky::@1 [phi:gfx_init_chunky->gfx_init_chunky::@1] b1_from_gfx_init_chunky: - //SEG58 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = ++((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#0] -- vbuxx=vbuc1 + //SEG59 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = ++((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#0] -- vbuxx=vbuc1 ldx #($ff&CHUNKY/$4000)+1 - //SEG59 [40] phi (byte) gfx_init_chunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky->gfx_init_chunky::@1#1] -- vbuz1=vbuc1 + //SEG60 [40] phi (byte) gfx_init_chunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky->gfx_init_chunky::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG60 [40] phi (byte*) gfx_init_chunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#2] -- pbuz1=pbuc1 + //SEG61 [40] phi (byte*) gfx_init_chunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b1 - //SEG61 [40] phi from gfx_init_chunky::@5 to gfx_init_chunky::@1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1] + //SEG62 [40] phi from gfx_init_chunky::@5 to gfx_init_chunky::@1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1] b1_from_b5: - //SEG62 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#0] -- register_copy - //SEG63 [40] phi (byte) gfx_init_chunky::y#6 = (byte) gfx_init_chunky::y#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#1] -- register_copy - //SEG64 [40] phi (byte*) gfx_init_chunky::gfxb#5 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#2] -- register_copy + //SEG63 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#0] -- register_copy + //SEG64 [40] phi (byte) gfx_init_chunky::y#6 = (byte) gfx_init_chunky::y#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#1] -- register_copy + //SEG65 [40] phi (byte*) gfx_init_chunky::gfxb#5 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#2] -- register_copy jmp b1 - //SEG65 gfx_init_chunky::@1 + //SEG66 gfx_init_chunky::@1 b1: - //SEG66 [41] phi from gfx_init_chunky::@1 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2] + //SEG67 [41] phi from gfx_init_chunky::@1 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2] b2_from_b1: - //SEG67 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#7 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#0] -- register_copy - //SEG68 [41] phi (word) gfx_init_chunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#1] -- vwuz1=vbuc1 + //SEG68 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#7 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#0] -- register_copy + //SEG69 [41] phi (word) gfx_init_chunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#1] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 - //SEG69 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#5 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#2] -- register_copy + //SEG70 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#5 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#2] -- register_copy jmp b2 - //SEG70 [41] phi from gfx_init_chunky::@3 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2] + //SEG71 [41] phi from gfx_init_chunky::@3 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2] b2_from_b3: - //SEG71 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#0] -- register_copy - //SEG72 [41] phi (word) gfx_init_chunky::x#2 = (word) gfx_init_chunky::x#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#1] -- register_copy - //SEG73 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#2] -- register_copy + //SEG72 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#0] -- register_copy + //SEG73 [41] phi (word) gfx_init_chunky::x#2 = (word) gfx_init_chunky::x#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#1] -- register_copy + //SEG74 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#2] -- register_copy jmp b2 - //SEG74 gfx_init_chunky::@2 + //SEG75 gfx_init_chunky::@2 b2: - //SEG75 [42] if((byte*) gfx_init_chunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_chunky::@3 -- pbuz1_neq_vwuc1_then_la1 + //SEG76 [42] if((byte*) gfx_init_chunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_chunky::@3 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b3_from_b2 @@ -2420,37 +2422,37 @@ gfx_init_chunky: { cmp #<$8000 bne b3_from_b2 jmp b4 - //SEG76 gfx_init_chunky::@4 + //SEG77 gfx_init_chunky::@4 b4: - //SEG77 [43] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuaa=vbuxx + //SEG78 [43] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuaa=vbuxx txa - //SEG78 [44] call dtvSetCpuBankSegment1 - //SEG79 [58] phi from gfx_init_chunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1] + //SEG79 [44] call dtvSetCpuBankSegment1 + //SEG80 [58] phi from gfx_init_chunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG80 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1#0] -- register_copy + //SEG81 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b8 - //SEG81 gfx_init_chunky::@8 + //SEG82 gfx_init_chunky::@8 b8: - //SEG82 [45] (byte) gfx_init_chunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx + //SEG83 [45] (byte) gfx_init_chunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx inx - //SEG83 [46] phi from gfx_init_chunky::@8 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3] + //SEG84 [46] phi from gfx_init_chunky::@8 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3] b3_from_b8: - //SEG84 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#2 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#0] -- register_copy - //SEG85 [46] phi (byte*) gfx_init_chunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#1] -- pbuz1=pbuc1 + //SEG85 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#2 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#0] -- register_copy + //SEG86 [46] phi (byte*) gfx_init_chunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b3 - //SEG86 [46] phi from gfx_init_chunky::@2 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3] + //SEG87 [46] phi from gfx_init_chunky::@2 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3] b3_from_b2: - //SEG87 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#4 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#0] -- register_copy - //SEG88 [46] phi (byte*) gfx_init_chunky::gfxb#4 = (byte*) gfx_init_chunky::gfxb#3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#1] -- register_copy + //SEG88 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#4 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#0] -- register_copy + //SEG89 [46] phi (byte*) gfx_init_chunky::gfxb#4 = (byte*) gfx_init_chunky::gfxb#3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#1] -- register_copy jmp b3 - //SEG89 gfx_init_chunky::@3 + //SEG90 gfx_init_chunky::@3 b3: - //SEG90 [47] (word~) gfx_init_chunky::$6 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG91 [47] (word~) gfx_init_chunky::$6 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -2458,22 +2460,22 @@ gfx_init_chunky: { lda #0 adc x+1 sta _6+1 - //SEG91 [48] (byte) gfx_init_chunky::c#0 ← ((byte)) (word~) gfx_init_chunky::$6 -- vbuaa=_byte_vwuz1 + //SEG92 [48] (byte) gfx_init_chunky::c#0 ← ((byte)) (word~) gfx_init_chunky::$6 -- vbuaa=_byte_vwuz1 lda _6 - //SEG92 [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 -- _deref_pbuz1=vbuaa + //SEG93 [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG93 [50] (byte*) gfx_init_chunky::gfxb#1 ← ++ (byte*) gfx_init_chunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG94 [50] (byte*) gfx_init_chunky::gfxb#1 ← ++ (byte*) gfx_init_chunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG94 [51] (word) gfx_init_chunky::x#1 ← ++ (word) gfx_init_chunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG95 [51] (word) gfx_init_chunky::x#1 ← ++ (word) gfx_init_chunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG95 [52] if((word) gfx_init_chunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_chunky::@2 -- vwuz1_neq_vwuc1_then_la1 + //SEG96 [52] if((word) gfx_init_chunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_chunky::@2 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b2_from_b3 @@ -2481,47 +2483,47 @@ gfx_init_chunky: { cmp #<$140 bne b2_from_b3 jmp b5 - //SEG96 gfx_init_chunky::@5 + //SEG97 gfx_init_chunky::@5 b5: - //SEG97 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1 + //SEG98 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG98 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 51) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG99 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 51) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$33 bne b1_from_b5 - //SEG99 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6] + //SEG100 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6] b6_from_b5: jmp b6 - //SEG100 gfx_init_chunky::@6 + //SEG101 gfx_init_chunky::@6 b6: - //SEG101 [56] call dtvSetCpuBankSegment1 - //SEG102 [58] phi from gfx_init_chunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1] + //SEG102 [56] call dtvSetCpuBankSegment1 + //SEG103 [58] phi from gfx_init_chunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b6: - //SEG103 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG104 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 jmp breturn - //SEG104 gfx_init_chunky::@return + //SEG105 gfx_init_chunky::@return breturn: - //SEG105 [57] return + //SEG106 [57] return rts } -//SEG106 dtvSetCpuBankSegment1 +//SEG107 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG107 [59] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuaa + //SEG108 [59] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG108 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG109 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG109 dtvSetCpuBankSegment1::@return + //SEG110 dtvSetCpuBankSegment1::@return breturn: - //SEG110 [61] return + //SEG111 [61] return rts } @@ -2870,12 +2872,13 @@ reg byte a [ gfx_init_chunky::c#0 ] FINAL ASSEMBLER Score: 19882 -//SEG0 Basic Upstart +//SEG0 File Comments +// C64DTV 8bpp charmode stretcher +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -2919,82 +2922,82 @@ Score: 19882 .label DTV_PLANEB_MODULO_HI = $d048 // Plane with all pixels .label CHUNKY = $8000 -//SEG2 @begin -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -//SEG4 @7 -//SEG5 [2] call main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG5 @7 +//SEG6 [2] call main +//SEG7 [3] phi from @7 to @end [phi:@7->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] call gfx_init_chunky - //SEG13 [38] phi from main to gfx_init_chunky [phi:main->gfx_init_chunky] + //SEG13 [7] call gfx_init_chunky + //SEG14 [38] phi from main to gfx_init_chunky [phi:main->gfx_init_chunky] jsr gfx_init_chunky - //SEG14 main::@17 - //SEG15 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG15 main::@17 + //SEG16 [8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG16 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_COLORRAM_OFF#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG17 [9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_COLORRAM_OFF#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF sta DTV_CONTROL - //SEG17 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG18 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG19 [12] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #>CHUNKY sta DTV_PLANEB_START_MI - //SEG21 [14] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG22 [15] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta DTV_PLANEB_STEP - //SEG23 [16] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG24 [17] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_HI - //SEG25 [18] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((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 - //SEG26 [19] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG27 [19] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHUNKY/$4000 sta CIA2_PORT_A - //SEG27 [20] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG28 [20] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) CHUNKY#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #(CHUNKY&$3fff)>>6|(0)>>2 sta VIC_MEMORY - //SEG28 [21] phi from main::@17 to main::@1 [phi:main::@17->main::@1] - //SEG29 [21] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuxx=vbuc1 + //SEG29 [21] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG30 [21] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@17->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG30 [21] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG31 [21] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG32 main::@1 + //SEG31 [21] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG32 [21] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG33 main::@1 b1: - //SEG33 [22] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG34 [22] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG34 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG35 [23] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG35 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG36 [24] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG36 main::@3 + //SEG37 main::@3 b3: - //SEG37 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } + //SEG38 asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } ldx #$ff rff: cpx RASTER @@ -3031,20 +3034,20 @@ main: { inx cpx #8 bne stabilize - //SEG38 [26] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG39 [26] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_ECM|VIC_RSEL|3 sta VIC_CONTROL - //SEG39 [27] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG40 [27] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG40 main::@5 + //SEG41 main::@5 b5: - //SEG41 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG42 [28] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$42 bne b5 - //SEG42 main::@7 - //SEG43 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG43 main::@7 + //SEG44 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -3063,26 +3066,26 @@ main: { nop nop nop - //SEG44 main::@8 + //SEG45 main::@8 b8: - //SEG45 [30] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuxx=_deref_pbuc1 + //SEG46 [30] (byte) main::rst#1 ← *((const byte*) RASTER#0) -- vbuxx=_deref_pbuc1 ldx RASTER - //SEG46 [31] (byte~) main::$31 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG47 [31] (byte~) main::$31 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG47 [32] (byte~) main::$32 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$31 -- vbuaa=vbuc1_bor_vbuaa + //SEG48 [32] (byte~) main::$32 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$31 -- vbuaa=vbuc1_bor_vbuaa ora #VIC_DEN|VIC_ECM|VIC_RSEL - //SEG48 [33] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$32 -- _deref_pbuc1=vbuaa + //SEG49 [33] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$32 -- _deref_pbuc1=vbuaa sta VIC_CONTROL - //SEG49 [34] (byte~) main::$33 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 + //SEG50 [34] (byte~) main::$33 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_rol_4 txa asl asl asl asl - //SEG50 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuaa + //SEG51 [35] *((const byte*) BORDERCOL#0) ← (byte~) main::$33 -- _deref_pbuc1=vbuaa sta BORDERCOL - //SEG51 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG52 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -3098,83 +3101,83 @@ main: { nop nop nop - //SEG52 [37] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG53 [37] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$f2 bne b8 jmp b3 } -//SEG53 gfx_init_chunky +//SEG54 gfx_init_chunky // Initialize Plane with 8bpp chunky gfx_init_chunky: { .label _6 = 7 .label gfxb = 5 .label x = 3 .label y = 2 - //SEG54 [39] call dtvSetCpuBankSegment1 - //SEG55 [58] phi from gfx_init_chunky to dtvSetCpuBankSegment1 [phi:gfx_init_chunky->dtvSetCpuBankSegment1] - //SEG56 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG55 [39] call dtvSetCpuBankSegment1 + //SEG56 [58] phi from gfx_init_chunky to dtvSetCpuBankSegment1 [phi:gfx_init_chunky->dtvSetCpuBankSegment1] + //SEG57 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$ff&CHUNKY/$4000 jsr dtvSetCpuBankSegment1 - //SEG57 [40] phi from gfx_init_chunky to gfx_init_chunky::@1 [phi:gfx_init_chunky->gfx_init_chunky::@1] - //SEG58 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = ++((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#0] -- vbuxx=vbuc1 + //SEG58 [40] phi from gfx_init_chunky to gfx_init_chunky::@1 [phi:gfx_init_chunky->gfx_init_chunky::@1] + //SEG59 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = ++((byte))(const byte*) CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#0] -- vbuxx=vbuc1 ldx #($ff&CHUNKY/$4000)+1 - //SEG59 [40] phi (byte) gfx_init_chunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky->gfx_init_chunky::@1#1] -- vbuz1=vbuc1 + //SEG60 [40] phi (byte) gfx_init_chunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky->gfx_init_chunky::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG60 [40] phi (byte*) gfx_init_chunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#2] -- pbuz1=pbuc1 + //SEG61 [40] phi (byte*) gfx_init_chunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky->gfx_init_chunky::@1#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 - //SEG61 [40] phi from gfx_init_chunky::@5 to gfx_init_chunky::@1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1] - //SEG62 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#0] -- register_copy - //SEG63 [40] phi (byte) gfx_init_chunky::y#6 = (byte) gfx_init_chunky::y#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#1] -- register_copy - //SEG64 [40] phi (byte*) gfx_init_chunky::gfxb#5 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#2] -- register_copy - //SEG65 gfx_init_chunky::@1 + //SEG62 [40] phi from gfx_init_chunky::@5 to gfx_init_chunky::@1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1] + //SEG63 [40] phi (byte) gfx_init_chunky::gfxbCpuBank#7 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#0] -- register_copy + //SEG64 [40] phi (byte) gfx_init_chunky::y#6 = (byte) gfx_init_chunky::y#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#1] -- register_copy + //SEG65 [40] phi (byte*) gfx_init_chunky::gfxb#5 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@5->gfx_init_chunky::@1#2] -- register_copy + //SEG66 gfx_init_chunky::@1 b1: - //SEG66 [41] phi from gfx_init_chunky::@1 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2] - //SEG67 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#7 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#0] -- register_copy - //SEG68 [41] phi (word) gfx_init_chunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#1] -- vwuz1=vbuc1 + //SEG67 [41] phi from gfx_init_chunky::@1 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2] + //SEG68 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#7 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#0] -- register_copy + //SEG69 [41] phi (word) gfx_init_chunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#1] -- vwuz1=vbuc1 lda #<0 sta x sta x+1 - //SEG69 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#5 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#2] -- register_copy - //SEG70 [41] phi from gfx_init_chunky::@3 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2] - //SEG71 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#0] -- register_copy - //SEG72 [41] phi (word) gfx_init_chunky::x#2 = (word) gfx_init_chunky::x#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#1] -- register_copy - //SEG73 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#2] -- register_copy - //SEG74 gfx_init_chunky::@2 + //SEG70 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#5 [phi:gfx_init_chunky::@1->gfx_init_chunky::@2#2] -- register_copy + //SEG71 [41] phi from gfx_init_chunky::@3 to gfx_init_chunky::@2 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2] + //SEG72 [41] phi (byte) gfx_init_chunky::gfxbCpuBank#4 = (byte) gfx_init_chunky::gfxbCpuBank#8 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#0] -- register_copy + //SEG73 [41] phi (word) gfx_init_chunky::x#2 = (word) gfx_init_chunky::x#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#1] -- register_copy + //SEG74 [41] phi (byte*) gfx_init_chunky::gfxb#3 = (byte*) gfx_init_chunky::gfxb#1 [phi:gfx_init_chunky::@3->gfx_init_chunky::@2#2] -- register_copy + //SEG75 gfx_init_chunky::@2 b2: - //SEG75 [42] if((byte*) gfx_init_chunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_chunky::@3 -- pbuz1_neq_vwuc1_then_la1 + //SEG76 [42] if((byte*) gfx_init_chunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_chunky::@3 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b3 lda gfxb cmp #<$8000 bne b3 - //SEG76 gfx_init_chunky::@4 - //SEG77 [43] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuaa=vbuxx + //SEG77 gfx_init_chunky::@4 + //SEG78 [43] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuaa=vbuxx txa - //SEG78 [44] call dtvSetCpuBankSegment1 - //SEG79 [58] phi from gfx_init_chunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1] - //SEG80 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1#0] -- register_copy + //SEG79 [44] call dtvSetCpuBankSegment1 + //SEG80 [58] phi from gfx_init_chunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1] + //SEG81 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_chunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 - //SEG81 gfx_init_chunky::@8 - //SEG82 [45] (byte) gfx_init_chunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx + //SEG82 gfx_init_chunky::@8 + //SEG83 [45] (byte) gfx_init_chunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_chunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx inx - //SEG83 [46] phi from gfx_init_chunky::@8 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3] - //SEG84 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#2 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#0] -- register_copy - //SEG85 [46] phi (byte*) gfx_init_chunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#1] -- pbuz1=pbuc1 + //SEG84 [46] phi from gfx_init_chunky::@8 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3] + //SEG85 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#2 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#0] -- register_copy + //SEG86 [46] phi (byte*) gfx_init_chunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@8->gfx_init_chunky::@3#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 - //SEG86 [46] phi from gfx_init_chunky::@2 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3] - //SEG87 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#4 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#0] -- register_copy - //SEG88 [46] phi (byte*) gfx_init_chunky::gfxb#4 = (byte*) gfx_init_chunky::gfxb#3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#1] -- register_copy - //SEG89 gfx_init_chunky::@3 + //SEG87 [46] phi from gfx_init_chunky::@2 to gfx_init_chunky::@3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3] + //SEG88 [46] phi (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#4 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#0] -- register_copy + //SEG89 [46] phi (byte*) gfx_init_chunky::gfxb#4 = (byte*) gfx_init_chunky::gfxb#3 [phi:gfx_init_chunky::@2->gfx_init_chunky::@3#1] -- register_copy + //SEG90 gfx_init_chunky::@3 b3: - //SEG90 [47] (word~) gfx_init_chunky::$6 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG91 [47] (word~) gfx_init_chunky::$6 ← (word) gfx_init_chunky::x#2 + (byte) gfx_init_chunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -3182,60 +3185,60 @@ gfx_init_chunky: { lda #0 adc x+1 sta _6+1 - //SEG91 [48] (byte) gfx_init_chunky::c#0 ← ((byte)) (word~) gfx_init_chunky::$6 -- vbuaa=_byte_vwuz1 + //SEG92 [48] (byte) gfx_init_chunky::c#0 ← ((byte)) (word~) gfx_init_chunky::$6 -- vbuaa=_byte_vwuz1 lda _6 - //SEG92 [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 -- _deref_pbuz1=vbuaa + //SEG93 [49] *((byte*) gfx_init_chunky::gfxb#4) ← (byte) gfx_init_chunky::c#0 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG93 [50] (byte*) gfx_init_chunky::gfxb#1 ← ++ (byte*) gfx_init_chunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG94 [50] (byte*) gfx_init_chunky::gfxb#1 ← ++ (byte*) gfx_init_chunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG94 [51] (word) gfx_init_chunky::x#1 ← ++ (word) gfx_init_chunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG95 [51] (word) gfx_init_chunky::x#1 ← ++ (word) gfx_init_chunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG95 [52] if((word) gfx_init_chunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_chunky::@2 -- vwuz1_neq_vwuc1_then_la1 + //SEG96 [52] if((word) gfx_init_chunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_chunky::@2 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b2 lda x cmp #<$140 bne b2 - //SEG96 gfx_init_chunky::@5 - //SEG97 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1 + //SEG97 gfx_init_chunky::@5 + //SEG98 [53] (byte) gfx_init_chunky::y#1 ← ++ (byte) gfx_init_chunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG98 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 51) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG99 [54] if((byte) gfx_init_chunky::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 51) goto gfx_init_chunky::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$33 bne b1 - //SEG99 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6] - //SEG100 gfx_init_chunky::@6 - //SEG101 [56] call dtvSetCpuBankSegment1 - //SEG102 [58] phi from gfx_init_chunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1] - //SEG103 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG100 [55] phi from gfx_init_chunky::@5 to gfx_init_chunky::@6 [phi:gfx_init_chunky::@5->gfx_init_chunky::@6] + //SEG101 gfx_init_chunky::@6 + //SEG102 [56] call dtvSetCpuBankSegment1 + //SEG103 [58] phi from gfx_init_chunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1] + //SEG104 [58] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_chunky::@6->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG104 gfx_init_chunky::@return - //SEG105 [57] return + //SEG105 gfx_init_chunky::@return + //SEG106 [57] return rts } -//SEG106 dtvSetCpuBankSegment1 +//SEG107 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG107 [59] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuaa + //SEG108 [59] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG108 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG109 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 - //SEG109 dtvSetCpuBankSegment1::@return - //SEG110 [61] return + //SEG110 dtvSetCpuBankSegment1::@return + //SEG111 [61] return rts } diff --git a/src/test/ref/c64dtv-blittermin.log b/src/test/ref/c64dtv-blittermin.log index bee00dc8c..3c925d960 100644 --- a/src/test/ref/c64dtv-blittermin.log +++ b/src/test/ref/c64dtv-blittermin.log @@ -1175,11 +1175,12 @@ Allocated zp ZP_BYTE:2 [ main::r#2 main::r#1 ] Allocated zp ZP_BYTE:3 [ main::$15 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // Feature enables or disables the extra C64 DTV features .label DTV_FEATURE = $d03f .const DTV_FEATURE_ENABLE = 1 @@ -1249,159 +1250,159 @@ INITIAL ASM .const DTV_BLIT_STATUS_BUSY = 1 .label SCREEN = $400 .const SRCA_LEN = 9 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label _15 = 3 .label r = 2 - //SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG10 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_CLEAR_IRQ sta DTV_BLITTER_CONTROL2 - //SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 lda #>SRCA sta DTV_BLITTER_SRCA_MI - //SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCA_HI - //SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCA_MOD_LO - //SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCA_MOD_HI - //SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG17 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_SRCA_LIN_LO - //SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG18 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_SRCA_LIN_HI - //SEG18 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 + //SEG19 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 lda #$10 sta DTV_BLITTER_SRCA_STEP - //SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 + //SEG20 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 + //SEG21 [15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 lda #>SRCB sta DTV_BLITTER_SRCB_MI - //SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_HI - //SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG23 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_MOD_LO - //SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_MOD_HI - //SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG25 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_SRCB_LIN_LO - //SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG26 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_SRCB_LIN_HI - //SEG26 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG27 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_STEP - //SEG27 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG28 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG29 [23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>SCREEN sta DTV_BLITTER_DEST_MI - //SEG29 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_DEST_HI - //SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG31 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_DEST_MOD_LO - //SEG31 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG32 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_DEST_MOD_HI - //SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG33 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_DEST_LIN_LO - //SEG33 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG34 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_DEST_LIN_HI - //SEG34 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 + //SEG35 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 lda #$10 sta DTV_BLITTER_DEST_STEP - //SEG35 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 -- _deref_pbuc1=vbuc2 + //SEG36 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 -- _deref_pbuc1=vbuc2 lda #SRCA_LEN sta DTV_BLITTER_LEN_LO - //SEG36 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG37 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_LEN_HI - //SEG37 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 -- _deref_pbuc1=vbuc2 + //SEG38 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_ADD sta DTV_BLITTER_ALU - //SEG38 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 -- _deref_pbuc1=vbuc2 + //SEG39 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_TRANSPARANCY_NONE sta DTV_BLITTER_TRANSPARANCY - //SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 + //SEG40 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD sta DTV_BLITTER_CONTROL - //SEG40 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 -- _deref_pbuc1=vbuc2 + //SEG41 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_DEST_CONT sta DTV_BLITTER_CONTROL2 - //SEG41 [36] phi from main to main::@2 [phi:main->main::@2] + //SEG42 [36] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG42 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 + //SEG43 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 lda #0 sta r jmp b2 - //SEG43 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG44 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG44 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG45 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG45 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy + //SEG46 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy jmp b2 - //SEG46 main::@2 + //SEG47 main::@2 b2: - //SEG47 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuz1=_deref_pbuc1_band_vbuc2 + //SEG48 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuz1=_deref_pbuc1_band_vbuc2 lda DTV_BLITTER_CONTROL2 and #DTV_BLIT_STATUS_BUSY sta _15 - //SEG48 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_neq_0_then_la1 + //SEG49 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_neq_0_then_la1 lda _15 cmp #0 bne b2_from_b2 jmp b3 - //SEG49 main::@3 + //SEG50 main::@3 b3: - //SEG50 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 + //SEG51 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD sta DTV_BLITTER_CONTROL - //SEG51 [40] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuz1=_inc_vbuz1 + //SEG52 [40] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuz1=_inc_vbuz1 inc r - //SEG52 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG53 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda r cmp #8 bne b2_from_b3 jmp breturn - //SEG53 main::@return + //SEG54 main::@return breturn: - //SEG54 [42] return + //SEG55 [42] return rts } SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' @@ -1488,11 +1489,12 @@ Uplifting [main] best 2815 combination reg byte a [ main::$15 ] reg byte x [ mai Uplifting [] best 2815 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // Feature enables or disables the extra C64 DTV features .label DTV_FEATURE = $d03f .const DTV_FEATURE_ENABLE = 1 @@ -1562,153 +1564,153 @@ ASSEMBLER BEFORE OPTIMIZATION .const DTV_BLIT_STATUS_BUSY = 1 .label SCREEN = $400 .const SRCA_LEN = 9 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG10 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_CLEAR_IRQ sta DTV_BLITTER_CONTROL2 - //SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 lda #>SRCA sta DTV_BLITTER_SRCA_MI - //SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCA_HI - //SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCA_MOD_LO - //SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCA_MOD_HI - //SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG17 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_SRCA_LIN_LO - //SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG18 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_SRCA_LIN_HI - //SEG18 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 + //SEG19 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 lda #$10 sta DTV_BLITTER_SRCA_STEP - //SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 + //SEG20 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 + //SEG21 [15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 lda #>SRCB sta DTV_BLITTER_SRCB_MI - //SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_HI - //SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG23 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_MOD_LO - //SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_MOD_HI - //SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG25 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_SRCB_LIN_LO - //SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG26 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_SRCB_LIN_HI - //SEG26 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG27 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_STEP - //SEG27 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG28 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG29 [23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>SCREEN sta DTV_BLITTER_DEST_MI - //SEG29 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_DEST_HI - //SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG31 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_DEST_MOD_LO - //SEG31 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG32 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_DEST_MOD_HI - //SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG33 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_DEST_LIN_LO - //SEG33 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG34 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_DEST_LIN_HI - //SEG34 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 + //SEG35 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 lda #$10 sta DTV_BLITTER_DEST_STEP - //SEG35 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 -- _deref_pbuc1=vbuc2 + //SEG36 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 -- _deref_pbuc1=vbuc2 lda #SRCA_LEN sta DTV_BLITTER_LEN_LO - //SEG36 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG37 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_LEN_HI - //SEG37 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 -- _deref_pbuc1=vbuc2 + //SEG38 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_ADD sta DTV_BLITTER_ALU - //SEG38 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 -- _deref_pbuc1=vbuc2 + //SEG39 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_TRANSPARANCY_NONE sta DTV_BLITTER_TRANSPARANCY - //SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 + //SEG40 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD sta DTV_BLITTER_CONTROL - //SEG40 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 -- _deref_pbuc1=vbuc2 + //SEG41 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_DEST_CONT sta DTV_BLITTER_CONTROL2 - //SEG41 [36] phi from main to main::@2 [phi:main->main::@2] + //SEG42 [36] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG42 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuxx=vbuc1 + //SEG43 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG43 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG44 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG44 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG45 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG45 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy + //SEG46 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy jmp b2 - //SEG46 main::@2 + //SEG47 main::@2 b2: - //SEG47 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuaa=_deref_pbuc1_band_vbuc2 + //SEG48 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuaa=_deref_pbuc1_band_vbuc2 lda DTV_BLITTER_CONTROL2 and #DTV_BLIT_STATUS_BUSY - //SEG48 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_neq_0_then_la1 + //SEG49 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b2 jmp b3 - //SEG49 main::@3 + //SEG50 main::@3 b3: - //SEG50 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 + //SEG51 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD sta DTV_BLITTER_CONTROL - //SEG51 [40] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuxx=_inc_vbuxx + //SEG52 [40] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuxx=_inc_vbuxx inx - //SEG52 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG53 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b3 jmp breturn - //SEG53 main::@return + //SEG54 main::@return breturn: - //SEG54 [42] return + //SEG55 [42] return rts } SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' @@ -1998,11 +2000,12 @@ reg byte a [ main::$15 ] FINAL ASSEMBLER Score: 1561 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // Feature enables or disables the extra C64 DTV features .label DTV_FEATURE = $d03f .const DTV_FEATURE_ENABLE = 1 @@ -2072,129 +2075,129 @@ Score: 1561 .const DTV_BLIT_STATUS_BUSY = 1 .label SCREEN = $400 .const SRCA_LEN = 9 -//SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 -//SEG5 [2] call main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG5 @6 +//SEG6 [2] call main +//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG10 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_CLEAR_IRQ sta DTV_BLITTER_CONTROL2 - //SEG11 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_BLITTER_SRCA_MI#0) ← >(const byte[]) SRCA#0 -- _deref_pbuc1=vbuc2 lda #>SRCA sta DTV_BLITTER_SRCA_MI - //SEG13 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) DTV_BLITTER_SRCA_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCA_HI - //SEG14 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) DTV_BLITTER_SRCA_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_BLITTER_SRCA_MOD_LO - //SEG15 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) DTV_BLITTER_SRCA_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_BLITTER_SRCA_MOD_HI - //SEG16 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG17 [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_SRCA_LIN_LO - //SEG17 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG18 [12] *((const byte*) DTV_BLITTER_SRCA_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_SRCA_LIN_HI - //SEG18 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 + //SEG19 [13] *((const byte*) DTV_BLITTER_SRCA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 lda #$10 sta DTV_BLITTER_SRCA_STEP - //SEG19 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 + //SEG20 [14] *((const byte*) DTV_BLITTER_SRCB_LO#0) ← <(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 + //SEG21 [15] *((const byte*) DTV_BLITTER_SRCB_MI#0) ← >(const byte[]) SRCB#0 -- _deref_pbuc1=vbuc2 lda #>SRCB sta DTV_BLITTER_SRCB_MI - //SEG21 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [16] *((const byte*) DTV_BLITTER_SRCB_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_HI - //SEG22 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG23 [17] *((const byte*) DTV_BLITTER_SRCB_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_BLITTER_SRCB_MOD_LO - //SEG23 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [18] *((const byte*) DTV_BLITTER_SRCB_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_BLITTER_SRCB_MOD_HI - //SEG24 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG25 [19] *((const byte*) DTV_BLITTER_SRCB_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_SRCB_LIN_LO - //SEG25 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG26 [20] *((const byte*) DTV_BLITTER_SRCB_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_SRCB_LIN_HI - //SEG26 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG27 [21] *((const byte*) DTV_BLITTER_SRCB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_SRCB_STEP - //SEG27 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG28 [22] *((const byte*) DTV_BLITTER_DEST_LO#0) ← <(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG29 [23] *((const byte*) DTV_BLITTER_DEST_MI#0) ← >(const byte*) SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>SCREEN sta DTV_BLITTER_DEST_MI - //SEG29 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 [24] *((const byte*) DTV_BLITTER_DEST_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_DEST_HI - //SEG30 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG31 [25] *((const byte*) DTV_BLITTER_DEST_MOD_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_BLITTER_DEST_MOD_LO - //SEG31 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG32 [26] *((const byte*) DTV_BLITTER_DEST_MOD_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_BLITTER_DEST_MOD_HI - //SEG32 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG33 [27] *((const byte*) DTV_BLITTER_DEST_LIN_LO#0) ← <(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #<$100 sta DTV_BLITTER_DEST_LIN_LO - //SEG33 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 + //SEG34 [28] *((const byte*) DTV_BLITTER_DEST_LIN_HI#0) ← >(word/signed word/dword/signed dword) 256 -- _deref_pbuc1=vbuc2 lda #>$100 sta DTV_BLITTER_DEST_LIN_HI - //SEG34 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 + //SEG35 [29] *((const byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- _deref_pbuc1=vbuc2 lda #$10 sta DTV_BLITTER_DEST_STEP - //SEG35 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 -- _deref_pbuc1=vbuc2 + //SEG36 [30] *((const byte*) DTV_BLITTER_LEN_LO#0) ← (const byte) SRCA_LEN#0 -- _deref_pbuc1=vbuc2 lda #SRCA_LEN sta DTV_BLITTER_LEN_LO - //SEG36 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG37 [31] *((const byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_BLITTER_LEN_HI - //SEG37 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 -- _deref_pbuc1=vbuc2 + //SEG38 [32] *((const byte*) DTV_BLITTER_ALU#0) ← (const byte) DTV_BLIT_ADD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_ADD sta DTV_BLITTER_ALU - //SEG38 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 -- _deref_pbuc1=vbuc2 + //SEG39 [33] *((const byte*) DTV_BLITTER_TRANSPARANCY#0) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_TRANSPARANCY_NONE sta DTV_BLITTER_TRANSPARANCY - //SEG39 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 + //SEG40 [34] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD sta DTV_BLITTER_CONTROL - //SEG40 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 -- _deref_pbuc1=vbuc2 + //SEG41 [35] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_DEST_CONT#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_DEST_CONT sta DTV_BLITTER_CONTROL2 - //SEG41 [36] phi from main to main::@2 [phi:main->main::@2] - //SEG42 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuxx=vbuc1 + //SEG42 [36] phi from main to main::@2 [phi:main->main::@2] + //SEG43 [36] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG43 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG44 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2] - //SEG45 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy - //SEG46 main::@2 + //SEG44 [36] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG45 [36] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG46 [36] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@3->main::@2#0] -- register_copy + //SEG47 main::@2 b2: - //SEG47 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuaa=_deref_pbuc1_band_vbuc2 + //SEG48 [37] (byte~) main::$15 ← *((const byte*) DTV_BLITTER_CONTROL2#0) & (const byte) DTV_BLIT_STATUS_BUSY#0 -- vbuaa=_deref_pbuc1_band_vbuc2 lda DTV_BLITTER_CONTROL2 and #DTV_BLIT_STATUS_BUSY - //SEG48 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_neq_0_then_la1 + //SEG49 [38] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG49 main::@3 - //SEG50 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 + //SEG50 main::@3 + //SEG51 [39] *((const byte*) DTV_BLITTER_CONTROL#0) ← (const byte) DTV_BLIT_FORCE_START#0|(const byte) DTV_BLIT_SRCA_FWD#0|(const byte) DTV_BLIT_SRCB_FWD#0|(const byte) DTV_BLIT_DEST_FWD#0 -- _deref_pbuc1=vbuc2 lda #DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD sta DTV_BLITTER_CONTROL - //SEG51 [40] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuxx=_inc_vbuxx + //SEG52 [40] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuxx=_inc_vbuxx inx - //SEG52 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG53 [41] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG53 main::@return - //SEG54 [42] return + //SEG54 main::@return + //SEG55 [42] return rts } SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' diff --git a/src/test/ref/c64dtv-color.asm b/src/test/ref/c64dtv-color.asm index 803d3c076..a3efb5cc2 100644 --- a/src/test/ref/c64dtv-color.asm +++ b/src/test/ref/c64dtv-color.asm @@ -1,3 +1,4 @@ +// Test C64DTV v2 256-colors and the 16-color redefinable palette .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/c64dtv-color.log b/src/test/ref/c64dtv-color.log index cea17d60f..8c9d4ee69 100644 --- a/src/test/ref/c64dtv-color.log +++ b/src/test/ref/c64dtv-color.log @@ -1074,11 +1074,13 @@ Allocated zp ZP_BYTE:2 [ main::r#2 main::r#1 ] Allocated zp ZP_BYTE:3 [ main::c#2 main::c#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test C64DTV v2 256-colors and the 16-color redefinable palette +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BGCOL = $d021 // Feature enables or disables the extra C64 DTV features @@ -1091,58 +1093,58 @@ INITIAL ASM .const DTV_BADLINE_OFF = $20 // Defines colors for the 16 first colors ($00-$0f) .label DTV_PALETTE = $d200 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label r = 2 .label c = 3 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG11 [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_BORDER_OFF|DTV_BADLINE_OFF sta DTV_CONTROL jmp b4 - //SEG12 main::@4 + //SEG13 main::@4 b4: - //SEG13 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG14 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$40 bne b4 jmp b6 - //SEG14 main::@6 + //SEG15 main::@6 b6: - //SEG15 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG16 [9] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG17 [9] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: - //SEG17 [9] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 49 [phi:main::@6->main::@7#0] -- vbuz1=vbuc1 + //SEG18 [9] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 49 [phi:main::@6->main::@7#0] -- vbuz1=vbuc1 lda #$31 sta r jmp b7 - //SEG18 [9] phi from main::@7 to main::@7 [phi:main::@7->main::@7] + //SEG19 [9] phi from main::@7 to main::@7 [phi:main::@7->main::@7] b7_from_b7: - //SEG19 [9] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@7->main::@7#0] -- register_copy + //SEG20 [9] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@7->main::@7#0] -- register_copy jmp b7 - //SEG20 main::@7 + //SEG21 main::@7 b7: - //SEG21 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG22 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1168,36 +1170,36 @@ main: { nop nop nop - //SEG22 [11] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG23 [11] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG23 [12] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuz1=_inc_vbuz1 + //SEG24 [12] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuz1=_inc_vbuz1 inc r - //SEG24 [13] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_neq_0_then_la1 + //SEG25 [13] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_neq_0_then_la1 lda r cmp #0 bne b7_from_b7 - //SEG25 [14] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG26 [14] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: - //SEG26 [14] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@8#0] -- vbuz1=vbuc1 + //SEG27 [14] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@8#0] -- vbuz1=vbuc1 lda #0 sta c jmp b8 - //SEG27 [14] phi from main::@8 to main::@8 [phi:main::@8->main::@8] + //SEG28 [14] phi from main::@8 to main::@8 [phi:main::@8->main::@8] b8_from_b8: - //SEG28 [14] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@8->main::@8#0] -- register_copy + //SEG29 [14] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@8->main::@8#0] -- register_copy jmp b8 - //SEG29 main::@8 + //SEG30 main::@8 b8: - //SEG30 [15] *((const byte*) DTV_PALETTE#0 + (byte) main::c#2) ← *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG31 [15] *((const byte*) DTV_PALETTE#0 + (byte) main::c#2) ← *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy c lda palette,y sta DTV_PALETTE,y - //SEG31 [16] *((const byte[16]) main::palette#0 + (byte) main::c#2) ← ++ *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 + //SEG32 [16] *((const byte[16]) main::palette#0 + (byte) main::c#2) ← ++ *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 ldx c inc palette,x - //SEG32 [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 + //SEG33 [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG33 [18] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [18] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@8 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #$10 bne b8_from_b8 @@ -1228,11 +1230,13 @@ Uplifting [main] best 11689 combination reg byte x [ main::c#2 main::c#1 ] reg b Uplifting [] best 11689 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test C64DTV v2 256-colors and the 16-color redefinable palette +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BGCOL = $d021 // Feature enables or disables the extra C64 DTV features @@ -1245,55 +1249,55 @@ ASSEMBLER BEFORE OPTIMIZATION .const DTV_BADLINE_OFF = $20 // Defines colors for the 16 first colors ($00-$0f) .label DTV_PALETTE = $d200 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG11 [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_BORDER_OFF|DTV_BADLINE_OFF sta DTV_CONTROL jmp b4 - //SEG12 main::@4 + //SEG13 main::@4 b4: - //SEG13 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG14 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$40 bne b4 jmp b6 - //SEG14 main::@6 + //SEG15 main::@6 b6: - //SEG15 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG16 [9] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG17 [9] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: - //SEG17 [9] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 49 [phi:main::@6->main::@7#0] -- vbuxx=vbuc1 + //SEG18 [9] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 49 [phi:main::@6->main::@7#0] -- vbuxx=vbuc1 ldx #$31 jmp b7 - //SEG18 [9] phi from main::@7 to main::@7 [phi:main::@7->main::@7] + //SEG19 [9] phi from main::@7 to main::@7 [phi:main::@7->main::@7] b7_from_b7: - //SEG19 [9] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@7->main::@7#0] -- register_copy + //SEG20 [9] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@7->main::@7#0] -- register_copy jmp b7 - //SEG20 main::@7 + //SEG21 main::@7 b7: - //SEG21 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG22 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1319,32 +1323,32 @@ main: { nop nop nop - //SEG22 [11] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG23 [11] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG23 [12] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuxx=_inc_vbuxx + //SEG24 [12] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuxx=_inc_vbuxx inx - //SEG24 [13] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuxx_neq_0_then_la1 + //SEG25 [13] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuxx_neq_0_then_la1 cpx #0 bne b7_from_b7 - //SEG25 [14] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG26 [14] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: - //SEG26 [14] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@8#0] -- vbuxx=vbuc1 + //SEG27 [14] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@8#0] -- vbuxx=vbuc1 ldx #0 jmp b8 - //SEG27 [14] phi from main::@8 to main::@8 [phi:main::@8->main::@8] + //SEG28 [14] phi from main::@8 to main::@8 [phi:main::@8->main::@8] b8_from_b8: - //SEG28 [14] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@8->main::@8#0] -- register_copy + //SEG29 [14] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@8->main::@8#0] -- register_copy jmp b8 - //SEG29 main::@8 + //SEG30 main::@8 b8: - //SEG30 [15] *((const byte*) DTV_PALETTE#0 + (byte) main::c#2) ← *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG31 [15] *((const byte*) DTV_PALETTE#0 + (byte) main::c#2) ← *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda palette,x sta DTV_PALETTE,x - //SEG31 [16] *((const byte[16]) main::palette#0 + (byte) main::c#2) ← ++ *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx + //SEG32 [16] *((const byte[16]) main::palette#0 + (byte) main::c#2) ← ++ *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx inc palette,x - //SEG32 [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx + //SEG33 [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [18] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [18] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b8_from_b8 jmp b4 @@ -1589,11 +1593,13 @@ reg byte x [ main::c#2 main::c#1 ] FINAL ASSEMBLER Score: 10174 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test C64DTV v2 256-colors and the 16-color redefinable palette +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BGCOL = $d021 // Feature enables or disables the extra C64 DTV features @@ -1606,40 +1612,40 @@ Score: 10174 .const DTV_BADLINE_OFF = $20 // Defines colors for the 16 first colors ($00-$0f) .label DTV_PALETTE = $d200 -//SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 -//SEG5 [2] call main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG5 @6 +//SEG6 [2] call main +//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG11 [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_BORDER_OFF|DTV_BADLINE_OFF sta DTV_CONTROL - //SEG12 main::@4 + //SEG13 main::@4 b4: - //SEG13 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG14 [7] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$40 bne b4 - //SEG14 main::@6 - //SEG15 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 main::@6 + //SEG16 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG16 [9] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - //SEG17 [9] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 49 [phi:main::@6->main::@7#0] -- vbuxx=vbuc1 + //SEG17 [9] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG18 [9] phi (byte) main::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 49 [phi:main::@6->main::@7#0] -- vbuxx=vbuc1 ldx #$31 - //SEG18 [9] phi from main::@7 to main::@7 [phi:main::@7->main::@7] - //SEG19 [9] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@7->main::@7#0] -- register_copy - //SEG20 main::@7 + //SEG19 [9] phi from main::@7 to main::@7 [phi:main::@7->main::@7] + //SEG20 [9] phi (byte) main::r#2 = (byte) main::r#1 [phi:main::@7->main::@7#0] -- register_copy + //SEG21 main::@7 b7: - //SEG21 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG22 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1665,28 +1671,28 @@ main: { nop nop nop - //SEG22 [11] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG23 [11] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG23 [12] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuxx=_inc_vbuxx + //SEG24 [12] (byte) main::r#1 ← ++ (byte) main::r#2 -- vbuxx=_inc_vbuxx inx - //SEG24 [13] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuxx_neq_0_then_la1 + //SEG25 [13] if((byte) main::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuxx_neq_0_then_la1 cpx #0 bne b7 - //SEG25 [14] phi from main::@7 to main::@8 [phi:main::@7->main::@8] - //SEG26 [14] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@8#0] -- vbuxx=vbuc1 + //SEG26 [14] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG27 [14] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@8#0] -- vbuxx=vbuc1 ldx #0 - //SEG27 [14] phi from main::@8 to main::@8 [phi:main::@8->main::@8] - //SEG28 [14] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@8->main::@8#0] -- register_copy - //SEG29 main::@8 + //SEG28 [14] phi from main::@8 to main::@8 [phi:main::@8->main::@8] + //SEG29 [14] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@8->main::@8#0] -- register_copy + //SEG30 main::@8 b8: - //SEG30 [15] *((const byte*) DTV_PALETTE#0 + (byte) main::c#2) ← *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG31 [15] *((const byte*) DTV_PALETTE#0 + (byte) main::c#2) ← *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda palette,x sta DTV_PALETTE,x - //SEG31 [16] *((const byte[16]) main::palette#0 + (byte) main::c#2) ← ++ *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx + //SEG32 [16] *((const byte[16]) main::palette#0 + (byte) main::c#2) ← ++ *((const byte[16]) main::palette#0 + (byte) main::c#2) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx inc palette,x - //SEG32 [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx + //SEG33 [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [18] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [18] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b8 jmp b4 diff --git a/src/test/ref/c64dtv-gfxexplorer.asm b/src/test/ref/c64dtv-gfxexplorer.asm index a40b93d69..c523219d9 100644 --- a/src/test/ref/c64dtv-gfxexplorer.asm +++ b/src/test/ref/c64dtv-gfxexplorer.asm @@ -1,7 +1,7 @@ +// Interactive Explorer for C64DTV Screen Modes .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -2544,8 +2544,6 @@ keyboard_init: { keyboard_events: .fill 8, 0 // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() keyboard_scan_values: .fill 8, 0 - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log index 413305c92..a0d30e613 100644 --- a/src/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/ref/c64dtv-gfxexplorer.log @@ -13736,12 +13736,13 @@ Allocated zp ZP_BYTE:355 [ gfx_init_screen0::$2 ] Allocated zp ZP_BYTE:356 [ gfx_init_screen0::$3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Interactive Explorer for C64DTV Screen Modes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -13910,82 +13911,82 @@ INITIAL ASM .label keyboard_modifiers = $f .label form_cursor_count = $1f .label form_field_idx = $20 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @68 [phi:@begin->@68] +//SEG4 [1] phi from @begin to @68 [phi:@begin->@68] b68_from_bbegin: jmp b68 -//SEG4 @68 +//SEG5 @68 b68: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @68 to @end [phi:@68->@end] +//SEG7 [3] phi from @68 to @end [phi:@68->@end] bend_from_b68: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG13 [8] call keyboard_init + //SEG14 [8] call keyboard_init jsr keyboard_init - //SEG14 [9] phi from main to main::@7 [phi:main->main::@7] + //SEG15 [9] phi from main to main::@7 [phi:main->main::@7] b7_from_main: jmp b7 - //SEG15 main::@7 + //SEG16 main::@7 b7: - //SEG16 [10] call gfx_init - //SEG17 [449] phi from main::@7 to gfx_init [phi:main::@7->gfx_init] + //SEG17 [10] call gfx_init + //SEG18 [449] phi from main::@7 to gfx_init [phi:main::@7->gfx_init] gfx_init_from_b7: jsr gfx_init - //SEG18 [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG19 [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: - //SEG19 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 + //SEG20 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 lda #0 sta form_field_idx - //SEG20 [11] phi (byte) keyboard_events_size#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 + //SEG21 [11] phi (byte) keyboard_events_size#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG21 [11] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@7->main::@1#2] -- vbsz1=vbuc1 + //SEG22 [11] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@7->main::@1#2] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 sta form_cursor_count jmp b1 - //SEG22 main::@1 + //SEG23 main::@1 b1: - //SEG23 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG24 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG24 main::@2 + //SEG25 main::@2 b2: - //SEG25 [13] call form_mode - //SEG26 [254] phi from main::@2 to form_mode [phi:main::@2->form_mode] + //SEG26 [13] call form_mode + //SEG27 [254] phi from main::@2 to form_mode [phi:main::@2->form_mode] form_mode_from_b2: jsr form_mode - //SEG27 [14] phi from main::@2 to main::@9 [phi:main::@2->main::@9] + //SEG28 [14] phi from main::@2 to main::@9 [phi:main::@2->main::@9] b9_from_b2: jmp b9 - //SEG28 main::@9 + //SEG29 main::@9 b9: - //SEG29 [15] call gfx_mode + //SEG30 [15] call gfx_mode jsr gfx_mode - //SEG30 [11] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG31 [11] phi from main::@9 to main::@1 [phi:main::@9->main::@1] b1_from_b9: - //SEG31 [11] phi (byte) form_field_idx#1 = (byte) form_field_idx#18 [phi:main::@9->main::@1#0] -- register_copy - //SEG32 [11] phi (byte) keyboard_events_size#27 = (byte) keyboard_events_size#24 [phi:main::@9->main::@1#1] -- register_copy - //SEG33 [11] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#16 [phi:main::@9->main::@1#2] -- register_copy + //SEG32 [11] phi (byte) form_field_idx#1 = (byte) form_field_idx#18 [phi:main::@9->main::@1#0] -- register_copy + //SEG33 [11] phi (byte) keyboard_events_size#27 = (byte) keyboard_events_size#24 [phi:main::@9->main::@1#1] -- register_copy + //SEG34 [11] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#16 [phi:main::@9->main::@1#2] -- register_copy jmp b1 } -//SEG34 gfx_mode +//SEG35 gfx_mode // Change graphics mode to show the selected graphics mode gfx_mode: { .label _29 = $9e @@ -14043,212 +14044,212 @@ gfx_mode: { .label i = $c .label keyboard_event = $f2 .label vic_control2 = 4 - //SEG35 [16] if(*((const byte*) form_ctrl_line#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 + //SEG36 [16] if(*((const byte*) form_ctrl_line#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_line cmp #0 beq b1_from_gfx_mode - //SEG36 [17] phi from gfx_mode to gfx_mode::@23 [phi:gfx_mode->gfx_mode::@23] + //SEG37 [17] phi from gfx_mode to gfx_mode::@23 [phi:gfx_mode->gfx_mode::@23] b23_from_gfx_mode: jmp b23 - //SEG37 gfx_mode::@23 + //SEG38 gfx_mode::@23 b23: - //SEG38 [18] phi from gfx_mode::@23 to gfx_mode::@1 [phi:gfx_mode::@23->gfx_mode::@1] + //SEG39 [18] phi from gfx_mode::@23 to gfx_mode::@1 [phi:gfx_mode::@23->gfx_mode::@1] b1_from_b23: - //SEG39 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuz1=vbuc1 + //SEG40 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuz1=vbuc1 lda #0|DTV_LINEAR sta dtv_control jmp b1 - //SEG40 [18] phi from gfx_mode to gfx_mode::@1 [phi:gfx_mode->gfx_mode::@1] + //SEG41 [18] phi from gfx_mode to gfx_mode::@1 [phi:gfx_mode->gfx_mode::@1] b1_from_gfx_mode: - //SEG41 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuz1=vbuc1 + //SEG42 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jmp b1 - //SEG42 gfx_mode::@1 + //SEG43 gfx_mode::@1 b1: - //SEG43 [19] if(*((const byte*) form_ctrl_borof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 + //SEG44 [19] if(*((const byte*) form_ctrl_borof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_borof cmp #0 beq b2_from_b1 jmp b24 - //SEG44 gfx_mode::@24 + //SEG45 gfx_mode::@24 b24: - //SEG45 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG46 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_BORDER_OFF ora dtv_control sta dtv_control - //SEG46 [21] phi from gfx_mode::@1 gfx_mode::@24 to gfx_mode::@2 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2] + //SEG47 [21] phi from gfx_mode::@1 gfx_mode::@24 to gfx_mode::@2 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2] b2_from_b1: b2_from_b24: - //SEG47 [21] phi (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#14 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2#0] -- register_copy + //SEG48 [21] phi (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#14 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2#0] -- register_copy jmp b2 - //SEG48 gfx_mode::@2 + //SEG49 gfx_mode::@2 b2: - //SEG49 [22] if(*((const byte*) form_ctrl_hicol#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 + //SEG50 [22] if(*((const byte*) form_ctrl_hicol#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_hicol cmp #0 beq b3_from_b2 jmp b25 - //SEG50 gfx_mode::@25 + //SEG51 gfx_mode::@25 b25: - //SEG51 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG52 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_HIGHCOLOR ora dtv_control sta dtv_control - //SEG52 [24] phi from gfx_mode::@2 gfx_mode::@25 to gfx_mode::@3 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3] + //SEG53 [24] phi from gfx_mode::@2 gfx_mode::@25 to gfx_mode::@3 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3] b3_from_b2: b3_from_b25: - //SEG53 [24] phi (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#15 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3#0] -- register_copy + //SEG54 [24] phi (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#15 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3#0] -- register_copy jmp b3 - //SEG54 gfx_mode::@3 + //SEG55 gfx_mode::@3 b3: - //SEG55 [25] if(*((const byte*) form_ctrl_overs#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 + //SEG56 [25] if(*((const byte*) form_ctrl_overs#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_overs cmp #0 beq b4_from_b3 jmp b26 - //SEG56 gfx_mode::@26 + //SEG57 gfx_mode::@26 b26: - //SEG57 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG58 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_OVERSCAN ora dtv_control sta dtv_control - //SEG58 [27] phi from gfx_mode::@26 gfx_mode::@3 to gfx_mode::@4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4] + //SEG59 [27] phi from gfx_mode::@26 gfx_mode::@3 to gfx_mode::@4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4] b4_from_b26: b4_from_b3: - //SEG59 [27] phi (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4#0] -- register_copy + //SEG60 [27] phi (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4#0] -- register_copy jmp b4 - //SEG60 gfx_mode::@4 + //SEG61 gfx_mode::@4 b4: - //SEG61 [28] if(*((const byte*) form_ctrl_colof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 + //SEG62 [28] if(*((const byte*) form_ctrl_colof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_colof cmp #0 beq b5_from_b4 jmp b27 - //SEG62 gfx_mode::@27 + //SEG63 gfx_mode::@27 b27: - //SEG63 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG64 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_COLORRAM_OFF ora dtv_control sta dtv_control - //SEG64 [30] phi from gfx_mode::@27 gfx_mode::@4 to gfx_mode::@5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5] + //SEG65 [30] phi from gfx_mode::@27 gfx_mode::@4 to gfx_mode::@5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5] b5_from_b27: b5_from_b4: - //SEG65 [30] phi (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5#0] -- register_copy + //SEG66 [30] phi (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5#0] -- register_copy jmp b5 - //SEG66 gfx_mode::@5 + //SEG67 gfx_mode::@5 b5: - //SEG67 [31] if(*((const byte*) form_ctrl_chunk#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 + //SEG68 [31] if(*((const byte*) form_ctrl_chunk#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_chunk cmp #0 beq b6_from_b5 jmp b28 - //SEG68 gfx_mode::@28 + //SEG69 gfx_mode::@28 b28: - //SEG69 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG70 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_CHUNKY ora dtv_control sta dtv_control - //SEG70 [33] phi from gfx_mode::@28 gfx_mode::@5 to gfx_mode::@6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6] + //SEG71 [33] phi from gfx_mode::@28 gfx_mode::@5 to gfx_mode::@6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6] b6_from_b28: b6_from_b5: - //SEG71 [33] phi (byte) gfx_mode::dtv_control#12 = (byte) gfx_mode::dtv_control#6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6#0] -- register_copy + //SEG72 [33] phi (byte) gfx_mode::dtv_control#12 = (byte) gfx_mode::dtv_control#6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6#0] -- register_copy jmp b6 - //SEG72 gfx_mode::@6 + //SEG73 gfx_mode::@6 b6: - //SEG73 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuz1 + //SEG74 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuz1 lda dtv_control sta DTV_CONTROL - //SEG74 [35] if(*((const byte*) form_ctrl_ecm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 + //SEG75 [35] if(*((const byte*) form_ctrl_ecm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_ecm cmp #0 beq b7_from_b6 - //SEG75 [36] phi from gfx_mode::@6 to gfx_mode::@29 [phi:gfx_mode::@6->gfx_mode::@29] + //SEG76 [36] phi from gfx_mode::@6 to gfx_mode::@29 [phi:gfx_mode::@6->gfx_mode::@29] b29_from_b6: jmp b29 - //SEG76 gfx_mode::@29 + //SEG77 gfx_mode::@29 b29: - //SEG77 [37] phi from gfx_mode::@29 to gfx_mode::@7 [phi:gfx_mode::@29->gfx_mode::@7] + //SEG78 [37] phi from gfx_mode::@29 to gfx_mode::@7 [phi:gfx_mode::@29->gfx_mode::@7] b7_from_b29: - //SEG78 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuz1=vbuc1 + //SEG79 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuz1=vbuc1 lda #VIC_DEN|VIC_RSEL|3|VIC_ECM sta vic_control jmp b7 - //SEG79 [37] phi from gfx_mode::@6 to gfx_mode::@7 [phi:gfx_mode::@6->gfx_mode::@7] + //SEG80 [37] phi from gfx_mode::@6 to gfx_mode::@7 [phi:gfx_mode::@6->gfx_mode::@7] b7_from_b6: - //SEG80 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuz1=vbuc1 + //SEG81 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuz1=vbuc1 lda #VIC_DEN|VIC_RSEL|3 sta vic_control jmp b7 - //SEG81 gfx_mode::@7 + //SEG82 gfx_mode::@7 b7: - //SEG82 [38] if(*((const byte*) form_ctrl_bmm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 + //SEG83 [38] if(*((const byte*) form_ctrl_bmm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_bmm cmp #0 beq b8_from_b7 jmp b30 - //SEG83 gfx_mode::@30 + //SEG84 gfx_mode::@30 b30: - //SEG84 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG85 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuz1=vbuz1_bor_vbuc1 lda #VIC_BMM ora vic_control sta vic_control - //SEG85 [40] phi from gfx_mode::@30 gfx_mode::@7 to gfx_mode::@8 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8] + //SEG86 [40] phi from gfx_mode::@30 gfx_mode::@7 to gfx_mode::@8 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8] b8_from_b30: b8_from_b7: - //SEG86 [40] phi (byte) gfx_mode::vic_control#4 = (byte) gfx_mode::vic_control#2 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8#0] -- register_copy + //SEG87 [40] phi (byte) gfx_mode::vic_control#4 = (byte) gfx_mode::vic_control#2 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8#0] -- register_copy jmp b8 - //SEG87 gfx_mode::@8 + //SEG88 gfx_mode::@8 b8: - //SEG88 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuz1 + //SEG89 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuz1 lda vic_control sta VIC_CONTROL - //SEG89 [42] if(*((const byte*) form_ctrl_mcm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 + //SEG90 [42] if(*((const byte*) form_ctrl_mcm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_mcm cmp #0 beq b9_from_b8 - //SEG90 [43] phi from gfx_mode::@8 to gfx_mode::@31 [phi:gfx_mode::@8->gfx_mode::@31] + //SEG91 [43] phi from gfx_mode::@8 to gfx_mode::@31 [phi:gfx_mode::@8->gfx_mode::@31] b31_from_b8: jmp b31 - //SEG91 gfx_mode::@31 + //SEG92 gfx_mode::@31 b31: - //SEG92 [44] phi from gfx_mode::@31 to gfx_mode::@9 [phi:gfx_mode::@31->gfx_mode::@9] + //SEG93 [44] phi from gfx_mode::@31 to gfx_mode::@9 [phi:gfx_mode::@31->gfx_mode::@9] b9_from_b31: - //SEG93 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 [phi:gfx_mode::@31->gfx_mode::@9#0] -- vbuz1=vbuc1 + //SEG94 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 [phi:gfx_mode::@31->gfx_mode::@9#0] -- vbuz1=vbuc1 lda #VIC_CSEL|VIC_MCM sta vic_control2 jmp b9 - //SEG94 [44] phi from gfx_mode::@8 to gfx_mode::@9 [phi:gfx_mode::@8->gfx_mode::@9] + //SEG95 [44] phi from gfx_mode::@8 to gfx_mode::@9 [phi:gfx_mode::@8->gfx_mode::@9] b9_from_b8: - //SEG95 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0 [phi:gfx_mode::@8->gfx_mode::@9#0] -- vbuz1=vbuc1 + //SEG96 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0 [phi:gfx_mode::@8->gfx_mode::@9#0] -- vbuz1=vbuc1 lda #VIC_CSEL sta vic_control2 jmp b9 - //SEG96 gfx_mode::@9 + //SEG97 gfx_mode::@9 b9: - //SEG97 [45] *((const byte*) VIC_CONTROL2#0) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuz1 + //SEG98 [45] *((const byte*) VIC_CONTROL2#0) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuz1 lda vic_control2 sta VIC_CONTROL2 - //SEG98 [46] (byte~) gfx_mode::$29 ← *((const byte*) form_a_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG99 [46] (byte~) gfx_mode::$29 ← *((const byte*) form_a_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_a_start_hi asl asl asl asl sta _29 - //SEG99 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG100 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_a_start_lo ora _29 sta plane_a_offs - //SEG100 [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern#0) -- vbuz1=_deref_pbuc1 + //SEG101 [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern#0) -- vbuz1=_deref_pbuc1 lda form_a_pattern sta get_plane.idx - //SEG101 [49] call get_plane - //SEG102 [236] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] + //SEG102 [49] call get_plane + //SEG103 [236] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] get_plane_from_b9: - //SEG103 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#0 [phi:gfx_mode::@9->get_plane#0] -- register_copy + //SEG104 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#0 [phi:gfx_mode::@9->get_plane#0] -- register_copy jsr get_plane - //SEG104 [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 -- vduz1=vduz2 + //SEG105 [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 -- vduz1=vduz2 lda get_plane.return sta get_plane.return_16 lda get_plane.return+1 @@ -14258,9 +14259,9 @@ gfx_mode: { lda get_plane.return+3 sta get_plane.return_16+3 jmp b46 - //SEG105 gfx_mode::@46 + //SEG106 gfx_mode::@46 b46: - //SEG106 [51] (dword~) gfx_mode::$31 ← (dword) get_plane::return#16 -- vduz1=vduz2 + //SEG107 [51] (dword~) gfx_mode::$31 ← (dword) get_plane::return#16 -- vduz1=vduz2 lda get_plane.return_16 sta _31 lda get_plane.return_16+1 @@ -14269,7 +14270,7 @@ gfx_mode: { sta _31+2 lda get_plane.return_16+3 sta _31+3 - //SEG107 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz2_plus_vbuz3 + //SEG108 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz2_plus_vbuz3 lda plane_a_offs clc adc _31 @@ -14283,90 +14284,90 @@ gfx_mode: { lda _31+3 adc #0 sta plane_a+3 - //SEG108 [53] (word~) gfx_mode::$33 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 + //SEG109 [53] (word~) gfx_mode::$33 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 lda plane_a sta _33 lda plane_a+1 sta _33+1 - //SEG109 [54] (byte~) gfx_mode::$34 ← < (word~) gfx_mode::$33 -- vbuz1=_lo_vwuz2 + //SEG110 [54] (byte~) gfx_mode::$34 ← < (word~) gfx_mode::$33 -- vbuz1=_lo_vwuz2 lda _33 sta _34 - //SEG110 [55] *((const byte*) DTV_PLANEA_START_LO#0) ← (byte~) gfx_mode::$34 -- _deref_pbuc1=vbuz1 + //SEG111 [55] *((const byte*) DTV_PLANEA_START_LO#0) ← (byte~) gfx_mode::$34 -- _deref_pbuc1=vbuz1 lda _34 sta DTV_PLANEA_START_LO - //SEG111 [56] (word~) gfx_mode::$35 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 + //SEG112 [56] (word~) gfx_mode::$35 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 lda plane_a sta _35 lda plane_a+1 sta _35+1 - //SEG112 [57] (byte~) gfx_mode::$36 ← > (word~) gfx_mode::$35 -- vbuz1=_hi_vwuz2 + //SEG113 [57] (byte~) gfx_mode::$36 ← > (word~) gfx_mode::$35 -- vbuz1=_hi_vwuz2 lda _35+1 sta _36 - //SEG113 [58] *((const byte*) DTV_PLANEA_START_MI#0) ← (byte~) gfx_mode::$36 -- _deref_pbuc1=vbuz1 + //SEG114 [58] *((const byte*) DTV_PLANEA_START_MI#0) ← (byte~) gfx_mode::$36 -- _deref_pbuc1=vbuz1 lda _36 sta DTV_PLANEA_START_MI - //SEG114 [59] (word~) gfx_mode::$37 ← > (dword) gfx_mode::plane_a#0 -- vwuz1=_hi_vduz2 + //SEG115 [59] (word~) gfx_mode::$37 ← > (dword) gfx_mode::plane_a#0 -- vwuz1=_hi_vduz2 lda plane_a+2 sta _37 lda plane_a+3 sta _37+1 - //SEG115 [60] (byte~) gfx_mode::$38 ← < (word~) gfx_mode::$37 -- vbuz1=_lo_vwuz2 + //SEG116 [60] (byte~) gfx_mode::$38 ← < (word~) gfx_mode::$37 -- vbuz1=_lo_vwuz2 lda _37 sta _38 - //SEG116 [61] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte~) gfx_mode::$38 -- _deref_pbuc1=vbuz1 + //SEG117 [61] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte~) gfx_mode::$38 -- _deref_pbuc1=vbuz1 lda _38 sta DTV_PLANEA_START_HI - //SEG117 [62] (byte~) gfx_mode::$39 ← *((const byte*) form_a_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG118 [62] (byte~) gfx_mode::$39 ← *((const byte*) form_a_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_a_step_hi asl asl asl asl sta _39 - //SEG118 [63] (byte~) gfx_mode::$40 ← (byte~) gfx_mode::$39 | *((const byte*) form_a_step_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG119 [63] (byte~) gfx_mode::$40 ← (byte~) gfx_mode::$39 | *((const byte*) form_a_step_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_a_step_lo ora _39 sta _40 - //SEG119 [64] *((const byte*) DTV_PLANEA_STEP#0) ← (byte~) gfx_mode::$40 -- _deref_pbuc1=vbuz1 + //SEG120 [64] *((const byte*) DTV_PLANEA_STEP#0) ← (byte~) gfx_mode::$40 -- _deref_pbuc1=vbuz1 lda _40 sta DTV_PLANEA_STEP - //SEG120 [65] (byte~) gfx_mode::$41 ← *((const byte*) form_a_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG121 [65] (byte~) gfx_mode::$41 ← *((const byte*) form_a_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_a_mod_hi asl asl asl asl sta _41 - //SEG121 [66] (byte~) gfx_mode::$42 ← (byte~) gfx_mode::$41 | *((const byte*) form_a_mod_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG122 [66] (byte~) gfx_mode::$42 ← (byte~) gfx_mode::$41 | *((const byte*) form_a_mod_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_a_mod_lo ora _41 sta _42 - //SEG122 [67] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte~) gfx_mode::$42 -- _deref_pbuc1=vbuz1 + //SEG123 [67] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte~) gfx_mode::$42 -- _deref_pbuc1=vbuz1 lda _42 sta DTV_PLANEA_MODULO_LO - //SEG123 [68] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG124 [68] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG124 [69] (byte~) gfx_mode::$43 ← *((const byte*) form_b_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG125 [69] (byte~) gfx_mode::$43 ← *((const byte*) form_b_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_b_start_hi asl asl asl asl sta _43 - //SEG125 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG126 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_b_start_lo ora _43 sta plane_b_offs - //SEG126 [71] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern#0) -- vbuz1=_deref_pbuc1 + //SEG127 [71] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern#0) -- vbuz1=_deref_pbuc1 lda form_b_pattern sta get_plane.idx - //SEG127 [72] call get_plane - //SEG128 [236] phi from gfx_mode::@46 to get_plane [phi:gfx_mode::@46->get_plane] + //SEG128 [72] call get_plane + //SEG129 [236] phi from gfx_mode::@46 to get_plane [phi:gfx_mode::@46->get_plane] get_plane_from_b46: - //SEG129 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#1 [phi:gfx_mode::@46->get_plane#0] -- register_copy + //SEG130 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#1 [phi:gfx_mode::@46->get_plane#0] -- register_copy jsr get_plane - //SEG130 [73] (dword) get_plane::return#17 ← (dword) get_plane::return#14 -- vduz1=vduz2 + //SEG131 [73] (dword) get_plane::return#17 ← (dword) get_plane::return#14 -- vduz1=vduz2 lda get_plane.return sta get_plane.return_17 lda get_plane.return+1 @@ -14376,9 +14377,9 @@ gfx_mode: { lda get_plane.return+3 sta get_plane.return_17+3 jmp b47 - //SEG131 gfx_mode::@47 + //SEG132 gfx_mode::@47 b47: - //SEG132 [74] (dword~) gfx_mode::$45 ← (dword) get_plane::return#17 -- vduz1=vduz2 + //SEG133 [74] (dword~) gfx_mode::$45 ← (dword) get_plane::return#17 -- vduz1=vduz2 lda get_plane.return_17 sta _45 lda get_plane.return_17+1 @@ -14387,7 +14388,7 @@ gfx_mode: { sta _45+2 lda get_plane.return_17+3 sta _45+3 - //SEG133 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz2_plus_vbuz3 + //SEG134 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz2_plus_vbuz3 lda plane_b_offs clc adc _45 @@ -14401,105 +14402,105 @@ gfx_mode: { lda _45+3 adc #0 sta plane_b+3 - //SEG134 [76] (word~) gfx_mode::$47 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 + //SEG135 [76] (word~) gfx_mode::$47 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 lda plane_b sta _47 lda plane_b+1 sta _47+1 - //SEG135 [77] (byte~) gfx_mode::$48 ← < (word~) gfx_mode::$47 -- vbuz1=_lo_vwuz2 + //SEG136 [77] (byte~) gfx_mode::$48 ← < (word~) gfx_mode::$47 -- vbuz1=_lo_vwuz2 lda _47 sta _48 - //SEG136 [78] *((const byte*) DTV_PLANEB_START_LO#0) ← (byte~) gfx_mode::$48 -- _deref_pbuc1=vbuz1 + //SEG137 [78] *((const byte*) DTV_PLANEB_START_LO#0) ← (byte~) gfx_mode::$48 -- _deref_pbuc1=vbuz1 lda _48 sta DTV_PLANEB_START_LO - //SEG137 [79] (word~) gfx_mode::$49 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 + //SEG138 [79] (word~) gfx_mode::$49 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 lda plane_b sta _49 lda plane_b+1 sta _49+1 - //SEG138 [80] (byte~) gfx_mode::$50 ← > (word~) gfx_mode::$49 -- vbuz1=_hi_vwuz2 + //SEG139 [80] (byte~) gfx_mode::$50 ← > (word~) gfx_mode::$49 -- vbuz1=_hi_vwuz2 lda _49+1 sta _50 - //SEG139 [81] *((const byte*) DTV_PLANEB_START_MI#0) ← (byte~) gfx_mode::$50 -- _deref_pbuc1=vbuz1 + //SEG140 [81] *((const byte*) DTV_PLANEB_START_MI#0) ← (byte~) gfx_mode::$50 -- _deref_pbuc1=vbuz1 lda _50 sta DTV_PLANEB_START_MI - //SEG140 [82] (word~) gfx_mode::$51 ← > (dword) gfx_mode::plane_b#0 -- vwuz1=_hi_vduz2 + //SEG141 [82] (word~) gfx_mode::$51 ← > (dword) gfx_mode::plane_b#0 -- vwuz1=_hi_vduz2 lda plane_b+2 sta _51 lda plane_b+3 sta _51+1 - //SEG141 [83] (byte~) gfx_mode::$52 ← < (word~) gfx_mode::$51 -- vbuz1=_lo_vwuz2 + //SEG142 [83] (byte~) gfx_mode::$52 ← < (word~) gfx_mode::$51 -- vbuz1=_lo_vwuz2 lda _51 sta _52 - //SEG142 [84] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte~) gfx_mode::$52 -- _deref_pbuc1=vbuz1 + //SEG143 [84] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte~) gfx_mode::$52 -- _deref_pbuc1=vbuz1 lda _52 sta DTV_PLANEB_START_HI - //SEG143 [85] (byte~) gfx_mode::$53 ← *((const byte*) form_b_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG144 [85] (byte~) gfx_mode::$53 ← *((const byte*) form_b_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_b_step_hi asl asl asl asl sta _53 - //SEG144 [86] (byte~) gfx_mode::$54 ← (byte~) gfx_mode::$53 | *((const byte*) form_b_step_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG145 [86] (byte~) gfx_mode::$54 ← (byte~) gfx_mode::$53 | *((const byte*) form_b_step_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_b_step_lo ora _53 sta _54 - //SEG145 [87] *((const byte*) DTV_PLANEB_STEP#0) ← (byte~) gfx_mode::$54 -- _deref_pbuc1=vbuz1 + //SEG146 [87] *((const byte*) DTV_PLANEB_STEP#0) ← (byte~) gfx_mode::$54 -- _deref_pbuc1=vbuz1 lda _54 sta DTV_PLANEB_STEP - //SEG146 [88] (byte~) gfx_mode::$55 ← *((const byte*) form_b_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG147 [88] (byte~) gfx_mode::$55 ← *((const byte*) form_b_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_b_mod_hi asl asl asl asl sta _55 - //SEG147 [89] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const byte*) form_b_mod_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG148 [89] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const byte*) form_b_mod_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_b_mod_lo ora _55 sta _56 - //SEG148 [90] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuz1 + //SEG149 [90] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuz1 lda _56 sta DTV_PLANEB_MODULO_LO - //SEG149 [91] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG150 [91] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG150 [92] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG151 [92] *((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 - //SEG151 [93] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) VIC_SCREEN0#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG152 [93] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) VIC_SCREEN0#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^VIC_SCREEN0/$4000 sta CIA2_PORT_A - //SEG152 [94] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen#0) -- vbuz1=_deref_pbuc1 + //SEG153 [94] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen#0) -- vbuz1=_deref_pbuc1 lda form_vic_screen sta get_vic_screen.idx - //SEG153 [95] call get_vic_screen - //SEG154 [222] phi from gfx_mode::@47 to get_vic_screen [phi:gfx_mode::@47->get_vic_screen] + //SEG154 [95] call get_vic_screen + //SEG155 [222] phi from gfx_mode::@47 to get_vic_screen [phi:gfx_mode::@47->get_vic_screen] get_vic_screen_from_b47: - //SEG155 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#0 [phi:gfx_mode::@47->get_vic_screen#0] -- register_copy + //SEG156 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#0 [phi:gfx_mode::@47->get_vic_screen#0] -- register_copy jsr get_vic_screen - //SEG156 [96] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 -- pbuz1=pbuz2 + //SEG157 [96] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 -- pbuz1=pbuz2 lda get_vic_screen.return sta get_vic_screen.return_10 lda get_vic_screen.return+1 sta get_vic_screen.return_10+1 jmp b48 - //SEG157 gfx_mode::@48 + //SEG158 gfx_mode::@48 b48: - //SEG158 [97] (byte*~) gfx_mode::$61 ← (byte*) get_vic_screen::return#10 -- pbuz1=pbuz2 + //SEG159 [97] (byte*~) gfx_mode::$61 ← (byte*) get_vic_screen::return#10 -- pbuz1=pbuz2 lda get_vic_screen.return_10 sta _61 lda get_vic_screen.return_10+1 sta _61+1 - //SEG159 [98] (word~) gfx_mode::$63 ← (word)(byte*~) gfx_mode::$61 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz2_band_vwuc1 + //SEG160 [98] (word~) gfx_mode::$63 ← (word)(byte*~) gfx_mode::$61 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz2_band_vwuc1 lda _61 and #<$3fff sta _63 lda _61+1 and #>$3fff sta _63+1 - //SEG160 [99] (word~) gfx_mode::$64 ← (word~) gfx_mode::$63 >> (byte/signed byte/word/signed word/dword/signed dword) 6 -- vwuz1=vwuz2_ror_6 + //SEG161 [99] (word~) gfx_mode::$64 ← (word~) gfx_mode::$63 >> (byte/signed byte/word/signed word/dword/signed dword) 6 -- vwuz1=vwuz2_ror_6 lda _63+1 sta _64+1 lda _63 @@ -14510,291 +14511,291 @@ gfx_mode: { ror _64 dey bne !- - //SEG161 [100] (byte~) gfx_mode::$65 ← ((byte)) (word~) gfx_mode::$64 -- vbuz1=_byte_vwuz2 + //SEG162 [100] (byte~) gfx_mode::$65 ← ((byte)) (word~) gfx_mode::$64 -- vbuz1=_byte_vwuz2 lda _64 sta _65 - //SEG162 [101] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx#0) -- vbuz1=_deref_pbuc1 + //SEG163 [101] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx#0) -- vbuz1=_deref_pbuc1 lda form_vic_gfx sta get_vic_charset.idx - //SEG163 [102] call get_vic_charset + //SEG164 [102] call get_vic_charset jsr get_vic_charset - //SEG164 [103] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 -- pbuz1=pbuz2 + //SEG165 [103] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 -- pbuz1=pbuz2 lda get_vic_charset.return sta get_vic_charset.return_4 lda get_vic_charset.return+1 sta get_vic_charset.return_4+1 jmp b49 - //SEG165 gfx_mode::@49 + //SEG166 gfx_mode::@49 b49: - //SEG166 [104] (byte*~) gfx_mode::$66 ← (byte*) get_vic_charset::return#4 -- pbuz1=pbuz2 + //SEG167 [104] (byte*~) gfx_mode::$66 ← (byte*) get_vic_charset::return#4 -- pbuz1=pbuz2 lda get_vic_charset.return_4 sta _66 lda get_vic_charset.return_4+1 sta _66+1 - //SEG167 [105] (word~) gfx_mode::$68 ← (word)(byte*~) gfx_mode::$66 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz2_band_vwuc1 + //SEG168 [105] (word~) gfx_mode::$68 ← (word)(byte*~) gfx_mode::$66 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz2_band_vwuc1 lda _66 and #<$3fff sta _68 lda _66+1 and #>$3fff sta _68+1 - //SEG168 [106] (byte~) gfx_mode::$69 ← > (word~) gfx_mode::$68 -- vbuz1=_hi_vwuz2 + //SEG169 [106] (byte~) gfx_mode::$69 ← > (word~) gfx_mode::$68 -- vbuz1=_hi_vwuz2 lda _68+1 sta _69 - //SEG169 [107] (byte~) gfx_mode::$70 ← (byte~) gfx_mode::$69 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_ror_2 + //SEG170 [107] (byte~) gfx_mode::$70 ← (byte~) gfx_mode::$69 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_ror_2 lda _69 lsr lsr sta _70 - //SEG170 [108] (byte~) gfx_mode::$71 ← (byte~) gfx_mode::$65 | (byte~) gfx_mode::$70 -- vbuz1=vbuz2_bor_vbuz3 + //SEG171 [108] (byte~) gfx_mode::$71 ← (byte~) gfx_mode::$65 | (byte~) gfx_mode::$70 -- vbuz1=vbuz2_bor_vbuz3 lda _65 ora _70 sta _71 - //SEG171 [109] *((const byte*) VIC_MEMORY#0) ← (byte~) gfx_mode::$71 -- _deref_pbuc1=vbuz1 + //SEG172 [109] *((const byte*) VIC_MEMORY#0) ← (byte~) gfx_mode::$71 -- _deref_pbuc1=vbuz1 lda _71 sta VIC_MEMORY - //SEG172 [110] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols#0) -- vbuz1=_deref_pbuc1 + //SEG173 [110] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols#0) -- vbuz1=_deref_pbuc1 lda form_vic_cols sta get_vic_screen.idx - //SEG173 [111] call get_vic_screen - //SEG174 [222] phi from gfx_mode::@49 to get_vic_screen [phi:gfx_mode::@49->get_vic_screen] + //SEG174 [111] call get_vic_screen + //SEG175 [222] phi from gfx_mode::@49 to get_vic_screen [phi:gfx_mode::@49->get_vic_screen] get_vic_screen_from_b49: - //SEG175 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#1 [phi:gfx_mode::@49->get_vic_screen#0] -- register_copy + //SEG176 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#1 [phi:gfx_mode::@49->get_vic_screen#0] -- register_copy jsr get_vic_screen - //SEG176 [112] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 -- pbuz1=pbuz2 + //SEG177 [112] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 -- pbuz1=pbuz2 lda get_vic_screen.return sta get_vic_screen.return_11 lda get_vic_screen.return+1 sta get_vic_screen.return_11+1 jmp b50 - //SEG177 gfx_mode::@50 + //SEG178 gfx_mode::@50 b50: - //SEG178 [113] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 -- pbuz1=pbuz2 + //SEG179 [113] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 -- pbuz1=pbuz2 lda get_vic_screen.return_11 sta vic_colors lda get_vic_screen.return_11+1 sta vic_colors+1 - //SEG179 [114] phi from gfx_mode::@50 to gfx_mode::@10 [phi:gfx_mode::@50->gfx_mode::@10] + //SEG180 [114] phi from gfx_mode::@50 to gfx_mode::@10 [phi:gfx_mode::@50->gfx_mode::@10] b10_from_b50: - //SEG180 [114] phi (byte) gfx_mode::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@50->gfx_mode::@10#0] -- vbuz1=vbuc1 + //SEG181 [114] phi (byte) gfx_mode::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@50->gfx_mode::@10#0] -- vbuz1=vbuc1 lda #0 sta cy - //SEG181 [114] phi (byte*) gfx_mode::col#3 = (const byte*) COLS#0 [phi:gfx_mode::@50->gfx_mode::@10#1] -- pbuz1=pbuc1 + //SEG182 [114] phi (byte*) gfx_mode::col#3 = (const byte*) COLS#0 [phi:gfx_mode::@50->gfx_mode::@10#1] -- pbuz1=pbuc1 lda #COLS sta col+1 - //SEG182 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#0 [phi:gfx_mode::@50->gfx_mode::@10#2] -- register_copy + //SEG183 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#0 [phi:gfx_mode::@50->gfx_mode::@10#2] -- register_copy jmp b10 - //SEG183 [114] phi from gfx_mode::@32 to gfx_mode::@10 [phi:gfx_mode::@32->gfx_mode::@10] + //SEG184 [114] phi from gfx_mode::@32 to gfx_mode::@10 [phi:gfx_mode::@32->gfx_mode::@10] b10_from_b32: - //SEG184 [114] phi (byte) gfx_mode::cy#4 = (byte) gfx_mode::cy#1 [phi:gfx_mode::@32->gfx_mode::@10#0] -- register_copy - //SEG185 [114] phi (byte*) gfx_mode::col#3 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@32->gfx_mode::@10#1] -- register_copy - //SEG186 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@32->gfx_mode::@10#2] -- register_copy + //SEG185 [114] phi (byte) gfx_mode::cy#4 = (byte) gfx_mode::cy#1 [phi:gfx_mode::@32->gfx_mode::@10#0] -- register_copy + //SEG186 [114] phi (byte*) gfx_mode::col#3 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@32->gfx_mode::@10#1] -- register_copy + //SEG187 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@32->gfx_mode::@10#2] -- register_copy jmp b10 - //SEG187 gfx_mode::@10 + //SEG188 gfx_mode::@10 b10: - //SEG188 [115] phi from gfx_mode::@10 to gfx_mode::@11 [phi:gfx_mode::@10->gfx_mode::@11] + //SEG189 [115] phi from gfx_mode::@10 to gfx_mode::@11 [phi:gfx_mode::@10->gfx_mode::@11] b11_from_b10: - //SEG189 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuz1=vbuc1 + //SEG190 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuz1=vbuc1 lda #0 sta cx - //SEG190 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#3 [phi:gfx_mode::@10->gfx_mode::@11#1] -- register_copy - //SEG191 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#3 [phi:gfx_mode::@10->gfx_mode::@11#2] -- register_copy + //SEG191 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#3 [phi:gfx_mode::@10->gfx_mode::@11#1] -- register_copy + //SEG192 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#3 [phi:gfx_mode::@10->gfx_mode::@11#2] -- register_copy jmp b11 - //SEG192 [115] phi from gfx_mode::@11 to gfx_mode::@11 [phi:gfx_mode::@11->gfx_mode::@11] + //SEG193 [115] phi from gfx_mode::@11 to gfx_mode::@11 [phi:gfx_mode::@11->gfx_mode::@11] b11_from_b11: - //SEG193 [115] phi (byte) gfx_mode::cx#2 = (byte) gfx_mode::cx#1 [phi:gfx_mode::@11->gfx_mode::@11#0] -- register_copy - //SEG194 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@11->gfx_mode::@11#1] -- register_copy - //SEG195 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@11->gfx_mode::@11#2] -- register_copy + //SEG194 [115] phi (byte) gfx_mode::cx#2 = (byte) gfx_mode::cx#1 [phi:gfx_mode::@11->gfx_mode::@11#0] -- register_copy + //SEG195 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@11->gfx_mode::@11#1] -- register_copy + //SEG196 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@11->gfx_mode::@11#2] -- register_copy jmp b11 - //SEG196 gfx_mode::@11 + //SEG197 gfx_mode::@11 b11: - //SEG197 [116] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG198 [116] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (vic_colors),y ldy #0 sta (col),y - //SEG198 [117] (byte*) gfx_mode::col#1 ← ++ (byte*) gfx_mode::col#2 -- pbuz1=_inc_pbuz1 + //SEG199 [117] (byte*) gfx_mode::col#1 ← ++ (byte*) gfx_mode::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG199 [118] (byte*) gfx_mode::vic_colors#1 ← ++ (byte*) gfx_mode::vic_colors#2 -- pbuz1=_inc_pbuz1 + //SEG200 [118] (byte*) gfx_mode::vic_colors#1 ← ++ (byte*) gfx_mode::vic_colors#2 -- pbuz1=_inc_pbuz1 inc vic_colors bne !+ inc vic_colors+1 !: - //SEG200 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuz1=_inc_vbuz1 + //SEG201 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG201 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_mode::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG202 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_mode::@11 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b11_from_b11 jmp b32 - //SEG202 gfx_mode::@32 + //SEG203 gfx_mode::@32 b32: - //SEG203 [121] (byte) gfx_mode::cy#1 ← ++ (byte) gfx_mode::cy#4 -- vbuz1=_inc_vbuz1 + //SEG204 [121] (byte) gfx_mode::cy#1 ← ++ (byte) gfx_mode::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG204 [122] if((byte) gfx_mode::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_mode::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG205 [122] if((byte) gfx_mode::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_mode::@10 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b10_from_b32 jmp b33 - //SEG205 gfx_mode::@33 + //SEG206 gfx_mode::@33 b33: - //SEG206 [123] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG207 [123] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG207 [124] (byte~) gfx_mode::$75 ← *((const byte*) form_vic_bg0_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG208 [124] (byte~) gfx_mode::$75 ← *((const byte*) form_vic_bg0_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_vic_bg0_hi asl asl asl asl sta _75 - //SEG208 [125] (byte~) gfx_mode::$76 ← (byte~) gfx_mode::$75 | *((const byte*) form_vic_bg0_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG209 [125] (byte~) gfx_mode::$76 ← (byte~) gfx_mode::$75 | *((const byte*) form_vic_bg0_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_vic_bg0_lo ora _75 sta _76 - //SEG209 [126] *((const byte*) BGCOL1#0) ← (byte~) gfx_mode::$76 -- _deref_pbuc1=vbuz1 + //SEG210 [126] *((const byte*) BGCOL1#0) ← (byte~) gfx_mode::$76 -- _deref_pbuc1=vbuz1 lda _76 sta BGCOL1 - //SEG210 [127] (byte~) gfx_mode::$77 ← *((const byte*) form_vic_bg1_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG211 [127] (byte~) gfx_mode::$77 ← *((const byte*) form_vic_bg1_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_vic_bg1_hi asl asl asl asl sta _77 - //SEG211 [128] (byte~) gfx_mode::$78 ← (byte~) gfx_mode::$77 | *((const byte*) form_vic_bg1_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG212 [128] (byte~) gfx_mode::$78 ← (byte~) gfx_mode::$77 | *((const byte*) form_vic_bg1_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_vic_bg1_lo ora _77 sta _78 - //SEG212 [129] *((const byte*) BGCOL2#0) ← (byte~) gfx_mode::$78 -- _deref_pbuc1=vbuz1 + //SEG213 [129] *((const byte*) BGCOL2#0) ← (byte~) gfx_mode::$78 -- _deref_pbuc1=vbuz1 lda _78 sta BGCOL2 - //SEG213 [130] (byte~) gfx_mode::$79 ← *((const byte*) form_vic_bg2_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG214 [130] (byte~) gfx_mode::$79 ← *((const byte*) form_vic_bg2_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_vic_bg2_hi asl asl asl asl sta _79 - //SEG214 [131] (byte~) gfx_mode::$80 ← (byte~) gfx_mode::$79 | *((const byte*) form_vic_bg2_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG215 [131] (byte~) gfx_mode::$80 ← (byte~) gfx_mode::$79 | *((const byte*) form_vic_bg2_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_vic_bg2_lo ora _79 sta _80 - //SEG215 [132] *((const byte*) BGCOL3#0) ← (byte~) gfx_mode::$80 -- _deref_pbuc1=vbuz1 + //SEG216 [132] *((const byte*) BGCOL3#0) ← (byte~) gfx_mode::$80 -- _deref_pbuc1=vbuz1 lda _80 sta BGCOL3 - //SEG216 [133] (byte~) gfx_mode::$81 ← *((const byte*) form_vic_bg3_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 + //SEG217 [133] (byte~) gfx_mode::$81 ← *((const byte*) form_vic_bg3_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_vic_bg3_hi asl asl asl asl sta _81 - //SEG217 [134] (byte~) gfx_mode::$82 ← (byte~) gfx_mode::$81 | *((const byte*) form_vic_bg3_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 + //SEG218 [134] (byte~) gfx_mode::$82 ← (byte~) gfx_mode::$81 | *((const byte*) form_vic_bg3_lo#0) -- vbuz1=vbuz2_bor__deref_pbuc1 lda form_vic_bg3_lo ora _81 sta _82 - //SEG218 [135] *((const byte*) BGCOL4#0) ← (byte~) gfx_mode::$82 -- _deref_pbuc1=vbuz1 + //SEG219 [135] *((const byte*) BGCOL4#0) ← (byte~) gfx_mode::$82 -- _deref_pbuc1=vbuz1 lda _82 sta BGCOL4 - //SEG219 [136] if(*((const byte*) form_dtv_palet#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@15 -- _deref_pbuc1_eq_0_then_la1 + //SEG220 [136] if(*((const byte*) form_dtv_palet#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@15 -- _deref_pbuc1_eq_0_then_la1 lda form_dtv_palet cmp #0 beq b15_from_b33 - //SEG220 [137] phi from gfx_mode::@33 to gfx_mode::@13 [phi:gfx_mode::@33->gfx_mode::@13] + //SEG221 [137] phi from gfx_mode::@33 to gfx_mode::@13 [phi:gfx_mode::@33->gfx_mode::@13] b13_from_b33: - //SEG221 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuz1=vbuc1 + //SEG222 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuz1=vbuc1 lda #0 sta j jmp b13 - //SEG222 [137] phi from gfx_mode::@13 to gfx_mode::@13 [phi:gfx_mode::@13->gfx_mode::@13] + //SEG223 [137] phi from gfx_mode::@13 to gfx_mode::@13 [phi:gfx_mode::@13->gfx_mode::@13] b13_from_b13: - //SEG223 [137] phi (byte) gfx_mode::j#2 = (byte) gfx_mode::j#1 [phi:gfx_mode::@13->gfx_mode::@13#0] -- register_copy + //SEG224 [137] phi (byte) gfx_mode::j#2 = (byte) gfx_mode::j#1 [phi:gfx_mode::@13->gfx_mode::@13#0] -- register_copy jmp b13 - //SEG224 gfx_mode::@13 + //SEG225 gfx_mode::@13 b13: - //SEG225 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG226 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy j tya sta DTV_PALETTE,y - //SEG226 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuz1=_inc_vbuz1 + //SEG227 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG227 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@13 -- vbuz1_neq_vbuc1_then_la1 + //SEG228 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@13 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$10 bne b13_from_b13 jmp b19 - //SEG228 gfx_mode::@19 + //SEG229 gfx_mode::@19 b19: - //SEG229 [141] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto gfx_mode::@19 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG230 [141] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto gfx_mode::@19 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b19 - //SEG230 [142] phi from gfx_mode::@19 to gfx_mode::@21 [phi:gfx_mode::@19->gfx_mode::@21] + //SEG231 [142] phi from gfx_mode::@19 to gfx_mode::@21 [phi:gfx_mode::@19->gfx_mode::@21] b21_from_b19: jmp b21 - //SEG231 gfx_mode::@21 + //SEG232 gfx_mode::@21 b21: - //SEG232 [143] call keyboard_event_scan - //SEG233 [159] phi from gfx_mode::@21 to keyboard_event_scan [phi:gfx_mode::@21->keyboard_event_scan] + //SEG233 [143] call keyboard_event_scan + //SEG234 [159] phi from gfx_mode::@21 to keyboard_event_scan [phi:gfx_mode::@21->keyboard_event_scan] keyboard_event_scan_from_b21: - //SEG234 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#24 [phi:gfx_mode::@21->keyboard_event_scan#0] -- register_copy + //SEG235 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#24 [phi:gfx_mode::@21->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan - //SEG235 [144] phi from gfx_mode::@21 to gfx_mode::@51 [phi:gfx_mode::@21->gfx_mode::@51] + //SEG236 [144] phi from gfx_mode::@21 to gfx_mode::@51 [phi:gfx_mode::@21->gfx_mode::@51] b51_from_b21: jmp b51 - //SEG236 gfx_mode::@51 + //SEG237 gfx_mode::@51 b51: - //SEG237 [145] call keyboard_event_get + //SEG238 [145] call keyboard_event_get jsr keyboard_event_get - //SEG238 [146] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG239 [146] (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 b52 - //SEG239 gfx_mode::@52 + //SEG240 gfx_mode::@52 b52: - //SEG240 [147] (byte) gfx_mode::keyboard_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 + //SEG241 [147] (byte) gfx_mode::keyboard_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta keyboard_event - //SEG241 [148] if((byte) gfx_mode::keyboard_event#0!=(const byte) KEY_SPACE#0) goto gfx_mode::@19 -- vbuz1_neq_vbuc1_then_la1 + //SEG242 [148] if((byte) gfx_mode::keyboard_event#0!=(const byte) KEY_SPACE#0) goto gfx_mode::@19 -- vbuz1_neq_vbuc1_then_la1 lda keyboard_event cmp #KEY_SPACE bne b19 jmp breturn - //SEG242 gfx_mode::@return + //SEG243 gfx_mode::@return breturn: - //SEG243 [149] return + //SEG244 [149] return rts - //SEG244 [150] phi from gfx_mode::@15 to gfx_mode::@15 [phi:gfx_mode::@15->gfx_mode::@15] + //SEG245 [150] phi from gfx_mode::@15 to gfx_mode::@15 [phi:gfx_mode::@15->gfx_mode::@15] b15_from_b15: - //SEG245 [150] phi (byte) gfx_mode::i#2 = (byte) gfx_mode::i#1 [phi:gfx_mode::@15->gfx_mode::@15#0] -- register_copy + //SEG246 [150] phi (byte) gfx_mode::i#2 = (byte) gfx_mode::i#1 [phi:gfx_mode::@15->gfx_mode::@15#0] -- register_copy jmp b15 - //SEG246 [150] phi from gfx_mode::@33 to gfx_mode::@15 [phi:gfx_mode::@33->gfx_mode::@15] + //SEG247 [150] phi from gfx_mode::@33 to gfx_mode::@15 [phi:gfx_mode::@33->gfx_mode::@15] b15_from_b33: - //SEG247 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuz1=vbuc1 + //SEG248 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuz1=vbuc1 lda #0 sta i jmp b15 - //SEG248 gfx_mode::@15 + //SEG249 gfx_mode::@15 b15: - //SEG249 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG250 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG250 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuz1=_inc_vbuz1 + //SEG251 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG251 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@15 -- vbuz1_neq_vbuc1_then_la1 + //SEG252 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@15 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b15_from_b15 jmp b19 } -//SEG252 keyboard_event_get +//SEG253 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() @@ -14802,37 +14803,37 @@ keyboard_event_get: { .label return = $d .label return_3 = $f1 .label return_4 = $119 - //SEG253 [154] if((byte) keyboard_events_size#100==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG254 [154] if((byte) keyboard_events_size#100==(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 - //SEG254 keyboard_event_get::@3 + //SEG255 keyboard_event_get::@3 b3: - //SEG255 [155] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#100 -- vbuz1=_dec_vbuz1 + //SEG256 [155] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#100 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG256 [156] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG257 [156] (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 - //SEG257 [157] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG258 [157] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG258 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG259 [157] 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 + //SEG259 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG260 [157] 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 - //SEG260 [157] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG261 [157] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG261 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#100 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG262 [157] 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 + //SEG262 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#100 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG263 [157] 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 - //SEG263 keyboard_event_get::@return + //SEG264 keyboard_event_get::@return breturn: - //SEG264 [158] return + //SEG265 [158] return rts } -//SEG265 keyboard_event_scan +//SEG266 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -14850,311 +14851,311 @@ keyboard_event_scan: { .label row = $e .label col = $10 .label event_type = $100 - //SEG266 [160] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG267 [160] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG267 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#110 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG268 [160] 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 + //SEG268 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#110 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG269 [160] 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 - //SEG269 [160] 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 + //SEG270 [160] 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 - //SEG270 [160] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG271 [160] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG271 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG272 [160] 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 - //SEG273 [160] 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 + //SEG272 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG273 [160] 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 + //SEG274 [160] 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 - //SEG274 keyboard_event_scan::@1 + //SEG275 keyboard_event_scan::@1 b1: - //SEG275 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG276 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG276 [162] call keyboard_matrix_read + //SEG277 [162] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG277 [163] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG278 [163] (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 - //SEG278 keyboard_event_scan::@25 + //SEG279 keyboard_event_scan::@25 b25: - //SEG279 [164] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG280 [164] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG280 [165] 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 + //SEG281 [165] 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 - //SEG281 keyboard_event_scan::@13 + //SEG282 keyboard_event_scan::@13 b13: - //SEG282 [166] (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 + //SEG283 [166] (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 - //SEG283 [167] 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] + //SEG284 [167] 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: - //SEG284 [167] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG285 [167] 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 + //SEG285 [167] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG286 [167] 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 - //SEG286 keyboard_event_scan::@3 + //SEG287 keyboard_event_scan::@3 b3: - //SEG287 [168] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG288 [168] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG288 [169] 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 + //SEG289 [169] 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 - //SEG289 [170] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG290 [170] 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 - //SEG290 keyboard_event_scan::@20 + //SEG291 keyboard_event_scan::@20 b20: - //SEG291 [171] call keyboard_event_pressed - //SEG292 [213] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG292 [171] call keyboard_event_pressed + //SEG293 [213] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG293 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG294 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG294 [172] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG295 [172] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta keyboard_event_pressed.return jmp b26 - //SEG295 keyboard_event_scan::@26 + //SEG296 keyboard_event_scan::@26 b26: - //SEG296 [173] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG297 [173] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG297 [174] 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 + //SEG298 [174] 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 - //SEG298 [175] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG299 [175] 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 - //SEG299 keyboard_event_scan::@21 + //SEG300 keyboard_event_scan::@21 b21: - //SEG300 [176] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG301 [176] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG301 [176] phi (byte) keyboard_modifiers#18 = (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 + //SEG302 [176] phi (byte) keyboard_modifiers#18 = (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 - //SEG302 [176] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG303 [176] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG303 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + //SEG304 [176] phi (byte) keyboard_modifiers#18 = (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 - //SEG304 keyboard_event_scan::@9 + //SEG305 keyboard_event_scan::@9 b9: - //SEG305 [177] call keyboard_event_pressed - //SEG306 [213] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG306 [177] call keyboard_event_pressed + //SEG307 [213] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG307 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG308 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG308 [178] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG309 [178] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta keyboard_event_pressed.return_1 jmp b27 - //SEG309 keyboard_event_scan::@27 + //SEG310 keyboard_event_scan::@27 b27: - //SEG310 [179] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG311 [179] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG311 [180] 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 + //SEG312 [180] 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 jmp b22 - //SEG312 keyboard_event_scan::@22 + //SEG313 keyboard_event_scan::@22 b22: - //SEG313 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG314 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_RSHIFT ora keyboard_modifiers sta keyboard_modifiers - //SEG314 [182] 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] + //SEG315 [182] 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: - //SEG315 [182] phi (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG316 [182] phi (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG316 keyboard_event_scan::@10 + //SEG317 keyboard_event_scan::@10 b10: - //SEG317 [183] call keyboard_event_pressed - //SEG318 [213] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG318 [183] call keyboard_event_pressed + //SEG319 [213] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG319 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG320 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG320 [184] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG321 [184] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta keyboard_event_pressed.return_2 jmp b28 - //SEG321 keyboard_event_scan::@28 + //SEG322 keyboard_event_scan::@28 b28: - //SEG322 [185] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG323 [185] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG323 [186] 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 + //SEG324 [186] 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 jmp b23 - //SEG324 keyboard_event_scan::@23 + //SEG325 keyboard_event_scan::@23 b23: - //SEG325 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG326 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_CTRL ora keyboard_modifiers sta keyboard_modifiers - //SEG326 [188] 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] + //SEG327 [188] 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: - //SEG327 [188] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG328 [188] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy jmp b11 - //SEG328 keyboard_event_scan::@11 + //SEG329 keyboard_event_scan::@11 b11: - //SEG329 [189] call keyboard_event_pressed - //SEG330 [213] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG330 [189] call keyboard_event_pressed + //SEG331 [213] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG331 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG332 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG332 [190] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG333 [190] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta keyboard_event_pressed.return_3 jmp b29 - //SEG333 keyboard_event_scan::@29 + //SEG334 keyboard_event_scan::@29 b29: - //SEG334 [191] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#3 -- vbuz1=vbuz2 + //SEG335 [191] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#3 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_3 sta _26 - //SEG335 [192] 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 + //SEG336 [192] 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_from_b29 jmp b24 - //SEG336 keyboard_event_scan::@24 + //SEG337 keyboard_event_scan::@24 b24: - //SEG337 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG338 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_COMMODORE ora keyboard_modifiers sta keyboard_modifiers - //SEG338 [194] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return] + //SEG339 [194] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return] breturn_from_b24: breturn_from_b29: - //SEG339 [194] phi (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy + //SEG340 [194] phi (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy jmp breturn - //SEG340 keyboard_event_scan::@return + //SEG341 keyboard_event_scan::@return breturn: - //SEG341 [195] return + //SEG342 [195] return rts - //SEG342 [196] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG343 [196] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG343 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG344 [196] 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 - //SEG345 [196] 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 + //SEG344 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG345 [196] 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 + //SEG346 [196] 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 - //SEG346 [196] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG347 [196] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG347 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#119 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG348 [196] 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 - //SEG349 [196] 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 + //SEG348 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#119 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG349 [196] 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 + //SEG350 [196] 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 - //SEG350 keyboard_event_scan::@4 + //SEG351 keyboard_event_scan::@4 b4: - //SEG351 [197] (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 + //SEG352 [197] (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 - //SEG352 [198] (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 + //SEG353 [198] (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 - //SEG353 [199] 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 + //SEG354 [199] 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 - //SEG354 keyboard_event_scan::@15 + //SEG355 keyboard_event_scan::@15 b15: - //SEG355 [200] if((byte) keyboard_events_size#18==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG356 [200] if((byte) keyboard_events_size#18==(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 - //SEG356 keyboard_event_scan::@16 + //SEG357 keyboard_event_scan::@16 b16: - //SEG357 [201] (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 + //SEG358 [201] (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 - //SEG358 [202] 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 + //SEG359 [202] 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 - //SEG359 keyboard_event_scan::@17 + //SEG360 keyboard_event_scan::@17 b17: - //SEG360 [203] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG361 [203] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG361 [204] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 + //SEG362 [204] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG362 [205] 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] + //SEG363 [205] 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: - //SEG363 [205] phi (byte) keyboard_events_size#119 = (byte) keyboard_events_size#18 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG364 [205] phi (byte) keyboard_events_size#119 = (byte) keyboard_events_size#18 [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 - //SEG364 keyboard_event_scan::@5 + //SEG365 keyboard_event_scan::@5 b5: - //SEG365 [206] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG366 [206] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG366 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG367 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG367 [208] 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 + //SEG368 [208] 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 - //SEG368 keyboard_event_scan::@19 + //SEG369 keyboard_event_scan::@19 b19: - //SEG369 [209] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG370 [209] *((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 - //SEG370 keyboard_event_scan::@7 + //SEG371 keyboard_event_scan::@7 b7: - //SEG371 [210] (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 + //SEG372 [210] (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 - //SEG372 [211] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG373 [211] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 lda _11 ldy keyboard_events_size sta keyboard_events,y - //SEG373 [212] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 + //SEG374 [212] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG374 keyboard_event_pressed +//SEG375 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed keyboard_event_pressed: { @@ -15167,32 +15168,32 @@ keyboard_event_pressed: { .label row_bits = $103 .label keycode = $13 .label return_10 = $105 - //SEG375 [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + //SEG376 [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda keycode lsr lsr lsr sta _0 - //SEG376 [215] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG377 [215] (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 - //SEG377 [216] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG378 [216] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and keycode sta _1 - //SEG378 [217] (byte) keyboard_event_pressed::return#10 ← (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 + //SEG379 [217] (byte) keyboard_event_pressed::return#10 ← (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_10 jmp breturn - //SEG379 keyboard_event_pressed::@return + //SEG380 keyboard_event_pressed::@return breturn: - //SEG380 [218] return + //SEG381 [218] return rts } -//SEG381 keyboard_matrix_read +//SEG382 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -15202,261 +15203,261 @@ keyboard_matrix_read: { .label return = $106 .label rowid = $f3 .label return_2 = $f4 - //SEG382 [219] *((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 + //SEG383 [219] *((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 - //SEG383 [220] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG384 [220] (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 - //SEG384 keyboard_matrix_read::@return + //SEG385 keyboard_matrix_read::@return breturn: - //SEG385 [221] return + //SEG386 [221] return rts } -//SEG386 get_vic_screen +//SEG387 get_vic_screen // Get the VIC screen address from the screen index get_vic_screen: { .label return = $15 .label idx = $14 .label return_10 = $d4 .label return_11 = $e7 - //SEG387 [223] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_screen::@return -- vbuz1_eq_0_then_la1 + //SEG388 [223] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_screen::@return -- vbuz1_eq_0_then_la1 lda idx cmp #0 beq breturn_from_get_vic_screen jmp b10 - //SEG388 get_vic_screen::@10 + //SEG389 get_vic_screen::@10 b10: - //SEG389 [224] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_screen::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG390 [224] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_screen::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #1 beq breturn_from_b10 jmp b11 - //SEG390 get_vic_screen::@11 + //SEG391 get_vic_screen::@11 b11: - //SEG391 [225] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_vic_screen::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG392 [225] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_vic_screen::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #2 beq breturn_from_b11 jmp b12 - //SEG392 get_vic_screen::@12 + //SEG393 get_vic_screen::@12 b12: - //SEG393 [226] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_vic_screen::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG394 [226] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_vic_screen::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #3 beq breturn_from_b12 jmp b13 - //SEG394 get_vic_screen::@13 + //SEG395 get_vic_screen::@13 b13: - //SEG395 [227] if((byte) get_vic_screen::idx#2!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_vic_screen::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG396 [227] if((byte) get_vic_screen::idx#2!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_vic_screen::@9 -- vbuz1_neq_vbuc1_then_la1 lda idx cmp #4 bne b9_from_b13 - //SEG396 [228] phi from get_vic_screen::@13 to get_vic_screen::@return [phi:get_vic_screen::@13->get_vic_screen::@return] + //SEG397 [228] phi from get_vic_screen::@13 to get_vic_screen::@return [phi:get_vic_screen::@13->get_vic_screen::@return] breturn_from_b13: - //SEG397 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN4#0 [phi:get_vic_screen::@13->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG398 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN4#0 [phi:get_vic_screen::@13->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN4 sta return+1 jmp breturn - //SEG398 [228] phi from get_vic_screen get_vic_screen::@9 to get_vic_screen::@return [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return] + //SEG399 [228] phi from get_vic_screen get_vic_screen::@9 to get_vic_screen::@return [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return] breturn_from_get_vic_screen: breturn_from_b9: - //SEG399 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN0#0 [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG400 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN0#0 [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN0 sta return+1 jmp breturn - //SEG400 [228] phi from get_vic_screen::@10 to get_vic_screen::@return [phi:get_vic_screen::@10->get_vic_screen::@return] + //SEG401 [228] phi from get_vic_screen::@10 to get_vic_screen::@return [phi:get_vic_screen::@10->get_vic_screen::@return] breturn_from_b10: - //SEG401 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN1#0 [phi:get_vic_screen::@10->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG402 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN1#0 [phi:get_vic_screen::@10->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN1 sta return+1 jmp breturn - //SEG402 [228] phi from get_vic_screen::@11 to get_vic_screen::@return [phi:get_vic_screen::@11->get_vic_screen::@return] + //SEG403 [228] phi from get_vic_screen::@11 to get_vic_screen::@return [phi:get_vic_screen::@11->get_vic_screen::@return] breturn_from_b11: - //SEG403 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN2#0 [phi:get_vic_screen::@11->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG404 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN2#0 [phi:get_vic_screen::@11->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN2 sta return+1 jmp breturn - //SEG404 [228] phi from get_vic_screen::@12 to get_vic_screen::@return [phi:get_vic_screen::@12->get_vic_screen::@return] + //SEG405 [228] phi from get_vic_screen::@12 to get_vic_screen::@return [phi:get_vic_screen::@12->get_vic_screen::@return] breturn_from_b12: - //SEG405 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN3#0 [phi:get_vic_screen::@12->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG406 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN3#0 [phi:get_vic_screen::@12->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN3 sta return+1 jmp breturn - //SEG406 get_vic_screen::@return + //SEG407 get_vic_screen::@return breturn: - //SEG407 [229] return + //SEG408 [229] return rts - //SEG408 [230] phi from get_vic_screen::@13 to get_vic_screen::@9 [phi:get_vic_screen::@13->get_vic_screen::@9] + //SEG409 [230] phi from get_vic_screen::@13 to get_vic_screen::@9 [phi:get_vic_screen::@13->get_vic_screen::@9] b9_from_b13: jmp b9 - //SEG409 get_vic_screen::@9 + //SEG410 get_vic_screen::@9 b9: jmp breturn_from_b9 } -//SEG410 get_vic_charset +//SEG411 get_vic_charset // Get the VIC charset/bitmap address from the index get_vic_charset: { .label return = $17 .label idx = $dd .label return_4 = $de - //SEG411 [231] if((byte) get_vic_charset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_charset::@return -- vbuz1_eq_0_then_la1 + //SEG412 [231] if((byte) get_vic_charset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_charset::@return -- vbuz1_eq_0_then_la1 lda idx cmp #0 beq breturn_from_get_vic_charset jmp b4 - //SEG412 get_vic_charset::@4 + //SEG413 get_vic_charset::@4 b4: - //SEG413 [232] if((byte) get_vic_charset::idx#0!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_charset::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG414 [232] if((byte) get_vic_charset::idx#0!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_charset::@3 -- vbuz1_neq_vbuc1_then_la1 lda idx cmp #1 bne b3_from_b4 - //SEG414 [233] phi from get_vic_charset::@4 to get_vic_charset::@return [phi:get_vic_charset::@4->get_vic_charset::@return] + //SEG415 [233] phi from get_vic_charset::@4 to get_vic_charset::@return [phi:get_vic_charset::@4->get_vic_charset::@return] breturn_from_b4: - //SEG415 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_BITMAP#0 [phi:get_vic_charset::@4->get_vic_charset::@return#0] -- pbuz1=pbuc1 + //SEG416 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_BITMAP#0 [phi:get_vic_charset::@4->get_vic_charset::@return#0] -- pbuz1=pbuc1 lda #VIC_BITMAP sta return+1 jmp breturn - //SEG416 [233] phi from get_vic_charset get_vic_charset::@3 to get_vic_charset::@return [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return] + //SEG417 [233] phi from get_vic_charset get_vic_charset::@3 to get_vic_charset::@return [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return] breturn_from_get_vic_charset: breturn_from_b3: - //SEG417 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_CHARSET_ROM#0 [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return#0] -- pbuz1=pbuc1 + //SEG418 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_CHARSET_ROM#0 [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return#0] -- pbuz1=pbuc1 lda #VIC_CHARSET_ROM sta return+1 jmp breturn - //SEG418 get_vic_charset::@return + //SEG419 get_vic_charset::@return breturn: - //SEG419 [234] return + //SEG420 [234] return rts - //SEG420 [235] phi from get_vic_charset::@4 to get_vic_charset::@3 [phi:get_vic_charset::@4->get_vic_charset::@3] + //SEG421 [235] phi from get_vic_charset::@4 to get_vic_charset::@3 [phi:get_vic_charset::@4->get_vic_charset::@3] b3_from_b4: jmp b3 - //SEG421 get_vic_charset::@3 + //SEG422 get_vic_charset::@3 b3: jmp breturn_from_b3 } -//SEG422 get_plane +//SEG423 get_plane // Get plane address from a plane index (from the form) get_plane: { .label return = $1a .label idx = $19 .label return_16 = $a0 .label return_17 = $bb - //SEG423 [237] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_plane::@return -- vbuz1_eq_0_then_la1 + //SEG424 [237] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_plane::@return -- vbuz1_eq_0_then_la1 lda idx cmp #0 beq breturn_from_get_plane jmp b28 - //SEG424 get_plane::@28 + //SEG425 get_plane::@28 b28: - //SEG425 [238] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG426 [238] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #1 beq breturn_from_b28 jmp b29 - //SEG426 get_plane::@29 + //SEG427 get_plane::@29 b29: - //SEG427 [239] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG428 [239] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #2 beq breturn_from_b29 jmp b30 - //SEG428 get_plane::@30 + //SEG429 get_plane::@30 b30: - //SEG429 [240] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG430 [240] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #3 beq breturn_from_b30 jmp b31 - //SEG430 get_plane::@31 + //SEG431 get_plane::@31 b31: - //SEG431 [241] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG432 [241] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #4 beq breturn_from_b31 jmp b32 - //SEG432 get_plane::@32 + //SEG433 get_plane::@32 b32: - //SEG433 [242] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG434 [242] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #5 beq breturn_from_b32 jmp b33 - //SEG434 get_plane::@33 + //SEG435 get_plane::@33 b33: - //SEG435 [243] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG436 [243] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #6 beq breturn_from_b33 jmp b34 - //SEG436 get_plane::@34 + //SEG437 get_plane::@34 b34: - //SEG437 [244] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG438 [244] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #7 beq breturn_from_b34 jmp b35 - //SEG438 get_plane::@35 + //SEG439 get_plane::@35 b35: - //SEG439 [245] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG440 [245] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #8 beq breturn_from_b35 jmp b36 - //SEG440 get_plane::@36 + //SEG441 get_plane::@36 b36: - //SEG441 [246] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG442 [246] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #9 beq breturn_from_b36 jmp b37 - //SEG442 get_plane::@37 + //SEG443 get_plane::@37 b37: - //SEG443 [247] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG444 [247] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #$a beq breturn_from_b37 jmp b38 - //SEG444 get_plane::@38 + //SEG445 get_plane::@38 b38: - //SEG445 [248] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 11) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG446 [248] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 11) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #$b beq breturn_from_b38 jmp b39 - //SEG446 get_plane::@39 + //SEG447 get_plane::@39 b39: - //SEG447 [249] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 12) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 + //SEG448 [249] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 12) goto get_plane::@return -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #$c beq breturn_from_b39 jmp b40 - //SEG448 get_plane::@40 + //SEG449 get_plane::@40 b40: - //SEG449 [250] if((byte) get_plane::idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 13) goto get_plane::@27 -- vbuz1_neq_vbuc1_then_la1 + //SEG450 [250] if((byte) get_plane::idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 13) goto get_plane::@27 -- vbuz1_neq_vbuc1_then_la1 lda idx cmp #$d bne b27_from_b40 - //SEG450 [251] phi from get_plane::@40 to get_plane::@return [phi:get_plane::@40->get_plane::@return] + //SEG451 [251] phi from get_plane::@40 to get_plane::@return [phi:get_plane::@40->get_plane::@return] breturn_from_b40: - //SEG451 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_FULL#0 [phi:get_plane::@40->get_plane::@return#0] -- vduz1=vduc1 + //SEG452 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_FULL#0 [phi:get_plane::@40->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_FULL @@ -15466,10 +15467,10 @@ get_plane: { lda #>PLANE_FULL>>$10 sta return+3 jmp breturn - //SEG452 [251] phi from get_plane get_plane::@27 to get_plane::@return [phi:get_plane/get_plane::@27->get_plane::@return] + //SEG453 [251] phi from get_plane get_plane::@27 to get_plane::@return [phi:get_plane/get_plane::@27->get_plane::@return] breturn_from_get_plane: breturn_from_b27: - //SEG453 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN0#0 [phi:get_plane/get_plane::@27->get_plane::@return#0] -- vduz1=vwuc1 + //SEG454 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN0#0 [phi:get_plane/get_plane::@27->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN0 sta return lda #>$ffffffff&VIC_SCREEN0 @@ -15479,9 +15480,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN0>>$10 sta return+3 jmp breturn - //SEG454 [251] phi from get_plane::@28 to get_plane::@return [phi:get_plane::@28->get_plane::@return] + //SEG455 [251] phi from get_plane::@28 to get_plane::@return [phi:get_plane::@28->get_plane::@return] breturn_from_b28: - //SEG455 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN1#0 [phi:get_plane::@28->get_plane::@return#0] -- vduz1=vwuc1 + //SEG456 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN1#0 [phi:get_plane::@28->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN1 sta return lda #>$ffffffff&VIC_SCREEN1 @@ -15491,9 +15492,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN1>>$10 sta return+3 jmp breturn - //SEG456 [251] phi from get_plane::@29 to get_plane::@return [phi:get_plane::@29->get_plane::@return] + //SEG457 [251] phi from get_plane::@29 to get_plane::@return [phi:get_plane::@29->get_plane::@return] breturn_from_b29: - //SEG457 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN2#0 [phi:get_plane::@29->get_plane::@return#0] -- vduz1=vwuc1 + //SEG458 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN2#0 [phi:get_plane::@29->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN2 sta return lda #>$ffffffff&VIC_SCREEN2 @@ -15503,9 +15504,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN2>>$10 sta return+3 jmp breturn - //SEG458 [251] phi from get_plane::@30 to get_plane::@return [phi:get_plane::@30->get_plane::@return] + //SEG459 [251] phi from get_plane::@30 to get_plane::@return [phi:get_plane::@30->get_plane::@return] breturn_from_b30: - //SEG459 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN3#0 [phi:get_plane::@30->get_plane::@return#0] -- vduz1=vwuc1 + //SEG460 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN3#0 [phi:get_plane::@30->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN3 sta return lda #>$ffffffff&VIC_SCREEN3 @@ -15515,9 +15516,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN3>>$10 sta return+3 jmp breturn - //SEG460 [251] phi from get_plane::@31 to get_plane::@return [phi:get_plane::@31->get_plane::@return] + //SEG461 [251] phi from get_plane::@31 to get_plane::@return [phi:get_plane::@31->get_plane::@return] breturn_from_b31: - //SEG461 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_BITMAP#0 [phi:get_plane::@31->get_plane::@return#0] -- vduz1=vwuc1 + //SEG462 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_BITMAP#0 [phi:get_plane::@31->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_BITMAP sta return lda #>$ffffffff&VIC_BITMAP @@ -15527,9 +15528,9 @@ get_plane: { lda #>$ffffffff&VIC_BITMAP>>$10 sta return+3 jmp breturn - //SEG462 [251] phi from get_plane::@32 to get_plane::@return [phi:get_plane::@32->get_plane::@return] + //SEG463 [251] phi from get_plane::@32 to get_plane::@return [phi:get_plane::@32->get_plane::@return] breturn_from_b32: - //SEG463 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_CHARSET_ROM#0 [phi:get_plane::@32->get_plane::@return#0] -- vduz1=vwuc1 + //SEG464 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_CHARSET_ROM#0 [phi:get_plane::@32->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_CHARSET_ROM sta return lda #>$ffffffff&VIC_CHARSET_ROM @@ -15539,9 +15540,9 @@ get_plane: { lda #>$ffffffff&VIC_CHARSET_ROM>>$10 sta return+3 jmp breturn - //SEG464 [251] phi from get_plane::@33 to get_plane::@return [phi:get_plane::@33->get_plane::@return] + //SEG465 [251] phi from get_plane::@33 to get_plane::@return [phi:get_plane::@33->get_plane::@return] breturn_from_b33: - //SEG465 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_8BPP_CHUNKY#0 [phi:get_plane::@33->get_plane::@return#0] -- vduz1=vduc1 + //SEG466 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_8BPP_CHUNKY#0 [phi:get_plane::@33->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_8BPP_CHUNKY @@ -15551,9 +15552,9 @@ get_plane: { lda #>PLANE_8BPP_CHUNKY>>$10 sta return+3 jmp breturn - //SEG466 [251] phi from get_plane::@34 to get_plane::@return [phi:get_plane::@34->get_plane::@return] + //SEG467 [251] phi from get_plane::@34 to get_plane::@return [phi:get_plane::@34->get_plane::@return] breturn_from_b34: - //SEG467 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL#0 [phi:get_plane::@34->get_plane::@return#0] -- vduz1=vduc1 + //SEG468 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL#0 [phi:get_plane::@34->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_HORISONTAL @@ -15563,9 +15564,9 @@ get_plane: { lda #>PLANE_HORISONTAL>>$10 sta return+3 jmp breturn - //SEG468 [251] phi from get_plane::@35 to get_plane::@return [phi:get_plane::@35->get_plane::@return] + //SEG469 [251] phi from get_plane::@35 to get_plane::@return [phi:get_plane::@35->get_plane::@return] breturn_from_b35: - //SEG469 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL#0 [phi:get_plane::@35->get_plane::@return#0] -- vduz1=vduc1 + //SEG470 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL#0 [phi:get_plane::@35->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_VERTICAL @@ -15575,9 +15576,9 @@ get_plane: { lda #>PLANE_VERTICAL>>$10 sta return+3 jmp breturn - //SEG470 [251] phi from get_plane::@36 to get_plane::@return [phi:get_plane::@36->get_plane::@return] + //SEG471 [251] phi from get_plane::@36 to get_plane::@return [phi:get_plane::@36->get_plane::@return] breturn_from_b36: - //SEG471 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL2#0 [phi:get_plane::@36->get_plane::@return#0] -- vduz1=vduc1 + //SEG472 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL2#0 [phi:get_plane::@36->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_HORISONTAL2 @@ -15587,9 +15588,9 @@ get_plane: { lda #>PLANE_HORISONTAL2>>$10 sta return+3 jmp breturn - //SEG472 [251] phi from get_plane::@37 to get_plane::@return [phi:get_plane::@37->get_plane::@return] + //SEG473 [251] phi from get_plane::@37 to get_plane::@return [phi:get_plane::@37->get_plane::@return] breturn_from_b37: - //SEG473 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL2#0 [phi:get_plane::@37->get_plane::@return#0] -- vduz1=vduc1 + //SEG474 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL2#0 [phi:get_plane::@37->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_VERTICAL2 @@ -15599,9 +15600,9 @@ get_plane: { lda #>PLANE_VERTICAL2>>$10 sta return+3 jmp breturn - //SEG474 [251] phi from get_plane::@38 to get_plane::@return [phi:get_plane::@38->get_plane::@return] + //SEG475 [251] phi from get_plane::@38 to get_plane::@return [phi:get_plane::@38->get_plane::@return] breturn_from_b38: - //SEG475 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_CHARSET8#0 [phi:get_plane::@38->get_plane::@return#0] -- vduz1=vduc1 + //SEG476 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_CHARSET8#0 [phi:get_plane::@38->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_CHARSET8 @@ -15611,9 +15612,9 @@ get_plane: { lda #>PLANE_CHARSET8>>$10 sta return+3 jmp breturn - //SEG476 [251] phi from get_plane::@39 to get_plane::@return [phi:get_plane::@39->get_plane::@return] + //SEG477 [251] phi from get_plane::@39 to get_plane::@return [phi:get_plane::@39->get_plane::@return] breturn_from_b39: - //SEG477 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_BLANK#0 [phi:get_plane::@39->get_plane::@return#0] -- vduz1=vduc1 + //SEG478 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_BLANK#0 [phi:get_plane::@39->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_BLANK @@ -15623,471 +15624,471 @@ get_plane: { lda #>PLANE_BLANK>>$10 sta return+3 jmp breturn - //SEG478 get_plane::@return + //SEG479 get_plane::@return breturn: - //SEG479 [252] return + //SEG480 [252] return rts - //SEG480 [253] phi from get_plane::@40 to get_plane::@27 [phi:get_plane::@40->get_plane::@27] + //SEG481 [253] phi from get_plane::@40 to get_plane::@27 [phi:get_plane::@40->get_plane::@27] b27_from_b40: jmp b27 - //SEG481 get_plane::@27 + //SEG482 get_plane::@27 b27: jmp breturn_from_b27 } -//SEG482 form_mode +//SEG483 form_mode // Show the form - and let the user change values form_mode: { .label _36 = $108 .label i = $1e .label preset_current = $21 - //SEG483 [255] call print_set_screen - //SEG484 [447] phi from form_mode to print_set_screen [phi:form_mode->print_set_screen] + //SEG484 [255] call print_set_screen + //SEG485 [447] phi from form_mode to print_set_screen [phi:form_mode->print_set_screen] print_set_screen_from_form_mode: - //SEG485 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:form_mode->print_set_screen#0] -- pbuz1=pbuc1 + //SEG486 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:form_mode->print_set_screen#0] -- pbuz1=pbuc1 lda #COLS sta print_set_screen.screen+1 jsr print_set_screen - //SEG486 [256] phi from form_mode to form_mode::@21 [phi:form_mode->form_mode::@21] + //SEG487 [256] phi from form_mode to form_mode::@21 [phi:form_mode->form_mode::@21] b21_from_form_mode: jmp b21 - //SEG487 form_mode::@21 + //SEG488 form_mode::@21 b21: - //SEG488 [257] call print_cls + //SEG489 [257] call print_cls jsr print_cls - //SEG489 [258] phi from form_mode::@21 to form_mode::@22 [phi:form_mode::@21->form_mode::@22] + //SEG490 [258] phi from form_mode::@21 to form_mode::@22 [phi:form_mode::@21->form_mode::@22] b22_from_b21: jmp b22 - //SEG490 form_mode::@22 + //SEG491 form_mode::@22 b22: - //SEG491 [259] call print_str_lines - //SEG492 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] + //SEG492 [259] call print_str_lines + //SEG493 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] print_str_lines_from_b22: - //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 + //SEG494 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_COLS sta print_str_lines.str+1 jsr print_str_lines - //SEG494 [260] phi from form_mode::@22 to form_mode::@23 [phi:form_mode::@22->form_mode::@23] + //SEG495 [260] phi from form_mode::@22 to form_mode::@23 [phi:form_mode::@22->form_mode::@23] b23_from_b22: jmp b23 - //SEG495 form_mode::@23 + //SEG496 form_mode::@23 b23: - //SEG496 [261] call print_set_screen - //SEG497 [447] phi from form_mode::@23 to print_set_screen [phi:form_mode::@23->print_set_screen] + //SEG497 [261] call print_set_screen + //SEG498 [447] phi from form_mode::@23 to print_set_screen [phi:form_mode::@23->print_set_screen] print_set_screen_from_b23: - //SEG498 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) FORM_SCREEN#0 [phi:form_mode::@23->print_set_screen#0] -- pbuz1=pbuc1 + //SEG499 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) FORM_SCREEN#0 [phi:form_mode::@23->print_set_screen#0] -- pbuz1=pbuc1 lda #FORM_SCREEN sta print_set_screen.screen+1 jsr print_set_screen - //SEG499 [262] phi from form_mode::@23 to form_mode::@24 [phi:form_mode::@23->form_mode::@24] + //SEG500 [262] phi from form_mode::@23 to form_mode::@24 [phi:form_mode::@23->form_mode::@24] b24_from_b23: jmp b24 - //SEG500 form_mode::@24 + //SEG501 form_mode::@24 b24: - //SEG501 [263] call print_cls + //SEG502 [263] call print_cls jsr print_cls - //SEG502 [264] phi from form_mode::@24 to form_mode::@25 [phi:form_mode::@24->form_mode::@25] + //SEG503 [264] phi from form_mode::@24 to form_mode::@25 [phi:form_mode::@24->form_mode::@25] b25_from_b24: jmp b25 - //SEG503 form_mode::@25 + //SEG504 form_mode::@25 b25: - //SEG504 [265] call print_str_lines - //SEG505 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] + //SEG505 [265] call print_str_lines + //SEG506 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] print_str_lines_from_b25: - //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 + //SEG507 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_TEXT sta print_str_lines.str+1 jsr print_str_lines - //SEG507 [266] phi from form_mode::@25 to form_mode::@26 [phi:form_mode::@25->form_mode::@26] + //SEG508 [266] phi from form_mode::@25 to form_mode::@26 [phi:form_mode::@25->form_mode::@26] b26_from_b25: jmp b26 - //SEG508 form_mode::@26 + //SEG509 form_mode::@26 b26: - //SEG509 [267] call form_set_screen - //SEG510 [409] phi from form_mode::@26 to form_set_screen [phi:form_mode::@26->form_set_screen] + //SEG510 [267] call form_set_screen + //SEG511 [409] phi from form_mode::@26 to form_set_screen [phi:form_mode::@26->form_set_screen] form_set_screen_from_b26: jsr form_set_screen - //SEG511 [268] phi from form_mode::@26 to form_mode::@27 [phi:form_mode::@26->form_mode::@27] + //SEG512 [268] phi from form_mode::@26 to form_mode::@27 [phi:form_mode::@26->form_mode::@27] b27_from_b26: jmp b27 - //SEG512 form_mode::@27 + //SEG513 form_mode::@27 b27: - //SEG513 [269] call form_render_values - //SEG514 [330] phi from form_mode::@27 to form_render_values [phi:form_mode::@27->form_render_values] + //SEG514 [269] call form_render_values + //SEG515 [330] phi from form_mode::@27 to form_render_values [phi:form_mode::@27->form_render_values] form_render_values_from_b27: jsr form_render_values jmp b28 - //SEG515 form_mode::@28 + //SEG516 form_mode::@28 b28: - //SEG516 [270] (byte) render_preset_name::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG517 [270] (byte) render_preset_name::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta render_preset_name.idx - //SEG517 [271] call render_preset_name - //SEG518 [306] phi from form_mode::@28 to render_preset_name [phi:form_mode::@28->render_preset_name] + //SEG518 [271] call render_preset_name + //SEG519 [306] phi from form_mode::@28 to render_preset_name [phi:form_mode::@28->render_preset_name] render_preset_name_from_b28: - //SEG519 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#0 [phi:form_mode::@28->render_preset_name#0] -- register_copy + //SEG520 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#0 [phi:form_mode::@28->render_preset_name#0] -- register_copy jsr render_preset_name jmp b29 - //SEG520 form_mode::@29 + //SEG521 form_mode::@29 b29: - //SEG521 [272] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) FORM_CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG522 [272] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) FORM_CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&FORM_CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG522 [273] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG523 [273] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG523 [274] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG524 [274] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG524 [275] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG525 [275] *((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 - //SEG525 [276] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG526 [276] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^FORM_CHARSET/$4000 sta CIA2_PORT_A - //SEG526 [277] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG527 [277] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG527 [278] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG528 [278] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG528 [279] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG529 [279] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG529 [280] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) FORM_SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) FORM_CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG530 [280] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) FORM_SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) FORM_CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(FORM_SCREEN&$3fff)/$40|(FORM_CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG530 [281] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG531 [281] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG532 [282] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>FORM_SCREEN sta DTV_PLANEA_START_MI - //SEG532 [283] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG533 [283] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG533 [284] phi from form_mode::@29 to form_mode::@1 [phi:form_mode::@29->form_mode::@1] + //SEG534 [284] phi from form_mode::@29 to form_mode::@1 [phi:form_mode::@29->form_mode::@1] b1_from_b29: - //SEG534 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuz1=vbuc1 + //SEG535 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG535 [284] phi from form_mode::@1 to form_mode::@1 [phi:form_mode::@1->form_mode::@1] + //SEG536 [284] phi from form_mode::@1 to form_mode::@1 [phi:form_mode::@1->form_mode::@1] b1_from_b1: - //SEG536 [284] phi (byte) form_mode::i#2 = (byte) form_mode::i#1 [phi:form_mode::@1->form_mode::@1#0] -- register_copy + //SEG537 [284] phi (byte) form_mode::i#2 = (byte) form_mode::i#1 [phi:form_mode::@1->form_mode::@1#0] -- register_copy jmp b1 - //SEG537 form_mode::@1 + //SEG538 form_mode::@1 b1: - //SEG538 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG539 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG539 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuz1=_inc_vbuz1 + //SEG540 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG540 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto form_mode::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG541 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto form_mode::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b10 - //SEG541 form_mode::@10 + //SEG542 form_mode::@10 b10: - //SEG542 [288] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG543 [288] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG543 [289] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG544 [289] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG544 [290] (byte) form_mode::preset_current#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG545 [290] (byte) form_mode::preset_current#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta preset_current - //SEG545 [291] phi from form_mode::@10 form_mode::@32 to form_mode::@2 [phi:form_mode::@10/form_mode::@32->form_mode::@2] + //SEG546 [291] phi from form_mode::@10 form_mode::@32 to form_mode::@2 [phi:form_mode::@10/form_mode::@32->form_mode::@2] b2_from_b10: b2_from_b32: - //SEG546 [291] phi (byte) form_mode::preset_current#6 = (byte) form_mode::preset_current#0 [phi:form_mode::@10/form_mode::@32->form_mode::@2#0] -- register_copy - //SEG547 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#1] -- register_copy - //SEG548 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#27 [phi:form_mode::@10/form_mode::@32->form_mode::@2#2] -- register_copy - //SEG549 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#3] -- register_copy + //SEG547 [291] phi (byte) form_mode::preset_current#6 = (byte) form_mode::preset_current#0 [phi:form_mode::@10/form_mode::@32->form_mode::@2#0] -- register_copy + //SEG548 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#1] -- register_copy + //SEG549 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#27 [phi:form_mode::@10/form_mode::@32->form_mode::@2#2] -- register_copy + //SEG550 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#3] -- register_copy jmp b2 - //SEG550 [291] phi from form_mode::@8 to form_mode::@2 [phi:form_mode::@8->form_mode::@2] + //SEG551 [291] phi from form_mode::@8 to form_mode::@2 [phi:form_mode::@8->form_mode::@2] b2_from_b8: - //SEG551 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#18 [phi:form_mode::@8->form_mode::@2#0] -- register_copy - //SEG552 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#24 [phi:form_mode::@8->form_mode::@2#1] -- register_copy - //SEG553 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#16 [phi:form_mode::@8->form_mode::@2#2] -- register_copy + //SEG552 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#18 [phi:form_mode::@8->form_mode::@2#0] -- register_copy + //SEG553 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#24 [phi:form_mode::@8->form_mode::@2#1] -- register_copy + //SEG554 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#16 [phi:form_mode::@8->form_mode::@2#2] -- register_copy jmp b2 - //SEG554 form_mode::@2 + //SEG555 form_mode::@2 b2: jmp b5 - //SEG555 form_mode::@5 + //SEG556 form_mode::@5 b5: - //SEG556 [292] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto form_mode::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG557 [292] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto form_mode::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b5 - //SEG557 [293] phi from form_mode::@5 to form_mode::@7 [phi:form_mode::@5->form_mode::@7] + //SEG558 [293] phi from form_mode::@5 to form_mode::@7 [phi:form_mode::@5->form_mode::@7] b7_from_b5: jmp b7 - //SEG558 form_mode::@7 + //SEG559 form_mode::@7 b7: - //SEG559 [294] call form_control + //SEG560 [294] call form_control jsr form_control - //SEG560 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuz1=vbuz2 + //SEG561 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuz1=vbuz2 lda form_control.return_2 sta form_control.return jmp b30 - //SEG561 form_mode::@30 + //SEG562 form_mode::@30 b30: - //SEG562 [296] (byte~) form_mode::$36 ← (byte) form_control::return#0 -- vbuz1=vbuz2 + //SEG563 [296] (byte~) form_mode::$36 ← (byte) form_control::return#0 -- vbuz1=vbuz2 lda form_control.return sta _36 - //SEG563 [297] if((byte~) form_mode::$36==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_mode::@8 -- vbuz1_eq_0_then_la1 + //SEG564 [297] if((byte~) form_mode::$36==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_mode::@8 -- vbuz1_eq_0_then_la1 lda _36 cmp #0 beq b8 jmp breturn - //SEG564 form_mode::@return + //SEG565 form_mode::@return breturn: - //SEG565 [298] return + //SEG566 [298] return rts - //SEG566 form_mode::@8 + //SEG567 form_mode::@8 b8: - //SEG567 [299] if((byte) form_mode::preset_current#6==*((const byte[]) form_fields_val#0)) goto form_mode::@2 -- vbuz1_eq__deref_pbuc1_then_la1 + //SEG568 [299] if((byte) form_mode::preset_current#6==*((const byte[]) form_fields_val#0)) goto form_mode::@2 -- vbuz1_eq__deref_pbuc1_then_la1 lda form_fields_val cmp preset_current beq b2_from_b8 jmp b18 - //SEG568 form_mode::@18 + //SEG569 form_mode::@18 b18: - //SEG569 [300] (byte) apply_preset::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG570 [300] (byte) apply_preset::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta apply_preset.idx - //SEG570 [301] call apply_preset + //SEG571 [301] call apply_preset jsr apply_preset jmp b31 - //SEG571 form_mode::@31 + //SEG572 form_mode::@31 b31: - //SEG572 [302] (byte) form_mode::preset_current#1 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG573 [302] (byte) form_mode::preset_current#1 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta preset_current - //SEG573 [303] call form_render_values - //SEG574 [330] phi from form_mode::@31 to form_render_values [phi:form_mode::@31->form_render_values] + //SEG574 [303] call form_render_values + //SEG575 [330] phi from form_mode::@31 to form_render_values [phi:form_mode::@31->form_render_values] form_render_values_from_b31: jsr form_render_values jmp b32 - //SEG575 form_mode::@32 + //SEG576 form_mode::@32 b32: - //SEG576 [304] (byte) render_preset_name::idx#1 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG577 [304] (byte) render_preset_name::idx#1 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta render_preset_name.idx - //SEG577 [305] call render_preset_name - //SEG578 [306] phi from form_mode::@32 to render_preset_name [phi:form_mode::@32->render_preset_name] + //SEG578 [305] call render_preset_name + //SEG579 [306] phi from form_mode::@32 to render_preset_name [phi:form_mode::@32->render_preset_name] render_preset_name_from_b32: - //SEG579 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#1 [phi:form_mode::@32->render_preset_name#0] -- register_copy + //SEG580 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#1 [phi:form_mode::@32->render_preset_name#0] -- register_copy jsr render_preset_name jmp b2_from_b32 } -//SEG580 render_preset_name +//SEG581 render_preset_name // Render form preset name in the form // idx is the ID of the preset render_preset_name: { .label idx = $22 .label name = $23 - //SEG581 [307] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_preset_name::@22 -- vbuz1_eq_0_then_la1 + //SEG582 [307] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_preset_name::@22 -- vbuz1_eq_0_then_la1 lda idx cmp #0 beq b22_from_render_preset_name jmp b23 - //SEG582 render_preset_name::@23 + //SEG583 render_preset_name::@23 b23: - //SEG583 [308] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG584 [308] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #1 beq b22_from_b23 jmp b24 - //SEG584 render_preset_name::@24 + //SEG585 render_preset_name::@24 b24: - //SEG585 [309] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG586 [309] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #2 beq b22_from_b24 jmp b25 - //SEG586 render_preset_name::@25 + //SEG587 render_preset_name::@25 b25: - //SEG587 [310] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG588 [310] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #3 beq b22_from_b25 jmp b26 - //SEG588 render_preset_name::@26 + //SEG589 render_preset_name::@26 b26: - //SEG589 [311] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG590 [311] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #4 beq b22_from_b26 jmp b27 - //SEG590 render_preset_name::@27 + //SEG591 render_preset_name::@27 b27: - //SEG591 [312] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG592 [312] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #5 beq b22_from_b27 jmp b28 - //SEG592 render_preset_name::@28 + //SEG593 render_preset_name::@28 b28: - //SEG593 [313] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG594 [313] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #6 beq b22_from_b28 jmp b29 - //SEG594 render_preset_name::@29 + //SEG595 render_preset_name::@29 b29: - //SEG595 [314] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG596 [314] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #7 beq b22_from_b29 jmp b30 - //SEG596 render_preset_name::@30 + //SEG597 render_preset_name::@30 b30: - //SEG597 [315] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG598 [315] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #8 beq b22_from_b30 jmp b31 - //SEG598 render_preset_name::@31 + //SEG599 render_preset_name::@31 b31: - //SEG599 [316] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG600 [316] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #9 beq b22_from_b31 jmp b32 - //SEG600 render_preset_name::@32 + //SEG601 render_preset_name::@32 b32: - //SEG601 [317] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG602 [317] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto render_preset_name::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #$a beq b22_from_b32 - //SEG602 [318] phi from render_preset_name::@32 to render_preset_name::@33 [phi:render_preset_name::@32->render_preset_name::@33] + //SEG603 [318] phi from render_preset_name::@32 to render_preset_name::@33 [phi:render_preset_name::@32->render_preset_name::@33] b33_from_b32: jmp b33 - //SEG603 render_preset_name::@33 + //SEG604 render_preset_name::@33 b33: - //SEG604 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] + //SEG605 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] b22_from_b33: - //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG606 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_11 sta name+1 jmp b22 - //SEG606 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] + //SEG607 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] b22_from_render_preset_name: - //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG608 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_0 sta name+1 jmp b22 - //SEG608 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] + //SEG609 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] b22_from_b23: - //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG610 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_1 sta name+1 jmp b22 - //SEG610 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] + //SEG611 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] b22_from_b24: - //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG612 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_2 sta name+1 jmp b22 - //SEG612 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] + //SEG613 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] b22_from_b25: - //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG614 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_3 sta name+1 jmp b22 - //SEG614 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] + //SEG615 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] b22_from_b26: - //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG616 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_4 sta name+1 jmp b22 - //SEG616 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] + //SEG617 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] b22_from_b27: - //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG618 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_5 sta name+1 jmp b22 - //SEG618 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] + //SEG619 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] b22_from_b28: - //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG620 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_6 sta name+1 jmp b22 - //SEG620 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] + //SEG621 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] b22_from_b29: - //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG622 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_7 sta name+1 jmp b22 - //SEG622 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] + //SEG623 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] b22_from_b30: - //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG624 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_8 sta name+1 jmp b22 - //SEG624 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] + //SEG625 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] b22_from_b31: - //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG626 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_9 sta name+1 jmp b22 - //SEG626 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] + //SEG627 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] b22_from_b32: - //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG628 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_10 sta name+1 jmp b22 - //SEG628 render_preset_name::@22 + //SEG629 render_preset_name::@22 b22: - //SEG629 [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 -- pbuz1=pbuz2 + //SEG630 [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 -- pbuz1=pbuz2 lda name sta print_str_at.str lda name+1 sta print_str_at.str+1 - //SEG630 [321] call print_str_at - //SEG631 [323] phi from render_preset_name::@22 to print_str_at [phi:render_preset_name::@22->print_str_at] + //SEG631 [321] call print_str_at + //SEG632 [323] phi from render_preset_name::@22 to print_str_at [phi:render_preset_name::@22->print_str_at] print_str_at_from_b22: jsr print_str_at jmp breturn - //SEG632 render_preset_name::@return + //SEG633 render_preset_name::@return breturn: - //SEG633 [322] return + //SEG634 [322] return rts name_0: .text "Standard Charset @" name_1: .text "Extended Color Charset @" @@ -16102,113 +16103,113 @@ render_preset_name: { name_10: .text "8bpp Pixel Cell @" name_11: .text "Standard Charset @" } -//SEG634 print_str_at +//SEG635 print_str_at // Print a string at a specific screen position print_str_at: { .label at = $27 .label str = $25 - //SEG635 [324] phi from print_str_at to print_str_at::@1 [phi:print_str_at->print_str_at::@1] + //SEG636 [324] phi from print_str_at to print_str_at::@1 [phi:print_str_at->print_str_at::@1] b1_from_print_str_at: - //SEG636 [324] phi (byte*) print_str_at::at#2 = (const byte*) FORM_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) 10 [phi:print_str_at->print_str_at::@1#0] -- pbuz1=pbuc1 + //SEG637 [324] phi (byte*) print_str_at::at#2 = (const byte*) FORM_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) 10 [phi:print_str_at->print_str_at::@1#0] -- pbuz1=pbuc1 lda #FORM_SCREEN+$28*2+$a sta at+1 - //SEG637 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#1 [phi:print_str_at->print_str_at::@1#1] -- register_copy + //SEG638 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#1 [phi:print_str_at->print_str_at::@1#1] -- register_copy jmp b1 - //SEG638 print_str_at::@1 + //SEG639 print_str_at::@1 b1: - //SEG639 [325] if(*((byte*) print_str_at::str#2)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG640 [325] if(*((byte*) print_str_at::str#2)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG640 print_str_at::@return + //SEG641 print_str_at::@return breturn: - //SEG641 [326] return + //SEG642 [326] return rts - //SEG642 print_str_at::@2 + //SEG643 print_str_at::@2 b2: - //SEG643 [327] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG644 [327] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (at),y - //SEG644 [328] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#2 -- pbuz1=_inc_pbuz1 + //SEG645 [328] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#2 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG645 [329] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#2 -- pbuz1=_inc_pbuz1 + //SEG646 [329] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG646 [324] phi from print_str_at::@2 to print_str_at::@1 [phi:print_str_at::@2->print_str_at::@1] + //SEG647 [324] phi from print_str_at::@2 to print_str_at::@1 [phi:print_str_at::@2->print_str_at::@1] b1_from_b2: - //SEG647 [324] phi (byte*) print_str_at::at#2 = (byte*) print_str_at::at#0 [phi:print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG648 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#0 [phi:print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG648 [324] phi (byte*) print_str_at::at#2 = (byte*) print_str_at::at#0 [phi:print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG649 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#0 [phi:print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 } -//SEG649 form_render_values +//SEG650 form_render_values // Render all form values from the form_fields_val array form_render_values: { .label field = $10c .label idx = $29 - //SEG650 [331] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1] + //SEG651 [331] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1] b1_from_form_render_values: - //SEG651 [331] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuz1=vbuc1 + //SEG652 [331] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuz1=vbuc1 lda #0 sta idx jmp b1 - //SEG652 [331] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1] + //SEG653 [331] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1] b1_from_b3: - //SEG653 [331] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy + //SEG654 [331] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy jmp b1 - //SEG654 form_render_values::@1 + //SEG655 form_render_values::@1 b1: - //SEG655 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 -- vbuz1=vbuz2 + //SEG656 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 -- vbuz1=vbuz2 lda idx sta form_field_ptr.field_idx - //SEG656 [333] call form_field_ptr - //SEG657 [340] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr] + //SEG657 [333] call form_field_ptr + //SEG658 [340] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr] form_field_ptr_from_b1: - //SEG658 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy + //SEG659 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy jsr form_field_ptr - //SEG659 [334] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 -- pbuz1=pbuz2 + //SEG660 [334] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 -- pbuz1=pbuz2 lda form_field_ptr.return sta form_field_ptr.return_2 lda form_field_ptr.return+1 sta form_field_ptr.return_2+1 jmp b3 - //SEG660 form_render_values::@3 + //SEG661 form_render_values::@3 b3: - //SEG661 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 -- pbuz1=pbuz2 + //SEG662 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 -- pbuz1=pbuz2 lda form_field_ptr.return_2 sta field lda form_field_ptr.return_2+1 sta field+1 - //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG663 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy idx lda form_fields_val,y tay lda print_hextab,y ldy #0 sta (field),y - //SEG663 [337] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 -- vbuz1=_inc_vbuz1 + //SEG664 [337] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 -- vbuz1=_inc_vbuz1 inc idx - //SEG664 [338] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG665 [338] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 -- vbuz1_lt_vbuc1_then_la1 lda idx cmp #form_fields_cnt bcc b1_from_b3 jmp breturn - //SEG665 form_render_values::@return + //SEG666 form_render_values::@return breturn: - //SEG666 [339] return + //SEG667 [339] return rts } -//SEG667 form_field_ptr +//SEG668 form_field_ptr // Get the screen address of a form field // field_idx is the index of the field to get the screen address for form_field_ptr: { @@ -16219,21 +16220,21 @@ form_field_ptr: { .label return_2 = $10a .label return_3 = $114 .label _2 = $10f - //SEG668 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG669 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy field_idx lda form_fields_y,y sta y - //SEG669 [342] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + //SEG670 [342] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy y lda form_line_hi,y sta _2+1 lda form_line_lo,y sta _2 - //SEG670 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG671 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy field_idx lda form_fields_x,y sta x - //SEG671 [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG672 [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 -- pbuz1=pbuz2_plus_vbuz3 lda x clc adc _2 @@ -16242,217 +16243,217 @@ form_field_ptr: { adc _2+1 sta return+1 jmp breturn - //SEG672 form_field_ptr::@return + //SEG673 form_field_ptr::@return breturn: - //SEG673 [345] return + //SEG674 [345] return rts } -//SEG674 apply_preset +//SEG675 apply_preset // Apply a form value preset to the form values // idx is the ID of the preset apply_preset: { .label i = $2d .label idx = $109 .label preset = $2b - //SEG675 [346] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto apply_preset::@22 -- vbuz1_eq_0_then_la1 + //SEG676 [346] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto apply_preset::@22 -- vbuz1_eq_0_then_la1 lda idx cmp #0 beq b22_from_apply_preset jmp b24 - //SEG676 apply_preset::@24 + //SEG677 apply_preset::@24 b24: - //SEG677 [347] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 1) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG678 [347] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 1) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #1 beq b22_from_b24 jmp b25 - //SEG678 apply_preset::@25 + //SEG679 apply_preset::@25 b25: - //SEG679 [348] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 2) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG680 [348] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 2) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #2 beq b22_from_b25 jmp b26 - //SEG680 apply_preset::@26 + //SEG681 apply_preset::@26 b26: - //SEG681 [349] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 3) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG682 [349] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 3) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #3 beq b22_from_b26 jmp b27 - //SEG682 apply_preset::@27 + //SEG683 apply_preset::@27 b27: - //SEG683 [350] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 4) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG684 [350] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 4) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #4 beq b22_from_b27 jmp b28 - //SEG684 apply_preset::@28 + //SEG685 apply_preset::@28 b28: - //SEG685 [351] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 5) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG686 [351] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 5) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #5 beq b22_from_b28 jmp b29 - //SEG686 apply_preset::@29 + //SEG687 apply_preset::@29 b29: - //SEG687 [352] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 6) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG688 [352] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 6) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #6 beq b22_from_b29 jmp b30 - //SEG688 apply_preset::@30 + //SEG689 apply_preset::@30 b30: - //SEG689 [353] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 7) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG690 [353] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 7) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #7 beq b22_from_b30 jmp b31 - //SEG690 apply_preset::@31 + //SEG691 apply_preset::@31 b31: - //SEG691 [354] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 8) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG692 [354] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 8) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #8 beq b22_from_b31 jmp b32 - //SEG692 apply_preset::@32 + //SEG693 apply_preset::@32 b32: - //SEG693 [355] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 9) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG694 [355] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 9) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #9 beq b22_from_b32 jmp b33 - //SEG694 apply_preset::@33 + //SEG695 apply_preset::@33 b33: - //SEG695 [356] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 10) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 + //SEG696 [356] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 10) goto apply_preset::@22 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #$a beq b22_from_b33 - //SEG696 [357] phi from apply_preset::@33 to apply_preset::@34 [phi:apply_preset::@33->apply_preset::@34] + //SEG697 [357] phi from apply_preset::@33 to apply_preset::@34 [phi:apply_preset::@33->apply_preset::@34] b34_from_b33: jmp b34 - //SEG697 apply_preset::@34 + //SEG698 apply_preset::@34 b34: - //SEG698 [358] phi from apply_preset apply_preset::@34 to apply_preset::@22 [phi:apply_preset/apply_preset::@34->apply_preset::@22] + //SEG699 [358] phi from apply_preset apply_preset::@34 to apply_preset::@22 [phi:apply_preset/apply_preset::@34->apply_preset::@22] b22_from_apply_preset: b22_from_b34: - //SEG699 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdchar#0 [phi:apply_preset/apply_preset::@34->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG700 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdchar#0 [phi:apply_preset/apply_preset::@34->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_stdchar sta preset+1 jmp b22 - //SEG700 [358] phi from apply_preset::@24 to apply_preset::@22 [phi:apply_preset::@24->apply_preset::@22] + //SEG701 [358] phi from apply_preset::@24 to apply_preset::@22 [phi:apply_preset::@24->apply_preset::@22] b22_from_b24: - //SEG701 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_ecmchar#0 [phi:apply_preset::@24->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG702 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_ecmchar#0 [phi:apply_preset::@24->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_ecmchar sta preset+1 jmp b22 - //SEG702 [358] phi from apply_preset::@25 to apply_preset::@22 [phi:apply_preset::@25->apply_preset::@22] + //SEG703 [358] phi from apply_preset::@25 to apply_preset::@22 [phi:apply_preset::@25->apply_preset::@22] b22_from_b25: - //SEG703 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdbm#0 [phi:apply_preset::@25->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG704 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdbm#0 [phi:apply_preset::@25->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_stdbm sta preset+1 jmp b22 - //SEG704 [358] phi from apply_preset::@26 to apply_preset::@22 [phi:apply_preset::@26->apply_preset::@22] + //SEG705 [358] phi from apply_preset::@26 to apply_preset::@22 [phi:apply_preset::@26->apply_preset::@22] b22_from_b26: - //SEG705 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_mcbm#0 [phi:apply_preset::@26->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG706 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_mcbm#0 [phi:apply_preset::@26->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_mcbm sta preset+1 jmp b22 - //SEG706 [358] phi from apply_preset::@27 to apply_preset::@22 [phi:apply_preset::@27->apply_preset::@22] + //SEG707 [358] phi from apply_preset::@27 to apply_preset::@22 [phi:apply_preset::@27->apply_preset::@22] b22_from_b27: - //SEG707 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_stdchar#0 [phi:apply_preset::@27->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG708 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_stdchar#0 [phi:apply_preset::@27->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_hi_stdchar sta preset+1 jmp b22 - //SEG708 [358] phi from apply_preset::@28 to apply_preset::@22 [phi:apply_preset::@28->apply_preset::@22] + //SEG709 [358] phi from apply_preset::@28 to apply_preset::@22 [phi:apply_preset::@28->apply_preset::@22] b22_from_b28: - //SEG709 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_ecmchar#0 [phi:apply_preset::@28->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG710 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_ecmchar#0 [phi:apply_preset::@28->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_hi_ecmchar sta preset+1 jmp b22 - //SEG710 [358] phi from apply_preset::@29 to apply_preset::@22 [phi:apply_preset::@29->apply_preset::@22] + //SEG711 [358] phi from apply_preset::@29 to apply_preset::@22 [phi:apply_preset::@29->apply_preset::@22] b22_from_b29: - //SEG711 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_twoplane#0 [phi:apply_preset::@29->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG712 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_twoplane#0 [phi:apply_preset::@29->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_twoplane sta preset+1 jmp b22 - //SEG712 [358] phi from apply_preset::@30 to apply_preset::@22 [phi:apply_preset::@30->apply_preset::@22] + //SEG713 [358] phi from apply_preset::@30 to apply_preset::@22 [phi:apply_preset::@30->apply_preset::@22] b22_from_b30: - //SEG713 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_chunky#0 [phi:apply_preset::@30->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG714 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_chunky#0 [phi:apply_preset::@30->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_chunky sta preset+1 jmp b22 - //SEG714 [358] phi from apply_preset::@31 to apply_preset::@22 [phi:apply_preset::@31->apply_preset::@22] + //SEG715 [358] phi from apply_preset::@31 to apply_preset::@22 [phi:apply_preset::@31->apply_preset::@22] b22_from_b31: - //SEG715 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred#0 [phi:apply_preset::@31->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG716 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred#0 [phi:apply_preset::@31->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_sixsfred sta preset+1 jmp b22 - //SEG716 [358] phi from apply_preset::@32 to apply_preset::@22 [phi:apply_preset::@32->apply_preset::@22] + //SEG717 [358] phi from apply_preset::@32 to apply_preset::@22 [phi:apply_preset::@32->apply_preset::@22] b22_from_b32: - //SEG717 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred2#0 [phi:apply_preset::@32->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG718 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred2#0 [phi:apply_preset::@32->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_sixsfred2 sta preset+1 jmp b22 - //SEG718 [358] phi from apply_preset::@33 to apply_preset::@22 [phi:apply_preset::@33->apply_preset::@22] + //SEG719 [358] phi from apply_preset::@33 to apply_preset::@22 [phi:apply_preset::@33->apply_preset::@22] b22_from_b33: - //SEG719 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_8bpppixelcell#0 [phi:apply_preset::@33->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG720 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_8bpppixelcell#0 [phi:apply_preset::@33->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_8bpppixelcell sta preset+1 jmp b22 - //SEG720 apply_preset::@22 + //SEG721 apply_preset::@22 b22: - //SEG721 [359] phi from apply_preset::@22 to apply_preset::@23 [phi:apply_preset::@22->apply_preset::@23] + //SEG722 [359] phi from apply_preset::@22 to apply_preset::@23 [phi:apply_preset::@22->apply_preset::@23] b23_from_b22: - //SEG722 [359] phi (byte) apply_preset::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:apply_preset::@22->apply_preset::@23#0] -- vbuz1=vbuc1 + //SEG723 [359] phi (byte) apply_preset::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:apply_preset::@22->apply_preset::@23#0] -- vbuz1=vbuc1 lda #0 sta i jmp b23 - //SEG723 [359] phi from apply_preset::@23 to apply_preset::@23 [phi:apply_preset::@23->apply_preset::@23] + //SEG724 [359] phi from apply_preset::@23 to apply_preset::@23 [phi:apply_preset::@23->apply_preset::@23] b23_from_b23: - //SEG724 [359] phi (byte) apply_preset::i#2 = (byte) apply_preset::i#1 [phi:apply_preset::@23->apply_preset::@23#0] -- register_copy + //SEG725 [359] phi (byte) apply_preset::i#2 = (byte) apply_preset::i#1 [phi:apply_preset::@23->apply_preset::@23#0] -- register_copy jmp b23 - //SEG725 apply_preset::@23 + //SEG726 apply_preset::@23 b23: - //SEG726 [360] *((const byte[]) form_fields_val#0 + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#2) -- pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1 + //SEG727 [360] *((const byte[]) form_fields_val#0 + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#2) -- pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1 ldy i lda (preset),y sta form_fields_val,y - //SEG727 [361] (byte) apply_preset::i#1 ← ++ (byte) apply_preset::i#2 -- vbuz1=_inc_vbuz1 + //SEG728 [361] (byte) apply_preset::i#1 ← ++ (byte) apply_preset::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG728 [362] if((byte) apply_preset::i#1!=(const byte) form_fields_cnt#0) goto apply_preset::@23 -- vbuz1_neq_vbuc1_then_la1 + //SEG729 [362] if((byte) apply_preset::i#1!=(const byte) form_fields_cnt#0) goto apply_preset::@23 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #form_fields_cnt bne b23_from_b23 jmp breturn - //SEG729 apply_preset::@return + //SEG730 apply_preset::@return breturn: - //SEG730 [363] return + //SEG731 [363] return rts } -//SEG731 form_control +//SEG732 form_control // Reads keyboard and allows the user to navigate and change the fields of the form // Returns 0 if space is not pressed, non-0 if space is pressed form_control: { @@ -16465,42 +16466,42 @@ form_control: { .label field = $116 .label key_event = $11a .label return_2 = $2e - //SEG732 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuz1=vbuz2 + //SEG733 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuz1=vbuz2 lda form_field_idx sta form_field_ptr.field_idx - //SEG733 [365] call form_field_ptr - //SEG734 [340] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr] + //SEG734 [365] call form_field_ptr + //SEG735 [340] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr] form_field_ptr_from_form_control: - //SEG735 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy + //SEG736 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy jsr form_field_ptr - //SEG736 [366] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 -- pbuz1=pbuz2 + //SEG737 [366] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 -- pbuz1=pbuz2 lda form_field_ptr.return sta form_field_ptr.return_3 lda form_field_ptr.return+1 sta form_field_ptr.return_3+1 jmp b33 - //SEG737 form_control::@33 + //SEG738 form_control::@33 b33: - //SEG738 [367] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 -- pbuz1=pbuz2 + //SEG739 [367] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 -- pbuz1=pbuz2 lda form_field_ptr.return_3 sta field lda form_field_ptr.return_3+1 sta field+1 - //SEG739 [368] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#21 -- vbsz1=_dec_vbsz1 + //SEG740 [368] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#21 -- vbsz1=_dec_vbsz1 dec form_cursor_count - //SEG740 [369] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@36 -- vbsz1_ge_0_then_la1 + //SEG741 [369] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@36 -- vbsz1_ge_0_then_la1 lda form_cursor_count cmp #0 bpl b36_from_b33 - //SEG741 [370] phi from form_control::@33 to form_control::@1 [phi:form_control::@33->form_control::@1] + //SEG742 [370] phi from form_control::@33 to form_control::@1 [phi:form_control::@33->form_control::@1] b1_from_b33: - //SEG742 [370] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@33->form_control::@1#0] -- vbsz1=vbsc1 + //SEG743 [370] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@33->form_control::@1#0] -- vbsz1=vbsc1 lda #FORM_CURSOR_BLINK sta form_cursor_count jmp b1 - //SEG743 form_control::@1 + //SEG744 form_control::@1 b1: - //SEG744 [371] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2) goto form_control::@2 -- vbsz1_lt_vbuc1_then_la1 + //SEG745 [371] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2) goto form_control::@2 -- vbsz1_lt_vbuc1_then_la1 lda form_cursor_count sec sbc #FORM_CURSOR_BLINK/2 @@ -16509,245 +16510,245 @@ form_control: { !: bmi b2 jmp b16 - //SEG745 form_control::@16 + //SEG746 form_control::@16 b16: - //SEG746 [372] (byte~) form_control::$5 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG747 [372] (byte~) form_control::$5 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$7f ldy #0 and (field),y sta _5 - //SEG747 [373] *((byte*) form_control::field#0) ← (byte~) form_control::$5 -- _deref_pbuz1=vbuz2 + //SEG748 [373] *((byte*) form_control::field#0) ← (byte~) form_control::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (field),y - //SEG748 [374] phi from form_control::@16 form_control::@2 to form_control::@3 [phi:form_control::@16/form_control::@2->form_control::@3] + //SEG749 [374] phi from form_control::@16 form_control::@2 to form_control::@3 [phi:form_control::@16/form_control::@2->form_control::@3] b3_from_b16: b3_from_b2: jmp b3 - //SEG749 form_control::@3 + //SEG750 form_control::@3 b3: - //SEG750 [375] call keyboard_event_scan - //SEG751 [159] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] + //SEG751 [375] call keyboard_event_scan + //SEG752 [159] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] keyboard_event_scan_from_b3: - //SEG752 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy + //SEG753 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan - //SEG753 [376] phi from form_control::@3 to form_control::@34 [phi:form_control::@3->form_control::@34] + //SEG754 [376] phi from form_control::@3 to form_control::@34 [phi:form_control::@3->form_control::@34] b34_from_b3: jmp b34 - //SEG754 form_control::@34 + //SEG755 form_control::@34 b34: - //SEG755 [377] call keyboard_event_get + //SEG756 [377] call keyboard_event_get jsr keyboard_event_get - //SEG756 [378] (byte) keyboard_event_get::return#4 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG757 [378] (byte) keyboard_event_get::return#4 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 lda keyboard_event_get.return sta keyboard_event_get.return_4 jmp b35 - //SEG757 form_control::@35 + //SEG758 form_control::@35 b35: - //SEG758 [379] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#4 -- vbuz1=vbuz2 + //SEG759 [379] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#4 -- vbuz1=vbuz2 lda keyboard_event_get.return_4 sta key_event - //SEG759 [380] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG760 [380] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_CRSR_DOWN bne b4 jmp b18 - //SEG760 form_control::@18 + //SEG761 form_control::@18 b18: - //SEG761 [381] (byte~) form_control::$11 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG762 [381] (byte~) form_control::$11 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$7f ldy #0 and (field),y sta _11 - //SEG762 [382] *((byte*) form_control::field#0) ← (byte~) form_control::$11 -- _deref_pbuz1=vbuz2 + //SEG763 [382] *((byte*) form_control::field#0) ← (byte~) form_control::$11 -- _deref_pbuz1=vbuz2 lda _11 ldy #0 sta (field),y - //SEG763 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuz1=vbuz2_band_vbuc1 + //SEG764 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuz1=vbuz2_band_vbuc1 lda #KEY_MODIFIER_SHIFT and keyboard_modifiers sta _12 - //SEG764 [384] if((byte~) form_control::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 -- vbuz1_eq_0_then_la1 + //SEG765 [384] if((byte~) form_control::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 -- vbuz1_eq_0_then_la1 lda _12 cmp #0 beq b5 jmp b19 - //SEG765 form_control::@19 + //SEG766 form_control::@19 b19: - //SEG766 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuz1=_dec_vbuz1 + //SEG767 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuz1=_dec_vbuz1 dec form_field_idx - //SEG767 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@37 -- vbuz1_neq_vbuc1_then_la1 + //SEG768 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@37 -- vbuz1_neq_vbuc1_then_la1 lda form_field_idx cmp #$ff bne b37_from_b19 - //SEG768 [387] phi from form_control::@19 to form_control::@7 [phi:form_control::@19->form_control::@7] + //SEG769 [387] phi from form_control::@19 to form_control::@7 [phi:form_control::@19->form_control::@7] b7_from_b19: - //SEG769 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuz1=vbuc1 + //SEG770 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuz1=vbuc1 lda #form_fields_cnt-1 sta form_field_idx jmp b7 - //SEG770 form_control::@7 + //SEG771 form_control::@7 b7: - //SEG771 [388] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return] + //SEG772 [388] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return] breturn_from_b7: - //SEG772 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@7->form_control::@return#0] -- register_copy - //SEG773 [388] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1 + //SEG773 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@7->form_control::@return#0] -- register_copy + //SEG774 [388] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 sta form_cursor_count - //SEG774 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuz1=vbuc1 + //SEG775 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG775 form_control::@return + //SEG776 form_control::@return breturn: - //SEG776 [389] return + //SEG777 [389] return rts - //SEG777 [390] phi from form_control::@19 to form_control::@37 [phi:form_control::@19->form_control::@37] + //SEG778 [390] phi from form_control::@19 to form_control::@37 [phi:form_control::@19->form_control::@37] b37_from_b19: jmp b37 - //SEG778 form_control::@37 + //SEG779 form_control::@37 b37: - //SEG779 [387] phi from form_control::@37 form_control::@38 to form_control::@7 [phi:form_control::@37/form_control::@38->form_control::@7] + //SEG780 [387] phi from form_control::@37 form_control::@38 to form_control::@7 [phi:form_control::@37/form_control::@38->form_control::@7] b7_from_b37: b7_from_b38: - //SEG780 [387] phi (byte) form_field_idx#32 = (byte) form_field_idx#44 [phi:form_control::@37/form_control::@38->form_control::@7#0] -- register_copy + //SEG781 [387] phi (byte) form_field_idx#32 = (byte) form_field_idx#44 [phi:form_control::@37/form_control::@38->form_control::@7#0] -- register_copy jmp b7 - //SEG781 form_control::@5 + //SEG782 form_control::@5 b5: - //SEG782 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuz1=_inc_vbuz1 + //SEG783 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuz1=_inc_vbuz1 inc form_field_idx - //SEG783 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuz1_neq_vbuc1_then_la1 + //SEG784 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuz1_neq_vbuc1_then_la1 lda form_field_idx cmp #form_fields_cnt bne b38_from_b5 - //SEG784 [387] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7] + //SEG785 [387] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7] b7_from_b5: - //SEG785 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuz1=vbuc1 + //SEG786 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuz1=vbuc1 lda #0 sta form_field_idx jmp b7 - //SEG786 [393] phi from form_control::@5 to form_control::@38 [phi:form_control::@5->form_control::@38] + //SEG787 [393] phi from form_control::@5 to form_control::@38 [phi:form_control::@5->form_control::@38] b38_from_b5: jmp b38 - //SEG787 form_control::@38 + //SEG788 form_control::@38 b38: jmp b7_from_b38 - //SEG788 form_control::@4 + //SEG789 form_control::@4 b4: - //SEG789 [394] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG790 [394] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@9 -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_CRSR_RIGHT bne b9 jmp b24 - //SEG790 form_control::@24 + //SEG791 form_control::@24 b24: - //SEG791 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuz1=vbuz2_band_vbuc1 + //SEG792 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuz1=vbuz2_band_vbuc1 lda #KEY_MODIFIER_SHIFT and keyboard_modifiers sta _22 - //SEG792 [396] if((byte~) form_control::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 -- vbuz1_eq_0_then_la1 + //SEG793 [396] if((byte~) form_control::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 -- vbuz1_eq_0_then_la1 lda _22 cmp #0 beq b10 jmp b25 - //SEG793 form_control::@25 + //SEG794 form_control::@25 b25: - //SEG794 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1 + //SEG795 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1 ldx form_field_idx dec form_fields_val,x - //SEG795 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG796 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy form_field_idx lda form_fields_val,y cmp #$ff bne b12 jmp b26 - //SEG796 form_control::@26 + //SEG797 form_control::@26 b26: - //SEG797 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG798 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy form_field_idx lda form_fields_max,y sta form_fields_val,y jmp b12 - //SEG798 form_control::@12 + //SEG799 form_control::@12 b12: - //SEG799 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG800 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy form_field_idx lda form_fields_val,y tay lda print_hextab,y ldy #0 sta (field),y - //SEG800 [388] phi from form_control::@12 form_control::@39 to form_control::@return [phi:form_control::@12/form_control::@39->form_control::@return] + //SEG801 [388] phi from form_control::@12 form_control::@39 to form_control::@return [phi:form_control::@12/form_control::@39->form_control::@return] breturn_from_b12: breturn_from_b39: - //SEG801 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@12/form_control::@39->form_control::@return#0] -- register_copy - //SEG802 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@39->form_control::@return#1] -- register_copy - //SEG803 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuz1=vbuc1 + //SEG802 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@12/form_control::@39->form_control::@return#0] -- register_copy + //SEG803 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@39->form_control::@return#1] -- register_copy + //SEG804 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG804 form_control::@10 + //SEG805 form_control::@10 b10: - //SEG805 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 + //SEG806 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 ldx form_field_idx inc form_fields_val,x - //SEG806 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1 + //SEG807 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1 ldy form_field_idx lda form_fields_val,y cmp form_fields_max,y bcc b12 beq b12 jmp b28 - //SEG807 form_control::@28 + //SEG808 form_control::@28 b28: - //SEG808 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG809 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy form_field_idx lda #0 sta form_fields_val,y jmp b12 - //SEG809 form_control::@9 + //SEG810 form_control::@9 b9: - //SEG810 [404] if((byte) form_control::key_event#0!=(const byte) KEY_SPACE#0) goto form_control::@39 -- vbuz1_neq_vbuc1_then_la1 + //SEG811 [404] if((byte) form_control::key_event#0!=(const byte) KEY_SPACE#0) goto form_control::@39 -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_SPACE bne b39_from_b9 - //SEG811 [388] phi from form_control::@9 to form_control::@return [phi:form_control::@9->form_control::@return] + //SEG812 [388] phi from form_control::@9 to form_control::@return [phi:form_control::@9->form_control::@return] breturn_from_b9: - //SEG812 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@9->form_control::@return#0] -- register_copy - //SEG813 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@9->form_control::@return#1] -- register_copy - //SEG814 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:form_control::@9->form_control::@return#2] -- vbuz1=vbuc1 + //SEG813 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@9->form_control::@return#0] -- register_copy + //SEG814 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@9->form_control::@return#1] -- register_copy + //SEG815 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:form_control::@9->form_control::@return#2] -- vbuz1=vbuc1 lda #$ff sta return_2 jmp breturn - //SEG815 [405] phi from form_control::@9 to form_control::@39 [phi:form_control::@9->form_control::@39] + //SEG816 [405] phi from form_control::@9 to form_control::@39 [phi:form_control::@9->form_control::@39] b39_from_b9: jmp b39 - //SEG816 form_control::@39 + //SEG817 form_control::@39 b39: jmp breturn_from_b39 - //SEG817 form_control::@2 + //SEG818 form_control::@2 b2: - //SEG818 [406] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 -- vbuz1=_deref_pbuz2_bor_vbuc1 + //SEG819 [406] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 -- vbuz1=_deref_pbuz2_bor_vbuc1 lda #$80 ldy #0 ora (field),y sta _6 - //SEG819 [407] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 -- _deref_pbuz1=vbuz2 + //SEG820 [407] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (field),y jmp b3_from_b2 - //SEG820 [408] phi from form_control::@33 to form_control::@36 [phi:form_control::@33->form_control::@36] + //SEG821 [408] phi from form_control::@33 to form_control::@36 [phi:form_control::@33->form_control::@36] b36_from_b33: jmp b36 - //SEG821 form_control::@36 + //SEG822 form_control::@36 b36: - //SEG822 [370] phi from form_control::@36 to form_control::@1 [phi:form_control::@36->form_control::@1] + //SEG823 [370] phi from form_control::@36 to form_control::@1 [phi:form_control::@36->form_control::@1] b1_from_b36: - //SEG823 [370] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@36->form_control::@1#0] -- register_copy + //SEG824 [370] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@36->form_control::@1#0] -- register_copy jmp b1 } -//SEG824 form_set_screen +//SEG825 form_set_screen // Set the screen to use for the form. // screen is the start address of the screen to use form_set_screen: { @@ -16755,39 +16756,39 @@ form_set_screen: { .label _1 = $120 .label line = $2f .label y = $31 - //SEG825 [410] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1] + //SEG826 [410] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1] b1_from_form_set_screen: - //SEG826 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuz1=vbuc1 + //SEG827 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG827 [410] phi (byte*) form_set_screen::line#2 = (const byte*) FORM_SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1 + //SEG828 [410] phi (byte*) form_set_screen::line#2 = (const byte*) FORM_SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1 lda #FORM_SCREEN sta line+1 jmp b1 - //SEG828 [410] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1] + //SEG829 [410] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1] b1_from_b1: - //SEG829 [410] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy - //SEG830 [410] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy + //SEG830 [410] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy + //SEG831 [410] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy jmp b1 - //SEG831 form_set_screen::@1 + //SEG832 form_set_screen::@1 b1: - //SEG832 [411] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 -- vbuz1=_lo_pbuz2 + //SEG833 [411] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 -- vbuz1=_lo_pbuz2 lda line sta _0 - //SEG833 [412] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG834 [412] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldy y sta form_line_lo,y - //SEG834 [413] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 -- vbuz1=_hi_pbuz2 + //SEG835 [413] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 -- vbuz1=_hi_pbuz2 lda line+1 sta _1 - //SEG835 [414] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG836 [414] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuz1=vbuz2 lda _1 ldy y sta form_line_hi,y - //SEG836 [415] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG837 [415] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -16795,119 +16796,119 @@ form_set_screen: { bcc !+ inc line+1 !: - //SEG837 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuz1=_inc_vbuz1 + //SEG838 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG838 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG839 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b1 jmp breturn - //SEG839 form_set_screen::@return + //SEG840 form_set_screen::@return breturn: - //SEG840 [418] return + //SEG841 [418] return rts } -//SEG841 print_str_lines +//SEG842 print_str_lines // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. print_str_lines: { .label ch = $121 .label str = $32 - //SEG842 [420] (byte*~) print_char_cursor#77 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + //SEG843 [420] (byte*~) print_char_cursor#77 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda print_set_screen.screen sta print_char_cursor lda print_set_screen.screen+1 sta print_char_cursor+1 - //SEG843 [421] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1] + //SEG844 [421] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1] b1_from_print_str_lines: b1_from_b9: - //SEG844 [421] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy - //SEG845 [421] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#77 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy - //SEG846 [421] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy + //SEG845 [421] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy + //SEG846 [421] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#77 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG847 [421] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy jmp b1 - //SEG847 print_str_lines::@1 + //SEG848 print_str_lines::@1 b1: - //SEG848 [422] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG849 [422] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b4_from_b1 jmp breturn - //SEG849 print_str_lines::@return + //SEG850 print_str_lines::@return breturn: - //SEG850 [423] return + //SEG851 [423] return rts - //SEG851 [424] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] + //SEG852 [424] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] b4_from_b1: b4_from_b5: - //SEG852 [424] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy - //SEG853 [424] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy + //SEG853 [424] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy + //SEG854 [424] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy jmp b4 - //SEG854 print_str_lines::@4 + //SEG855 print_str_lines::@4 b4: - //SEG855 [425] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) -- vbuz1=_deref_pbuz2 + //SEG856 [425] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) -- vbuz1=_deref_pbuz2 ldy #0 lda (str),y sta ch - //SEG856 [426] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 -- pbuz1=_inc_pbuz1 + //SEG857 [426] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG857 [427] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG858 [427] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuz1_eq_vbuc1_then_la1 lda ch cmp #'@' beq b5_from_b4 jmp b8 - //SEG858 print_str_lines::@8 + //SEG859 print_str_lines::@8 b8: - //SEG859 [428] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuz2 + //SEG860 [428] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG860 [429] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 -- pbuz1=_inc_pbuz1 + //SEG861 [429] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG861 [430] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] + //SEG862 [430] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] b5_from_b4: b5_from_b8: - //SEG862 [430] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy + //SEG863 [430] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy jmp b5 - //SEG863 print_str_lines::@5 + //SEG864 print_str_lines::@5 b5: - //SEG864 [431] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG865 [431] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #'@' bne b4_from_b5 - //SEG865 [432] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] + //SEG866 [432] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] b9_from_b5: jmp b9 - //SEG866 print_str_lines::@9 + //SEG867 print_str_lines::@9 b9: - //SEG867 [433] call print_ln - //SEG868 [435] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] + //SEG868 [433] call print_ln + //SEG869 [435] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] print_ln_from_b9: jsr print_ln - //SEG869 [434] (byte*~) print_char_cursor#78 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 + //SEG870 [434] (byte*~) print_char_cursor#78 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 jmp b1_from_b9 } -//SEG870 print_ln +//SEG871 print_ln // Print a newline print_ln: { - //SEG871 [436] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG872 [436] 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: - //SEG872 [436] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG873 [436] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG873 print_ln::@1 + //SEG874 print_ln::@1 b1: - //SEG874 [437] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG875 [437] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -16915,7 +16916,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG875 [438] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG876 [438] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -16925,38 +16926,38 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG876 print_ln::@return + //SEG877 print_ln::@return breturn: - //SEG877 [439] return + //SEG878 [439] return rts } -//SEG878 print_cls +//SEG879 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label _0 = $122 .label sc = $38 - //SEG879 [440] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + //SEG880 [440] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda print_set_screen.screen sta sc lda print_set_screen.screen+1 sta sc+1 - //SEG880 [441] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1] + //SEG881 [441] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1] b1_from_print_cls: b1_from_b1: - //SEG881 [441] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy + //SEG882 [441] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG882 print_cls::@1 + //SEG883 print_cls::@1 b1: - //SEG883 [442] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG884 [442] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG884 [443] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG885 [443] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG885 [444] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG886 [444] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda print_set_screen.screen clc adc #<$3e8 @@ -16964,7 +16965,7 @@ print_cls: { lda print_set_screen.screen+1 adc #>$3e8 sta _0+1 - //SEG886 [445] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG887 [445] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -- pbuz1_neq_pbuz2_then_la1 lda sc+1 cmp _0+1 bne b1_from_b1 @@ -16972,168 +16973,168 @@ print_cls: { cmp _0 bne b1_from_b1 jmp breturn - //SEG887 print_cls::@return + //SEG888 print_cls::@return breturn: - //SEG888 [446] return + //SEG889 [446] return rts } -//SEG889 print_set_screen +//SEG890 print_set_screen // Set the screen to print on. Also resets current line/char cursor. print_set_screen: { .label screen = $36 jmp breturn - //SEG890 print_set_screen::@return + //SEG891 print_set_screen::@return breturn: - //SEG891 [448] return + //SEG892 [448] return rts } -//SEG892 gfx_init +//SEG893 gfx_init // Initialize the different graphics in the memory gfx_init: { - //SEG893 [450] call gfx_init_screen0 - //SEG894 [848] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG894 [450] call gfx_init_screen0 + //SEG895 [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] + //SEG896 [451] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] b1_from_gfx_init: jmp b1 - //SEG896 gfx_init::@1 + //SEG897 gfx_init::@1 b1: - //SEG897 [452] call gfx_init_screen1 - //SEG898 [836] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] + //SEG898 [452] call gfx_init_screen1 + //SEG899 [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] + //SEG900 [453] phi from gfx_init::@1 to gfx_init::@2 [phi:gfx_init::@1->gfx_init::@2] b2_from_b1: jmp b2 - //SEG900 gfx_init::@2 + //SEG901 gfx_init::@2 b2: - //SEG901 [454] call gfx_init_screen2 - //SEG902 [821] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] + //SEG902 [454] call gfx_init_screen2 + //SEG903 [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] + //SEG904 [455] phi from gfx_init::@2 to gfx_init::@3 [phi:gfx_init::@2->gfx_init::@3] b3_from_b2: jmp b3 - //SEG904 gfx_init::@3 + //SEG905 gfx_init::@3 b3: - //SEG905 [456] call gfx_init_screen3 - //SEG906 [807] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] + //SEG906 [456] call gfx_init_screen3 + //SEG907 [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] + //SEG908 [457] phi from gfx_init::@3 to gfx_init::@4 [phi:gfx_init::@3->gfx_init::@4] b4_from_b3: jmp b4 - //SEG908 gfx_init::@4 + //SEG909 gfx_init::@4 b4: - //SEG909 [458] call gfx_init_screen4 - //SEG910 [797] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] + //SEG910 [458] call gfx_init_screen4 + //SEG911 [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] + //SEG912 [459] phi from gfx_init::@4 to gfx_init::@5 [phi:gfx_init::@4->gfx_init::@5] b5_from_b4: jmp b5 - //SEG912 gfx_init::@5 + //SEG913 gfx_init::@5 b5: - //SEG913 [460] call gfx_init_charset + //SEG914 [460] call gfx_init_charset jsr gfx_init_charset - //SEG914 [461] phi from gfx_init::@5 to gfx_init::@6 [phi:gfx_init::@5->gfx_init::@6] + //SEG915 [461] phi from gfx_init::@5 to gfx_init::@6 [phi:gfx_init::@5->gfx_init::@6] b6_from_b5: jmp b6 - //SEG915 gfx_init::@6 + //SEG916 gfx_init::@6 b6: - //SEG916 [462] call gfx_init_vic_bitmap - //SEG917 [606] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] + //SEG917 [462] call gfx_init_vic_bitmap + //SEG918 [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] + //SEG919 [463] phi from gfx_init::@6 to gfx_init::@7 [phi:gfx_init::@6->gfx_init::@7] b7_from_b6: jmp b7 - //SEG919 gfx_init::@7 + //SEG920 gfx_init::@7 b7: - //SEG920 [464] call gfx_init_plane_8bppchunky - //SEG921 [586] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] + //SEG921 [464] call gfx_init_plane_8bppchunky + //SEG922 [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] + //SEG923 [465] phi from gfx_init::@7 to gfx_init::@8 [phi:gfx_init::@7->gfx_init::@8] b8_from_b7: jmp b8 - //SEG923 gfx_init::@8 + //SEG924 gfx_init::@8 b8: - //SEG924 [466] call gfx_init_plane_charset8 - //SEG925 [561] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] + //SEG925 [466] call gfx_init_plane_charset8 + //SEG926 [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] + //SEG927 [467] phi from gfx_init::@8 to gfx_init::@9 [phi:gfx_init::@8->gfx_init::@9] b9_from_b8: jmp b9 - //SEG927 gfx_init::@9 + //SEG928 gfx_init::@9 b9: - //SEG928 [468] call gfx_init_plane_horisontal - //SEG929 [543] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] + //SEG929 [468] call gfx_init_plane_horisontal + //SEG930 [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] + //SEG931 [469] phi from gfx_init::@9 to gfx_init::@10 [phi:gfx_init::@9->gfx_init::@10] b10_from_b9: jmp b10 - //SEG931 gfx_init::@10 + //SEG932 gfx_init::@10 b10: - //SEG932 [470] call gfx_init_plane_vertical - //SEG933 [530] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] + //SEG933 [470] call gfx_init_plane_vertical + //SEG934 [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] + //SEG935 [471] phi from gfx_init::@10 to gfx_init::@11 [phi:gfx_init::@10->gfx_init::@11] b11_from_b10: jmp b11 - //SEG935 gfx_init::@11 + //SEG936 gfx_init::@11 b11: - //SEG936 [472] call gfx_init_plane_horisontal2 - //SEG937 [515] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] + //SEG937 [472] call gfx_init_plane_horisontal2 + //SEG938 [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] + //SEG939 [473] phi from gfx_init::@11 to gfx_init::@12 [phi:gfx_init::@11->gfx_init::@12] b12_from_b11: jmp b12 - //SEG939 gfx_init::@12 + //SEG940 gfx_init::@12 b12: - //SEG940 [474] call gfx_init_plane_vertical2 - //SEG941 [512] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] + //SEG941 [474] call gfx_init_plane_vertical2 + //SEG942 [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] + //SEG943 [475] phi from gfx_init::@12 to gfx_init::@13 [phi:gfx_init::@12->gfx_init::@13] b13_from_b12: jmp b13 - //SEG943 gfx_init::@13 + //SEG944 gfx_init::@13 b13: - //SEG944 [476] call gfx_init_plane_blank - //SEG945 [509] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] + //SEG945 [476] call gfx_init_plane_blank + //SEG946 [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] + //SEG947 [477] phi from gfx_init::@13 to gfx_init::@14 [phi:gfx_init::@13->gfx_init::@14] b14_from_b13: jmp b14 - //SEG947 gfx_init::@14 + //SEG948 gfx_init::@14 b14: - //SEG948 [478] call gfx_init_plane_full - //SEG949 [480] phi from gfx_init::@14 to gfx_init_plane_full [phi:gfx_init::@14->gfx_init_plane_full] + //SEG949 [478] call gfx_init_plane_full + //SEG950 [480] phi from gfx_init::@14 to gfx_init_plane_full [phi:gfx_init::@14->gfx_init_plane_full] gfx_init_plane_full_from_b14: jsr gfx_init_plane_full jmp breturn - //SEG950 gfx_init::@return + //SEG951 gfx_init::@return breturn: - //SEG951 [479] return + //SEG952 [479] return rts } -//SEG952 gfx_init_plane_full +//SEG953 gfx_init_plane_full // Initialize Plane with all pixels gfx_init_plane_full: { - //SEG953 [481] call gfx_init_plane_fill - //SEG954 [483] phi from gfx_init_plane_full to gfx_init_plane_fill [phi:gfx_init_plane_full->gfx_init_plane_fill] + //SEG954 [481] call gfx_init_plane_fill + //SEG955 [483] phi from gfx_init_plane_full to gfx_init_plane_fill [phi:gfx_init_plane_full->gfx_init_plane_fill] gfx_init_plane_fill_from_gfx_init_plane_full: - //SEG955 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/word/signed word/dword/signed dword) 255 [phi:gfx_init_plane_full->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG956 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/word/signed word/dword/signed dword) 255 [phi:gfx_init_plane_full->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #$ff sta gfx_init_plane_fill.fill - //SEG956 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_FULL#0 [phi:gfx_init_plane_full->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG957 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_FULL#0 [phi:gfx_init_plane_full->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_FULL @@ -17144,12 +17145,12 @@ gfx_init_plane_full: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG957 gfx_init_plane_full::@return + //SEG958 gfx_init_plane_full::@return breturn: - //SEG958 [482] return + //SEG959 [482] return rts } -//SEG959 gfx_init_plane_fill +//SEG960 gfx_init_plane_fill // Initialize 320*200 1bpp pixel ($2000) plane with identical bytes gfx_init_plane_fill: { .label _0 = $124 @@ -17164,7 +17165,7 @@ gfx_init_plane_fill: { .label by = $3f .label plane_addr = $3a .label fill = $3e - //SEG960 [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 -- vduz1=vduz2_rol_2 + //SEG961 [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 -- vduz1=vduz2_rol_2 lda plane_addr sta _0 lda plane_addr+1 @@ -17181,42 +17182,42 @@ gfx_init_plane_fill: { rol _0+1 rol _0+2 rol _0+3 - //SEG961 [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 -- vwuz1=_hi_vduz2 + //SEG962 [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 -- vwuz1=_hi_vduz2 lda _0+2 sta _1 lda _0+3 sta _1+1 - //SEG962 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuz1=_lo_vwuz2 + //SEG963 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuz1=_lo_vwuz2 lda _1 sta gfxbCpuBank - //SEG963 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuz1=vbuz2 + //SEG964 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuz1=vbuz2 lda gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx - //SEG964 [488] call dtvSetCpuBankSegment1 - //SEG965 [505] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] + //SEG965 [488] call dtvSetCpuBankSegment1 + //SEG966 [505] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_fill: - //SEG966 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1#0] -- register_copy + //SEG967 [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 + //SEG968 gfx_init_plane_fill::@5 b5: - //SEG968 [489] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuz1=_inc_vbuz2 + //SEG969 [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 + //SEG970 [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 - //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 + //SEG971 [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 - //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 + //SEG972 [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 @@ -17224,111 +17225,111 @@ gfx_init_plane_fill: { lda _5+1 adc #>$4000 sta _6+1 - //SEG972 [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 -- pbuz1=pbuz2 + //SEG973 [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 - //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 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: - //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 + //SEG975 [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 - //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 (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 - //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 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: - //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 + //SEG978 [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 + //SEG979 [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 - //SEG979 gfx_init_plane_fill::@1 + //SEG980 gfx_init_plane_fill::@1 b1: - //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 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: - //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 + //SEG982 [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 - //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 (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 - //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 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: - //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 + //SEG985 [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 + //SEG986 [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 - //SEG986 gfx_init_plane_fill::@2 + //SEG987 gfx_init_plane_fill::@2 b2: - //SEG987 [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 + //SEG988 [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 - //SEG988 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG989 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG989 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuz1=_inc_vbuz1 + //SEG990 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuz1=_inc_vbuz1 inc bx - //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 + //SEG991 [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 - //SEG991 gfx_init_plane_fill::@3 + //SEG992 gfx_init_plane_fill::@3 b3: - //SEG992 [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 + //SEG993 [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 inc by - //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 + //SEG994 [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 - //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 [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 - //SEG995 gfx_init_plane_fill::@4 + //SEG996 gfx_init_plane_fill::@4 b4: - //SEG996 [503] call dtvSetCpuBankSegment1 - //SEG997 [505] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] + //SEG997 [503] call dtvSetCpuBankSegment1 + //SEG998 [505] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //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 + //SEG999 [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 - //SEG999 gfx_init_plane_fill::@return + //SEG1000 gfx_init_plane_fill::@return breturn: - //SEG1000 [504] return + //SEG1001 [504] return rts } -//SEG1001 dtvSetCpuBankSegment1 +//SEG1002 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff .label cpuBankIdx = $43 - //SEG1002 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuz1 + //SEG1003 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuz1 lda cpuBankIdx sta cpuBank - //SEG1003 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG1004 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG1004 dtvSetCpuBankSegment1::@return + //SEG1005 dtvSetCpuBankSegment1::@return breturn: - //SEG1005 [508] return + //SEG1006 [508] return rts } -//SEG1006 gfx_init_plane_blank +//SEG1007 gfx_init_plane_blank // Initialize Plane with blank pixels gfx_init_plane_blank: { - //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] + //SEG1008 [510] call gfx_init_plane_fill + //SEG1009 [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: - //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 + //SEG1010 [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 - //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 + //SEG1011 [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 @@ -17339,21 +17340,21 @@ gfx_init_plane_blank: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG1011 gfx_init_plane_blank::@return + //SEG1012 gfx_init_plane_blank::@return breturn: - //SEG1012 [511] return + //SEG1013 [511] return rts } -//SEG1013 gfx_init_plane_vertical2 +//SEG1014 gfx_init_plane_vertical2 // Initialize Plane with Vertical Stripes every 2 pixels gfx_init_plane_vertical2: { - //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] + //SEG1015 [513] call gfx_init_plane_fill + //SEG1016 [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: - //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 + //SEG1017 [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 - //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 + //SEG1018 [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 @@ -17364,12 +17365,12 @@ gfx_init_plane_vertical2: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG1018 gfx_init_plane_vertical2::@return + //SEG1019 gfx_init_plane_vertical2::@return breturn: - //SEG1019 [514] return + //SEG1020 [514] return rts } -//SEG1020 gfx_init_plane_horisontal2 +//SEG1021 gfx_init_plane_horisontal2 // Initialize Plane with Horizontal Stripes every 2 pixels gfx_init_plane_horisontal2: { .const gfxbCpuBank = PLANE_HORISONTAL2/$4000 @@ -17378,186 +17379,186 @@ gfx_init_plane_horisontal2: { .label gfxa = $45 .label ax = $47 .label ay = $44 - //SEG1021 [516] call dtvSetCpuBankSegment1 - //SEG1022 [505] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] + //SEG1022 [516] call dtvSetCpuBankSegment1 + //SEG1023 [505] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_horisontal2: - //SEG1023 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1024 [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 - //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 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: - //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 + //SEG1026 [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 - //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 + //SEG1027 [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 - //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 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: - //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 + //SEG1029 [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 + //SEG1030 [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 - //SEG1030 gfx_init_plane_horisontal2::@1 + //SEG1031 gfx_init_plane_horisontal2::@1 b1: - //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 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: - //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 + //SEG1033 [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 - //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 (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 - //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 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: - //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 + //SEG1036 [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 + //SEG1037 [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 - //SEG1037 gfx_init_plane_horisontal2::@2 + //SEG1038 gfx_init_plane_horisontal2::@2 b2: - //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 + //SEG1039 [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 - //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 + //SEG1040 [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 - //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 + //SEG1041 [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 - //SEG1041 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1042 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1042 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuz1=_inc_vbuz1 + //SEG1043 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuz1=_inc_vbuz1 inc ax - //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 + //SEG1044 [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 - //SEG1044 gfx_init_plane_horisontal2::@3 + //SEG1045 gfx_init_plane_horisontal2::@3 b3: - //SEG1045 [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1046 [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //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 + //SEG1047 [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 - //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 [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 - //SEG1048 gfx_init_plane_horisontal2::@4 + //SEG1049 gfx_init_plane_horisontal2::@4 b4: - //SEG1049 [528] call dtvSetCpuBankSegment1 - //SEG1050 [505] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] + //SEG1050 [528] call dtvSetCpuBankSegment1 + //SEG1051 [505] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //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 + //SEG1052 [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 - //SEG1052 gfx_init_plane_horisontal2::@return + //SEG1053 gfx_init_plane_horisontal2::@return breturn: - //SEG1053 [529] return + //SEG1054 [529] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG1054 gfx_init_plane_vertical +//SEG1055 gfx_init_plane_vertical // Initialize Plane with Vertical Stripes gfx_init_plane_vertical: { .const gfxbCpuBank = PLANE_VERTICAL/$4000 .label gfxb = $49 .label bx = $4b .label by = $48 - //SEG1055 [531] call dtvSetCpuBankSegment1 - //SEG1056 [505] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] + //SEG1056 [531] call dtvSetCpuBankSegment1 + //SEG1057 [505] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_vertical: - //SEG1057 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1058 [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 - //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 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: - //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 + //SEG1060 [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 - //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 + //SEG1061 [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 - //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 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: - //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 + //SEG1063 [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 + //SEG1064 [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 - //SEG1064 gfx_init_plane_vertical::@1 + //SEG1065 gfx_init_plane_vertical::@1 b1: - //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 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: - //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 + //SEG1067 [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 - //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 (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 - //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 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: - //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 + //SEG1070 [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 + //SEG1071 [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 - //SEG1071 gfx_init_plane_vertical::@2 + //SEG1072 gfx_init_plane_vertical::@2 b2: - //SEG1072 [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG1073 [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 - //SEG1073 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG1074 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1074 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuz1=_inc_vbuz1 + //SEG1075 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuz1=_inc_vbuz1 inc bx - //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 + //SEG1076 [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 - //SEG1076 gfx_init_plane_vertical::@3 + //SEG1077 gfx_init_plane_vertical::@3 b3: - //SEG1077 [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 + //SEG1078 [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 inc by - //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 + //SEG1079 [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 - //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 [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 - //SEG1080 gfx_init_plane_vertical::@4 + //SEG1081 gfx_init_plane_vertical::@4 b4: - //SEG1081 [541] call dtvSetCpuBankSegment1 - //SEG1082 [505] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] + //SEG1082 [541] call dtvSetCpuBankSegment1 + //SEG1083 [505] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //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 + //SEG1084 [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 - //SEG1084 gfx_init_plane_vertical::@return + //SEG1085 gfx_init_plane_vertical::@return breturn: - //SEG1085 [542] return + //SEG1086 [542] return rts } -//SEG1086 gfx_init_plane_horisontal +//SEG1087 gfx_init_plane_horisontal // Initialize Plane with Horizontal Stripes gfx_init_plane_horisontal: { .const gfxbCpuBank = PLANE_HORISONTAL/$4000 @@ -17565,118 +17566,118 @@ gfx_init_plane_horisontal: { .label gfxa = $4d .label ax = $4f .label ay = $4c - //SEG1087 [544] call dtvSetCpuBankSegment1 - //SEG1088 [505] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] + //SEG1088 [544] call dtvSetCpuBankSegment1 + //SEG1089 [505] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_horisontal: - //SEG1089 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1090 [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 - //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 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: - //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 + //SEG1092 [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 - //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 + //SEG1093 [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 - //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 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: - //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 + //SEG1095 [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 + //SEG1096 [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 - //SEG1096 gfx_init_plane_horisontal::@1 + //SEG1097 gfx_init_plane_horisontal::@1 b1: - //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 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: - //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 + //SEG1099 [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 - //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 (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 - //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 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: - //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 + //SEG1102 [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 + //SEG1103 [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 - //SEG1103 gfx_init_plane_horisontal::@2 + //SEG1104 gfx_init_plane_horisontal::@2 b2: - //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 + //SEG1105 [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 - //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 + //SEG1106 [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 - //SEG1106 gfx_init_plane_horisontal::@5 + //SEG1107 gfx_init_plane_horisontal::@5 b5: - //SEG1107 [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 + //SEG1108 [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 - //SEG1108 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1109 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //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 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: - //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 [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 - //SEG1111 gfx_init_plane_horisontal::@4 + //SEG1112 gfx_init_plane_horisontal::@4 b4: - //SEG1112 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuz1=_inc_vbuz1 + //SEG1113 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuz1=_inc_vbuz1 inc ax - //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 + //SEG1114 [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 - //SEG1114 gfx_init_plane_horisontal::@7 + //SEG1115 gfx_init_plane_horisontal::@7 b7: - //SEG1115 [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1116 [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //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 + //SEG1117 [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 - //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 [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 - //SEG1118 gfx_init_plane_horisontal::@8 + //SEG1119 gfx_init_plane_horisontal::@8 b8: - //SEG1119 [557] call dtvSetCpuBankSegment1 - //SEG1120 [505] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] + //SEG1120 [557] call dtvSetCpuBankSegment1 + //SEG1121 [505] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //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 + //SEG1122 [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 - //SEG1122 gfx_init_plane_horisontal::@return + //SEG1123 gfx_init_plane_horisontal::@return breturn: - //SEG1123 [558] return + //SEG1124 [558] return rts - //SEG1124 gfx_init_plane_horisontal::@3 + //SEG1125 gfx_init_plane_horisontal::@3 b3: - //SEG1125 [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1126 [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 - //SEG1126 [560] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1127 [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 } -//SEG1127 gfx_init_plane_charset8 +//SEG1128 gfx_init_plane_charset8 // Initialize Plane with 8bpp charset gfx_init_plane_charset8: { .const gfxbCpuBank = PLANE_CHARSET8/$4000 @@ -17689,175 +17690,175 @@ gfx_init_plane_charset8: { .label cr = $53 .label ch = $50 .label c = $59 - //SEG1128 [562] call dtvSetCpuBankSegment1 - //SEG1129 [505] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG1129 [562] call dtvSetCpuBankSegment1 + //SEG1130 [505] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_charset8: - //SEG1130 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1131 [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 - //SEG1131 gfx_init_plane_charset8::@9 + //SEG1132 gfx_init_plane_charset8::@9 b9: - //SEG1132 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG1133 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //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 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: - //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 + //SEG1135 [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 - //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 + //SEG1136 [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 - //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 + //SEG1137 [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 - //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 + //SEG1138 [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 - //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 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: - //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 + //SEG1140 [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 + //SEG1141 [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 + //SEG1142 [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 + //SEG1143 [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 - //SEG1143 gfx_init_plane_charset8::@1 + //SEG1144 gfx_init_plane_charset8::@1 b1: - //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 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: - //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 + //SEG1146 [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 - //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 + //SEG1147 [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 + //SEG1148 [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 + //SEG1149 [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 - //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 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: - //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 + //SEG1151 [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 + //SEG1152 [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 + //SEG1153 [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 + //SEG1154 [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 - //SEG1154 gfx_init_plane_charset8::@2 + //SEG1155 gfx_init_plane_charset8::@2 b2: - //SEG1155 [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG1156 [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 - //SEG1156 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1157 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //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 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: - //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 + //SEG1159 [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 - //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 + //SEG1160 [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 + //SEG1161 [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 + //SEG1162 [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 - //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 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: - //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 + //SEG1164 [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 + //SEG1165 [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 + //SEG1166 [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 + //SEG1167 [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 - //SEG1167 gfx_init_plane_charset8::@3 + //SEG1168 gfx_init_plane_charset8::@3 b3: - //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 + //SEG1169 [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 - //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 + //SEG1170 [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 - //SEG1170 gfx_init_plane_charset8::@5 + //SEG1171 gfx_init_plane_charset8::@5 b5: - //SEG1171 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuz1=vbuz2 + //SEG1172 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuz1=vbuz2 lda col sta c - //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 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: - //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 + //SEG1174 [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 - //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] + //SEG1175 [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: - //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 + //SEG1176 [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 - //SEG1176 gfx_init_plane_charset8::@4 + //SEG1177 gfx_init_plane_charset8::@4 b4: - //SEG1177 [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuz2 + //SEG1178 [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 - //SEG1178 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1179 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+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 + //SEG1180 [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 - //SEG1180 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG1181 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1181 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuz1=_inc_vbuz1 + //SEG1182 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuz1=_inc_vbuz1 inc cp - //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 + //SEG1183 [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 - //SEG1183 gfx_init_plane_charset8::@6 + //SEG1184 gfx_init_plane_charset8::@6 b6: - //SEG1184 [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 + //SEG1185 [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //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 + //SEG1186 [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 - //SEG1186 gfx_init_plane_charset8::@7 + //SEG1187 gfx_init_plane_charset8::@7 b7: - //SEG1187 [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 + //SEG1188 [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //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 + //SEG1189 [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 - //SEG1189 gfx_init_plane_charset8::@8 + //SEG1190 gfx_init_plane_charset8::@8 b8: - //SEG1190 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1191 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1191 [584] call dtvSetCpuBankSegment1 - //SEG1192 [505] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG1192 [584] call dtvSetCpuBankSegment1 + //SEG1193 [505] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //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 + //SEG1194 [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 - //SEG1194 gfx_init_plane_charset8::@return + //SEG1195 gfx_init_plane_charset8::@return breturn: - //SEG1195 [585] return + //SEG1196 [585] return rts } -//SEG1196 gfx_init_plane_8bppchunky +//SEG1197 gfx_init_plane_8bppchunky // Initialize 8BPP Chunky Bitmap (contains 8bpp pixels) gfx_init_plane_8bppchunky: { .label _6 = $136 @@ -17866,54 +17867,54 @@ gfx_init_plane_8bppchunky: { .label x = $5b .label gfxbCpuBank = $5d .label y = $5a - //SEG1197 [587] call dtvSetCpuBankSegment1 - //SEG1198 [505] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] + //SEG1198 [587] call dtvSetCpuBankSegment1 + //SEG1199 [505] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_8bppchunky: - //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 + //SEG1200 [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 - //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 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: - //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 + //SEG1202 [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 - //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 + //SEG1203 [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 - //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 + //SEG1204 [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 - //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 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: - //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 + //SEG1206 [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 + //SEG1207 [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 + //SEG1208 [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 - //SEG1208 gfx_init_plane_8bppchunky::@1 + //SEG1209 gfx_init_plane_8bppchunky::@1 b1: - //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 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: - //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 + //SEG1211 [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 + //SEG1212 [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 - //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 (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 - //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 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: - //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 + //SEG1215 [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 + //SEG1216 [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 + //SEG1217 [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 - //SEG1217 gfx_init_plane_8bppchunky::@2 + //SEG1218 gfx_init_plane_8bppchunky::@2 b2: - //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 + //SEG1219 [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 @@ -17921,38 +17922,38 @@ gfx_init_plane_8bppchunky: { cmp #<$8000 bne b3_from_b2 jmp b4 - //SEG1219 gfx_init_plane_8bppchunky::@4 + //SEG1220 gfx_init_plane_8bppchunky::@4 b4: - //SEG1220 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuz1=vbuz2 + //SEG1221 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuz1=vbuz2 lda gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx - //SEG1221 [592] call dtvSetCpuBankSegment1 - //SEG1222 [505] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] + //SEG1222 [592] call dtvSetCpuBankSegment1 + //SEG1223 [505] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG1223 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy + //SEG1224 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b8 - //SEG1224 gfx_init_plane_8bppchunky::@8 + //SEG1225 gfx_init_plane_8bppchunky::@8 b8: - //SEG1225 [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuz1=_inc_vbuz1 + //SEG1226 [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuz1=_inc_vbuz1 inc gfxbCpuBank - //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 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: - //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 + //SEG1228 [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 + //SEG1229 [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 - //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 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: - //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 + //SEG1231 [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 + //SEG1232 [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 - //SEG1232 gfx_init_plane_8bppchunky::@3 + //SEG1233 gfx_init_plane_8bppchunky::@3 b3: - //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 + //SEG1234 [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 @@ -17960,24 +17961,24 @@ gfx_init_plane_8bppchunky: { lda #0 adc x+1 sta _6+1 - //SEG1234 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuz1=_byte_vwuz2 + //SEG1235 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuz1=_byte_vwuz2 lda _6 sta c - //SEG1235 [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuz2 + //SEG1236 [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 - //SEG1236 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG1237 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1237 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG1238 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //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 + //SEG1239 [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 @@ -17985,96 +17986,96 @@ gfx_init_plane_8bppchunky: { cmp #<$140 bne b2_from_b3 jmp b5 - //SEG1239 gfx_init_plane_8bppchunky::@5 + //SEG1240 gfx_init_plane_8bppchunky::@5 b5: - //SEG1240 [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 + //SEG1241 [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG1242 [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 - //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 [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 - //SEG1243 gfx_init_plane_8bppchunky::@6 + //SEG1244 gfx_init_plane_8bppchunky::@6 b6: - //SEG1244 [604] call dtvSetCpuBankSegment1 - //SEG1245 [505] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] + //SEG1245 [604] call dtvSetCpuBankSegment1 + //SEG1246 [505] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b6: - //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 + //SEG1247 [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 - //SEG1247 gfx_init_plane_8bppchunky::@return + //SEG1248 gfx_init_plane_8bppchunky::@return breturn: - //SEG1248 [605] return + //SEG1249 [605] return rts } -//SEG1249 gfx_init_vic_bitmap +//SEG1250 gfx_init_vic_bitmap // Initialize VIC bitmap gfx_init_vic_bitmap: { .const lines_cnt = 9 .label l = $60 - //SEG1250 [607] call bitmap_init - //SEG1251 [759] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] + //SEG1251 [607] call bitmap_init + //SEG1252 [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 - //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 [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 - //SEG1253 gfx_init_vic_bitmap::@3 + //SEG1254 gfx_init_vic_bitmap::@3 b3: - //SEG1254 [609] call bitmap_clear + //SEG1255 [609] call bitmap_clear jsr bitmap_clear - //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 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: - //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 + //SEG1257 [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 - //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 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: - //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 [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 - //SEG1259 gfx_init_vic_bitmap::@1 + //SEG1260 gfx_init_vic_bitmap::@1 b1: - //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 + //SEG1261 [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 - //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 + //SEG1262 [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 - //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 + //SEG1263 [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 - //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 + //SEG1264 [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 - //SEG1264 [615] call bitmap_line + //SEG1265 [615] call bitmap_line jsr bitmap_line jmp b5 - //SEG1265 gfx_init_vic_bitmap::@5 + //SEG1266 gfx_init_vic_bitmap::@5 b5: - //SEG1266 [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 + //SEG1267 [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //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 + //SEG1268 [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 - //SEG1268 gfx_init_vic_bitmap::@return + //SEG1269 gfx_init_vic_bitmap::@return breturn: - //SEG1269 [618] return + //SEG1270 [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 } -//SEG1270 bitmap_line +//SEG1271 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = $140 @@ -18087,305 +18088,305 @@ bitmap_line: { .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 + //SEG1272 [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 - //SEG1272 bitmap_line::@15 + //SEG1273 bitmap_line::@15 b15: - //SEG1273 [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1274 [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 - //SEG1274 [621] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuz2_then_la1 + //SEG1275 [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 - //SEG1275 bitmap_line::@16 + //SEG1276 bitmap_line::@16 b16: - //SEG1276 [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1277 [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 - //SEG1277 [623] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1278 [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 - //SEG1278 bitmap_line::@17 + //SEG1279 bitmap_line::@17 b17: - //SEG1279 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1280 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxi.y - //SEG1280 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1281 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_ydxi.x - //SEG1281 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1282 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y1 - //SEG1282 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 + //SEG1283 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 lda yd_1 sta bitmap_line_ydxi.yd - //SEG1283 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1284 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_ydxi.xd - //SEG1284 [629] call bitmap_line_ydxi - //SEG1285 [703] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1285 [629] call bitmap_line_ydxi + //SEG1286 [703] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] bitmap_line_ydxi_from_b17: - //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 + //SEG1287 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1288 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1289 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1290 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1291 [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 - //SEG1291 bitmap_line::@return + //SEG1292 bitmap_line::@return breturn: - //SEG1292 [630] return + //SEG1293 [630] return rts - //SEG1293 bitmap_line::@3 + //SEG1294 bitmap_line::@3 b3: - //SEG1294 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1295 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1295 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1296 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_xdyi.y - //SEG1296 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1297 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x1 - //SEG1297 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1298 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_xdyi.xd - //SEG1298 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 + //SEG1299 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 lda yd_1 sta bitmap_line_xdyi.yd - //SEG1299 [636] call bitmap_line_xdyi - //SEG1300 [681] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1300 [636] call bitmap_line_xdyi + //SEG1301 [681] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] bitmap_line_xdyi_from_b3: - //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 + //SEG1302 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1303 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1304 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1305 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1306 [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 - //SEG1306 bitmap_line::@2 + //SEG1307 bitmap_line::@2 b2: - //SEG1307 [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1308 [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 - //SEG1308 [638] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1309 [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 - //SEG1309 bitmap_line::@20 + //SEG1310 bitmap_line::@20 b20: - //SEG1310 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1311 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1311 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1312 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_ydxd.x - //SEG1312 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1313 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxd.y1 - //SEG1313 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 + //SEG1314 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 lda yd sta bitmap_line_ydxd.yd - //SEG1314 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1315 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_ydxd.xd - //SEG1315 [644] call bitmap_line_ydxd - //SEG1316 [733] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1316 [644] call bitmap_line_ydxd + //SEG1317 [733] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] bitmap_line_ydxd_from_b20: - //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 + //SEG1318 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1319 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1320 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1321 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1322 [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 - //SEG1322 bitmap_line::@6 + //SEG1323 bitmap_line::@6 b6: - //SEG1323 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1324 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1324 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1325 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_xdyd.y - //SEG1325 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1326 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1326 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1327 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_xdyd.xd - //SEG1327 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 + //SEG1328 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 lda yd sta bitmap_line_xdyd.yd - //SEG1328 [650] call bitmap_line_xdyd - //SEG1329 [718] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1329 [650] call bitmap_line_xdyd + //SEG1330 [718] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] bitmap_line_xdyd_from_b6: - //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 + //SEG1331 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1332 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1333 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1334 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1335 [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 - //SEG1335 bitmap_line::@1 + //SEG1336 bitmap_line::@1 b1: - //SEG1336 [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1337 [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 - //SEG1337 [652] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuz2_then_la1 + //SEG1338 [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 - //SEG1338 bitmap_line::@23 + //SEG1339 bitmap_line::@23 b23: - //SEG1339 [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1340 [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 - //SEG1340 [654] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1341 [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 - //SEG1341 bitmap_line::@24 + //SEG1342 bitmap_line::@24 b24: - //SEG1342 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1343 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxd.y - //SEG1343 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1344 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_ydxd.x - //SEG1344 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1345 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y1 - //SEG1345 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 + //SEG1346 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 lda yd_3 sta bitmap_line_ydxd.yd - //SEG1346 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1347 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_ydxd.xd - //SEG1347 [660] call bitmap_line_ydxd - //SEG1348 [733] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1348 [660] call bitmap_line_ydxd + //SEG1349 [733] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] bitmap_line_ydxd_from_b24: - //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 + //SEG1350 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1351 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1352 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1353 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1354 [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 - //SEG1354 bitmap_line::@10 + //SEG1355 bitmap_line::@10 b10: - //SEG1355 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1356 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1356 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1357 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_xdyd.y - //SEG1357 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1358 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x1 - //SEG1358 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1359 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_xdyd.xd - //SEG1359 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 + //SEG1360 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 lda yd_3 sta bitmap_line_xdyd.yd - //SEG1360 [666] call bitmap_line_xdyd - //SEG1361 [718] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1361 [666] call bitmap_line_xdyd + //SEG1362 [718] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] bitmap_line_xdyd_from_b10: - //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 + //SEG1363 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1364 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1365 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1366 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1367 [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 - //SEG1367 bitmap_line::@9 + //SEG1368 bitmap_line::@9 b9: - //SEG1368 [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1369 [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 - //SEG1369 [668] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1370 [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 - //SEG1370 bitmap_line::@27 + //SEG1371 bitmap_line::@27 b27: - //SEG1371 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1372 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1372 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1373 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_ydxi.x - //SEG1373 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1374 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxi.y1 - //SEG1374 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 + //SEG1375 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 lda yd_10 sta bitmap_line_ydxi.yd - //SEG1375 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1376 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_ydxi.xd - //SEG1376 [674] call bitmap_line_ydxi - //SEG1377 [703] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1377 [674] call bitmap_line_ydxi + //SEG1378 [703] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] bitmap_line_ydxi_from_b27: - //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 + //SEG1379 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1380 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1381 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1382 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1383 [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 - //SEG1383 bitmap_line::@13 + //SEG1384 bitmap_line::@13 b13: - //SEG1384 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1385 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1385 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1386 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_xdyi.y - //SEG1386 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1387 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1387 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1388 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_xdyi.xd - //SEG1388 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 + //SEG1389 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 lda yd_10 sta bitmap_line_xdyi.yd - //SEG1389 [680] call bitmap_line_xdyi - //SEG1390 [681] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1390 [680] call bitmap_line_xdyi + //SEG1391 [681] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] bitmap_line_xdyi_from_b13: - //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 + //SEG1392 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1393 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1394 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1395 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1396 [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 } -//SEG1396 bitmap_line_xdyi +//SEG1397 bitmap_line_xdyi bitmap_line_xdyi: { .label _6 = $143 .label x = $64 @@ -18394,78 +18395,78 @@ bitmap_line_xdyi: { .label xd = $62 .label yd = $61 .label e = $66 - //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 + //SEG1398 [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 - //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 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: - //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 + //SEG1400 [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 + //SEG1401 [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 + //SEG1402 [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 - //SEG1402 bitmap_line_xdyi::@1 + //SEG1403 bitmap_line_xdyi::@1 b1: - //SEG1403 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 + //SEG1404 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1404 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 + //SEG1405 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1405 [686] call bitmap_plot - //SEG1406 [696] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1406 [686] call bitmap_plot + //SEG1407 [696] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from_b1: - //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 + //SEG1408 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1409 [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 - //SEG1409 bitmap_line_xdyi::@5 + //SEG1410 bitmap_line_xdyi::@5 b5: - //SEG1410 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1411 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1411 [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1412 [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 - //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 + //SEG1413 [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 - //SEG1413 bitmap_line_xdyi::@3 + //SEG1414 bitmap_line_xdyi::@3 b3: - //SEG1414 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1415 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1415 [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1416 [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 - //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 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: - //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 + //SEG1418 [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 + //SEG1419 [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 - //SEG1419 bitmap_line_xdyi::@2 + //SEG1420 bitmap_line_xdyi::@2 b2: - //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 + //SEG1421 [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 - //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 + //SEG1422 [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 - //SEG1422 bitmap_line_xdyi::@return + //SEG1423 bitmap_line_xdyi::@return breturn: - //SEG1423 [695] return + //SEG1424 [695] return rts } -//SEG1424 bitmap_plot +//SEG1425 bitmap_plot bitmap_plot: { .label _0 = $148 .label _1 = $14a @@ -18473,19 +18474,19 @@ bitmap_plot: { .label plotter_y = $146 .label x = $67 .label y = $68 - //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 + //SEG1426 [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 - //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 + //SEG1427 [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 - //SEG1427 [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG1428 [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 @@ -18493,23 +18494,23 @@ bitmap_plot: { lda plotter_x+1 adc plotter_y+1 sta _0+1 - //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 + //SEG1429 [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 - //SEG1429 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 + //SEG1430 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 lda _1 ldy #0 sta (_0),y jmp breturn - //SEG1430 bitmap_plot::@return + //SEG1431 bitmap_plot::@return breturn: - //SEG1431 [702] return + //SEG1432 [702] return rts } -//SEG1432 bitmap_line_ydxi +//SEG1433 bitmap_line_ydxi bitmap_line_ydxi: { .label _6 = $14b .label y = $6d @@ -18518,78 +18519,78 @@ bitmap_line_ydxi: { .label yd = $6a .label xd = $69 .label e = $6e - //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 + //SEG1434 [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 - //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 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: - //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 + //SEG1436 [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 + //SEG1437 [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 + //SEG1438 [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 - //SEG1438 bitmap_line_ydxi::@1 + //SEG1439 bitmap_line_ydxi::@1 b1: - //SEG1439 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 + //SEG1440 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1440 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 + //SEG1441 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1441 [708] call bitmap_plot - //SEG1442 [696] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1442 [708] call bitmap_plot + //SEG1443 [696] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from_b1: - //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 + //SEG1444 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1445 [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 - //SEG1445 bitmap_line_ydxi::@5 + //SEG1446 bitmap_line_ydxi::@5 b5: - //SEG1446 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1447 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1447 [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1448 [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 - //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 + //SEG1449 [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 - //SEG1449 bitmap_line_ydxi::@3 + //SEG1450 bitmap_line_ydxi::@3 b3: - //SEG1450 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1451 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1451 [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1452 [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 - //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 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: - //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 + //SEG1454 [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 + //SEG1455 [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 - //SEG1455 bitmap_line_ydxi::@2 + //SEG1456 bitmap_line_ydxi::@2 b2: - //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 + //SEG1457 [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 - //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 + //SEG1458 [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 - //SEG1458 bitmap_line_ydxi::@return + //SEG1459 bitmap_line_ydxi::@return breturn: - //SEG1459 [717] return + //SEG1460 [717] return rts } -//SEG1460 bitmap_line_xdyd +//SEG1461 bitmap_line_xdyd bitmap_line_xdyd: { .label _6 = $14c .label x = $72 @@ -18598,78 +18599,78 @@ bitmap_line_xdyd: { .label xd = $70 .label yd = $6f .label e = $74 - //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 + //SEG1462 [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 - //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 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: - //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 + //SEG1464 [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 + //SEG1465 [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 + //SEG1466 [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 - //SEG1466 bitmap_line_xdyd::@1 + //SEG1467 bitmap_line_xdyd::@1 b1: - //SEG1467 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 + //SEG1468 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1468 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 + //SEG1469 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1469 [723] call bitmap_plot - //SEG1470 [696] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1470 [723] call bitmap_plot + //SEG1471 [696] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from_b1: - //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 + //SEG1472 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1473 [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 - //SEG1473 bitmap_line_xdyd::@5 + //SEG1474 bitmap_line_xdyd::@5 b5: - //SEG1474 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1475 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1475 [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1476 [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 - //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 + //SEG1477 [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 - //SEG1477 bitmap_line_xdyd::@3 + //SEG1478 bitmap_line_xdyd::@3 b3: - //SEG1478 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1479 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1479 [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1480 [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 - //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 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: - //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 + //SEG1482 [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 + //SEG1483 [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 - //SEG1483 bitmap_line_xdyd::@2 + //SEG1484 bitmap_line_xdyd::@2 b2: - //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 + //SEG1485 [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 - //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 + //SEG1486 [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 - //SEG1486 bitmap_line_xdyd::@return + //SEG1487 bitmap_line_xdyd::@return breturn: - //SEG1487 [732] return + //SEG1488 [732] return rts } -//SEG1488 bitmap_line_ydxd +//SEG1489 bitmap_line_ydxd bitmap_line_ydxd: { .label _6 = $14d .label y = $79 @@ -18678,153 +18679,153 @@ bitmap_line_ydxd: { .label yd = $76 .label xd = $75 .label e = $7a - //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 + //SEG1490 [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 - //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 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: - //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 + //SEG1492 [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 + //SEG1493 [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 + //SEG1494 [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 - //SEG1494 bitmap_line_ydxd::@1 + //SEG1495 bitmap_line_ydxd::@1 b1: - //SEG1495 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 + //SEG1496 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1496 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 + //SEG1497 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1497 [738] call bitmap_plot - //SEG1498 [696] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1498 [738] call bitmap_plot + //SEG1499 [696] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from_b1: - //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 + //SEG1500 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1501 [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 - //SEG1501 bitmap_line_ydxd::@5 + //SEG1502 bitmap_line_ydxd::@5 b5: - //SEG1502 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1503 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1503 [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1504 [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 - //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 + //SEG1505 [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 - //SEG1505 bitmap_line_ydxd::@3 + //SEG1506 bitmap_line_ydxd::@3 b3: - //SEG1506 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 + //SEG1507 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec x - //SEG1507 [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1508 [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 - //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 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: - //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 + //SEG1510 [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 + //SEG1511 [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 - //SEG1511 bitmap_line_ydxd::@2 + //SEG1512 bitmap_line_ydxd::@2 b2: - //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 + //SEG1513 [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 - //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 + //SEG1514 [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 - //SEG1514 bitmap_line_ydxd::@return + //SEG1515 bitmap_line_ydxd::@return breturn: - //SEG1515 [747] return + //SEG1516 [747] return rts } -//SEG1516 bitmap_clear +//SEG1517 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = $7c .label x = $7e .label y = $7b .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 + //SEG1518 [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 - //SEG1518 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG1519 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG1519 [750] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1520 [750] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //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 + //SEG1521 [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 - //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 (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1522 [750] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1523 [750] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //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 + //SEG1524 [750] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1525 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1525 bitmap_clear::@1 + //SEG1526 bitmap_clear::@1 b1: - //SEG1526 [751] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1527 [751] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //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 + //SEG1528 [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 - //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 (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1529 [751] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1530 [751] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //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 + //SEG1531 [751] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1532 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1532 bitmap_clear::@2 + //SEG1533 bitmap_clear::@2 b2: - //SEG1533 [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1534 [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 - //SEG1534 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1535 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1535 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG1536 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //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 + //SEG1537 [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 - //SEG1537 bitmap_clear::@3 + //SEG1538 bitmap_clear::@3 b3: - //SEG1538 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1539 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG1540 [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 - //SEG1540 bitmap_clear::@return + //SEG1541 bitmap_clear::@return breturn: - //SEG1541 [758] return + //SEG1542 [758] return rts } -//SEG1542 bitmap_init +//SEG1543 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _0 = $150 @@ -18837,110 +18838,110 @@ bitmap_init: { .label x = $7f .label y = $81 .label yoffs = $82 - //SEG1543 [760] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1544 [760] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //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 + //SEG1545 [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 - //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 + //SEG1546 [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 - //SEG1546 [760] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1547 [760] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //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 + //SEG1548 [760] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1549 [760] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG1549 bitmap_init::@1 + //SEG1550 bitmap_init::@1 b1: - //SEG1550 [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 + //SEG1551 [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 - //SEG1551 [762] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1552 [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 - //SEG1552 [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG1553 [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 - //SEG1553 [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1554 [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 - //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 + //SEG1555 [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 - //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 + //SEG1556 [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 - //SEG1556 [767] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1557 [767] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //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 + //SEG1558 [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 - //SEG1558 bitmap_init::@2 + //SEG1559 bitmap_init::@2 b2: - //SEG1559 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG1560 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //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 + //SEG1561 [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 - //SEG1561 [770] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1562 [770] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //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 + //SEG1563 [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 - //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 + //SEG1564 [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 - //SEG1564 [770] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1565 [770] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //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 + //SEG1566 [770] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1567 [770] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG1567 bitmap_init::@3 + //SEG1568 bitmap_init::@3 b3: - //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 + //SEG1569 [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 - //SEG1569 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG1570 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG1570 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1571 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora _7 sta _8 - //SEG1571 [774] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1572 [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 - //SEG1572 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG1573 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG1573 [776] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1574 [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 - //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 + //SEG1575 [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 - //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 + //SEG1576 [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 - //SEG1576 bitmap_init::@7 + //SEG1577 bitmap_init::@7 b7: - //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 + //SEG1578 [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 @@ -18948,194 +18949,194 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 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: - //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 [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 - //SEG1580 bitmap_init::@4 + //SEG1581 bitmap_init::@4 b4: - //SEG1581 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG1582 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG1583 [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 - //SEG1583 bitmap_init::@return + //SEG1584 bitmap_init::@return breturn: - //SEG1584 [783] return + //SEG1585 [783] return rts - //SEG1585 [784] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1586 [784] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG1586 bitmap_init::@10 + //SEG1587 bitmap_init::@10 b10: - //SEG1587 [767] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1588 [767] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG1588 [767] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG1589 [767] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG1589 gfx_init_charset +//SEG1590 gfx_init_charset gfx_init_charset: { .label charset = $87 .label chargen = $85 .label l = $89 .label c = $84 - //SEG1590 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG1591 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG1591 [786] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] + //SEG1592 [786] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] b1_from_gfx_init_charset: - //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 + //SEG1593 [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 - //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 + //SEG1594 [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 - //SEG1594 [786] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 + //SEG1595 [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 - //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 from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] b1_from_b3: - //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 + //SEG1597 [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 + //SEG1598 [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 + //SEG1599 [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 - //SEG1599 gfx_init_charset::@1 + //SEG1600 gfx_init_charset::@1 b1: - //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 from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] b2_from_b1: - //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 + //SEG1602 [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 - //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 + //SEG1603 [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 + //SEG1604 [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 - //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 from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] b2_from_b2: - //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 + //SEG1606 [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 + //SEG1607 [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 + //SEG1608 [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 - //SEG1608 gfx_init_charset::@2 + //SEG1609 gfx_init_charset::@2 b2: - //SEG1609 [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1610 [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 - //SEG1610 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 + //SEG1611 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 inc charset bne !+ inc charset+1 !: - //SEG1611 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1612 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1612 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuz1=_inc_vbuz1 + //SEG1613 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuz1=_inc_vbuz1 inc l - //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 + //SEG1614 [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 - //SEG1614 gfx_init_charset::@3 + //SEG1615 gfx_init_charset::@3 b3: - //SEG1615 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 + //SEG1616 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 inc c - //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 + //SEG1617 [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 - //SEG1617 gfx_init_charset::@4 + //SEG1618 gfx_init_charset::@4 b4: - //SEG1618 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG1619 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT jmp breturn - //SEG1619 gfx_init_charset::@return + //SEG1620 gfx_init_charset::@return breturn: - //SEG1620 [796] return + //SEG1621 [796] return rts } -//SEG1621 gfx_init_screen4 +//SEG1622 gfx_init_screen4 // Initialize VIC screen 4 - all chars are 00 gfx_init_screen4: { .label ch = $8b .label cx = $8d .label cy = $8a - //SEG1622 [798] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] + //SEG1623 [798] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] b1_from_gfx_init_screen4: - //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 + //SEG1624 [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 - //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 + //SEG1625 [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 - //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 from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] b1_from_b3: - //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 + //SEG1627 [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 + //SEG1628 [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 - //SEG1628 gfx_init_screen4::@1 + //SEG1629 gfx_init_screen4::@1 b1: - //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 from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] b2_from_b1: - //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 + //SEG1631 [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 - //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 (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 - //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 from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] b2_from_b2: - //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 + //SEG1634 [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 + //SEG1635 [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 - //SEG1635 gfx_init_screen4::@2 + //SEG1636 gfx_init_screen4::@2 b2: - //SEG1636 [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1637 [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 - //SEG1637 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1638 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1638 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1639 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //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 + //SEG1640 [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 - //SEG1640 gfx_init_screen4::@3 + //SEG1641 gfx_init_screen4::@3 b3: - //SEG1641 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1642 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1643 [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 - //SEG1643 gfx_init_screen4::@return + //SEG1644 gfx_init_screen4::@return breturn: - //SEG1644 [806] return + //SEG1645 [806] return rts } -//SEG1645 gfx_init_screen3 +//SEG1646 gfx_init_screen3 // Initialize VIC screen 3 ( value is %00xx00yy where xx is xpos and yy is ypos gfx_init_screen3: { .label _0 = $156 @@ -19145,88 +19146,88 @@ gfx_init_screen3: { .label ch = $90 .label cx = $8f .label cy = $8e - //SEG1646 [808] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] + //SEG1647 [808] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] b1_from_gfx_init_screen3: - //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 + //SEG1648 [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 - //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 + //SEG1649 [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 - //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 from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] b1_from_b3: - //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 + //SEG1651 [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 + //SEG1652 [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 - //SEG1652 gfx_init_screen3::@1 + //SEG1653 gfx_init_screen3::@1 b1: - //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 from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] b2_from_b1: - //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 + //SEG1655 [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 + //SEG1656 [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 - //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 from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] b2_from_b2: - //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 + //SEG1658 [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 + //SEG1659 [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 - //SEG1659 gfx_init_screen3::@2 + //SEG1660 gfx_init_screen3::@2 b2: - //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 + //SEG1661 [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 - //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 + //SEG1662 [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 - //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 + //SEG1663 [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 - //SEG1663 [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1664 [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 - //SEG1664 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuz2 + //SEG1665 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuz2 lda _3 ldy #0 sta (ch),y - //SEG1665 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1666 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1666 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1667 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //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 + //SEG1668 [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 - //SEG1668 gfx_init_screen3::@3 + //SEG1669 gfx_init_screen3::@3 b3: - //SEG1669 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1670 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1671 [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 - //SEG1671 gfx_init_screen3::@return + //SEG1672 gfx_init_screen3::@return breturn: - //SEG1672 [820] return + //SEG1673 [820] return rts } -//SEG1673 gfx_init_screen2 +//SEG1674 gfx_init_screen2 // Initialize VIC screen 2 ( value is %ccccrrrr where cccc is (x+y mod $f) and rrrr is %1111-%cccc) gfx_init_screen2: { .label _0 = $15a @@ -19237,94 +19238,94 @@ gfx_init_screen2: { .label ch = $94 .label cx = $93 .label cy = $92 - //SEG1674 [822] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] + //SEG1675 [822] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] b1_from_gfx_init_screen2: - //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 + //SEG1676 [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 - //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 + //SEG1677 [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 - //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 from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] b1_from_b3: - //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 + //SEG1679 [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 + //SEG1680 [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 - //SEG1680 gfx_init_screen2::@1 + //SEG1681 gfx_init_screen2::@1 b1: - //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 from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] b2_from_b1: - //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 + //SEG1683 [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 + //SEG1684 [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 - //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 from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] b2_from_b2: - //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 + //SEG1686 [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 + //SEG1687 [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 - //SEG1687 gfx_init_screen2::@2 + //SEG1688 gfx_init_screen2::@2 b2: - //SEG1688 [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG1689 [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 - //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 + //SEG1690 [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 - //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 + //SEG1691 [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 - //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 + //SEG1692 [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 - //SEG1692 [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1693 [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 - //SEG1693 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuz2 + //SEG1694 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuz2 lda _4 ldy #0 sta (ch),y - //SEG1694 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1695 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1695 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1696 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //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 + //SEG1697 [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 - //SEG1697 gfx_init_screen2::@3 + //SEG1698 gfx_init_screen2::@3 b3: - //SEG1698 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1699 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1700 [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 - //SEG1700 gfx_init_screen2::@return + //SEG1701 gfx_init_screen2::@return breturn: - //SEG1701 [835] return + //SEG1702 [835] return rts } -//SEG1702 gfx_init_screen1 +//SEG1703 gfx_init_screen1 // Initialize VIC screen 1 ( value is %0000cccc where cccc is (x+y mod $f)) gfx_init_screen1: { .label _0 = $15f @@ -19332,78 +19333,78 @@ gfx_init_screen1: { .label ch = $98 .label cx = $97 .label cy = $96 - //SEG1703 [837] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] + //SEG1704 [837] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] b1_from_gfx_init_screen1: - //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 + //SEG1705 [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 - //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 + //SEG1706 [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 - //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 from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] b1_from_b3: - //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 + //SEG1708 [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 + //SEG1709 [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 - //SEG1709 gfx_init_screen1::@1 + //SEG1710 gfx_init_screen1::@1 b1: - //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 from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] b2_from_b1: - //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 + //SEG1712 [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 + //SEG1713 [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 - //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 from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] b2_from_b2: - //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 + //SEG1715 [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 + //SEG1716 [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 - //SEG1716 gfx_init_screen1::@2 + //SEG1717 gfx_init_screen1::@2 b2: - //SEG1717 [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG1718 [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 - //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 + //SEG1719 [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 - //SEG1719 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuz2 + //SEG1720 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuz2 lda _1 ldy #0 sta (ch),y - //SEG1720 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1721 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1721 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1722 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //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 + //SEG1723 [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 - //SEG1723 gfx_init_screen1::@3 + //SEG1724 gfx_init_screen1::@3 b3: - //SEG1724 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1725 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1726 [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 - //SEG1726 gfx_init_screen1::@return + //SEG1727 gfx_init_screen1::@return breturn: - //SEG1727 [847] return + //SEG1728 [847] return rts } -//SEG1728 gfx_init_screen0 +//SEG1729 gfx_init_screen0 // Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos) gfx_init_screen0: { .label _0 = $161 @@ -19413,100 +19414,100 @@ gfx_init_screen0: { .label ch = $9c .label cx = $9b .label cy = $9a - //SEG1729 [849] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG1730 [849] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] b1_from_gfx_init_screen0: - //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 + //SEG1731 [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 - //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 + //SEG1732 [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 - //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 from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] b1_from_b3: - //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 + //SEG1734 [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 + //SEG1735 [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 - //SEG1735 gfx_init_screen0::@1 + //SEG1736 gfx_init_screen0::@1 b1: - //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 from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] b2_from_b1: - //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 + //SEG1738 [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 + //SEG1739 [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 - //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 from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] b2_from_b2: - //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 + //SEG1741 [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 + //SEG1742 [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 - //SEG1742 gfx_init_screen0::@2 + //SEG1743 gfx_init_screen0::@2 b2: - //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 + //SEG1744 [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 - //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 + //SEG1745 [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 - //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 + //SEG1746 [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 - //SEG1746 [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1747 [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 - //SEG1747 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuz2 + //SEG1748 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuz2 lda _3 ldy #0 sta (ch),y - //SEG1748 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1749 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1749 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1750 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //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 + //SEG1751 [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 - //SEG1751 gfx_init_screen0::@3 + //SEG1752 gfx_init_screen0::@3 b3: - //SEG1752 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1753 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1754 [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 - //SEG1754 gfx_init_screen0::@return + //SEG1755 gfx_init_screen0::@return breturn: - //SEG1755 [861] return + //SEG1756 [861] return rts } -//SEG1756 keyboard_init +//SEG1757 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG1757 [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG1758 [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 - //SEG1758 [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1759 [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 - //SEG1759 keyboard_init::@return + //SEG1760 keyboard_init::@return breturn: - //SEG1760 [864] return + //SEG1761 [864] return rts } // Default vallues for the palette @@ -19520,8 +19521,6 @@ keyboard_init: { keyboard_events: .fill 8, 0 // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() keyboard_scan_values: .fill 8, 0 - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 @@ -20995,12 +20994,13 @@ Allocated (was zp ZP_BYTE:102) zp ZP_BYTE:18 [ bitmap_line_xdyi::e#3 bitmap_line Allocated (was zp ZP_DWORD:292) zp ZP_DWORD:19 [ gfx_init_plane_fill::$0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Interactive Explorer for C64DTV Screen Modes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -21168,81 +21168,81 @@ ASSEMBLER BEFORE OPTIMIZATION .label keyboard_events_size = 9 .label keyboard_modifiers = 2 .label form_cursor_count = $e -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @68 [phi:@begin->@68] +//SEG4 [1] phi from @begin to @68 [phi:@begin->@68] b68_from_bbegin: jmp b68 -//SEG4 @68 +//SEG5 @68 b68: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @68 to @end [phi:@68->@end] +//SEG7 [3] phi from @68 to @end [phi:@68->@end] bend_from_b68: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG13 [8] call keyboard_init + //SEG14 [8] call keyboard_init jsr keyboard_init - //SEG14 [9] phi from main to main::@7 [phi:main->main::@7] + //SEG15 [9] phi from main to main::@7 [phi:main->main::@7] b7_from_main: jmp b7 - //SEG15 main::@7 + //SEG16 main::@7 b7: - //SEG16 [10] call gfx_init - //SEG17 [449] phi from main::@7 to gfx_init [phi:main::@7->gfx_init] + //SEG17 [10] call gfx_init + //SEG18 [449] phi from main::@7 to gfx_init [phi:main::@7->gfx_init] gfx_init_from_b7: jsr gfx_init - //SEG18 [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG19 [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: - //SEG19 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuxx=vbuc1 + //SEG20 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG20 [11] phi (byte) keyboard_events_size#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 + //SEG21 [11] phi (byte) keyboard_events_size#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG21 [11] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@7->main::@1#2] -- vbsz1=vbuc1 + //SEG22 [11] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@7->main::@1#2] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 sta form_cursor_count jmp b1 - //SEG22 main::@1 + //SEG23 main::@1 b1: - //SEG23 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG24 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG24 main::@2 + //SEG25 main::@2 b2: - //SEG25 [13] call form_mode - //SEG26 [254] phi from main::@2 to form_mode [phi:main::@2->form_mode] + //SEG26 [13] call form_mode + //SEG27 [254] phi from main::@2 to form_mode [phi:main::@2->form_mode] form_mode_from_b2: jsr form_mode - //SEG27 [14] phi from main::@2 to main::@9 [phi:main::@2->main::@9] + //SEG28 [14] phi from main::@2 to main::@9 [phi:main::@2->main::@9] b9_from_b2: jmp b9 - //SEG28 main::@9 + //SEG29 main::@9 b9: - //SEG29 [15] call gfx_mode + //SEG30 [15] call gfx_mode jsr gfx_mode - //SEG30 [11] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG31 [11] phi from main::@9 to main::@1 [phi:main::@9->main::@1] b1_from_b9: - //SEG31 [11] phi (byte) form_field_idx#1 = (byte) form_field_idx#18 [phi:main::@9->main::@1#0] -- register_copy - //SEG32 [11] phi (byte) keyboard_events_size#27 = (byte) keyboard_events_size#24 [phi:main::@9->main::@1#1] -- register_copy - //SEG33 [11] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#16 [phi:main::@9->main::@1#2] -- register_copy + //SEG32 [11] phi (byte) form_field_idx#1 = (byte) form_field_idx#18 [phi:main::@9->main::@1#0] -- register_copy + //SEG33 [11] phi (byte) keyboard_events_size#27 = (byte) keyboard_events_size#24 [phi:main::@9->main::@1#1] -- register_copy + //SEG34 [11] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#16 [phi:main::@9->main::@1#2] -- register_copy jmp b1 } -//SEG34 gfx_mode +//SEG35 gfx_mode // Change graphics mode to show the selected graphics mode gfx_mode: { .label _31 = $a @@ -21265,205 +21265,205 @@ gfx_mode: { .label col = 5 .label cx = 7 .label cy = 2 - //SEG35 [16] if(*((const byte*) form_ctrl_line#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 + //SEG36 [16] if(*((const byte*) form_ctrl_line#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_line cmp #0 beq b1_from_gfx_mode - //SEG36 [17] phi from gfx_mode to gfx_mode::@23 [phi:gfx_mode->gfx_mode::@23] + //SEG37 [17] phi from gfx_mode to gfx_mode::@23 [phi:gfx_mode->gfx_mode::@23] b23_from_gfx_mode: jmp b23 - //SEG37 gfx_mode::@23 + //SEG38 gfx_mode::@23 b23: - //SEG38 [18] phi from gfx_mode::@23 to gfx_mode::@1 [phi:gfx_mode::@23->gfx_mode::@1] + //SEG39 [18] phi from gfx_mode::@23 to gfx_mode::@1 [phi:gfx_mode::@23->gfx_mode::@1] b1_from_b23: - //SEG39 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuyy=vbuc1 + //SEG40 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuyy=vbuc1 ldy #0|DTV_LINEAR jmp b1 - //SEG40 [18] phi from gfx_mode to gfx_mode::@1 [phi:gfx_mode->gfx_mode::@1] + //SEG41 [18] phi from gfx_mode to gfx_mode::@1 [phi:gfx_mode->gfx_mode::@1] b1_from_gfx_mode: - //SEG41 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuyy=vbuc1 + //SEG42 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG42 gfx_mode::@1 + //SEG43 gfx_mode::@1 b1: - //SEG43 [19] if(*((const byte*) form_ctrl_borof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 + //SEG44 [19] if(*((const byte*) form_ctrl_borof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_borof cmp #0 beq b2_from_b1 jmp b24 - //SEG44 gfx_mode::@24 + //SEG45 gfx_mode::@24 b24: - //SEG45 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG46 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_BORDER_OFF tay - //SEG46 [21] phi from gfx_mode::@1 gfx_mode::@24 to gfx_mode::@2 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2] + //SEG47 [21] phi from gfx_mode::@1 gfx_mode::@24 to gfx_mode::@2 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2] b2_from_b1: b2_from_b24: - //SEG47 [21] phi (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#14 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2#0] -- register_copy + //SEG48 [21] phi (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#14 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2#0] -- register_copy jmp b2 - //SEG48 gfx_mode::@2 + //SEG49 gfx_mode::@2 b2: - //SEG49 [22] if(*((const byte*) form_ctrl_hicol#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 + //SEG50 [22] if(*((const byte*) form_ctrl_hicol#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_hicol cmp #0 beq b3_from_b2 jmp b25 - //SEG50 gfx_mode::@25 + //SEG51 gfx_mode::@25 b25: - //SEG51 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG52 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_HIGHCOLOR tay - //SEG52 [24] phi from gfx_mode::@2 gfx_mode::@25 to gfx_mode::@3 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3] + //SEG53 [24] phi from gfx_mode::@2 gfx_mode::@25 to gfx_mode::@3 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3] b3_from_b2: b3_from_b25: - //SEG53 [24] phi (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#15 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3#0] -- register_copy + //SEG54 [24] phi (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#15 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3#0] -- register_copy jmp b3 - //SEG54 gfx_mode::@3 + //SEG55 gfx_mode::@3 b3: - //SEG55 [25] if(*((const byte*) form_ctrl_overs#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 + //SEG56 [25] if(*((const byte*) form_ctrl_overs#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_overs cmp #0 beq b4_from_b3 jmp b26 - //SEG56 gfx_mode::@26 + //SEG57 gfx_mode::@26 b26: - //SEG57 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG58 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_OVERSCAN tay - //SEG58 [27] phi from gfx_mode::@26 gfx_mode::@3 to gfx_mode::@4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4] + //SEG59 [27] phi from gfx_mode::@26 gfx_mode::@3 to gfx_mode::@4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4] b4_from_b26: b4_from_b3: - //SEG59 [27] phi (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4#0] -- register_copy + //SEG60 [27] phi (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4#0] -- register_copy jmp b4 - //SEG60 gfx_mode::@4 + //SEG61 gfx_mode::@4 b4: - //SEG61 [28] if(*((const byte*) form_ctrl_colof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 + //SEG62 [28] if(*((const byte*) form_ctrl_colof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_colof cmp #0 beq b5_from_b4 jmp b27 - //SEG62 gfx_mode::@27 + //SEG63 gfx_mode::@27 b27: - //SEG63 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG64 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_COLORRAM_OFF tay - //SEG64 [30] phi from gfx_mode::@27 gfx_mode::@4 to gfx_mode::@5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5] + //SEG65 [30] phi from gfx_mode::@27 gfx_mode::@4 to gfx_mode::@5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5] b5_from_b27: b5_from_b4: - //SEG65 [30] phi (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5#0] -- register_copy + //SEG66 [30] phi (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5#0] -- register_copy jmp b5 - //SEG66 gfx_mode::@5 + //SEG67 gfx_mode::@5 b5: - //SEG67 [31] if(*((const byte*) form_ctrl_chunk#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 + //SEG68 [31] if(*((const byte*) form_ctrl_chunk#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_chunk cmp #0 beq b6_from_b5 jmp b28 - //SEG68 gfx_mode::@28 + //SEG69 gfx_mode::@28 b28: - //SEG69 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG70 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_CHUNKY tay - //SEG70 [33] phi from gfx_mode::@28 gfx_mode::@5 to gfx_mode::@6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6] + //SEG71 [33] phi from gfx_mode::@28 gfx_mode::@5 to gfx_mode::@6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6] b6_from_b28: b6_from_b5: - //SEG71 [33] phi (byte) gfx_mode::dtv_control#12 = (byte) gfx_mode::dtv_control#6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6#0] -- register_copy + //SEG72 [33] phi (byte) gfx_mode::dtv_control#12 = (byte) gfx_mode::dtv_control#6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6#0] -- register_copy jmp b6 - //SEG72 gfx_mode::@6 + //SEG73 gfx_mode::@6 b6: - //SEG73 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuyy + //SEG74 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuyy sty DTV_CONTROL - //SEG74 [35] if(*((const byte*) form_ctrl_ecm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 + //SEG75 [35] if(*((const byte*) form_ctrl_ecm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_ecm cmp #0 beq b7_from_b6 - //SEG75 [36] phi from gfx_mode::@6 to gfx_mode::@29 [phi:gfx_mode::@6->gfx_mode::@29] + //SEG76 [36] phi from gfx_mode::@6 to gfx_mode::@29 [phi:gfx_mode::@6->gfx_mode::@29] b29_from_b6: jmp b29 - //SEG76 gfx_mode::@29 + //SEG77 gfx_mode::@29 b29: - //SEG77 [37] phi from gfx_mode::@29 to gfx_mode::@7 [phi:gfx_mode::@29->gfx_mode::@7] + //SEG78 [37] phi from gfx_mode::@29 to gfx_mode::@7 [phi:gfx_mode::@29->gfx_mode::@7] b7_from_b29: - //SEG78 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuyy=vbuc1 + //SEG79 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuyy=vbuc1 ldy #VIC_DEN|VIC_RSEL|3|VIC_ECM jmp b7 - //SEG79 [37] phi from gfx_mode::@6 to gfx_mode::@7 [phi:gfx_mode::@6->gfx_mode::@7] + //SEG80 [37] phi from gfx_mode::@6 to gfx_mode::@7 [phi:gfx_mode::@6->gfx_mode::@7] b7_from_b6: - //SEG80 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuyy=vbuc1 + //SEG81 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuyy=vbuc1 ldy #VIC_DEN|VIC_RSEL|3 jmp b7 - //SEG81 gfx_mode::@7 + //SEG82 gfx_mode::@7 b7: - //SEG82 [38] if(*((const byte*) form_ctrl_bmm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 + //SEG83 [38] if(*((const byte*) form_ctrl_bmm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_bmm cmp #0 beq b8_from_b7 jmp b30 - //SEG83 gfx_mode::@30 + //SEG84 gfx_mode::@30 b30: - //SEG84 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG85 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #VIC_BMM tay - //SEG85 [40] phi from gfx_mode::@30 gfx_mode::@7 to gfx_mode::@8 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8] + //SEG86 [40] phi from gfx_mode::@30 gfx_mode::@7 to gfx_mode::@8 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8] b8_from_b30: b8_from_b7: - //SEG86 [40] phi (byte) gfx_mode::vic_control#4 = (byte) gfx_mode::vic_control#2 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8#0] -- register_copy + //SEG87 [40] phi (byte) gfx_mode::vic_control#4 = (byte) gfx_mode::vic_control#2 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8#0] -- register_copy jmp b8 - //SEG87 gfx_mode::@8 + //SEG88 gfx_mode::@8 b8: - //SEG88 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuyy + //SEG89 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuyy sty VIC_CONTROL - //SEG89 [42] if(*((const byte*) form_ctrl_mcm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 + //SEG90 [42] if(*((const byte*) form_ctrl_mcm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_mcm cmp #0 beq b9_from_b8 - //SEG90 [43] phi from gfx_mode::@8 to gfx_mode::@31 [phi:gfx_mode::@8->gfx_mode::@31] + //SEG91 [43] phi from gfx_mode::@8 to gfx_mode::@31 [phi:gfx_mode::@8->gfx_mode::@31] b31_from_b8: jmp b31 - //SEG91 gfx_mode::@31 + //SEG92 gfx_mode::@31 b31: - //SEG92 [44] phi from gfx_mode::@31 to gfx_mode::@9 [phi:gfx_mode::@31->gfx_mode::@9] + //SEG93 [44] phi from gfx_mode::@31 to gfx_mode::@9 [phi:gfx_mode::@31->gfx_mode::@9] b9_from_b31: - //SEG93 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 [phi:gfx_mode::@31->gfx_mode::@9#0] -- vbuaa=vbuc1 + //SEG94 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 [phi:gfx_mode::@31->gfx_mode::@9#0] -- vbuaa=vbuc1 lda #VIC_CSEL|VIC_MCM jmp b9 - //SEG94 [44] phi from gfx_mode::@8 to gfx_mode::@9 [phi:gfx_mode::@8->gfx_mode::@9] + //SEG95 [44] phi from gfx_mode::@8 to gfx_mode::@9 [phi:gfx_mode::@8->gfx_mode::@9] b9_from_b8: - //SEG95 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0 [phi:gfx_mode::@8->gfx_mode::@9#0] -- vbuaa=vbuc1 + //SEG96 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0 [phi:gfx_mode::@8->gfx_mode::@9#0] -- vbuaa=vbuc1 lda #VIC_CSEL jmp b9 - //SEG96 gfx_mode::@9 + //SEG97 gfx_mode::@9 b9: - //SEG97 [45] *((const byte*) VIC_CONTROL2#0) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuaa + //SEG98 [45] *((const byte*) VIC_CONTROL2#0) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuaa sta VIC_CONTROL2 - //SEG98 [46] (byte~) gfx_mode::$29 ← *((const byte*) form_a_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG99 [46] (byte~) gfx_mode::$29 ← *((const byte*) form_a_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_a_start_hi asl asl asl asl - //SEG99 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 + //SEG100 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 ora form_a_start_lo tay - //SEG100 [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern#0) -- vbuaa=_deref_pbuc1 + //SEG101 [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern#0) -- vbuaa=_deref_pbuc1 lda form_a_pattern - //SEG101 [49] call get_plane - //SEG102 [236] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] + //SEG102 [49] call get_plane + //SEG103 [236] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] get_plane_from_b9: - //SEG103 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#0 [phi:gfx_mode::@9->get_plane#0] -- register_copy + //SEG104 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#0 [phi:gfx_mode::@9->get_plane#0] -- register_copy jsr get_plane - //SEG104 [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 + //SEG105 [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 jmp b46 - //SEG105 gfx_mode::@46 + //SEG106 gfx_mode::@46 b46: - //SEG106 [51] (dword~) gfx_mode::$31 ← (dword) get_plane::return#16 - //SEG107 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz1_plus_vbuyy + //SEG107 [51] (dword~) gfx_mode::$31 ← (dword) get_plane::return#16 + //SEG108 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz1_plus_vbuyy tya clc adc plane_a @@ -21477,78 +21477,78 @@ gfx_mode: { lda plane_a+3 adc #0 sta plane_a+3 - //SEG108 [53] (word~) gfx_mode::$33 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 + //SEG109 [53] (word~) gfx_mode::$33 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 lda plane_a sta _33 lda plane_a+1 sta _33+1 - //SEG109 [54] (byte~) gfx_mode::$34 ← < (word~) gfx_mode::$33 -- vbuaa=_lo_vwuz1 + //SEG110 [54] (byte~) gfx_mode::$34 ← < (word~) gfx_mode::$33 -- vbuaa=_lo_vwuz1 lda _33 - //SEG110 [55] *((const byte*) DTV_PLANEA_START_LO#0) ← (byte~) gfx_mode::$34 -- _deref_pbuc1=vbuaa + //SEG111 [55] *((const byte*) DTV_PLANEA_START_LO#0) ← (byte~) gfx_mode::$34 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_START_LO - //SEG111 [56] (word~) gfx_mode::$35 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 + //SEG112 [56] (word~) gfx_mode::$35 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 lda plane_a sta _35 lda plane_a+1 sta _35+1 - //SEG112 [57] (byte~) gfx_mode::$36 ← > (word~) gfx_mode::$35 -- vbuaa=_hi_vwuz1 + //SEG113 [57] (byte~) gfx_mode::$36 ← > (word~) gfx_mode::$35 -- vbuaa=_hi_vwuz1 lda _35+1 - //SEG113 [58] *((const byte*) DTV_PLANEA_START_MI#0) ← (byte~) gfx_mode::$36 -- _deref_pbuc1=vbuaa + //SEG114 [58] *((const byte*) DTV_PLANEA_START_MI#0) ← (byte~) gfx_mode::$36 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_START_MI - //SEG114 [59] (word~) gfx_mode::$37 ← > (dword) gfx_mode::plane_a#0 -- vwuz1=_hi_vduz2 + //SEG115 [59] (word~) gfx_mode::$37 ← > (dword) gfx_mode::plane_a#0 -- vwuz1=_hi_vduz2 lda plane_a+2 sta _37 lda plane_a+3 sta _37+1 - //SEG115 [60] (byte~) gfx_mode::$38 ← < (word~) gfx_mode::$37 -- vbuaa=_lo_vwuz1 + //SEG116 [60] (byte~) gfx_mode::$38 ← < (word~) gfx_mode::$37 -- vbuaa=_lo_vwuz1 lda _37 - //SEG116 [61] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte~) gfx_mode::$38 -- _deref_pbuc1=vbuaa + //SEG117 [61] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte~) gfx_mode::$38 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_START_HI - //SEG117 [62] (byte~) gfx_mode::$39 ← *((const byte*) form_a_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG118 [62] (byte~) gfx_mode::$39 ← *((const byte*) form_a_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_a_step_hi asl asl asl asl - //SEG118 [63] (byte~) gfx_mode::$40 ← (byte~) gfx_mode::$39 | *((const byte*) form_a_step_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG119 [63] (byte~) gfx_mode::$40 ← (byte~) gfx_mode::$39 | *((const byte*) form_a_step_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_a_step_lo - //SEG119 [64] *((const byte*) DTV_PLANEA_STEP#0) ← (byte~) gfx_mode::$40 -- _deref_pbuc1=vbuaa + //SEG120 [64] *((const byte*) DTV_PLANEA_STEP#0) ← (byte~) gfx_mode::$40 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_STEP - //SEG120 [65] (byte~) gfx_mode::$41 ← *((const byte*) form_a_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG121 [65] (byte~) gfx_mode::$41 ← *((const byte*) form_a_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_a_mod_hi asl asl asl asl - //SEG121 [66] (byte~) gfx_mode::$42 ← (byte~) gfx_mode::$41 | *((const byte*) form_a_mod_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG122 [66] (byte~) gfx_mode::$42 ← (byte~) gfx_mode::$41 | *((const byte*) form_a_mod_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_a_mod_lo - //SEG122 [67] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte~) gfx_mode::$42 -- _deref_pbuc1=vbuaa + //SEG123 [67] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte~) gfx_mode::$42 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_MODULO_LO - //SEG123 [68] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG124 [68] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG124 [69] (byte~) gfx_mode::$43 ← *((const byte*) form_b_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG125 [69] (byte~) gfx_mode::$43 ← *((const byte*) form_b_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_b_start_hi asl asl asl asl - //SEG125 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 + //SEG126 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 ora form_b_start_lo tay - //SEG126 [71] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern#0) -- vbuaa=_deref_pbuc1 + //SEG127 [71] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern#0) -- vbuaa=_deref_pbuc1 lda form_b_pattern - //SEG127 [72] call get_plane - //SEG128 [236] phi from gfx_mode::@46 to get_plane [phi:gfx_mode::@46->get_plane] + //SEG128 [72] call get_plane + //SEG129 [236] phi from gfx_mode::@46 to get_plane [phi:gfx_mode::@46->get_plane] get_plane_from_b46: - //SEG129 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#1 [phi:gfx_mode::@46->get_plane#0] -- register_copy + //SEG130 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#1 [phi:gfx_mode::@46->get_plane#0] -- register_copy jsr get_plane - //SEG130 [73] (dword) get_plane::return#17 ← (dword) get_plane::return#14 + //SEG131 [73] (dword) get_plane::return#17 ← (dword) get_plane::return#14 jmp b47 - //SEG131 gfx_mode::@47 + //SEG132 gfx_mode::@47 b47: - //SEG132 [74] (dword~) gfx_mode::$45 ← (dword) get_plane::return#17 - //SEG133 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz1_plus_vbuyy + //SEG133 [74] (dword~) gfx_mode::$45 ← (dword) get_plane::return#17 + //SEG134 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz1_plus_vbuyy tya clc adc plane_b @@ -21562,355 +21562,355 @@ gfx_mode: { lda plane_b+3 adc #0 sta plane_b+3 - //SEG134 [76] (word~) gfx_mode::$47 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 + //SEG135 [76] (word~) gfx_mode::$47 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 lda plane_b sta _47 lda plane_b+1 sta _47+1 - //SEG135 [77] (byte~) gfx_mode::$48 ← < (word~) gfx_mode::$47 -- vbuaa=_lo_vwuz1 + //SEG136 [77] (byte~) gfx_mode::$48 ← < (word~) gfx_mode::$47 -- vbuaa=_lo_vwuz1 lda _47 - //SEG136 [78] *((const byte*) DTV_PLANEB_START_LO#0) ← (byte~) gfx_mode::$48 -- _deref_pbuc1=vbuaa + //SEG137 [78] *((const byte*) DTV_PLANEB_START_LO#0) ← (byte~) gfx_mode::$48 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_START_LO - //SEG137 [79] (word~) gfx_mode::$49 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 + //SEG138 [79] (word~) gfx_mode::$49 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 lda plane_b sta _49 lda plane_b+1 sta _49+1 - //SEG138 [80] (byte~) gfx_mode::$50 ← > (word~) gfx_mode::$49 -- vbuaa=_hi_vwuz1 + //SEG139 [80] (byte~) gfx_mode::$50 ← > (word~) gfx_mode::$49 -- vbuaa=_hi_vwuz1 lda _49+1 - //SEG139 [81] *((const byte*) DTV_PLANEB_START_MI#0) ← (byte~) gfx_mode::$50 -- _deref_pbuc1=vbuaa + //SEG140 [81] *((const byte*) DTV_PLANEB_START_MI#0) ← (byte~) gfx_mode::$50 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_START_MI - //SEG140 [82] (word~) gfx_mode::$51 ← > (dword) gfx_mode::plane_b#0 -- vwuz1=_hi_vduz2 + //SEG141 [82] (word~) gfx_mode::$51 ← > (dword) gfx_mode::plane_b#0 -- vwuz1=_hi_vduz2 lda plane_b+2 sta _51 lda plane_b+3 sta _51+1 - //SEG141 [83] (byte~) gfx_mode::$52 ← < (word~) gfx_mode::$51 -- vbuaa=_lo_vwuz1 + //SEG142 [83] (byte~) gfx_mode::$52 ← < (word~) gfx_mode::$51 -- vbuaa=_lo_vwuz1 lda _51 - //SEG142 [84] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte~) gfx_mode::$52 -- _deref_pbuc1=vbuaa + //SEG143 [84] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte~) gfx_mode::$52 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_START_HI - //SEG143 [85] (byte~) gfx_mode::$53 ← *((const byte*) form_b_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG144 [85] (byte~) gfx_mode::$53 ← *((const byte*) form_b_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_b_step_hi asl asl asl asl - //SEG144 [86] (byte~) gfx_mode::$54 ← (byte~) gfx_mode::$53 | *((const byte*) form_b_step_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG145 [86] (byte~) gfx_mode::$54 ← (byte~) gfx_mode::$53 | *((const byte*) form_b_step_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_b_step_lo - //SEG145 [87] *((const byte*) DTV_PLANEB_STEP#0) ← (byte~) gfx_mode::$54 -- _deref_pbuc1=vbuaa + //SEG146 [87] *((const byte*) DTV_PLANEB_STEP#0) ← (byte~) gfx_mode::$54 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_STEP - //SEG146 [88] (byte~) gfx_mode::$55 ← *((const byte*) form_b_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG147 [88] (byte~) gfx_mode::$55 ← *((const byte*) form_b_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_b_mod_hi asl asl asl asl - //SEG147 [89] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const byte*) form_b_mod_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG148 [89] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const byte*) form_b_mod_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_b_mod_lo - //SEG148 [90] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuaa + //SEG149 [90] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_MODULO_LO - //SEG149 [91] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG150 [91] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG150 [92] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG151 [92] *((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 - //SEG151 [93] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) VIC_SCREEN0#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG152 [93] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) VIC_SCREEN0#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^VIC_SCREEN0/$4000 sta CIA2_PORT_A - //SEG152 [94] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen#0) -- vbuaa=_deref_pbuc1 + //SEG153 [94] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen#0) -- vbuaa=_deref_pbuc1 lda form_vic_screen - //SEG153 [95] call get_vic_screen - //SEG154 [222] phi from gfx_mode::@47 to get_vic_screen [phi:gfx_mode::@47->get_vic_screen] + //SEG154 [95] call get_vic_screen + //SEG155 [222] phi from gfx_mode::@47 to get_vic_screen [phi:gfx_mode::@47->get_vic_screen] get_vic_screen_from_b47: - //SEG155 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#0 [phi:gfx_mode::@47->get_vic_screen#0] -- register_copy + //SEG156 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#0 [phi:gfx_mode::@47->get_vic_screen#0] -- register_copy jsr get_vic_screen - //SEG156 [96] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 + //SEG157 [96] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 jmp b48 - //SEG157 gfx_mode::@48 + //SEG158 gfx_mode::@48 b48: - //SEG158 [97] (byte*~) gfx_mode::$61 ← (byte*) get_vic_screen::return#10 - //SEG159 [98] (word~) gfx_mode::$63 ← (word)(byte*~) gfx_mode::$61 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 + //SEG159 [97] (byte*~) gfx_mode::$61 ← (byte*) get_vic_screen::return#10 + //SEG160 [98] (word~) gfx_mode::$63 ← (word)(byte*~) gfx_mode::$61 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 lda _63 and #<$3fff sta _63 lda _63+1 and #>$3fff sta _63+1 - //SEG160 [99] (word~) gfx_mode::$64 ← (word~) gfx_mode::$63 >> (byte/signed byte/word/signed word/dword/signed dword) 6 -- vwuz1=vwuz1_ror_6 + //SEG161 [99] (word~) gfx_mode::$64 ← (word~) gfx_mode::$63 >> (byte/signed byte/word/signed word/dword/signed dword) 6 -- vwuz1=vwuz1_ror_6 ldy #6 !: lsr _64+1 ror _64 dey bne !- - //SEG161 [100] (byte~) gfx_mode::$65 ← ((byte)) (word~) gfx_mode::$64 -- vbuz1=_byte_vwuz2 + //SEG162 [100] (byte~) gfx_mode::$65 ← ((byte)) (word~) gfx_mode::$64 -- vbuz1=_byte_vwuz2 lda _64 sta _65 - //SEG162 [101] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx#0) -- vbuaa=_deref_pbuc1 + //SEG163 [101] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx#0) -- vbuaa=_deref_pbuc1 lda form_vic_gfx - //SEG163 [102] call get_vic_charset + //SEG164 [102] call get_vic_charset jsr get_vic_charset - //SEG164 [103] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 + //SEG165 [103] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 jmp b49 - //SEG165 gfx_mode::@49 + //SEG166 gfx_mode::@49 b49: - //SEG166 [104] (byte*~) gfx_mode::$66 ← (byte*) get_vic_charset::return#4 - //SEG167 [105] (word~) gfx_mode::$68 ← (word)(byte*~) gfx_mode::$66 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 + //SEG167 [104] (byte*~) gfx_mode::$66 ← (byte*) get_vic_charset::return#4 + //SEG168 [105] (word~) gfx_mode::$68 ← (word)(byte*~) gfx_mode::$66 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 lda _68 and #<$3fff sta _68 lda _68+1 and #>$3fff sta _68+1 - //SEG168 [106] (byte~) gfx_mode::$69 ← > (word~) gfx_mode::$68 -- vbuaa=_hi_vwuz1 + //SEG169 [106] (byte~) gfx_mode::$69 ← > (word~) gfx_mode::$68 -- vbuaa=_hi_vwuz1 lda _68+1 - //SEG169 [107] (byte~) gfx_mode::$70 ← (byte~) gfx_mode::$69 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 + //SEG170 [107] (byte~) gfx_mode::$70 ← (byte~) gfx_mode::$69 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG170 [108] (byte~) gfx_mode::$71 ← (byte~) gfx_mode::$65 | (byte~) gfx_mode::$70 -- vbuaa=vbuz1_bor_vbuaa + //SEG171 [108] (byte~) gfx_mode::$71 ← (byte~) gfx_mode::$65 | (byte~) gfx_mode::$70 -- vbuaa=vbuz1_bor_vbuaa ora _65 - //SEG171 [109] *((const byte*) VIC_MEMORY#0) ← (byte~) gfx_mode::$71 -- _deref_pbuc1=vbuaa + //SEG172 [109] *((const byte*) VIC_MEMORY#0) ← (byte~) gfx_mode::$71 -- _deref_pbuc1=vbuaa sta VIC_MEMORY - //SEG172 [110] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols#0) -- vbuaa=_deref_pbuc1 + //SEG173 [110] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols#0) -- vbuaa=_deref_pbuc1 lda form_vic_cols - //SEG173 [111] call get_vic_screen - //SEG174 [222] phi from gfx_mode::@49 to get_vic_screen [phi:gfx_mode::@49->get_vic_screen] + //SEG174 [111] call get_vic_screen + //SEG175 [222] phi from gfx_mode::@49 to get_vic_screen [phi:gfx_mode::@49->get_vic_screen] get_vic_screen_from_b49: - //SEG175 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#1 [phi:gfx_mode::@49->get_vic_screen#0] -- register_copy + //SEG176 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#1 [phi:gfx_mode::@49->get_vic_screen#0] -- register_copy jsr get_vic_screen - //SEG176 [112] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 + //SEG177 [112] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 jmp b50 - //SEG177 gfx_mode::@50 + //SEG178 gfx_mode::@50 b50: - //SEG178 [113] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 - //SEG179 [114] phi from gfx_mode::@50 to gfx_mode::@10 [phi:gfx_mode::@50->gfx_mode::@10] + //SEG179 [113] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 + //SEG180 [114] phi from gfx_mode::@50 to gfx_mode::@10 [phi:gfx_mode::@50->gfx_mode::@10] b10_from_b50: - //SEG180 [114] phi (byte) gfx_mode::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@50->gfx_mode::@10#0] -- vbuz1=vbuc1 + //SEG181 [114] phi (byte) gfx_mode::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@50->gfx_mode::@10#0] -- vbuz1=vbuc1 lda #0 sta cy - //SEG181 [114] phi (byte*) gfx_mode::col#3 = (const byte*) COLS#0 [phi:gfx_mode::@50->gfx_mode::@10#1] -- pbuz1=pbuc1 + //SEG182 [114] phi (byte*) gfx_mode::col#3 = (const byte*) COLS#0 [phi:gfx_mode::@50->gfx_mode::@10#1] -- pbuz1=pbuc1 lda #COLS sta col+1 - //SEG182 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#0 [phi:gfx_mode::@50->gfx_mode::@10#2] -- register_copy + //SEG183 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#0 [phi:gfx_mode::@50->gfx_mode::@10#2] -- register_copy jmp b10 - //SEG183 [114] phi from gfx_mode::@32 to gfx_mode::@10 [phi:gfx_mode::@32->gfx_mode::@10] + //SEG184 [114] phi from gfx_mode::@32 to gfx_mode::@10 [phi:gfx_mode::@32->gfx_mode::@10] b10_from_b32: - //SEG184 [114] phi (byte) gfx_mode::cy#4 = (byte) gfx_mode::cy#1 [phi:gfx_mode::@32->gfx_mode::@10#0] -- register_copy - //SEG185 [114] phi (byte*) gfx_mode::col#3 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@32->gfx_mode::@10#1] -- register_copy - //SEG186 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@32->gfx_mode::@10#2] -- register_copy + //SEG185 [114] phi (byte) gfx_mode::cy#4 = (byte) gfx_mode::cy#1 [phi:gfx_mode::@32->gfx_mode::@10#0] -- register_copy + //SEG186 [114] phi (byte*) gfx_mode::col#3 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@32->gfx_mode::@10#1] -- register_copy + //SEG187 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@32->gfx_mode::@10#2] -- register_copy jmp b10 - //SEG187 gfx_mode::@10 + //SEG188 gfx_mode::@10 b10: - //SEG188 [115] phi from gfx_mode::@10 to gfx_mode::@11 [phi:gfx_mode::@10->gfx_mode::@11] + //SEG189 [115] phi from gfx_mode::@10 to gfx_mode::@11 [phi:gfx_mode::@10->gfx_mode::@11] b11_from_b10: - //SEG189 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuz1=vbuc1 + //SEG190 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuz1=vbuc1 lda #0 sta cx - //SEG190 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#3 [phi:gfx_mode::@10->gfx_mode::@11#1] -- register_copy - //SEG191 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#3 [phi:gfx_mode::@10->gfx_mode::@11#2] -- register_copy + //SEG191 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#3 [phi:gfx_mode::@10->gfx_mode::@11#1] -- register_copy + //SEG192 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#3 [phi:gfx_mode::@10->gfx_mode::@11#2] -- register_copy jmp b11 - //SEG192 [115] phi from gfx_mode::@11 to gfx_mode::@11 [phi:gfx_mode::@11->gfx_mode::@11] + //SEG193 [115] phi from gfx_mode::@11 to gfx_mode::@11 [phi:gfx_mode::@11->gfx_mode::@11] b11_from_b11: - //SEG193 [115] phi (byte) gfx_mode::cx#2 = (byte) gfx_mode::cx#1 [phi:gfx_mode::@11->gfx_mode::@11#0] -- register_copy - //SEG194 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@11->gfx_mode::@11#1] -- register_copy - //SEG195 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@11->gfx_mode::@11#2] -- register_copy + //SEG194 [115] phi (byte) gfx_mode::cx#2 = (byte) gfx_mode::cx#1 [phi:gfx_mode::@11->gfx_mode::@11#0] -- register_copy + //SEG195 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@11->gfx_mode::@11#1] -- register_copy + //SEG196 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@11->gfx_mode::@11#2] -- register_copy jmp b11 - //SEG196 gfx_mode::@11 + //SEG197 gfx_mode::@11 b11: - //SEG197 [116] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG198 [116] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (vic_colors),y ldy #0 sta (col),y - //SEG198 [117] (byte*) gfx_mode::col#1 ← ++ (byte*) gfx_mode::col#2 -- pbuz1=_inc_pbuz1 + //SEG199 [117] (byte*) gfx_mode::col#1 ← ++ (byte*) gfx_mode::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG199 [118] (byte*) gfx_mode::vic_colors#1 ← ++ (byte*) gfx_mode::vic_colors#2 -- pbuz1=_inc_pbuz1 + //SEG200 [118] (byte*) gfx_mode::vic_colors#1 ← ++ (byte*) gfx_mode::vic_colors#2 -- pbuz1=_inc_pbuz1 inc vic_colors bne !+ inc vic_colors+1 !: - //SEG200 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuz1=_inc_vbuz1 + //SEG201 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG201 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_mode::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG202 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_mode::@11 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b11_from_b11 jmp b32 - //SEG202 gfx_mode::@32 + //SEG203 gfx_mode::@32 b32: - //SEG203 [121] (byte) gfx_mode::cy#1 ← ++ (byte) gfx_mode::cy#4 -- vbuz1=_inc_vbuz1 + //SEG204 [121] (byte) gfx_mode::cy#1 ← ++ (byte) gfx_mode::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG204 [122] if((byte) gfx_mode::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_mode::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG205 [122] if((byte) gfx_mode::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_mode::@10 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b10_from_b32 jmp b33 - //SEG205 gfx_mode::@33 + //SEG206 gfx_mode::@33 b33: - //SEG206 [123] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG207 [123] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG207 [124] (byte~) gfx_mode::$75 ← *((const byte*) form_vic_bg0_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG208 [124] (byte~) gfx_mode::$75 ← *((const byte*) form_vic_bg0_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg0_hi asl asl asl asl - //SEG208 [125] (byte~) gfx_mode::$76 ← (byte~) gfx_mode::$75 | *((const byte*) form_vic_bg0_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG209 [125] (byte~) gfx_mode::$76 ← (byte~) gfx_mode::$75 | *((const byte*) form_vic_bg0_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg0_lo - //SEG209 [126] *((const byte*) BGCOL1#0) ← (byte~) gfx_mode::$76 -- _deref_pbuc1=vbuaa + //SEG210 [126] *((const byte*) BGCOL1#0) ← (byte~) gfx_mode::$76 -- _deref_pbuc1=vbuaa sta BGCOL1 - //SEG210 [127] (byte~) gfx_mode::$77 ← *((const byte*) form_vic_bg1_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG211 [127] (byte~) gfx_mode::$77 ← *((const byte*) form_vic_bg1_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg1_hi asl asl asl asl - //SEG211 [128] (byte~) gfx_mode::$78 ← (byte~) gfx_mode::$77 | *((const byte*) form_vic_bg1_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG212 [128] (byte~) gfx_mode::$78 ← (byte~) gfx_mode::$77 | *((const byte*) form_vic_bg1_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg1_lo - //SEG212 [129] *((const byte*) BGCOL2#0) ← (byte~) gfx_mode::$78 -- _deref_pbuc1=vbuaa + //SEG213 [129] *((const byte*) BGCOL2#0) ← (byte~) gfx_mode::$78 -- _deref_pbuc1=vbuaa sta BGCOL2 - //SEG213 [130] (byte~) gfx_mode::$79 ← *((const byte*) form_vic_bg2_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG214 [130] (byte~) gfx_mode::$79 ← *((const byte*) form_vic_bg2_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg2_hi asl asl asl asl - //SEG214 [131] (byte~) gfx_mode::$80 ← (byte~) gfx_mode::$79 | *((const byte*) form_vic_bg2_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG215 [131] (byte~) gfx_mode::$80 ← (byte~) gfx_mode::$79 | *((const byte*) form_vic_bg2_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg2_lo - //SEG215 [132] *((const byte*) BGCOL3#0) ← (byte~) gfx_mode::$80 -- _deref_pbuc1=vbuaa + //SEG216 [132] *((const byte*) BGCOL3#0) ← (byte~) gfx_mode::$80 -- _deref_pbuc1=vbuaa sta BGCOL3 - //SEG216 [133] (byte~) gfx_mode::$81 ← *((const byte*) form_vic_bg3_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG217 [133] (byte~) gfx_mode::$81 ← *((const byte*) form_vic_bg3_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg3_hi asl asl asl asl - //SEG217 [134] (byte~) gfx_mode::$82 ← (byte~) gfx_mode::$81 | *((const byte*) form_vic_bg3_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG218 [134] (byte~) gfx_mode::$82 ← (byte~) gfx_mode::$81 | *((const byte*) form_vic_bg3_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg3_lo - //SEG218 [135] *((const byte*) BGCOL4#0) ← (byte~) gfx_mode::$82 -- _deref_pbuc1=vbuaa + //SEG219 [135] *((const byte*) BGCOL4#0) ← (byte~) gfx_mode::$82 -- _deref_pbuc1=vbuaa sta BGCOL4 - //SEG219 [136] if(*((const byte*) form_dtv_palet#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@15 -- _deref_pbuc1_eq_0_then_la1 + //SEG220 [136] if(*((const byte*) form_dtv_palet#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@15 -- _deref_pbuc1_eq_0_then_la1 lda form_dtv_palet cmp #0 beq b15_from_b33 - //SEG220 [137] phi from gfx_mode::@33 to gfx_mode::@13 [phi:gfx_mode::@33->gfx_mode::@13] + //SEG221 [137] phi from gfx_mode::@33 to gfx_mode::@13 [phi:gfx_mode::@33->gfx_mode::@13] b13_from_b33: - //SEG221 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuyy=vbuc1 + //SEG222 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuyy=vbuc1 ldy #0 jmp b13 - //SEG222 [137] phi from gfx_mode::@13 to gfx_mode::@13 [phi:gfx_mode::@13->gfx_mode::@13] + //SEG223 [137] phi from gfx_mode::@13 to gfx_mode::@13 [phi:gfx_mode::@13->gfx_mode::@13] b13_from_b13: - //SEG223 [137] phi (byte) gfx_mode::j#2 = (byte) gfx_mode::j#1 [phi:gfx_mode::@13->gfx_mode::@13#0] -- register_copy + //SEG224 [137] phi (byte) gfx_mode::j#2 = (byte) gfx_mode::j#1 [phi:gfx_mode::@13->gfx_mode::@13#0] -- register_copy jmp b13 - //SEG224 gfx_mode::@13 + //SEG225 gfx_mode::@13 b13: - //SEG225 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuyy=vbuyy + //SEG226 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuyy=vbuyy tya sta DTV_PALETTE,y - //SEG226 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuyy=_inc_vbuyy + //SEG227 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuyy=_inc_vbuyy iny - //SEG227 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@13 -- vbuyy_neq_vbuc1_then_la1 + //SEG228 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@13 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b13_from_b13 jmp b19 - //SEG228 gfx_mode::@19 + //SEG229 gfx_mode::@19 b19: - //SEG229 [141] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto gfx_mode::@19 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG230 [141] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto gfx_mode::@19 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b19 - //SEG230 [142] phi from gfx_mode::@19 to gfx_mode::@21 [phi:gfx_mode::@19->gfx_mode::@21] + //SEG231 [142] phi from gfx_mode::@19 to gfx_mode::@21 [phi:gfx_mode::@19->gfx_mode::@21] b21_from_b19: jmp b21 - //SEG231 gfx_mode::@21 + //SEG232 gfx_mode::@21 b21: - //SEG232 [143] call keyboard_event_scan - //SEG233 [159] phi from gfx_mode::@21 to keyboard_event_scan [phi:gfx_mode::@21->keyboard_event_scan] + //SEG233 [143] call keyboard_event_scan + //SEG234 [159] phi from gfx_mode::@21 to keyboard_event_scan [phi:gfx_mode::@21->keyboard_event_scan] keyboard_event_scan_from_b21: - //SEG234 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#24 [phi:gfx_mode::@21->keyboard_event_scan#0] -- register_copy + //SEG235 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#24 [phi:gfx_mode::@21->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan - //SEG235 [144] phi from gfx_mode::@21 to gfx_mode::@51 [phi:gfx_mode::@21->gfx_mode::@51] + //SEG236 [144] phi from gfx_mode::@21 to gfx_mode::@51 [phi:gfx_mode::@21->gfx_mode::@51] b51_from_b21: jmp b51 - //SEG236 gfx_mode::@51 + //SEG237 gfx_mode::@51 b51: - //SEG237 [145] call keyboard_event_get + //SEG238 [145] call keyboard_event_get jsr keyboard_event_get - //SEG238 [146] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG239 [146] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 jmp b52 - //SEG239 gfx_mode::@52 + //SEG240 gfx_mode::@52 b52: - //SEG240 [147] (byte) gfx_mode::keyboard_event#0 ← (byte) keyboard_event_get::return#3 - //SEG241 [148] if((byte) gfx_mode::keyboard_event#0!=(const byte) KEY_SPACE#0) goto gfx_mode::@19 -- vbuaa_neq_vbuc1_then_la1 + //SEG241 [147] (byte) gfx_mode::keyboard_event#0 ← (byte) keyboard_event_get::return#3 + //SEG242 [148] if((byte) gfx_mode::keyboard_event#0!=(const byte) KEY_SPACE#0) goto gfx_mode::@19 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b19 jmp breturn - //SEG242 gfx_mode::@return + //SEG243 gfx_mode::@return breturn: - //SEG243 [149] return + //SEG244 [149] return rts - //SEG244 [150] phi from gfx_mode::@15 to gfx_mode::@15 [phi:gfx_mode::@15->gfx_mode::@15] + //SEG245 [150] phi from gfx_mode::@15 to gfx_mode::@15 [phi:gfx_mode::@15->gfx_mode::@15] b15_from_b15: - //SEG245 [150] phi (byte) gfx_mode::i#2 = (byte) gfx_mode::i#1 [phi:gfx_mode::@15->gfx_mode::@15#0] -- register_copy + //SEG246 [150] phi (byte) gfx_mode::i#2 = (byte) gfx_mode::i#1 [phi:gfx_mode::@15->gfx_mode::@15#0] -- register_copy jmp b15 - //SEG246 [150] phi from gfx_mode::@33 to gfx_mode::@15 [phi:gfx_mode::@33->gfx_mode::@15] + //SEG247 [150] phi from gfx_mode::@33 to gfx_mode::@15 [phi:gfx_mode::@33->gfx_mode::@15] b15_from_b33: - //SEG247 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuyy=vbuc1 + //SEG248 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuyy=vbuc1 ldy #0 jmp b15 - //SEG248 gfx_mode::@15 + //SEG249 gfx_mode::@15 b15: - //SEG249 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + //SEG250 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG250 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuyy=_inc_vbuyy + //SEG251 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuyy=_inc_vbuyy iny - //SEG251 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@15 -- vbuyy_neq_vbuc1_then_la1 + //SEG252 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@15 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b15_from_b15 jmp b19 } -//SEG252 keyboard_event_get +//SEG253 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - //SEG253 [154] if((byte) keyboard_events_size#100==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG254 [154] if((byte) keyboard_events_size#100==(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 - //SEG254 keyboard_event_get::@3 + //SEG255 keyboard_event_get::@3 b3: - //SEG255 [155] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#100 -- vbuz1=_dec_vbuz1 + //SEG256 [155] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#100 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG256 [156] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG257 [156] (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 - //SEG257 [157] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG258 [157] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG258 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG259 [157] 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 + //SEG259 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG260 [157] 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 - //SEG260 [157] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG261 [157] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG261 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#100 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG262 [157] 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 + //SEG262 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#100 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG263 [157] 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 - //SEG263 keyboard_event_get::@return + //SEG264 keyboard_event_get::@return breturn: - //SEG264 [158] return + //SEG265 [158] return rts } -//SEG265 keyboard_event_scan +//SEG266 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -21920,538 +21920,538 @@ keyboard_event_scan: { .label keycode = 8 .label row = 2 .label col = 7 - //SEG266 [160] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG267 [160] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG267 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#110 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG268 [160] 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 + //SEG268 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#110 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG269 [160] 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 - //SEG269 [160] 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 + //SEG270 [160] 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 - //SEG270 [160] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG271 [160] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG271 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG272 [160] 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 - //SEG273 [160] 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 + //SEG272 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG273 [160] 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 + //SEG274 [160] 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 - //SEG274 keyboard_event_scan::@1 + //SEG275 keyboard_event_scan::@1 b1: - //SEG275 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuaa=vbuz1 + //SEG276 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuaa=vbuz1 lda row - //SEG276 [162] call keyboard_matrix_read + //SEG277 [162] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG277 [163] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG278 [163] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b25 - //SEG278 keyboard_event_scan::@25 + //SEG279 keyboard_event_scan::@25 b25: - //SEG279 [164] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG280 [164] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG280 [165] 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 + //SEG281 [165] 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 - //SEG281 keyboard_event_scan::@13 + //SEG282 keyboard_event_scan::@13 b13: - //SEG282 [166] (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 + //SEG283 [166] (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 - //SEG283 [167] 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] + //SEG284 [167] 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: - //SEG284 [167] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG285 [167] 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 + //SEG285 [167] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG286 [167] 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 - //SEG286 keyboard_event_scan::@3 + //SEG287 keyboard_event_scan::@3 b3: - //SEG287 [168] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG288 [168] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG288 [169] 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 + //SEG289 [169] 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 - //SEG289 [170] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG290 [170] 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 - //SEG290 keyboard_event_scan::@20 + //SEG291 keyboard_event_scan::@20 b20: - //SEG291 [171] call keyboard_event_pressed - //SEG292 [213] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG292 [171] call keyboard_event_pressed + //SEG293 [213] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG293 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG294 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG294 [172] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 + //SEG295 [172] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 jmp b26 - //SEG295 keyboard_event_scan::@26 + //SEG296 keyboard_event_scan::@26 b26: - //SEG296 [173] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - //SEG297 [174] 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 + //SEG297 [173] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG298 [174] 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 - //SEG298 [175] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG299 [175] 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 - //SEG299 keyboard_event_scan::@21 + //SEG300 keyboard_event_scan::@21 b21: - //SEG300 [176] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG301 [176] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG301 [176] phi (byte) keyboard_modifiers#18 = (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 + //SEG302 [176] phi (byte) keyboard_modifiers#18 = (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 - //SEG302 [176] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG303 [176] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG303 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + //SEG304 [176] phi (byte) keyboard_modifiers#18 = (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 - //SEG304 keyboard_event_scan::@9 + //SEG305 keyboard_event_scan::@9 b9: - //SEG305 [177] call keyboard_event_pressed - //SEG306 [213] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG306 [177] call keyboard_event_pressed + //SEG307 [213] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG307 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG308 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG308 [178] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 + //SEG309 [178] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 jmp b27 - //SEG309 keyboard_event_scan::@27 + //SEG310 keyboard_event_scan::@27 b27: - //SEG310 [179] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - //SEG311 [180] 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 + //SEG311 [179] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG312 [180] 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 jmp b22 - //SEG312 keyboard_event_scan::@22 + //SEG313 keyboard_event_scan::@22 b22: - //SEG313 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG314 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_RSHIFT ora keyboard_modifiers sta keyboard_modifiers - //SEG314 [182] 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] + //SEG315 [182] 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: - //SEG315 [182] phi (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG316 [182] phi (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG316 keyboard_event_scan::@10 + //SEG317 keyboard_event_scan::@10 b10: - //SEG317 [183] call keyboard_event_pressed - //SEG318 [213] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG318 [183] call keyboard_event_pressed + //SEG319 [213] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG319 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG320 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG320 [184] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 + //SEG321 [184] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 jmp b28 - //SEG321 keyboard_event_scan::@28 + //SEG322 keyboard_event_scan::@28 b28: - //SEG322 [185] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - //SEG323 [186] 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 + //SEG323 [185] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG324 [186] 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 jmp b23 - //SEG324 keyboard_event_scan::@23 + //SEG325 keyboard_event_scan::@23 b23: - //SEG325 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG326 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_CTRL ora keyboard_modifiers sta keyboard_modifiers - //SEG326 [188] 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] + //SEG327 [188] 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: - //SEG327 [188] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG328 [188] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy jmp b11 - //SEG328 keyboard_event_scan::@11 + //SEG329 keyboard_event_scan::@11 b11: - //SEG329 [189] call keyboard_event_pressed - //SEG330 [213] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG330 [189] call keyboard_event_pressed + //SEG331 [213] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG331 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG332 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG332 [190] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 + //SEG333 [190] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 jmp b29 - //SEG333 keyboard_event_scan::@29 + //SEG334 keyboard_event_scan::@29 b29: - //SEG334 [191] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#3 - //SEG335 [192] 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 + //SEG335 [191] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#3 + //SEG336 [192] 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_from_b29 jmp b24 - //SEG336 keyboard_event_scan::@24 + //SEG337 keyboard_event_scan::@24 b24: - //SEG337 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG338 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_COMMODORE ora keyboard_modifiers sta keyboard_modifiers - //SEG338 [194] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return] + //SEG339 [194] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return] breturn_from_b24: breturn_from_b29: - //SEG339 [194] phi (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy + //SEG340 [194] phi (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy jmp breturn - //SEG340 keyboard_event_scan::@return + //SEG341 keyboard_event_scan::@return breturn: - //SEG341 [195] return + //SEG342 [195] return rts - //SEG342 [196] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG343 [196] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG343 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG344 [196] 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 - //SEG345 [196] 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 + //SEG344 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG345 [196] 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 + //SEG346 [196] 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 - //SEG346 [196] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG347 [196] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG347 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#119 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG348 [196] 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 - //SEG349 [196] 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 + //SEG348 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#119 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG349 [196] 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 + //SEG350 [196] 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 - //SEG350 keyboard_event_scan::@4 + //SEG351 keyboard_event_scan::@4 b4: - //SEG351 [197] (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 + //SEG352 [197] (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 - //SEG352 [198] (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_vbuz1 + //SEG353 [198] (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_vbuz1 ldy col and keyboard_matrix_col_bitmask,y - //SEG353 [199] 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 + //SEG354 [199] 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 - //SEG354 keyboard_event_scan::@15 + //SEG355 keyboard_event_scan::@15 b15: - //SEG355 [200] if((byte) keyboard_events_size#18==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG356 [200] if((byte) keyboard_events_size#18==(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 - //SEG356 keyboard_event_scan::@16 + //SEG357 keyboard_event_scan::@16 b16: - //SEG357 [201] (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_vbuz2 + //SEG358 [201] (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_vbuz2 lda row_scan ldy col and keyboard_matrix_col_bitmask,y - //SEG358 [202] 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 + //SEG359 [202] 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 - //SEG359 keyboard_event_scan::@17 + //SEG360 keyboard_event_scan::@17 b17: - //SEG360 [203] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG361 [203] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG361 [204] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 + //SEG362 [204] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG362 [205] 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] + //SEG363 [205] 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: - //SEG363 [205] phi (byte) keyboard_events_size#119 = (byte) keyboard_events_size#18 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG364 [205] phi (byte) keyboard_events_size#119 = (byte) keyboard_events_size#18 [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 - //SEG364 keyboard_event_scan::@5 + //SEG365 keyboard_event_scan::@5 b5: - //SEG365 [206] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG366 [206] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG366 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG367 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG367 [208] 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 + //SEG368 [208] 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 - //SEG368 keyboard_event_scan::@19 + //SEG369 keyboard_event_scan::@19 b19: - //SEG369 [209] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG370 [209] *((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 - //SEG370 keyboard_event_scan::@7 + //SEG371 keyboard_event_scan::@7 b7: - //SEG371 [210] (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 + //SEG372 [210] (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 - //SEG372 [211] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG373 [211] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG373 [212] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 + //SEG374 [212] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG374 keyboard_event_pressed +//SEG375 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed keyboard_event_pressed: { .label row_bits = 8 .label keycode = 7 - //SEG375 [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG376 [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG376 [215] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG377 [215] (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 - //SEG377 [216] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG378 [216] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG378 [217] (byte) keyboard_event_pressed::return#10 ← (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 + //SEG379 [217] (byte) keyboard_event_pressed::return#10 ← (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 - //SEG379 keyboard_event_pressed::@return + //SEG380 keyboard_event_pressed::@return breturn: - //SEG380 [218] return + //SEG381 [218] return rts } -//SEG381 keyboard_matrix_read +//SEG382 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG382 [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuaa + //SEG383 [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuaa tay lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG383 [220] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG384 [220] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG384 keyboard_matrix_read::@return + //SEG385 keyboard_matrix_read::@return breturn: - //SEG385 [221] return + //SEG386 [221] return rts } -//SEG386 get_vic_screen +//SEG387 get_vic_screen // Get the VIC screen address from the screen index get_vic_screen: { .label return = 3 - //SEG387 [223] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_screen::@return -- vbuaa_eq_0_then_la1 + //SEG388 [223] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_screen::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn_from_get_vic_screen jmp b10 - //SEG388 get_vic_screen::@10 + //SEG389 get_vic_screen::@10 b10: - //SEG389 [224] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG390 [224] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 cmp #1 beq breturn_from_b10 jmp b11 - //SEG390 get_vic_screen::@11 + //SEG391 get_vic_screen::@11 b11: - //SEG391 [225] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG392 [225] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 cmp #2 beq breturn_from_b11 jmp b12 - //SEG392 get_vic_screen::@12 + //SEG393 get_vic_screen::@12 b12: - //SEG393 [226] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG394 [226] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 cmp #3 beq breturn_from_b12 jmp b13 - //SEG394 get_vic_screen::@13 + //SEG395 get_vic_screen::@13 b13: - //SEG395 [227] if((byte) get_vic_screen::idx#2!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_vic_screen::@9 -- vbuaa_neq_vbuc1_then_la1 + //SEG396 [227] if((byte) get_vic_screen::idx#2!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_vic_screen::@9 -- vbuaa_neq_vbuc1_then_la1 cmp #4 bne b9_from_b13 - //SEG396 [228] phi from get_vic_screen::@13 to get_vic_screen::@return [phi:get_vic_screen::@13->get_vic_screen::@return] + //SEG397 [228] phi from get_vic_screen::@13 to get_vic_screen::@return [phi:get_vic_screen::@13->get_vic_screen::@return] breturn_from_b13: - //SEG397 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN4#0 [phi:get_vic_screen::@13->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG398 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN4#0 [phi:get_vic_screen::@13->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN4 sta return+1 jmp breturn - //SEG398 [228] phi from get_vic_screen get_vic_screen::@9 to get_vic_screen::@return [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return] + //SEG399 [228] phi from get_vic_screen get_vic_screen::@9 to get_vic_screen::@return [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return] breturn_from_get_vic_screen: breturn_from_b9: - //SEG399 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN0#0 [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG400 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN0#0 [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN0 sta return+1 jmp breturn - //SEG400 [228] phi from get_vic_screen::@10 to get_vic_screen::@return [phi:get_vic_screen::@10->get_vic_screen::@return] + //SEG401 [228] phi from get_vic_screen::@10 to get_vic_screen::@return [phi:get_vic_screen::@10->get_vic_screen::@return] breturn_from_b10: - //SEG401 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN1#0 [phi:get_vic_screen::@10->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG402 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN1#0 [phi:get_vic_screen::@10->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN1 sta return+1 jmp breturn - //SEG402 [228] phi from get_vic_screen::@11 to get_vic_screen::@return [phi:get_vic_screen::@11->get_vic_screen::@return] + //SEG403 [228] phi from get_vic_screen::@11 to get_vic_screen::@return [phi:get_vic_screen::@11->get_vic_screen::@return] breturn_from_b11: - //SEG403 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN2#0 [phi:get_vic_screen::@11->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG404 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN2#0 [phi:get_vic_screen::@11->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN2 sta return+1 jmp breturn - //SEG404 [228] phi from get_vic_screen::@12 to get_vic_screen::@return [phi:get_vic_screen::@12->get_vic_screen::@return] + //SEG405 [228] phi from get_vic_screen::@12 to get_vic_screen::@return [phi:get_vic_screen::@12->get_vic_screen::@return] breturn_from_b12: - //SEG405 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN3#0 [phi:get_vic_screen::@12->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG406 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN3#0 [phi:get_vic_screen::@12->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN3 sta return+1 jmp breturn - //SEG406 get_vic_screen::@return + //SEG407 get_vic_screen::@return breturn: - //SEG407 [229] return + //SEG408 [229] return rts - //SEG408 [230] phi from get_vic_screen::@13 to get_vic_screen::@9 [phi:get_vic_screen::@13->get_vic_screen::@9] + //SEG409 [230] phi from get_vic_screen::@13 to get_vic_screen::@9 [phi:get_vic_screen::@13->get_vic_screen::@9] b9_from_b13: jmp b9 - //SEG409 get_vic_screen::@9 + //SEG410 get_vic_screen::@9 b9: jmp breturn_from_b9 } -//SEG410 get_vic_charset +//SEG411 get_vic_charset // Get the VIC charset/bitmap address from the index get_vic_charset: { .label return = 3 - //SEG411 [231] if((byte) get_vic_charset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_charset::@return -- vbuaa_eq_0_then_la1 + //SEG412 [231] if((byte) get_vic_charset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_charset::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn_from_get_vic_charset jmp b4 - //SEG412 get_vic_charset::@4 + //SEG413 get_vic_charset::@4 b4: - //SEG413 [232] if((byte) get_vic_charset::idx#0!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_charset::@3 -- vbuaa_neq_vbuc1_then_la1 + //SEG414 [232] if((byte) get_vic_charset::idx#0!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_charset::@3 -- vbuaa_neq_vbuc1_then_la1 cmp #1 bne b3_from_b4 - //SEG414 [233] phi from get_vic_charset::@4 to get_vic_charset::@return [phi:get_vic_charset::@4->get_vic_charset::@return] + //SEG415 [233] phi from get_vic_charset::@4 to get_vic_charset::@return [phi:get_vic_charset::@4->get_vic_charset::@return] breturn_from_b4: - //SEG415 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_BITMAP#0 [phi:get_vic_charset::@4->get_vic_charset::@return#0] -- pbuz1=pbuc1 + //SEG416 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_BITMAP#0 [phi:get_vic_charset::@4->get_vic_charset::@return#0] -- pbuz1=pbuc1 lda #VIC_BITMAP sta return+1 jmp breturn - //SEG416 [233] phi from get_vic_charset get_vic_charset::@3 to get_vic_charset::@return [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return] + //SEG417 [233] phi from get_vic_charset get_vic_charset::@3 to get_vic_charset::@return [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return] breturn_from_get_vic_charset: breturn_from_b3: - //SEG417 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_CHARSET_ROM#0 [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return#0] -- pbuz1=pbuc1 + //SEG418 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_CHARSET_ROM#0 [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return#0] -- pbuz1=pbuc1 lda #VIC_CHARSET_ROM sta return+1 jmp breturn - //SEG418 get_vic_charset::@return + //SEG419 get_vic_charset::@return breturn: - //SEG419 [234] return + //SEG420 [234] return rts - //SEG420 [235] phi from get_vic_charset::@4 to get_vic_charset::@3 [phi:get_vic_charset::@4->get_vic_charset::@3] + //SEG421 [235] phi from get_vic_charset::@4 to get_vic_charset::@3 [phi:get_vic_charset::@4->get_vic_charset::@3] b3_from_b4: jmp b3 - //SEG421 get_vic_charset::@3 + //SEG422 get_vic_charset::@3 b3: jmp breturn_from_b3 } -//SEG422 get_plane +//SEG423 get_plane // Get plane address from a plane index (from the form) get_plane: { .label return = $a - //SEG423 [237] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_plane::@return -- vbuaa_eq_0_then_la1 + //SEG424 [237] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_plane::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn_from_get_plane jmp b28 - //SEG424 get_plane::@28 + //SEG425 get_plane::@28 b28: - //SEG425 [238] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG426 [238] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #1 beq breturn_from_b28 jmp b29 - //SEG426 get_plane::@29 + //SEG427 get_plane::@29 b29: - //SEG427 [239] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG428 [239] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #2 beq breturn_from_b29 jmp b30 - //SEG428 get_plane::@30 + //SEG429 get_plane::@30 b30: - //SEG429 [240] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG430 [240] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #3 beq breturn_from_b30 jmp b31 - //SEG430 get_plane::@31 + //SEG431 get_plane::@31 b31: - //SEG431 [241] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG432 [241] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #4 beq breturn_from_b31 jmp b32 - //SEG432 get_plane::@32 + //SEG433 get_plane::@32 b32: - //SEG433 [242] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG434 [242] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #5 beq breturn_from_b32 jmp b33 - //SEG434 get_plane::@33 + //SEG435 get_plane::@33 b33: - //SEG435 [243] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG436 [243] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #6 beq breturn_from_b33 jmp b34 - //SEG436 get_plane::@34 + //SEG437 get_plane::@34 b34: - //SEG437 [244] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG438 [244] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #7 beq breturn_from_b34 jmp b35 - //SEG438 get_plane::@35 + //SEG439 get_plane::@35 b35: - //SEG439 [245] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG440 [245] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #8 beq breturn_from_b35 jmp b36 - //SEG440 get_plane::@36 + //SEG441 get_plane::@36 b36: - //SEG441 [246] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG442 [246] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #9 beq breturn_from_b36 jmp b37 - //SEG442 get_plane::@37 + //SEG443 get_plane::@37 b37: - //SEG443 [247] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG444 [247] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #$a beq breturn_from_b37 jmp b38 - //SEG444 get_plane::@38 + //SEG445 get_plane::@38 b38: - //SEG445 [248] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 11) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG446 [248] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 11) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #$b beq breturn_from_b38 jmp b39 - //SEG446 get_plane::@39 + //SEG447 get_plane::@39 b39: - //SEG447 [249] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 12) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG448 [249] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 12) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #$c beq breturn_from_b39 jmp b40 - //SEG448 get_plane::@40 + //SEG449 get_plane::@40 b40: - //SEG449 [250] if((byte) get_plane::idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 13) goto get_plane::@27 -- vbuaa_neq_vbuc1_then_la1 + //SEG450 [250] if((byte) get_plane::idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 13) goto get_plane::@27 -- vbuaa_neq_vbuc1_then_la1 cmp #$d bne b27_from_b40 - //SEG450 [251] phi from get_plane::@40 to get_plane::@return [phi:get_plane::@40->get_plane::@return] + //SEG451 [251] phi from get_plane::@40 to get_plane::@return [phi:get_plane::@40->get_plane::@return] breturn_from_b40: - //SEG451 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_FULL#0 [phi:get_plane::@40->get_plane::@return#0] -- vduz1=vduc1 + //SEG452 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_FULL#0 [phi:get_plane::@40->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_FULL @@ -22461,10 +22461,10 @@ get_plane: { lda #>PLANE_FULL>>$10 sta return+3 jmp breturn - //SEG452 [251] phi from get_plane get_plane::@27 to get_plane::@return [phi:get_plane/get_plane::@27->get_plane::@return] + //SEG453 [251] phi from get_plane get_plane::@27 to get_plane::@return [phi:get_plane/get_plane::@27->get_plane::@return] breturn_from_get_plane: breturn_from_b27: - //SEG453 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN0#0 [phi:get_plane/get_plane::@27->get_plane::@return#0] -- vduz1=vwuc1 + //SEG454 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN0#0 [phi:get_plane/get_plane::@27->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN0 sta return lda #>$ffffffff&VIC_SCREEN0 @@ -22474,9 +22474,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN0>>$10 sta return+3 jmp breturn - //SEG454 [251] phi from get_plane::@28 to get_plane::@return [phi:get_plane::@28->get_plane::@return] + //SEG455 [251] phi from get_plane::@28 to get_plane::@return [phi:get_plane::@28->get_plane::@return] breturn_from_b28: - //SEG455 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN1#0 [phi:get_plane::@28->get_plane::@return#0] -- vduz1=vwuc1 + //SEG456 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN1#0 [phi:get_plane::@28->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN1 sta return lda #>$ffffffff&VIC_SCREEN1 @@ -22486,9 +22486,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN1>>$10 sta return+3 jmp breturn - //SEG456 [251] phi from get_plane::@29 to get_plane::@return [phi:get_plane::@29->get_plane::@return] + //SEG457 [251] phi from get_plane::@29 to get_plane::@return [phi:get_plane::@29->get_plane::@return] breturn_from_b29: - //SEG457 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN2#0 [phi:get_plane::@29->get_plane::@return#0] -- vduz1=vwuc1 + //SEG458 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN2#0 [phi:get_plane::@29->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN2 sta return lda #>$ffffffff&VIC_SCREEN2 @@ -22498,9 +22498,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN2>>$10 sta return+3 jmp breturn - //SEG458 [251] phi from get_plane::@30 to get_plane::@return [phi:get_plane::@30->get_plane::@return] + //SEG459 [251] phi from get_plane::@30 to get_plane::@return [phi:get_plane::@30->get_plane::@return] breturn_from_b30: - //SEG459 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN3#0 [phi:get_plane::@30->get_plane::@return#0] -- vduz1=vwuc1 + //SEG460 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN3#0 [phi:get_plane::@30->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN3 sta return lda #>$ffffffff&VIC_SCREEN3 @@ -22510,9 +22510,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN3>>$10 sta return+3 jmp breturn - //SEG460 [251] phi from get_plane::@31 to get_plane::@return [phi:get_plane::@31->get_plane::@return] + //SEG461 [251] phi from get_plane::@31 to get_plane::@return [phi:get_plane::@31->get_plane::@return] breturn_from_b31: - //SEG461 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_BITMAP#0 [phi:get_plane::@31->get_plane::@return#0] -- vduz1=vwuc1 + //SEG462 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_BITMAP#0 [phi:get_plane::@31->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_BITMAP sta return lda #>$ffffffff&VIC_BITMAP @@ -22522,9 +22522,9 @@ get_plane: { lda #>$ffffffff&VIC_BITMAP>>$10 sta return+3 jmp breturn - //SEG462 [251] phi from get_plane::@32 to get_plane::@return [phi:get_plane::@32->get_plane::@return] + //SEG463 [251] phi from get_plane::@32 to get_plane::@return [phi:get_plane::@32->get_plane::@return] breturn_from_b32: - //SEG463 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_CHARSET_ROM#0 [phi:get_plane::@32->get_plane::@return#0] -- vduz1=vwuc1 + //SEG464 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_CHARSET_ROM#0 [phi:get_plane::@32->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_CHARSET_ROM sta return lda #>$ffffffff&VIC_CHARSET_ROM @@ -22534,9 +22534,9 @@ get_plane: { lda #>$ffffffff&VIC_CHARSET_ROM>>$10 sta return+3 jmp breturn - //SEG464 [251] phi from get_plane::@33 to get_plane::@return [phi:get_plane::@33->get_plane::@return] + //SEG465 [251] phi from get_plane::@33 to get_plane::@return [phi:get_plane::@33->get_plane::@return] breturn_from_b33: - //SEG465 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_8BPP_CHUNKY#0 [phi:get_plane::@33->get_plane::@return#0] -- vduz1=vduc1 + //SEG466 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_8BPP_CHUNKY#0 [phi:get_plane::@33->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_8BPP_CHUNKY @@ -22546,9 +22546,9 @@ get_plane: { lda #>PLANE_8BPP_CHUNKY>>$10 sta return+3 jmp breturn - //SEG466 [251] phi from get_plane::@34 to get_plane::@return [phi:get_plane::@34->get_plane::@return] + //SEG467 [251] phi from get_plane::@34 to get_plane::@return [phi:get_plane::@34->get_plane::@return] breturn_from_b34: - //SEG467 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL#0 [phi:get_plane::@34->get_plane::@return#0] -- vduz1=vduc1 + //SEG468 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL#0 [phi:get_plane::@34->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_HORISONTAL @@ -22558,9 +22558,9 @@ get_plane: { lda #>PLANE_HORISONTAL>>$10 sta return+3 jmp breturn - //SEG468 [251] phi from get_plane::@35 to get_plane::@return [phi:get_plane::@35->get_plane::@return] + //SEG469 [251] phi from get_plane::@35 to get_plane::@return [phi:get_plane::@35->get_plane::@return] breturn_from_b35: - //SEG469 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL#0 [phi:get_plane::@35->get_plane::@return#0] -- vduz1=vduc1 + //SEG470 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL#0 [phi:get_plane::@35->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_VERTICAL @@ -22570,9 +22570,9 @@ get_plane: { lda #>PLANE_VERTICAL>>$10 sta return+3 jmp breturn - //SEG470 [251] phi from get_plane::@36 to get_plane::@return [phi:get_plane::@36->get_plane::@return] + //SEG471 [251] phi from get_plane::@36 to get_plane::@return [phi:get_plane::@36->get_plane::@return] breturn_from_b36: - //SEG471 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL2#0 [phi:get_plane::@36->get_plane::@return#0] -- vduz1=vduc1 + //SEG472 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL2#0 [phi:get_plane::@36->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_HORISONTAL2 @@ -22582,9 +22582,9 @@ get_plane: { lda #>PLANE_HORISONTAL2>>$10 sta return+3 jmp breturn - //SEG472 [251] phi from get_plane::@37 to get_plane::@return [phi:get_plane::@37->get_plane::@return] + //SEG473 [251] phi from get_plane::@37 to get_plane::@return [phi:get_plane::@37->get_plane::@return] breturn_from_b37: - //SEG473 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL2#0 [phi:get_plane::@37->get_plane::@return#0] -- vduz1=vduc1 + //SEG474 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL2#0 [phi:get_plane::@37->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_VERTICAL2 @@ -22594,9 +22594,9 @@ get_plane: { lda #>PLANE_VERTICAL2>>$10 sta return+3 jmp breturn - //SEG474 [251] phi from get_plane::@38 to get_plane::@return [phi:get_plane::@38->get_plane::@return] + //SEG475 [251] phi from get_plane::@38 to get_plane::@return [phi:get_plane::@38->get_plane::@return] breturn_from_b38: - //SEG475 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_CHARSET8#0 [phi:get_plane::@38->get_plane::@return#0] -- vduz1=vduc1 + //SEG476 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_CHARSET8#0 [phi:get_plane::@38->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_CHARSET8 @@ -22606,9 +22606,9 @@ get_plane: { lda #>PLANE_CHARSET8>>$10 sta return+3 jmp breturn - //SEG476 [251] phi from get_plane::@39 to get_plane::@return [phi:get_plane::@39->get_plane::@return] + //SEG477 [251] phi from get_plane::@39 to get_plane::@return [phi:get_plane::@39->get_plane::@return] breturn_from_b39: - //SEG477 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_BLANK#0 [phi:get_plane::@39->get_plane::@return#0] -- vduz1=vduc1 + //SEG478 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_BLANK#0 [phi:get_plane::@39->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_BLANK @@ -22618,443 +22618,443 @@ get_plane: { lda #>PLANE_BLANK>>$10 sta return+3 jmp breturn - //SEG478 get_plane::@return + //SEG479 get_plane::@return breturn: - //SEG479 [252] return + //SEG480 [252] return rts - //SEG480 [253] phi from get_plane::@40 to get_plane::@27 [phi:get_plane::@40->get_plane::@27] + //SEG481 [253] phi from get_plane::@40 to get_plane::@27 [phi:get_plane::@40->get_plane::@27] b27_from_b40: jmp b27 - //SEG481 get_plane::@27 + //SEG482 get_plane::@27 b27: jmp breturn_from_b27 } -//SEG482 form_mode +//SEG483 form_mode // Show the form - and let the user change values form_mode: { .label preset_current = $f - //SEG483 [255] call print_set_screen - //SEG484 [447] phi from form_mode to print_set_screen [phi:form_mode->print_set_screen] + //SEG484 [255] call print_set_screen + //SEG485 [447] phi from form_mode to print_set_screen [phi:form_mode->print_set_screen] print_set_screen_from_form_mode: - //SEG485 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:form_mode->print_set_screen#0] -- pbuz1=pbuc1 + //SEG486 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:form_mode->print_set_screen#0] -- pbuz1=pbuc1 lda #COLS sta print_set_screen.screen+1 jsr print_set_screen - //SEG486 [256] phi from form_mode to form_mode::@21 [phi:form_mode->form_mode::@21] + //SEG487 [256] phi from form_mode to form_mode::@21 [phi:form_mode->form_mode::@21] b21_from_form_mode: jmp b21 - //SEG487 form_mode::@21 + //SEG488 form_mode::@21 b21: - //SEG488 [257] call print_cls + //SEG489 [257] call print_cls jsr print_cls - //SEG489 [258] phi from form_mode::@21 to form_mode::@22 [phi:form_mode::@21->form_mode::@22] + //SEG490 [258] phi from form_mode::@21 to form_mode::@22 [phi:form_mode::@21->form_mode::@22] b22_from_b21: jmp b22 - //SEG490 form_mode::@22 + //SEG491 form_mode::@22 b22: - //SEG491 [259] call print_str_lines - //SEG492 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] + //SEG492 [259] call print_str_lines + //SEG493 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] print_str_lines_from_b22: - //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 + //SEG494 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_COLS sta print_str_lines.str+1 jsr print_str_lines - //SEG494 [260] phi from form_mode::@22 to form_mode::@23 [phi:form_mode::@22->form_mode::@23] + //SEG495 [260] phi from form_mode::@22 to form_mode::@23 [phi:form_mode::@22->form_mode::@23] b23_from_b22: jmp b23 - //SEG495 form_mode::@23 + //SEG496 form_mode::@23 b23: - //SEG496 [261] call print_set_screen - //SEG497 [447] phi from form_mode::@23 to print_set_screen [phi:form_mode::@23->print_set_screen] + //SEG497 [261] call print_set_screen + //SEG498 [447] phi from form_mode::@23 to print_set_screen [phi:form_mode::@23->print_set_screen] print_set_screen_from_b23: - //SEG498 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) FORM_SCREEN#0 [phi:form_mode::@23->print_set_screen#0] -- pbuz1=pbuc1 + //SEG499 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) FORM_SCREEN#0 [phi:form_mode::@23->print_set_screen#0] -- pbuz1=pbuc1 lda #FORM_SCREEN sta print_set_screen.screen+1 jsr print_set_screen - //SEG499 [262] phi from form_mode::@23 to form_mode::@24 [phi:form_mode::@23->form_mode::@24] + //SEG500 [262] phi from form_mode::@23 to form_mode::@24 [phi:form_mode::@23->form_mode::@24] b24_from_b23: jmp b24 - //SEG500 form_mode::@24 + //SEG501 form_mode::@24 b24: - //SEG501 [263] call print_cls + //SEG502 [263] call print_cls jsr print_cls - //SEG502 [264] phi from form_mode::@24 to form_mode::@25 [phi:form_mode::@24->form_mode::@25] + //SEG503 [264] phi from form_mode::@24 to form_mode::@25 [phi:form_mode::@24->form_mode::@25] b25_from_b24: jmp b25 - //SEG503 form_mode::@25 + //SEG504 form_mode::@25 b25: - //SEG504 [265] call print_str_lines - //SEG505 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] + //SEG505 [265] call print_str_lines + //SEG506 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] print_str_lines_from_b25: - //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 + //SEG507 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_TEXT sta print_str_lines.str+1 jsr print_str_lines - //SEG507 [266] phi from form_mode::@25 to form_mode::@26 [phi:form_mode::@25->form_mode::@26] + //SEG508 [266] phi from form_mode::@25 to form_mode::@26 [phi:form_mode::@25->form_mode::@26] b26_from_b25: jmp b26 - //SEG508 form_mode::@26 + //SEG509 form_mode::@26 b26: - //SEG509 [267] call form_set_screen - //SEG510 [409] phi from form_mode::@26 to form_set_screen [phi:form_mode::@26->form_set_screen] + //SEG510 [267] call form_set_screen + //SEG511 [409] phi from form_mode::@26 to form_set_screen [phi:form_mode::@26->form_set_screen] form_set_screen_from_b26: jsr form_set_screen - //SEG511 [268] phi from form_mode::@26 to form_mode::@27 [phi:form_mode::@26->form_mode::@27] + //SEG512 [268] phi from form_mode::@26 to form_mode::@27 [phi:form_mode::@26->form_mode::@27] b27_from_b26: jmp b27 - //SEG512 form_mode::@27 + //SEG513 form_mode::@27 b27: - //SEG513 [269] call form_render_values - //SEG514 [330] phi from form_mode::@27 to form_render_values [phi:form_mode::@27->form_render_values] + //SEG514 [269] call form_render_values + //SEG515 [330] phi from form_mode::@27 to form_render_values [phi:form_mode::@27->form_render_values] form_render_values_from_b27: jsr form_render_values jmp b28 - //SEG515 form_mode::@28 + //SEG516 form_mode::@28 b28: - //SEG516 [270] (byte) render_preset_name::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 + //SEG517 [270] (byte) render_preset_name::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 lda form_fields_val - //SEG517 [271] call render_preset_name - //SEG518 [306] phi from form_mode::@28 to render_preset_name [phi:form_mode::@28->render_preset_name] + //SEG518 [271] call render_preset_name + //SEG519 [306] phi from form_mode::@28 to render_preset_name [phi:form_mode::@28->render_preset_name] render_preset_name_from_b28: - //SEG519 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#0 [phi:form_mode::@28->render_preset_name#0] -- register_copy + //SEG520 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#0 [phi:form_mode::@28->render_preset_name#0] -- register_copy jsr render_preset_name jmp b29 - //SEG520 form_mode::@29 + //SEG521 form_mode::@29 b29: - //SEG521 [272] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) FORM_CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG522 [272] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) FORM_CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&FORM_CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG522 [273] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG523 [273] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG523 [274] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG524 [274] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG524 [275] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG525 [275] *((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 - //SEG525 [276] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG526 [276] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^FORM_CHARSET/$4000 sta CIA2_PORT_A - //SEG526 [277] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG527 [277] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG527 [278] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG528 [278] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG528 [279] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG529 [279] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG529 [280] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) FORM_SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) FORM_CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG530 [280] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) FORM_SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) FORM_CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(FORM_SCREEN&$3fff)/$40|(FORM_CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG530 [281] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG531 [281] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG532 [282] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>FORM_SCREEN sta DTV_PLANEA_START_MI - //SEG532 [283] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG533 [283] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG533 [284] phi from form_mode::@29 to form_mode::@1 [phi:form_mode::@29->form_mode::@1] + //SEG534 [284] phi from form_mode::@29 to form_mode::@1 [phi:form_mode::@29->form_mode::@1] b1_from_b29: - //SEG534 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuyy=vbuc1 + //SEG535 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG535 [284] phi from form_mode::@1 to form_mode::@1 [phi:form_mode::@1->form_mode::@1] + //SEG536 [284] phi from form_mode::@1 to form_mode::@1 [phi:form_mode::@1->form_mode::@1] b1_from_b1: - //SEG536 [284] phi (byte) form_mode::i#2 = (byte) form_mode::i#1 [phi:form_mode::@1->form_mode::@1#0] -- register_copy + //SEG537 [284] phi (byte) form_mode::i#2 = (byte) form_mode::i#1 [phi:form_mode::@1->form_mode::@1#0] -- register_copy jmp b1 - //SEG537 form_mode::@1 + //SEG538 form_mode::@1 b1: - //SEG538 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + //SEG539 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG539 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuyy=_inc_vbuyy + //SEG540 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuyy=_inc_vbuyy iny - //SEG540 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto form_mode::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG541 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto form_mode::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b1_from_b1 jmp b10 - //SEG541 form_mode::@10 + //SEG542 form_mode::@10 b10: - //SEG542 [288] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG543 [288] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG543 [289] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG544 [289] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG544 [290] (byte) form_mode::preset_current#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG545 [290] (byte) form_mode::preset_current#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta preset_current - //SEG545 [291] phi from form_mode::@10 form_mode::@32 to form_mode::@2 [phi:form_mode::@10/form_mode::@32->form_mode::@2] + //SEG546 [291] phi from form_mode::@10 form_mode::@32 to form_mode::@2 [phi:form_mode::@10/form_mode::@32->form_mode::@2] b2_from_b10: b2_from_b32: - //SEG546 [291] phi (byte) form_mode::preset_current#6 = (byte) form_mode::preset_current#0 [phi:form_mode::@10/form_mode::@32->form_mode::@2#0] -- register_copy - //SEG547 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#1] -- register_copy - //SEG548 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#27 [phi:form_mode::@10/form_mode::@32->form_mode::@2#2] -- register_copy - //SEG549 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#3] -- register_copy + //SEG547 [291] phi (byte) form_mode::preset_current#6 = (byte) form_mode::preset_current#0 [phi:form_mode::@10/form_mode::@32->form_mode::@2#0] -- register_copy + //SEG548 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#1] -- register_copy + //SEG549 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#27 [phi:form_mode::@10/form_mode::@32->form_mode::@2#2] -- register_copy + //SEG550 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#3] -- register_copy jmp b2 - //SEG550 [291] phi from form_mode::@8 to form_mode::@2 [phi:form_mode::@8->form_mode::@2] + //SEG551 [291] phi from form_mode::@8 to form_mode::@2 [phi:form_mode::@8->form_mode::@2] b2_from_b8: - //SEG551 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#18 [phi:form_mode::@8->form_mode::@2#0] -- register_copy - //SEG552 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#24 [phi:form_mode::@8->form_mode::@2#1] -- register_copy - //SEG553 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#16 [phi:form_mode::@8->form_mode::@2#2] -- register_copy + //SEG552 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#18 [phi:form_mode::@8->form_mode::@2#0] -- register_copy + //SEG553 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#24 [phi:form_mode::@8->form_mode::@2#1] -- register_copy + //SEG554 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#16 [phi:form_mode::@8->form_mode::@2#2] -- register_copy jmp b2 - //SEG554 form_mode::@2 + //SEG555 form_mode::@2 b2: jmp b5 - //SEG555 form_mode::@5 + //SEG556 form_mode::@5 b5: - //SEG556 [292] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto form_mode::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG557 [292] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto form_mode::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b5 - //SEG557 [293] phi from form_mode::@5 to form_mode::@7 [phi:form_mode::@5->form_mode::@7] + //SEG558 [293] phi from form_mode::@5 to form_mode::@7 [phi:form_mode::@5->form_mode::@7] b7_from_b5: jmp b7 - //SEG558 form_mode::@7 + //SEG559 form_mode::@7 b7: - //SEG559 [294] call form_control + //SEG560 [294] call form_control jsr form_control - //SEG560 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuaa=vbuyy + //SEG561 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuaa=vbuyy tya jmp b30 - //SEG561 form_mode::@30 + //SEG562 form_mode::@30 b30: - //SEG562 [296] (byte~) form_mode::$36 ← (byte) form_control::return#0 - //SEG563 [297] if((byte~) form_mode::$36==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_mode::@8 -- vbuaa_eq_0_then_la1 + //SEG563 [296] (byte~) form_mode::$36 ← (byte) form_control::return#0 + //SEG564 [297] if((byte~) form_mode::$36==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_mode::@8 -- vbuaa_eq_0_then_la1 cmp #0 beq b8 jmp breturn - //SEG564 form_mode::@return + //SEG565 form_mode::@return breturn: - //SEG565 [298] return + //SEG566 [298] return rts - //SEG566 form_mode::@8 + //SEG567 form_mode::@8 b8: - //SEG567 [299] if((byte) form_mode::preset_current#6==*((const byte[]) form_fields_val#0)) goto form_mode::@2 -- vbuz1_eq__deref_pbuc1_then_la1 + //SEG568 [299] if((byte) form_mode::preset_current#6==*((const byte[]) form_fields_val#0)) goto form_mode::@2 -- vbuz1_eq__deref_pbuc1_then_la1 lda form_fields_val cmp preset_current beq b2_from_b8 jmp b18 - //SEG568 form_mode::@18 + //SEG569 form_mode::@18 b18: - //SEG569 [300] (byte) apply_preset::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 + //SEG570 [300] (byte) apply_preset::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 lda form_fields_val - //SEG570 [301] call apply_preset + //SEG571 [301] call apply_preset jsr apply_preset jmp b31 - //SEG571 form_mode::@31 + //SEG572 form_mode::@31 b31: - //SEG572 [302] (byte) form_mode::preset_current#1 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG573 [302] (byte) form_mode::preset_current#1 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta preset_current - //SEG573 [303] call form_render_values - //SEG574 [330] phi from form_mode::@31 to form_render_values [phi:form_mode::@31->form_render_values] + //SEG574 [303] call form_render_values + //SEG575 [330] phi from form_mode::@31 to form_render_values [phi:form_mode::@31->form_render_values] form_render_values_from_b31: jsr form_render_values jmp b32 - //SEG575 form_mode::@32 + //SEG576 form_mode::@32 b32: - //SEG576 [304] (byte) render_preset_name::idx#1 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 + //SEG577 [304] (byte) render_preset_name::idx#1 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 lda form_fields_val - //SEG577 [305] call render_preset_name - //SEG578 [306] phi from form_mode::@32 to render_preset_name [phi:form_mode::@32->render_preset_name] + //SEG578 [305] call render_preset_name + //SEG579 [306] phi from form_mode::@32 to render_preset_name [phi:form_mode::@32->render_preset_name] render_preset_name_from_b32: - //SEG579 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#1 [phi:form_mode::@32->render_preset_name#0] -- register_copy + //SEG580 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#1 [phi:form_mode::@32->render_preset_name#0] -- register_copy jsr render_preset_name jmp b2_from_b32 } -//SEG580 render_preset_name +//SEG581 render_preset_name // Render form preset name in the form // idx is the ID of the preset render_preset_name: { .label name = 3 - //SEG581 [307] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_preset_name::@22 -- vbuaa_eq_0_then_la1 + //SEG582 [307] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_preset_name::@22 -- vbuaa_eq_0_then_la1 cmp #0 beq b22_from_render_preset_name jmp b23 - //SEG582 render_preset_name::@23 + //SEG583 render_preset_name::@23 b23: - //SEG583 [308] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG584 [308] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #1 beq b22_from_b23 jmp b24 - //SEG584 render_preset_name::@24 + //SEG585 render_preset_name::@24 b24: - //SEG585 [309] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG586 [309] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #2 beq b22_from_b24 jmp b25 - //SEG586 render_preset_name::@25 + //SEG587 render_preset_name::@25 b25: - //SEG587 [310] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG588 [310] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #3 beq b22_from_b25 jmp b26 - //SEG588 render_preset_name::@26 + //SEG589 render_preset_name::@26 b26: - //SEG589 [311] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG590 [311] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #4 beq b22_from_b26 jmp b27 - //SEG590 render_preset_name::@27 + //SEG591 render_preset_name::@27 b27: - //SEG591 [312] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG592 [312] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #5 beq b22_from_b27 jmp b28 - //SEG592 render_preset_name::@28 + //SEG593 render_preset_name::@28 b28: - //SEG593 [313] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG594 [313] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #6 beq b22_from_b28 jmp b29 - //SEG594 render_preset_name::@29 + //SEG595 render_preset_name::@29 b29: - //SEG595 [314] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG596 [314] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #7 beq b22_from_b29 jmp b30 - //SEG596 render_preset_name::@30 + //SEG597 render_preset_name::@30 b30: - //SEG597 [315] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG598 [315] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #8 beq b22_from_b30 jmp b31 - //SEG598 render_preset_name::@31 + //SEG599 render_preset_name::@31 b31: - //SEG599 [316] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG600 [316] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #9 beq b22_from_b31 jmp b32 - //SEG600 render_preset_name::@32 + //SEG601 render_preset_name::@32 b32: - //SEG601 [317] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG602 [317] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #$a beq b22_from_b32 - //SEG602 [318] phi from render_preset_name::@32 to render_preset_name::@33 [phi:render_preset_name::@32->render_preset_name::@33] + //SEG603 [318] phi from render_preset_name::@32 to render_preset_name::@33 [phi:render_preset_name::@32->render_preset_name::@33] b33_from_b32: jmp b33 - //SEG603 render_preset_name::@33 + //SEG604 render_preset_name::@33 b33: - //SEG604 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] + //SEG605 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] b22_from_b33: - //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG606 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_11 sta name+1 jmp b22 - //SEG606 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] + //SEG607 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] b22_from_render_preset_name: - //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG608 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_0 sta name+1 jmp b22 - //SEG608 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] + //SEG609 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] b22_from_b23: - //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG610 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_1 sta name+1 jmp b22 - //SEG610 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] + //SEG611 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] b22_from_b24: - //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG612 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_2 sta name+1 jmp b22 - //SEG612 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] + //SEG613 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] b22_from_b25: - //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG614 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_3 sta name+1 jmp b22 - //SEG614 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] + //SEG615 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] b22_from_b26: - //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG616 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_4 sta name+1 jmp b22 - //SEG616 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] + //SEG617 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] b22_from_b27: - //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG618 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_5 sta name+1 jmp b22 - //SEG618 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] + //SEG619 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] b22_from_b28: - //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG620 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_6 sta name+1 jmp b22 - //SEG620 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] + //SEG621 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] b22_from_b29: - //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG622 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_7 sta name+1 jmp b22 - //SEG622 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] + //SEG623 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] b22_from_b30: - //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG624 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_8 sta name+1 jmp b22 - //SEG624 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] + //SEG625 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] b22_from_b31: - //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG626 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_9 sta name+1 jmp b22 - //SEG626 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] + //SEG627 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] b22_from_b32: - //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG628 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_10 sta name+1 jmp b22 - //SEG628 render_preset_name::@22 + //SEG629 render_preset_name::@22 b22: - //SEG629 [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 - //SEG630 [321] call print_str_at - //SEG631 [323] phi from render_preset_name::@22 to print_str_at [phi:render_preset_name::@22->print_str_at] + //SEG630 [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 + //SEG631 [321] call print_str_at + //SEG632 [323] phi from render_preset_name::@22 to print_str_at [phi:render_preset_name::@22->print_str_at] print_str_at_from_b22: jsr print_str_at jmp breturn - //SEG632 render_preset_name::@return + //SEG633 render_preset_name::@return breturn: - //SEG633 [322] return + //SEG634 [322] return rts name_0: .text "Standard Charset @" name_1: .text "Extended Color Charset @" @@ -23069,122 +23069,122 @@ render_preset_name: { name_10: .text "8bpp Pixel Cell @" name_11: .text "Standard Charset @" } -//SEG634 print_str_at +//SEG635 print_str_at // Print a string at a specific screen position print_str_at: { .label at = 5 .label str = 3 - //SEG635 [324] phi from print_str_at to print_str_at::@1 [phi:print_str_at->print_str_at::@1] + //SEG636 [324] phi from print_str_at to print_str_at::@1 [phi:print_str_at->print_str_at::@1] b1_from_print_str_at: - //SEG636 [324] phi (byte*) print_str_at::at#2 = (const byte*) FORM_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) 10 [phi:print_str_at->print_str_at::@1#0] -- pbuz1=pbuc1 + //SEG637 [324] phi (byte*) print_str_at::at#2 = (const byte*) FORM_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) 10 [phi:print_str_at->print_str_at::@1#0] -- pbuz1=pbuc1 lda #FORM_SCREEN+$28*2+$a sta at+1 - //SEG637 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#1 [phi:print_str_at->print_str_at::@1#1] -- register_copy + //SEG638 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#1 [phi:print_str_at->print_str_at::@1#1] -- register_copy jmp b1 - //SEG638 print_str_at::@1 + //SEG639 print_str_at::@1 b1: - //SEG639 [325] if(*((byte*) print_str_at::str#2)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG640 [325] if(*((byte*) print_str_at::str#2)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG640 print_str_at::@return + //SEG641 print_str_at::@return breturn: - //SEG641 [326] return + //SEG642 [326] return rts - //SEG642 print_str_at::@2 + //SEG643 print_str_at::@2 b2: - //SEG643 [327] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG644 [327] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (at),y - //SEG644 [328] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#2 -- pbuz1=_inc_pbuz1 + //SEG645 [328] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#2 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG645 [329] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#2 -- pbuz1=_inc_pbuz1 + //SEG646 [329] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG646 [324] phi from print_str_at::@2 to print_str_at::@1 [phi:print_str_at::@2->print_str_at::@1] + //SEG647 [324] phi from print_str_at::@2 to print_str_at::@1 [phi:print_str_at::@2->print_str_at::@1] b1_from_b2: - //SEG647 [324] phi (byte*) print_str_at::at#2 = (byte*) print_str_at::at#0 [phi:print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG648 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#0 [phi:print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG648 [324] phi (byte*) print_str_at::at#2 = (byte*) print_str_at::at#0 [phi:print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG649 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#0 [phi:print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 } -//SEG649 form_render_values +//SEG650 form_render_values // Render all form values from the form_fields_val array form_render_values: { .label field = 3 .label idx = 2 - //SEG650 [331] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1] + //SEG651 [331] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1] b1_from_form_render_values: - //SEG651 [331] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuz1=vbuc1 + //SEG652 [331] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuz1=vbuc1 lda #0 sta idx jmp b1 - //SEG652 [331] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1] + //SEG653 [331] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1] b1_from_b3: - //SEG653 [331] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy + //SEG654 [331] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy jmp b1 - //SEG654 form_render_values::@1 + //SEG655 form_render_values::@1 b1: - //SEG655 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 - //SEG656 [333] call form_field_ptr - //SEG657 [340] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr] + //SEG656 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 + //SEG657 [333] call form_field_ptr + //SEG658 [340] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr] form_field_ptr_from_b1: - //SEG658 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy + //SEG659 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy jsr form_field_ptr - //SEG659 [334] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 + //SEG660 [334] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 jmp b3 - //SEG660 form_render_values::@3 + //SEG661 form_render_values::@3 b3: - //SEG661 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 - //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG662 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 + //SEG663 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy idx lda form_fields_val,y tay lda print_hextab,y ldy #0 sta (field),y - //SEG663 [337] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 -- vbuz1=_inc_vbuz1 + //SEG664 [337] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 -- vbuz1=_inc_vbuz1 inc idx - //SEG664 [338] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG665 [338] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 -- vbuz1_lt_vbuc1_then_la1 lda idx cmp #form_fields_cnt bcc b1_from_b3 jmp breturn - //SEG665 form_render_values::@return + //SEG666 form_render_values::@return breturn: - //SEG666 [339] return + //SEG667 [339] return rts } -//SEG667 form_field_ptr +//SEG668 form_field_ptr // Get the screen address of a form field // field_idx is the index of the field to get the screen address for form_field_ptr: { .label return = 3 .label field_idx = 2 .label _2 = 3 - //SEG668 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG669 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 ldy field_idx lda form_fields_y,y - //SEG669 [342] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa + //SEG670 [342] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa tay lda form_line_hi,y sta _2+1 lda form_line_lo,y sta _2 - //SEG670 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG671 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 ldy field_idx lda form_fields_x,y - //SEG671 [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 -- pbuz1=pbuz1_plus_vbuaa + //SEG672 [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 -- pbuz1=pbuz1_plus_vbuaa clc adc return sta return @@ -23192,232 +23192,232 @@ form_field_ptr: { adc return+1 sta return+1 jmp breturn - //SEG672 form_field_ptr::@return + //SEG673 form_field_ptr::@return breturn: - //SEG673 [345] return + //SEG674 [345] return rts } -//SEG674 apply_preset +//SEG675 apply_preset // Apply a form value preset to the form values // idx is the ID of the preset apply_preset: { .label preset = 3 - //SEG675 [346] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto apply_preset::@22 -- vbuaa_eq_0_then_la1 + //SEG676 [346] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto apply_preset::@22 -- vbuaa_eq_0_then_la1 cmp #0 beq b22_from_apply_preset jmp b24 - //SEG676 apply_preset::@24 + //SEG677 apply_preset::@24 b24: - //SEG677 [347] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 1) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG678 [347] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 1) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #1 beq b22_from_b24 jmp b25 - //SEG678 apply_preset::@25 + //SEG679 apply_preset::@25 b25: - //SEG679 [348] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 2) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG680 [348] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 2) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #2 beq b22_from_b25 jmp b26 - //SEG680 apply_preset::@26 + //SEG681 apply_preset::@26 b26: - //SEG681 [349] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 3) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG682 [349] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 3) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #3 beq b22_from_b26 jmp b27 - //SEG682 apply_preset::@27 + //SEG683 apply_preset::@27 b27: - //SEG683 [350] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 4) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG684 [350] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 4) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #4 beq b22_from_b27 jmp b28 - //SEG684 apply_preset::@28 + //SEG685 apply_preset::@28 b28: - //SEG685 [351] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 5) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG686 [351] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 5) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #5 beq b22_from_b28 jmp b29 - //SEG686 apply_preset::@29 + //SEG687 apply_preset::@29 b29: - //SEG687 [352] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 6) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG688 [352] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 6) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #6 beq b22_from_b29 jmp b30 - //SEG688 apply_preset::@30 + //SEG689 apply_preset::@30 b30: - //SEG689 [353] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 7) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG690 [353] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 7) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #7 beq b22_from_b30 jmp b31 - //SEG690 apply_preset::@31 + //SEG691 apply_preset::@31 b31: - //SEG691 [354] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 8) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG692 [354] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 8) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #8 beq b22_from_b31 jmp b32 - //SEG692 apply_preset::@32 + //SEG693 apply_preset::@32 b32: - //SEG693 [355] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 9) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG694 [355] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 9) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #9 beq b22_from_b32 jmp b33 - //SEG694 apply_preset::@33 + //SEG695 apply_preset::@33 b33: - //SEG695 [356] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 10) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG696 [356] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 10) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #$a beq b22_from_b33 - //SEG696 [357] phi from apply_preset::@33 to apply_preset::@34 [phi:apply_preset::@33->apply_preset::@34] + //SEG697 [357] phi from apply_preset::@33 to apply_preset::@34 [phi:apply_preset::@33->apply_preset::@34] b34_from_b33: jmp b34 - //SEG697 apply_preset::@34 + //SEG698 apply_preset::@34 b34: - //SEG698 [358] phi from apply_preset apply_preset::@34 to apply_preset::@22 [phi:apply_preset/apply_preset::@34->apply_preset::@22] + //SEG699 [358] phi from apply_preset apply_preset::@34 to apply_preset::@22 [phi:apply_preset/apply_preset::@34->apply_preset::@22] b22_from_apply_preset: b22_from_b34: - //SEG699 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdchar#0 [phi:apply_preset/apply_preset::@34->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG700 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdchar#0 [phi:apply_preset/apply_preset::@34->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_stdchar sta preset+1 jmp b22 - //SEG700 [358] phi from apply_preset::@24 to apply_preset::@22 [phi:apply_preset::@24->apply_preset::@22] + //SEG701 [358] phi from apply_preset::@24 to apply_preset::@22 [phi:apply_preset::@24->apply_preset::@22] b22_from_b24: - //SEG701 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_ecmchar#0 [phi:apply_preset::@24->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG702 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_ecmchar#0 [phi:apply_preset::@24->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_ecmchar sta preset+1 jmp b22 - //SEG702 [358] phi from apply_preset::@25 to apply_preset::@22 [phi:apply_preset::@25->apply_preset::@22] + //SEG703 [358] phi from apply_preset::@25 to apply_preset::@22 [phi:apply_preset::@25->apply_preset::@22] b22_from_b25: - //SEG703 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdbm#0 [phi:apply_preset::@25->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG704 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdbm#0 [phi:apply_preset::@25->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_stdbm sta preset+1 jmp b22 - //SEG704 [358] phi from apply_preset::@26 to apply_preset::@22 [phi:apply_preset::@26->apply_preset::@22] + //SEG705 [358] phi from apply_preset::@26 to apply_preset::@22 [phi:apply_preset::@26->apply_preset::@22] b22_from_b26: - //SEG705 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_mcbm#0 [phi:apply_preset::@26->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG706 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_mcbm#0 [phi:apply_preset::@26->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_mcbm sta preset+1 jmp b22 - //SEG706 [358] phi from apply_preset::@27 to apply_preset::@22 [phi:apply_preset::@27->apply_preset::@22] + //SEG707 [358] phi from apply_preset::@27 to apply_preset::@22 [phi:apply_preset::@27->apply_preset::@22] b22_from_b27: - //SEG707 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_stdchar#0 [phi:apply_preset::@27->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG708 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_stdchar#0 [phi:apply_preset::@27->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_hi_stdchar sta preset+1 jmp b22 - //SEG708 [358] phi from apply_preset::@28 to apply_preset::@22 [phi:apply_preset::@28->apply_preset::@22] + //SEG709 [358] phi from apply_preset::@28 to apply_preset::@22 [phi:apply_preset::@28->apply_preset::@22] b22_from_b28: - //SEG709 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_ecmchar#0 [phi:apply_preset::@28->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG710 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_ecmchar#0 [phi:apply_preset::@28->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_hi_ecmchar sta preset+1 jmp b22 - //SEG710 [358] phi from apply_preset::@29 to apply_preset::@22 [phi:apply_preset::@29->apply_preset::@22] + //SEG711 [358] phi from apply_preset::@29 to apply_preset::@22 [phi:apply_preset::@29->apply_preset::@22] b22_from_b29: - //SEG711 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_twoplane#0 [phi:apply_preset::@29->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG712 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_twoplane#0 [phi:apply_preset::@29->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_twoplane sta preset+1 jmp b22 - //SEG712 [358] phi from apply_preset::@30 to apply_preset::@22 [phi:apply_preset::@30->apply_preset::@22] + //SEG713 [358] phi from apply_preset::@30 to apply_preset::@22 [phi:apply_preset::@30->apply_preset::@22] b22_from_b30: - //SEG713 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_chunky#0 [phi:apply_preset::@30->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG714 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_chunky#0 [phi:apply_preset::@30->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_chunky sta preset+1 jmp b22 - //SEG714 [358] phi from apply_preset::@31 to apply_preset::@22 [phi:apply_preset::@31->apply_preset::@22] + //SEG715 [358] phi from apply_preset::@31 to apply_preset::@22 [phi:apply_preset::@31->apply_preset::@22] b22_from_b31: - //SEG715 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred#0 [phi:apply_preset::@31->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG716 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred#0 [phi:apply_preset::@31->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_sixsfred sta preset+1 jmp b22 - //SEG716 [358] phi from apply_preset::@32 to apply_preset::@22 [phi:apply_preset::@32->apply_preset::@22] + //SEG717 [358] phi from apply_preset::@32 to apply_preset::@22 [phi:apply_preset::@32->apply_preset::@22] b22_from_b32: - //SEG717 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred2#0 [phi:apply_preset::@32->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG718 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred2#0 [phi:apply_preset::@32->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_sixsfred2 sta preset+1 jmp b22 - //SEG718 [358] phi from apply_preset::@33 to apply_preset::@22 [phi:apply_preset::@33->apply_preset::@22] + //SEG719 [358] phi from apply_preset::@33 to apply_preset::@22 [phi:apply_preset::@33->apply_preset::@22] b22_from_b33: - //SEG719 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_8bpppixelcell#0 [phi:apply_preset::@33->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG720 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_8bpppixelcell#0 [phi:apply_preset::@33->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_8bpppixelcell sta preset+1 jmp b22 - //SEG720 apply_preset::@22 + //SEG721 apply_preset::@22 b22: - //SEG721 [359] phi from apply_preset::@22 to apply_preset::@23 [phi:apply_preset::@22->apply_preset::@23] + //SEG722 [359] phi from apply_preset::@22 to apply_preset::@23 [phi:apply_preset::@22->apply_preset::@23] b23_from_b22: - //SEG722 [359] phi (byte) apply_preset::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:apply_preset::@22->apply_preset::@23#0] -- vbuyy=vbuc1 + //SEG723 [359] phi (byte) apply_preset::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:apply_preset::@22->apply_preset::@23#0] -- vbuyy=vbuc1 ldy #0 jmp b23 - //SEG723 [359] phi from apply_preset::@23 to apply_preset::@23 [phi:apply_preset::@23->apply_preset::@23] + //SEG724 [359] phi from apply_preset::@23 to apply_preset::@23 [phi:apply_preset::@23->apply_preset::@23] b23_from_b23: - //SEG724 [359] phi (byte) apply_preset::i#2 = (byte) apply_preset::i#1 [phi:apply_preset::@23->apply_preset::@23#0] -- register_copy + //SEG725 [359] phi (byte) apply_preset::i#2 = (byte) apply_preset::i#1 [phi:apply_preset::@23->apply_preset::@23#0] -- register_copy jmp b23 - //SEG725 apply_preset::@23 + //SEG726 apply_preset::@23 b23: - //SEG726 [360] *((const byte[]) form_fields_val#0 + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#2) -- pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy + //SEG727 [360] *((const byte[]) form_fields_val#0 + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#2) -- pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy lda (preset),y sta form_fields_val,y - //SEG727 [361] (byte) apply_preset::i#1 ← ++ (byte) apply_preset::i#2 -- vbuyy=_inc_vbuyy + //SEG728 [361] (byte) apply_preset::i#1 ← ++ (byte) apply_preset::i#2 -- vbuyy=_inc_vbuyy iny - //SEG728 [362] if((byte) apply_preset::i#1!=(const byte) form_fields_cnt#0) goto apply_preset::@23 -- vbuyy_neq_vbuc1_then_la1 + //SEG729 [362] if((byte) apply_preset::i#1!=(const byte) form_fields_cnt#0) goto apply_preset::@23 -- vbuyy_neq_vbuc1_then_la1 cpy #form_fields_cnt bne b23_from_b23 jmp breturn - //SEG729 apply_preset::@return + //SEG730 apply_preset::@return breturn: - //SEG730 [363] return + //SEG731 [363] return rts } -//SEG731 form_control +//SEG732 form_control // Reads keyboard and allows the user to navigate and change the fields of the form // Returns 0 if space is not pressed, non-0 if space is pressed form_control: { .label field = 3 - //SEG732 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuz1=vbuxx + //SEG733 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuz1=vbuxx stx form_field_ptr.field_idx - //SEG733 [365] call form_field_ptr - //SEG734 [340] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr] + //SEG734 [365] call form_field_ptr + //SEG735 [340] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr] form_field_ptr_from_form_control: - //SEG735 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy + //SEG736 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy jsr form_field_ptr - //SEG736 [366] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 + //SEG737 [366] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 jmp b33 - //SEG737 form_control::@33 + //SEG738 form_control::@33 b33: - //SEG738 [367] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 - //SEG739 [368] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#21 -- vbsz1=_dec_vbsz1 + //SEG739 [367] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 + //SEG740 [368] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#21 -- vbsz1=_dec_vbsz1 dec form_cursor_count - //SEG740 [369] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@36 -- vbsz1_ge_0_then_la1 + //SEG741 [369] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@36 -- vbsz1_ge_0_then_la1 lda form_cursor_count cmp #0 bpl b36_from_b33 - //SEG741 [370] phi from form_control::@33 to form_control::@1 [phi:form_control::@33->form_control::@1] + //SEG742 [370] phi from form_control::@33 to form_control::@1 [phi:form_control::@33->form_control::@1] b1_from_b33: - //SEG742 [370] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@33->form_control::@1#0] -- vbsz1=vbsc1 + //SEG743 [370] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@33->form_control::@1#0] -- vbsz1=vbsc1 lda #FORM_CURSOR_BLINK sta form_cursor_count jmp b1 - //SEG743 form_control::@1 + //SEG744 form_control::@1 b1: - //SEG744 [371] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2) goto form_control::@2 -- vbsz1_lt_vbuc1_then_la1 + //SEG745 [371] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2) goto form_control::@2 -- vbsz1_lt_vbuc1_then_la1 lda form_cursor_count sec sbc #FORM_CURSOR_BLINK/2 @@ -23426,164 +23426,164 @@ form_control: { !: bmi b2 jmp b16 - //SEG745 form_control::@16 + //SEG746 form_control::@16 b16: - //SEG746 [372] (byte~) form_control::$5 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG747 [372] (byte~) form_control::$5 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #$7f ldy #0 and (field),y - //SEG747 [373] *((byte*) form_control::field#0) ← (byte~) form_control::$5 -- _deref_pbuz1=vbuaa + //SEG748 [373] *((byte*) form_control::field#0) ← (byte~) form_control::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (field),y - //SEG748 [374] phi from form_control::@16 form_control::@2 to form_control::@3 [phi:form_control::@16/form_control::@2->form_control::@3] + //SEG749 [374] phi from form_control::@16 form_control::@2 to form_control::@3 [phi:form_control::@16/form_control::@2->form_control::@3] b3_from_b16: b3_from_b2: jmp b3 - //SEG749 form_control::@3 + //SEG750 form_control::@3 b3: - //SEG750 [375] call keyboard_event_scan - //SEG751 [159] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] + //SEG751 [375] call keyboard_event_scan + //SEG752 [159] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] keyboard_event_scan_from_b3: - //SEG752 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy + //SEG753 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan - //SEG753 [376] phi from form_control::@3 to form_control::@34 [phi:form_control::@3->form_control::@34] + //SEG754 [376] phi from form_control::@3 to form_control::@34 [phi:form_control::@3->form_control::@34] b34_from_b3: jmp b34 - //SEG754 form_control::@34 + //SEG755 form_control::@34 b34: - //SEG755 [377] call keyboard_event_get + //SEG756 [377] call keyboard_event_get jsr keyboard_event_get - //SEG756 [378] (byte) keyboard_event_get::return#4 ← (byte) keyboard_event_get::return#2 + //SEG757 [378] (byte) keyboard_event_get::return#4 ← (byte) keyboard_event_get::return#2 jmp b35 - //SEG757 form_control::@35 + //SEG758 form_control::@35 b35: - //SEG758 [379] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#4 - //SEG759 [380] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG759 [379] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#4 + //SEG760 [380] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_CRSR_DOWN bne b4 jmp b18 - //SEG760 form_control::@18 + //SEG761 form_control::@18 b18: - //SEG761 [381] (byte~) form_control::$11 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG762 [381] (byte~) form_control::$11 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #$7f ldy #0 and (field),y - //SEG762 [382] *((byte*) form_control::field#0) ← (byte~) form_control::$11 -- _deref_pbuz1=vbuaa + //SEG763 [382] *((byte*) form_control::field#0) ← (byte~) form_control::$11 -- _deref_pbuz1=vbuaa ldy #0 sta (field),y - //SEG763 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 + //SEG764 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 lda #KEY_MODIFIER_SHIFT and keyboard_modifiers - //SEG764 [384] if((byte~) form_control::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 -- vbuaa_eq_0_then_la1 + //SEG765 [384] if((byte~) form_control::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 jmp b19 - //SEG765 form_control::@19 + //SEG766 form_control::@19 b19: - //SEG766 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuxx=_dec_vbuxx + //SEG767 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuxx=_dec_vbuxx dex - //SEG767 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@37 -- vbuxx_neq_vbuc1_then_la1 + //SEG768 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@37 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b37_from_b19 - //SEG768 [387] phi from form_control::@19 to form_control::@7 [phi:form_control::@19->form_control::@7] + //SEG769 [387] phi from form_control::@19 to form_control::@7 [phi:form_control::@19->form_control::@7] b7_from_b19: - //SEG769 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuxx=vbuc1 + //SEG770 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuxx=vbuc1 ldx #form_fields_cnt-1 jmp b7 - //SEG770 form_control::@7 + //SEG771 form_control::@7 b7: - //SEG771 [388] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return] + //SEG772 [388] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return] breturn_from_b7: - //SEG772 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@7->form_control::@return#0] -- register_copy - //SEG773 [388] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1 + //SEG773 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@7->form_control::@return#0] -- register_copy + //SEG774 [388] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 sta form_cursor_count - //SEG774 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuyy=vbuc1 + //SEG775 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuyy=vbuc1 ldy #0 jmp breturn - //SEG775 form_control::@return + //SEG776 form_control::@return breturn: - //SEG776 [389] return + //SEG777 [389] return rts - //SEG777 [390] phi from form_control::@19 to form_control::@37 [phi:form_control::@19->form_control::@37] + //SEG778 [390] phi from form_control::@19 to form_control::@37 [phi:form_control::@19->form_control::@37] b37_from_b19: jmp b37 - //SEG778 form_control::@37 + //SEG779 form_control::@37 b37: - //SEG779 [387] phi from form_control::@37 form_control::@38 to form_control::@7 [phi:form_control::@37/form_control::@38->form_control::@7] + //SEG780 [387] phi from form_control::@37 form_control::@38 to form_control::@7 [phi:form_control::@37/form_control::@38->form_control::@7] b7_from_b37: b7_from_b38: - //SEG780 [387] phi (byte) form_field_idx#32 = (byte) form_field_idx#44 [phi:form_control::@37/form_control::@38->form_control::@7#0] -- register_copy + //SEG781 [387] phi (byte) form_field_idx#32 = (byte) form_field_idx#44 [phi:form_control::@37/form_control::@38->form_control::@7#0] -- register_copy jmp b7 - //SEG781 form_control::@5 + //SEG782 form_control::@5 b5: - //SEG782 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuxx=_inc_vbuxx + //SEG783 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuxx=_inc_vbuxx inx - //SEG783 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuxx_neq_vbuc1_then_la1 + //SEG784 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuxx_neq_vbuc1_then_la1 cpx #form_fields_cnt bne b38_from_b5 - //SEG784 [387] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7] + //SEG785 [387] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7] b7_from_b5: - //SEG785 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuxx=vbuc1 + //SEG786 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuxx=vbuc1 ldx #0 jmp b7 - //SEG786 [393] phi from form_control::@5 to form_control::@38 [phi:form_control::@5->form_control::@38] + //SEG787 [393] phi from form_control::@5 to form_control::@38 [phi:form_control::@5->form_control::@38] b38_from_b5: jmp b38 - //SEG787 form_control::@38 + //SEG788 form_control::@38 b38: jmp b7_from_b38 - //SEG788 form_control::@4 + //SEG789 form_control::@4 b4: - //SEG789 [394] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@9 -- vbuaa_neq_vbuc1_then_la1 + //SEG790 [394] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@9 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_CRSR_RIGHT bne b9 jmp b24 - //SEG790 form_control::@24 + //SEG791 form_control::@24 b24: - //SEG791 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 + //SEG792 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 lda #KEY_MODIFIER_SHIFT and keyboard_modifiers - //SEG792 [396] if((byte~) form_control::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 -- vbuaa_eq_0_then_la1 + //SEG793 [396] if((byte~) form_control::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 jmp b25 - //SEG793 form_control::@25 + //SEG794 form_control::@25 b25: - //SEG794 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx + //SEG795 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx dec form_fields_val,x - //SEG795 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG796 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda form_fields_val,x cmp #$ff bne b12 jmp b26 - //SEG796 form_control::@26 + //SEG797 form_control::@26 b26: - //SEG797 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG798 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda form_fields_max,x sta form_fields_val,x jmp b12 - //SEG798 form_control::@12 + //SEG799 form_control::@12 b12: - //SEG799 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx + //SEG800 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx lda form_fields_val,x tay lda print_hextab,y ldy #0 sta (field),y - //SEG800 [388] phi from form_control::@12 form_control::@39 to form_control::@return [phi:form_control::@12/form_control::@39->form_control::@return] + //SEG801 [388] phi from form_control::@12 form_control::@39 to form_control::@return [phi:form_control::@12/form_control::@39->form_control::@return] breturn_from_b12: breturn_from_b39: - //SEG801 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@12/form_control::@39->form_control::@return#0] -- register_copy - //SEG802 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@39->form_control::@return#1] -- register_copy - //SEG803 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuyy=vbuc1 + //SEG802 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@12/form_control::@39->form_control::@return#0] -- register_copy + //SEG803 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@39->form_control::@return#1] -- register_copy + //SEG804 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuyy=vbuc1 ldy #0 jmp breturn - //SEG804 form_control::@10 + //SEG805 form_control::@10 b10: - //SEG805 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx + //SEG806 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx inc form_fields_val,x - //SEG806 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuxx_le_pbuc2_derefidx_vbuxx_then_la1 + //SEG807 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuxx_le_pbuc2_derefidx_vbuxx_then_la1 txa tay lda form_fields_val,x @@ -23591,81 +23591,81 @@ form_control: { bcc b12 beq b12 jmp b28 - //SEG807 form_control::@28 + //SEG808 form_control::@28 b28: - //SEG808 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG809 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta form_fields_val,x jmp b12 - //SEG809 form_control::@9 + //SEG810 form_control::@9 b9: - //SEG810 [404] if((byte) form_control::key_event#0!=(const byte) KEY_SPACE#0) goto form_control::@39 -- vbuaa_neq_vbuc1_then_la1 + //SEG811 [404] if((byte) form_control::key_event#0!=(const byte) KEY_SPACE#0) goto form_control::@39 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b39_from_b9 - //SEG811 [388] phi from form_control::@9 to form_control::@return [phi:form_control::@9->form_control::@return] + //SEG812 [388] phi from form_control::@9 to form_control::@return [phi:form_control::@9->form_control::@return] breturn_from_b9: - //SEG812 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@9->form_control::@return#0] -- register_copy - //SEG813 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@9->form_control::@return#1] -- register_copy - //SEG814 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:form_control::@9->form_control::@return#2] -- vbuyy=vbuc1 + //SEG813 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@9->form_control::@return#0] -- register_copy + //SEG814 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@9->form_control::@return#1] -- register_copy + //SEG815 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:form_control::@9->form_control::@return#2] -- vbuyy=vbuc1 ldy #$ff jmp breturn - //SEG815 [405] phi from form_control::@9 to form_control::@39 [phi:form_control::@9->form_control::@39] + //SEG816 [405] phi from form_control::@9 to form_control::@39 [phi:form_control::@9->form_control::@39] b39_from_b9: jmp b39 - //SEG816 form_control::@39 + //SEG817 form_control::@39 b39: jmp breturn_from_b39 - //SEG817 form_control::@2 + //SEG818 form_control::@2 b2: - //SEG818 [406] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 -- vbuaa=_deref_pbuz1_bor_vbuc1 + //SEG819 [406] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 -- vbuaa=_deref_pbuz1_bor_vbuc1 lda #$80 ldy #0 ora (field),y - //SEG819 [407] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 -- _deref_pbuz1=vbuaa + //SEG820 [407] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (field),y jmp b3_from_b2 - //SEG820 [408] phi from form_control::@33 to form_control::@36 [phi:form_control::@33->form_control::@36] + //SEG821 [408] phi from form_control::@33 to form_control::@36 [phi:form_control::@33->form_control::@36] b36_from_b33: jmp b36 - //SEG821 form_control::@36 + //SEG822 form_control::@36 b36: - //SEG822 [370] phi from form_control::@36 to form_control::@1 [phi:form_control::@36->form_control::@1] + //SEG823 [370] phi from form_control::@36 to form_control::@1 [phi:form_control::@36->form_control::@1] b1_from_b36: - //SEG823 [370] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@36->form_control::@1#0] -- register_copy + //SEG824 [370] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@36->form_control::@1#0] -- register_copy jmp b1 } -//SEG824 form_set_screen +//SEG825 form_set_screen // Set the screen to use for the form. // screen is the start address of the screen to use form_set_screen: { .label line = 3 - //SEG825 [410] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1] + //SEG826 [410] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1] b1_from_form_set_screen: - //SEG826 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuyy=vbuc1 + //SEG827 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG827 [410] phi (byte*) form_set_screen::line#2 = (const byte*) FORM_SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1 + //SEG828 [410] phi (byte*) form_set_screen::line#2 = (const byte*) FORM_SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1 lda #FORM_SCREEN sta line+1 jmp b1 - //SEG828 [410] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1] + //SEG829 [410] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1] b1_from_b1: - //SEG829 [410] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy - //SEG830 [410] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy + //SEG830 [410] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy + //SEG831 [410] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy jmp b1 - //SEG831 form_set_screen::@1 + //SEG832 form_set_screen::@1 b1: - //SEG832 [411] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 -- vbuaa=_lo_pbuz1 + //SEG833 [411] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 -- vbuaa=_lo_pbuz1 lda line - //SEG833 [412] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG834 [412] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 -- pbuc1_derefidx_vbuyy=vbuaa sta form_line_lo,y - //SEG834 [413] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 -- vbuaa=_hi_pbuz1 + //SEG835 [413] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 -- vbuaa=_hi_pbuz1 lda line+1 - //SEG835 [414] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG836 [414] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuyy=vbuaa sta form_line_hi,y - //SEG836 [415] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG837 [415] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -23673,113 +23673,113 @@ form_set_screen: { bcc !+ inc line+1 !: - //SEG837 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuyy=_inc_vbuyy + //SEG838 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuyy=_inc_vbuyy iny - //SEG838 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG839 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$19 bne b1_from_b1 jmp breturn - //SEG839 form_set_screen::@return + //SEG840 form_set_screen::@return breturn: - //SEG840 [418] return + //SEG841 [418] return rts } -//SEG841 print_str_lines +//SEG842 print_str_lines // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. print_str_lines: { .label str = 3 - //SEG842 [420] (byte*~) print_char_cursor#77 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + //SEG843 [420] (byte*~) print_char_cursor#77 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda print_set_screen.screen sta print_char_cursor lda print_set_screen.screen+1 sta print_char_cursor+1 - //SEG843 [421] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1] + //SEG844 [421] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1] b1_from_print_str_lines: b1_from_b9: - //SEG844 [421] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy - //SEG845 [421] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#77 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy - //SEG846 [421] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy + //SEG845 [421] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy + //SEG846 [421] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#77 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG847 [421] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy jmp b1 - //SEG847 print_str_lines::@1 + //SEG848 print_str_lines::@1 b1: - //SEG848 [422] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG849 [422] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b4_from_b1 jmp breturn - //SEG849 print_str_lines::@return + //SEG850 print_str_lines::@return breturn: - //SEG850 [423] return + //SEG851 [423] return rts - //SEG851 [424] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] + //SEG852 [424] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] b4_from_b1: b4_from_b5: - //SEG852 [424] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy - //SEG853 [424] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy + //SEG853 [424] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy + //SEG854 [424] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy jmp b4 - //SEG854 print_str_lines::@4 + //SEG855 print_str_lines::@4 b4: - //SEG855 [425] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) -- vbuaa=_deref_pbuz1 + //SEG856 [425] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) -- vbuaa=_deref_pbuz1 ldy #0 lda (str),y - //SEG856 [426] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 -- pbuz1=_inc_pbuz1 + //SEG857 [426] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG857 [427] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuaa_eq_vbuc1_then_la1 + //SEG858 [427] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuaa_eq_vbuc1_then_la1 cmp #'@' beq b5_from_b4 jmp b8 - //SEG858 print_str_lines::@8 + //SEG859 print_str_lines::@8 b8: - //SEG859 [428] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuaa + //SEG860 [428] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG860 [429] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 -- pbuz1=_inc_pbuz1 + //SEG861 [429] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG861 [430] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] + //SEG862 [430] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] b5_from_b4: b5_from_b8: - //SEG862 [430] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy + //SEG863 [430] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy jmp b5 - //SEG863 print_str_lines::@5 + //SEG864 print_str_lines::@5 b5: - //SEG864 [431] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG865 [431] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b4_from_b5 - //SEG865 [432] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] + //SEG866 [432] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] b9_from_b5: jmp b9 - //SEG866 print_str_lines::@9 + //SEG867 print_str_lines::@9 b9: - //SEG867 [433] call print_ln - //SEG868 [435] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] + //SEG868 [433] call print_ln + //SEG869 [435] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] print_ln_from_b9: jsr print_ln - //SEG869 [434] (byte*~) print_char_cursor#78 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 + //SEG870 [434] (byte*~) print_char_cursor#78 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 jmp b1_from_b9 } -//SEG870 print_ln +//SEG871 print_ln // Print a newline print_ln: { - //SEG871 [436] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG872 [436] 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: - //SEG872 [436] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG873 [436] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG873 print_ln::@1 + //SEG874 print_ln::@1 b1: - //SEG874 [437] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG875 [437] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -23787,7 +23787,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG875 [438] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG876 [438] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -23797,38 +23797,38 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG876 print_ln::@return + //SEG877 print_ln::@return breturn: - //SEG877 [439] return + //SEG878 [439] return rts } -//SEG878 print_cls +//SEG879 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label _0 = 5 .label sc = 3 - //SEG879 [440] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + //SEG880 [440] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda print_set_screen.screen sta sc lda print_set_screen.screen+1 sta sc+1 - //SEG880 [441] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1] + //SEG881 [441] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1] b1_from_print_cls: b1_from_b1: - //SEG881 [441] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy + //SEG882 [441] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG882 print_cls::@1 + //SEG883 print_cls::@1 b1: - //SEG883 [442] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG884 [442] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG884 [443] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG885 [443] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG885 [444] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG886 [444] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda print_set_screen.screen clc adc #<$3e8 @@ -23836,7 +23836,7 @@ print_cls: { lda print_set_screen.screen+1 adc #>$3e8 sta _0+1 - //SEG886 [445] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG887 [445] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -- pbuz1_neq_pbuz2_then_la1 lda sc+1 cmp _0+1 bne b1_from_b1 @@ -23844,168 +23844,168 @@ print_cls: { cmp _0 bne b1_from_b1 jmp breturn - //SEG887 print_cls::@return + //SEG888 print_cls::@return breturn: - //SEG888 [446] return + //SEG889 [446] return rts } -//SEG889 print_set_screen +//SEG890 print_set_screen // Set the screen to print on. Also resets current line/char cursor. print_set_screen: { .label screen = $10 jmp breturn - //SEG890 print_set_screen::@return + //SEG891 print_set_screen::@return breturn: - //SEG891 [448] return + //SEG892 [448] return rts } -//SEG892 gfx_init +//SEG893 gfx_init // Initialize the different graphics in the memory gfx_init: { - //SEG893 [450] call gfx_init_screen0 - //SEG894 [848] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG894 [450] call gfx_init_screen0 + //SEG895 [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] + //SEG896 [451] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] b1_from_gfx_init: jmp b1 - //SEG896 gfx_init::@1 + //SEG897 gfx_init::@1 b1: - //SEG897 [452] call gfx_init_screen1 - //SEG898 [836] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] + //SEG898 [452] call gfx_init_screen1 + //SEG899 [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] + //SEG900 [453] phi from gfx_init::@1 to gfx_init::@2 [phi:gfx_init::@1->gfx_init::@2] b2_from_b1: jmp b2 - //SEG900 gfx_init::@2 + //SEG901 gfx_init::@2 b2: - //SEG901 [454] call gfx_init_screen2 - //SEG902 [821] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] + //SEG902 [454] call gfx_init_screen2 + //SEG903 [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] + //SEG904 [455] phi from gfx_init::@2 to gfx_init::@3 [phi:gfx_init::@2->gfx_init::@3] b3_from_b2: jmp b3 - //SEG904 gfx_init::@3 + //SEG905 gfx_init::@3 b3: - //SEG905 [456] call gfx_init_screen3 - //SEG906 [807] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] + //SEG906 [456] call gfx_init_screen3 + //SEG907 [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] + //SEG908 [457] phi from gfx_init::@3 to gfx_init::@4 [phi:gfx_init::@3->gfx_init::@4] b4_from_b3: jmp b4 - //SEG908 gfx_init::@4 + //SEG909 gfx_init::@4 b4: - //SEG909 [458] call gfx_init_screen4 - //SEG910 [797] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] + //SEG910 [458] call gfx_init_screen4 + //SEG911 [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] + //SEG912 [459] phi from gfx_init::@4 to gfx_init::@5 [phi:gfx_init::@4->gfx_init::@5] b5_from_b4: jmp b5 - //SEG912 gfx_init::@5 + //SEG913 gfx_init::@5 b5: - //SEG913 [460] call gfx_init_charset + //SEG914 [460] call gfx_init_charset jsr gfx_init_charset - //SEG914 [461] phi from gfx_init::@5 to gfx_init::@6 [phi:gfx_init::@5->gfx_init::@6] + //SEG915 [461] phi from gfx_init::@5 to gfx_init::@6 [phi:gfx_init::@5->gfx_init::@6] b6_from_b5: jmp b6 - //SEG915 gfx_init::@6 + //SEG916 gfx_init::@6 b6: - //SEG916 [462] call gfx_init_vic_bitmap - //SEG917 [606] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] + //SEG917 [462] call gfx_init_vic_bitmap + //SEG918 [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] + //SEG919 [463] phi from gfx_init::@6 to gfx_init::@7 [phi:gfx_init::@6->gfx_init::@7] b7_from_b6: jmp b7 - //SEG919 gfx_init::@7 + //SEG920 gfx_init::@7 b7: - //SEG920 [464] call gfx_init_plane_8bppchunky - //SEG921 [586] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] + //SEG921 [464] call gfx_init_plane_8bppchunky + //SEG922 [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] + //SEG923 [465] phi from gfx_init::@7 to gfx_init::@8 [phi:gfx_init::@7->gfx_init::@8] b8_from_b7: jmp b8 - //SEG923 gfx_init::@8 + //SEG924 gfx_init::@8 b8: - //SEG924 [466] call gfx_init_plane_charset8 - //SEG925 [561] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] + //SEG925 [466] call gfx_init_plane_charset8 + //SEG926 [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] + //SEG927 [467] phi from gfx_init::@8 to gfx_init::@9 [phi:gfx_init::@8->gfx_init::@9] b9_from_b8: jmp b9 - //SEG927 gfx_init::@9 + //SEG928 gfx_init::@9 b9: - //SEG928 [468] call gfx_init_plane_horisontal - //SEG929 [543] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] + //SEG929 [468] call gfx_init_plane_horisontal + //SEG930 [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] + //SEG931 [469] phi from gfx_init::@9 to gfx_init::@10 [phi:gfx_init::@9->gfx_init::@10] b10_from_b9: jmp b10 - //SEG931 gfx_init::@10 + //SEG932 gfx_init::@10 b10: - //SEG932 [470] call gfx_init_plane_vertical - //SEG933 [530] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] + //SEG933 [470] call gfx_init_plane_vertical + //SEG934 [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] + //SEG935 [471] phi from gfx_init::@10 to gfx_init::@11 [phi:gfx_init::@10->gfx_init::@11] b11_from_b10: jmp b11 - //SEG935 gfx_init::@11 + //SEG936 gfx_init::@11 b11: - //SEG936 [472] call gfx_init_plane_horisontal2 - //SEG937 [515] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] + //SEG937 [472] call gfx_init_plane_horisontal2 + //SEG938 [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] + //SEG939 [473] phi from gfx_init::@11 to gfx_init::@12 [phi:gfx_init::@11->gfx_init::@12] b12_from_b11: jmp b12 - //SEG939 gfx_init::@12 + //SEG940 gfx_init::@12 b12: - //SEG940 [474] call gfx_init_plane_vertical2 - //SEG941 [512] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] + //SEG941 [474] call gfx_init_plane_vertical2 + //SEG942 [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] + //SEG943 [475] phi from gfx_init::@12 to gfx_init::@13 [phi:gfx_init::@12->gfx_init::@13] b13_from_b12: jmp b13 - //SEG943 gfx_init::@13 + //SEG944 gfx_init::@13 b13: - //SEG944 [476] call gfx_init_plane_blank - //SEG945 [509] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] + //SEG945 [476] call gfx_init_plane_blank + //SEG946 [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] + //SEG947 [477] phi from gfx_init::@13 to gfx_init::@14 [phi:gfx_init::@13->gfx_init::@14] b14_from_b13: jmp b14 - //SEG947 gfx_init::@14 + //SEG948 gfx_init::@14 b14: - //SEG948 [478] call gfx_init_plane_full - //SEG949 [480] phi from gfx_init::@14 to gfx_init_plane_full [phi:gfx_init::@14->gfx_init_plane_full] + //SEG949 [478] call gfx_init_plane_full + //SEG950 [480] phi from gfx_init::@14 to gfx_init_plane_full [phi:gfx_init::@14->gfx_init_plane_full] gfx_init_plane_full_from_b14: jsr gfx_init_plane_full jmp breturn - //SEG950 gfx_init::@return + //SEG951 gfx_init::@return breturn: - //SEG951 [479] return + //SEG952 [479] return rts } -//SEG952 gfx_init_plane_full +//SEG953 gfx_init_plane_full // Initialize Plane with all pixels gfx_init_plane_full: { - //SEG953 [481] call gfx_init_plane_fill - //SEG954 [483] phi from gfx_init_plane_full to gfx_init_plane_fill [phi:gfx_init_plane_full->gfx_init_plane_fill] + //SEG954 [481] call gfx_init_plane_fill + //SEG955 [483] phi from gfx_init_plane_full to gfx_init_plane_fill [phi:gfx_init_plane_full->gfx_init_plane_fill] gfx_init_plane_fill_from_gfx_init_plane_full: - //SEG955 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/word/signed word/dword/signed dword) 255 [phi:gfx_init_plane_full->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG956 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/word/signed word/dword/signed dword) 255 [phi:gfx_init_plane_full->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #$ff sta gfx_init_plane_fill.fill - //SEG956 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_FULL#0 [phi:gfx_init_plane_full->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG957 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_FULL#0 [phi:gfx_init_plane_full->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_FULL @@ -24016,12 +24016,12 @@ gfx_init_plane_full: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG957 gfx_init_plane_full::@return + //SEG958 gfx_init_plane_full::@return breturn: - //SEG958 [482] return + //SEG959 [482] return rts } -//SEG959 gfx_init_plane_fill +//SEG960 gfx_init_plane_fill // Initialize 320*200 1bpp pixel ($2000) plane with identical bytes gfx_init_plane_fill: { .label _0 = $13 @@ -24033,7 +24033,7 @@ gfx_init_plane_fill: { .label by = 7 .label plane_addr = $a .label fill = 2 - //SEG960 [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 -- vduz1=vduz2_rol_2 + //SEG961 [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 -- vduz1=vduz2_rol_2 lda plane_addr sta _0 lda plane_addr+1 @@ -24050,39 +24050,39 @@ gfx_init_plane_fill: { rol _0+1 rol _0+2 rol _0+3 - //SEG961 [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 -- vwuz1=_hi_vduz2 + //SEG962 [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 -- vwuz1=_hi_vduz2 lda _0+2 sta _1 lda _0+3 sta _1+1 - //SEG962 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuxx=_lo_vwuz1 + //SEG963 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuxx=_lo_vwuz1 lda _1 tax - //SEG963 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuaa=vbuxx + //SEG964 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuaa=vbuxx txa - //SEG964 [488] call dtvSetCpuBankSegment1 - //SEG965 [505] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] + //SEG965 [488] call dtvSetCpuBankSegment1 + //SEG966 [505] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_fill: - //SEG966 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1#0] -- register_copy + //SEG967 [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 + //SEG968 gfx_init_plane_fill::@5 b5: - //SEG968 [489] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuxx=_inc_vbuxx + //SEG969 [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 + //SEG970 [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 - //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 + //SEG971 [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 - //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 + //SEG972 [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 @@ -24090,102 +24090,102 @@ gfx_init_plane_fill: { lda _6+1 adc #>$4000 sta _6+1 - //SEG972 [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 - //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] + //SEG973 [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 + //SEG974 [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: - //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 + //SEG975 [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 - //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 (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 - //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 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: - //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 + //SEG978 [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 + //SEG979 [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 - //SEG979 gfx_init_plane_fill::@1 + //SEG980 gfx_init_plane_fill::@1 b1: - //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 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: - //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 + //SEG982 [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 - //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 (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 - //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 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: - //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 + //SEG985 [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 + //SEG986 [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 - //SEG986 gfx_init_plane_fill::@2 + //SEG987 gfx_init_plane_fill::@2 b2: - //SEG987 [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 + //SEG988 [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 - //SEG988 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG989 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG989 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuxx=_inc_vbuxx + //SEG990 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG991 [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 - //SEG991 gfx_init_plane_fill::@3 + //SEG992 gfx_init_plane_fill::@3 b3: - //SEG992 [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 + //SEG993 [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 inc by - //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 + //SEG994 [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 - //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 [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 - //SEG995 gfx_init_plane_fill::@4 + //SEG996 gfx_init_plane_fill::@4 b4: - //SEG996 [503] call dtvSetCpuBankSegment1 - //SEG997 [505] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] + //SEG997 [503] call dtvSetCpuBankSegment1 + //SEG998 [505] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //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 + //SEG999 [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 - //SEG999 gfx_init_plane_fill::@return + //SEG1000 gfx_init_plane_fill::@return breturn: - //SEG1000 [504] return + //SEG1001 [504] return rts } -//SEG1001 dtvSetCpuBankSegment1 +//SEG1002 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG1002 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuaa + //SEG1003 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG1003 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG1004 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG1004 dtvSetCpuBankSegment1::@return + //SEG1005 dtvSetCpuBankSegment1::@return breturn: - //SEG1005 [508] return + //SEG1006 [508] return rts } -//SEG1006 gfx_init_plane_blank +//SEG1007 gfx_init_plane_blank // Initialize Plane with blank pixels gfx_init_plane_blank: { - //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] + //SEG1008 [510] call gfx_init_plane_fill + //SEG1009 [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: - //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 + //SEG1010 [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 - //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 + //SEG1011 [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 @@ -24196,21 +24196,21 @@ gfx_init_plane_blank: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG1011 gfx_init_plane_blank::@return + //SEG1012 gfx_init_plane_blank::@return breturn: - //SEG1012 [511] return + //SEG1013 [511] return rts } -//SEG1013 gfx_init_plane_vertical2 +//SEG1014 gfx_init_plane_vertical2 // Initialize Plane with Vertical Stripes every 2 pixels gfx_init_plane_vertical2: { - //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] + //SEG1015 [513] call gfx_init_plane_fill + //SEG1016 [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: - //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 + //SEG1017 [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 - //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 + //SEG1018 [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 @@ -24221,296 +24221,296 @@ gfx_init_plane_vertical2: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG1018 gfx_init_plane_vertical2::@return + //SEG1019 gfx_init_plane_vertical2::@return breturn: - //SEG1019 [514] return + //SEG1020 [514] return rts } -//SEG1020 gfx_init_plane_horisontal2 +//SEG1021 gfx_init_plane_horisontal2 // Initialize Plane with Horizontal Stripes every 2 pixels gfx_init_plane_horisontal2: { .const gfxbCpuBank = PLANE_HORISONTAL2/$4000 .label gfxa = 3 .label ay = 2 - //SEG1021 [516] call dtvSetCpuBankSegment1 - //SEG1022 [505] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] + //SEG1022 [516] call dtvSetCpuBankSegment1 + //SEG1023 [505] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_horisontal2: - //SEG1023 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1024 [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 - //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 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: - //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 + //SEG1026 [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 - //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 + //SEG1027 [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 - //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 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: - //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 + //SEG1029 [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 + //SEG1030 [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 - //SEG1030 gfx_init_plane_horisontal2::@1 + //SEG1031 gfx_init_plane_horisontal2::@1 b1: - //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 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: - //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 + //SEG1033 [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 - //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 (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 - //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 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: - //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 + //SEG1036 [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 + //SEG1037 [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 - //SEG1037 gfx_init_plane_horisontal2::@2 + //SEG1038 gfx_init_plane_horisontal2::@2 b2: - //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 + //SEG1039 [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 - //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 + //SEG1040 [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 - //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 + //SEG1041 [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 - //SEG1041 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1042 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1042 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuxx=_inc_vbuxx + //SEG1043 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1044 [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 - //SEG1044 gfx_init_plane_horisontal2::@3 + //SEG1045 gfx_init_plane_horisontal2::@3 b3: - //SEG1045 [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1046 [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //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 + //SEG1047 [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 - //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 [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 - //SEG1048 gfx_init_plane_horisontal2::@4 + //SEG1049 gfx_init_plane_horisontal2::@4 b4: - //SEG1049 [528] call dtvSetCpuBankSegment1 - //SEG1050 [505] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] + //SEG1050 [528] call dtvSetCpuBankSegment1 + //SEG1051 [505] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //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 + //SEG1052 [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 - //SEG1052 gfx_init_plane_horisontal2::@return + //SEG1053 gfx_init_plane_horisontal2::@return breturn: - //SEG1053 [529] return + //SEG1054 [529] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG1054 gfx_init_plane_vertical +//SEG1055 gfx_init_plane_vertical // Initialize Plane with Vertical Stripes gfx_init_plane_vertical: { .const gfxbCpuBank = PLANE_VERTICAL/$4000 .label gfxb = 3 .label by = 2 - //SEG1055 [531] call dtvSetCpuBankSegment1 - //SEG1056 [505] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] + //SEG1056 [531] call dtvSetCpuBankSegment1 + //SEG1057 [505] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_vertical: - //SEG1057 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1058 [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 - //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 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: - //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 + //SEG1060 [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 - //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 + //SEG1061 [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 - //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 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: - //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 + //SEG1063 [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 + //SEG1064 [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 - //SEG1064 gfx_init_plane_vertical::@1 + //SEG1065 gfx_init_plane_vertical::@1 b1: - //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 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: - //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 + //SEG1067 [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 - //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 (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 - //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 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: - //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 + //SEG1070 [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 + //SEG1071 [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 - //SEG1071 gfx_init_plane_vertical::@2 + //SEG1072 gfx_init_plane_vertical::@2 b2: - //SEG1072 [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG1073 [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 - //SEG1073 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG1074 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1074 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuxx=_inc_vbuxx + //SEG1075 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1076 [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 - //SEG1076 gfx_init_plane_vertical::@3 + //SEG1077 gfx_init_plane_vertical::@3 b3: - //SEG1077 [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 + //SEG1078 [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 inc by - //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 + //SEG1079 [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 - //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 [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 - //SEG1080 gfx_init_plane_vertical::@4 + //SEG1081 gfx_init_plane_vertical::@4 b4: - //SEG1081 [541] call dtvSetCpuBankSegment1 - //SEG1082 [505] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] + //SEG1082 [541] call dtvSetCpuBankSegment1 + //SEG1083 [505] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //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 + //SEG1084 [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 - //SEG1084 gfx_init_plane_vertical::@return + //SEG1085 gfx_init_plane_vertical::@return breturn: - //SEG1085 [542] return + //SEG1086 [542] return rts } -//SEG1086 gfx_init_plane_horisontal +//SEG1087 gfx_init_plane_horisontal // Initialize Plane with Horizontal Stripes gfx_init_plane_horisontal: { .const gfxbCpuBank = PLANE_HORISONTAL/$4000 .label gfxa = 3 .label ay = 2 - //SEG1087 [544] call dtvSetCpuBankSegment1 - //SEG1088 [505] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] + //SEG1088 [544] call dtvSetCpuBankSegment1 + //SEG1089 [505] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_horisontal: - //SEG1089 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1090 [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 - //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 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: - //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 + //SEG1092 [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 - //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 + //SEG1093 [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 - //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 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: - //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 + //SEG1095 [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 + //SEG1096 [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 - //SEG1096 gfx_init_plane_horisontal::@1 + //SEG1097 gfx_init_plane_horisontal::@1 b1: - //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 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: - //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 + //SEG1099 [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 - //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 (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 - //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 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: - //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 + //SEG1102 [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 + //SEG1103 [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 - //SEG1103 gfx_init_plane_horisontal::@2 + //SEG1104 gfx_init_plane_horisontal::@2 b2: - //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 + //SEG1105 [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 - //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 + //SEG1106 [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 - //SEG1106 gfx_init_plane_horisontal::@5 + //SEG1107 gfx_init_plane_horisontal::@5 b5: - //SEG1107 [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 + //SEG1108 [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 - //SEG1108 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1109 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //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 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: - //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 [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 - //SEG1111 gfx_init_plane_horisontal::@4 + //SEG1112 gfx_init_plane_horisontal::@4 b4: - //SEG1112 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuxx=_inc_vbuxx + //SEG1113 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1114 [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 - //SEG1114 gfx_init_plane_horisontal::@7 + //SEG1115 gfx_init_plane_horisontal::@7 b7: - //SEG1115 [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1116 [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //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 + //SEG1117 [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 - //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 [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 - //SEG1118 gfx_init_plane_horisontal::@8 + //SEG1119 gfx_init_plane_horisontal::@8 b8: - //SEG1119 [557] call dtvSetCpuBankSegment1 - //SEG1120 [505] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] + //SEG1120 [557] call dtvSetCpuBankSegment1 + //SEG1121 [505] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //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 + //SEG1122 [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 - //SEG1122 gfx_init_plane_horisontal::@return + //SEG1123 gfx_init_plane_horisontal::@return breturn: - //SEG1123 [558] return + //SEG1124 [558] return rts - //SEG1124 gfx_init_plane_horisontal::@3 + //SEG1125 gfx_init_plane_horisontal::@3 b3: - //SEG1125 [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1126 [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 - //SEG1126 [560] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1127 [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 } -//SEG1127 gfx_init_plane_charset8 +//SEG1128 gfx_init_plane_charset8 // Initialize Plane with 8bpp charset gfx_init_plane_charset8: { .const gfxbCpuBank = PLANE_CHARSET8/$4000 @@ -24520,218 +24520,218 @@ gfx_init_plane_charset8: { .label col = 9 .label cr = 7 .label ch = 2 - //SEG1128 [562] call dtvSetCpuBankSegment1 - //SEG1129 [505] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG1129 [562] call dtvSetCpuBankSegment1 + //SEG1130 [505] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_charset8: - //SEG1130 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1131 [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 - //SEG1131 gfx_init_plane_charset8::@9 + //SEG1132 gfx_init_plane_charset8::@9 b9: - //SEG1132 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG1133 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //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 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: - //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 + //SEG1135 [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 - //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 + //SEG1136 [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 - //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 + //SEG1137 [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 - //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 + //SEG1138 [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 - //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 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: - //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 + //SEG1140 [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 + //SEG1141 [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 + //SEG1142 [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 + //SEG1143 [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 - //SEG1143 gfx_init_plane_charset8::@1 + //SEG1144 gfx_init_plane_charset8::@1 b1: - //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 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: - //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 + //SEG1146 [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 - //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 + //SEG1147 [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 + //SEG1148 [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 + //SEG1149 [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 - //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 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: - //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 + //SEG1151 [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 + //SEG1152 [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 + //SEG1153 [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 + //SEG1154 [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 - //SEG1154 gfx_init_plane_charset8::@2 + //SEG1155 gfx_init_plane_charset8::@2 b2: - //SEG1155 [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG1156 [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 - //SEG1156 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1157 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //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 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: - //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 + //SEG1159 [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 - //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 + //SEG1160 [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 + //SEG1161 [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 + //SEG1162 [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 - //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 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: - //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 + //SEG1164 [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 + //SEG1165 [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 + //SEG1166 [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 + //SEG1167 [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 - //SEG1167 gfx_init_plane_charset8::@3 + //SEG1168 gfx_init_plane_charset8::@3 b3: - //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 + //SEG1169 [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 - //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 + //SEG1170 [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 - //SEG1170 gfx_init_plane_charset8::@5 + //SEG1171 gfx_init_plane_charset8::@5 b5: - //SEG1171 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 + //SEG1172 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 lda col - //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 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: - //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 + //SEG1174 [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 - //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] + //SEG1175 [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: - //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 + //SEG1176 [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 - //SEG1176 gfx_init_plane_charset8::@4 + //SEG1177 gfx_init_plane_charset8::@4 b4: - //SEG1177 [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa + //SEG1178 [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxa),y - //SEG1178 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1179 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+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 + //SEG1180 [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 - //SEG1180 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG1181 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1181 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx + //SEG1182 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1183 [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 - //SEG1183 gfx_init_plane_charset8::@6 + //SEG1184 gfx_init_plane_charset8::@6 b6: - //SEG1184 [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 + //SEG1185 [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //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 + //SEG1186 [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 - //SEG1186 gfx_init_plane_charset8::@7 + //SEG1187 gfx_init_plane_charset8::@7 b7: - //SEG1187 [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 + //SEG1188 [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //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 + //SEG1189 [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 - //SEG1189 gfx_init_plane_charset8::@8 + //SEG1190 gfx_init_plane_charset8::@8 b8: - //SEG1190 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1191 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1191 [584] call dtvSetCpuBankSegment1 - //SEG1192 [505] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG1192 [584] call dtvSetCpuBankSegment1 + //SEG1193 [505] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //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 + //SEG1194 [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 - //SEG1194 gfx_init_plane_charset8::@return + //SEG1195 gfx_init_plane_charset8::@return breturn: - //SEG1195 [585] return + //SEG1196 [585] return rts } -//SEG1196 gfx_init_plane_8bppchunky +//SEG1197 gfx_init_plane_8bppchunky // Initialize 8BPP Chunky Bitmap (contains 8bpp pixels) gfx_init_plane_8bppchunky: { .label _6 = $10 .label gfxb = 5 .label x = 3 .label y = 2 - //SEG1197 [587] call dtvSetCpuBankSegment1 - //SEG1198 [505] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] + //SEG1198 [587] call dtvSetCpuBankSegment1 + //SEG1199 [505] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_8bppchunky: - //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 + //SEG1200 [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 - //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 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: - //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 + //SEG1202 [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 - //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 + //SEG1203 [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 - //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 + //SEG1204 [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 - //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 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: - //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 + //SEG1206 [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 + //SEG1207 [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 + //SEG1208 [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 - //SEG1208 gfx_init_plane_8bppchunky::@1 + //SEG1209 gfx_init_plane_8bppchunky::@1 b1: - //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 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: - //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 + //SEG1211 [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 + //SEG1212 [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 - //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 (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 - //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 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: - //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 + //SEG1215 [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 + //SEG1216 [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 + //SEG1217 [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 - //SEG1217 gfx_init_plane_8bppchunky::@2 + //SEG1218 gfx_init_plane_8bppchunky::@2 b2: - //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 + //SEG1219 [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 @@ -24739,37 +24739,37 @@ gfx_init_plane_8bppchunky: { cmp #<$8000 bne b3_from_b2 jmp b4 - //SEG1219 gfx_init_plane_8bppchunky::@4 + //SEG1220 gfx_init_plane_8bppchunky::@4 b4: - //SEG1220 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuaa=vbuxx + //SEG1221 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuaa=vbuxx txa - //SEG1221 [592] call dtvSetCpuBankSegment1 - //SEG1222 [505] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] + //SEG1222 [592] call dtvSetCpuBankSegment1 + //SEG1223 [505] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG1223 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy + //SEG1224 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b8 - //SEG1224 gfx_init_plane_8bppchunky::@8 + //SEG1225 gfx_init_plane_8bppchunky::@8 b8: - //SEG1225 [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx + //SEG1226 [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx inx - //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 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: - //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 + //SEG1228 [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 + //SEG1229 [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 - //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 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: - //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 + //SEG1231 [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 + //SEG1232 [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 - //SEG1232 gfx_init_plane_8bppchunky::@3 + //SEG1233 gfx_init_plane_8bppchunky::@3 b3: - //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 + //SEG1234 [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 @@ -24777,22 +24777,22 @@ gfx_init_plane_8bppchunky: { lda #0 adc x+1 sta _6+1 - //SEG1234 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuaa=_byte_vwuz1 + //SEG1235 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuaa=_byte_vwuz1 lda _6 - //SEG1235 [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuaa + //SEG1236 [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG1236 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG1237 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1237 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG1238 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //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 + //SEG1239 [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 @@ -24800,94 +24800,94 @@ gfx_init_plane_8bppchunky: { cmp #<$140 bne b2_from_b3 jmp b5 - //SEG1239 gfx_init_plane_8bppchunky::@5 + //SEG1240 gfx_init_plane_8bppchunky::@5 b5: - //SEG1240 [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 + //SEG1241 [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG1242 [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 - //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 [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 - //SEG1243 gfx_init_plane_8bppchunky::@6 + //SEG1244 gfx_init_plane_8bppchunky::@6 b6: - //SEG1244 [604] call dtvSetCpuBankSegment1 - //SEG1245 [505] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] + //SEG1245 [604] call dtvSetCpuBankSegment1 + //SEG1246 [505] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b6: - //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 + //SEG1247 [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 - //SEG1247 gfx_init_plane_8bppchunky::@return + //SEG1248 gfx_init_plane_8bppchunky::@return breturn: - //SEG1248 [605] return + //SEG1249 [605] return rts } -//SEG1249 gfx_init_vic_bitmap +//SEG1250 gfx_init_vic_bitmap // Initialize VIC bitmap gfx_init_vic_bitmap: { .const lines_cnt = 9 .label l = 2 - //SEG1250 [607] call bitmap_init - //SEG1251 [759] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] + //SEG1251 [607] call bitmap_init + //SEG1252 [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 - //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 [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 - //SEG1253 gfx_init_vic_bitmap::@3 + //SEG1254 gfx_init_vic_bitmap::@3 b3: - //SEG1254 [609] call bitmap_clear + //SEG1255 [609] call bitmap_clear jsr bitmap_clear - //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 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: - //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 + //SEG1257 [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 - //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 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: - //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 [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 - //SEG1259 gfx_init_vic_bitmap::@1 + //SEG1260 gfx_init_vic_bitmap::@1 b1: - //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 + //SEG1261 [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 - //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 + //SEG1262 [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 - //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 + //SEG1263 [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 - //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 + //SEG1264 [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 - //SEG1264 [615] call bitmap_line + //SEG1265 [615] call bitmap_line jsr bitmap_line jmp b5 - //SEG1265 gfx_init_vic_bitmap::@5 + //SEG1266 gfx_init_vic_bitmap::@5 b5: - //SEG1266 [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 + //SEG1267 [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //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 + //SEG1268 [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 - //SEG1268 gfx_init_vic_bitmap::@return + //SEG1269 gfx_init_vic_bitmap::@return breturn: - //SEG1269 [618] return + //SEG1270 [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 } -//SEG1270 bitmap_line +//SEG1271 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = 8 @@ -24895,257 +24895,257 @@ bitmap_line: { .label x0 = 9 .label x1 = $12 .label y0 = $f - //SEG1271 [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG1272 [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 - //SEG1272 bitmap_line::@15 + //SEG1273 bitmap_line::@15 b15: - //SEG1273 [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1274 [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 - //SEG1274 [621] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 + //SEG1275 [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 - //SEG1275 bitmap_line::@16 + //SEG1276 bitmap_line::@16 b16: - //SEG1276 [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1277 [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 - //SEG1277 [623] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1278 [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 - //SEG1278 bitmap_line::@17 + //SEG1279 bitmap_line::@17 b17: - //SEG1279 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1280 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y - //SEG1280 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1281 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1281 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 - //SEG1282 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG1283 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1284 [629] call bitmap_line_ydxi - //SEG1285 [703] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1282 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + //SEG1283 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1284 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1285 [629] call bitmap_line_ydxi + //SEG1286 [703] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] bitmap_line_ydxi_from_b17: - //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 + //SEG1287 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1288 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1289 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1290 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1291 [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 - //SEG1291 bitmap_line::@return + //SEG1292 bitmap_line::@return breturn: - //SEG1292 [630] return + //SEG1293 [630] return rts - //SEG1293 bitmap_line::@3 + //SEG1294 bitmap_line::@3 b3: - //SEG1294 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1295 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1295 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1296 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyi.y - //SEG1296 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 - //SEG1297 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1298 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG1299 [636] call bitmap_line_xdyi - //SEG1300 [681] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1297 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + //SEG1298 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1299 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1300 [636] call bitmap_line_xdyi + //SEG1301 [681] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] bitmap_line_xdyi_from_b3: - //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 + //SEG1302 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1303 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1304 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1305 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1306 [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 - //SEG1306 bitmap_line::@2 + //SEG1307 bitmap_line::@2 b2: - //SEG1307 [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1308 [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 - //SEG1308 [638] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1309 [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 - //SEG1309 bitmap_line::@20 + //SEG1310 bitmap_line::@20 b20: - //SEG1310 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1311 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1311 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1312 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1312 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1313 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y1 - //SEG1313 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG1314 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1315 [644] call bitmap_line_ydxd - //SEG1316 [733] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1314 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1315 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1316 [644] call bitmap_line_ydxd + //SEG1317 [733] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] bitmap_line_ydxd_from_b20: - //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 + //SEG1318 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1319 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1320 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1321 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1322 [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 - //SEG1322 bitmap_line::@6 + //SEG1323 bitmap_line::@6 b6: - //SEG1323 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1324 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1324 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1325 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyd.y - //SEG1325 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1326 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1326 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1327 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG1328 [650] call bitmap_line_xdyd - //SEG1329 [718] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1327 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1328 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1329 [650] call bitmap_line_xdyd + //SEG1330 [718] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] bitmap_line_xdyd_from_b6: - //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 + //SEG1331 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1332 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1333 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1334 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1335 [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 - //SEG1335 bitmap_line::@1 + //SEG1336 bitmap_line::@1 b1: - //SEG1336 [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1337 [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 - //SEG1337 [652] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 + //SEG1338 [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 - //SEG1338 bitmap_line::@23 + //SEG1339 bitmap_line::@23 b23: - //SEG1339 [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1340 [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 - //SEG1340 [654] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1341 [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 - //SEG1341 bitmap_line::@24 + //SEG1342 bitmap_line::@24 b24: - //SEG1342 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1343 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y - //SEG1343 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1344 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1344 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 - //SEG1345 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG1346 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1347 [660] call bitmap_line_ydxd - //SEG1348 [733] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1345 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + //SEG1346 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1347 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1348 [660] call bitmap_line_ydxd + //SEG1349 [733] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] bitmap_line_ydxd_from_b24: - //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 + //SEG1350 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1351 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1352 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1353 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1354 [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 - //SEG1354 bitmap_line::@10 + //SEG1355 bitmap_line::@10 b10: - //SEG1355 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1356 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1356 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - //SEG1357 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 - //SEG1358 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1359 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG1360 [666] call bitmap_line_xdyd - //SEG1361 [718] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1357 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + //SEG1358 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + //SEG1359 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1360 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1361 [666] call bitmap_line_xdyd + //SEG1362 [718] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] bitmap_line_xdyd_from_b10: - //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 + //SEG1363 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1364 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1365 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1366 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1367 [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 - //SEG1367 bitmap_line::@9 + //SEG1368 bitmap_line::@9 b9: - //SEG1368 [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1369 [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 - //SEG1369 [668] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1370 [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 - //SEG1370 bitmap_line::@27 + //SEG1371 bitmap_line::@27 b27: - //SEG1371 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1372 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1372 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1373 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1373 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1374 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y1 - //SEG1374 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG1375 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1376 [674] call bitmap_line_ydxi - //SEG1377 [703] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1375 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1376 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1377 [674] call bitmap_line_ydxi + //SEG1378 [703] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] bitmap_line_ydxi_from_b27: - //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 + //SEG1379 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1380 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1381 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1382 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1383 [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 - //SEG1383 bitmap_line::@13 + //SEG1384 bitmap_line::@13 b13: - //SEG1384 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1385 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1385 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - //SEG1386 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1386 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + //SEG1387 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1387 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1388 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG1389 [680] call bitmap_line_xdyi - //SEG1390 [681] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1388 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1389 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1390 [680] call bitmap_line_xdyi + //SEG1391 [681] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] bitmap_line_xdyi_from_b13: - //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 + //SEG1392 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1393 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1394 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1395 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1396 [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 } -//SEG1396 bitmap_line_xdyi +//SEG1397 bitmap_line_xdyi bitmap_line_xdyi: { .label x = $e .label y = $f @@ -25153,89 +25153,89 @@ bitmap_line_xdyi: { .label xd = 8 .label yd = 7 .label e = $12 - //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 + //SEG1398 [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 - //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 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: - //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 + //SEG1400 [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 + //SEG1401 [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 + //SEG1402 [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 - //SEG1402 bitmap_line_xdyi::@1 + //SEG1403 bitmap_line_xdyi::@1 b1: - //SEG1403 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 + //SEG1404 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx x - //SEG1404 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 + //SEG1405 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1405 [686] call bitmap_plot - //SEG1406 [696] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1406 [686] call bitmap_plot + //SEG1407 [696] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from_b1: - //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 + //SEG1408 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1409 [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 - //SEG1409 bitmap_line_xdyi::@5 + //SEG1410 bitmap_line_xdyi::@5 b5: - //SEG1410 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1411 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1411 [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1412 [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 - //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 + //SEG1413 [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 - //SEG1413 bitmap_line_xdyi::@3 + //SEG1414 bitmap_line_xdyi::@3 b3: - //SEG1414 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1415 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1415 [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1416 [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 - //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 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: - //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 + //SEG1418 [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 + //SEG1419 [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 - //SEG1419 bitmap_line_xdyi::@2 + //SEG1420 bitmap_line_xdyi::@2 b2: - //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 + //SEG1421 [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 - //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 + //SEG1422 [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 - //SEG1422 bitmap_line_xdyi::@return + //SEG1423 bitmap_line_xdyi::@return breturn: - //SEG1423 [695] return + //SEG1424 [695] return rts } -//SEG1424 bitmap_plot +//SEG1425 bitmap_plot bitmap_plot: { .label _0 = 3 .label plotter_x = 3 .label plotter_y = 5 - //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 + //SEG1426 [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 - //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 + //SEG1427 [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 - //SEG1427 [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG1428 [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 @@ -25243,94 +25243,94 @@ bitmap_plot: { lda _0+1 adc plotter_y+1 sta _0+1 - //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 + //SEG1429 [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 - //SEG1429 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa + //SEG1430 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (_0),y jmp breturn - //SEG1430 bitmap_plot::@return + //SEG1431 bitmap_plot::@return breturn: - //SEG1431 [702] return + //SEG1432 [702] return rts } -//SEG1432 bitmap_line_ydxi +//SEG1433 bitmap_line_ydxi bitmap_line_ydxi: { .label y = $e .label y1 = $f .label yd = 7 .label xd = 8 .label e = 9 - //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 + //SEG1434 [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 - //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 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: - //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 + //SEG1436 [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 + //SEG1437 [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 + //SEG1438 [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 - //SEG1438 bitmap_line_ydxi::@1 + //SEG1439 bitmap_line_ydxi::@1 b1: - //SEG1439 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - //SEG1440 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 + //SEG1440 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + //SEG1441 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1441 [708] call bitmap_plot - //SEG1442 [696] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1442 [708] call bitmap_plot + //SEG1443 [696] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from_b1: - //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 + //SEG1444 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1445 [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 - //SEG1445 bitmap_line_ydxi::@5 + //SEG1446 bitmap_line_ydxi::@5 b5: - //SEG1446 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1447 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1447 [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1448 [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 - //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 + //SEG1449 [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 - //SEG1449 bitmap_line_ydxi::@3 + //SEG1450 bitmap_line_ydxi::@3 b3: - //SEG1450 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx + //SEG1451 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG1451 [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1452 [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 - //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 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: - //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 + //SEG1454 [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 + //SEG1455 [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 - //SEG1455 bitmap_line_ydxi::@2 + //SEG1456 bitmap_line_ydxi::@2 b2: - //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 + //SEG1457 [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 - //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 + //SEG1458 [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 - //SEG1458 bitmap_line_ydxi::@return + //SEG1459 bitmap_line_ydxi::@return breturn: - //SEG1459 [717] return + //SEG1460 [717] return rts } -//SEG1460 bitmap_line_xdyd +//SEG1461 bitmap_line_xdyd bitmap_line_xdyd: { .label x = $e .label y = $f @@ -25338,305 +25338,305 @@ bitmap_line_xdyd: { .label xd = 8 .label yd = 7 .label e = 9 - //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 + //SEG1462 [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 - //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 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: - //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 + //SEG1464 [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 + //SEG1465 [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 + //SEG1466 [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 - //SEG1466 bitmap_line_xdyd::@1 + //SEG1467 bitmap_line_xdyd::@1 b1: - //SEG1467 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 + //SEG1468 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx x - //SEG1468 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 + //SEG1469 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy y - //SEG1469 [723] call bitmap_plot - //SEG1470 [696] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1470 [723] call bitmap_plot + //SEG1471 [696] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from_b1: - //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 + //SEG1472 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1473 [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 - //SEG1473 bitmap_line_xdyd::@5 + //SEG1474 bitmap_line_xdyd::@5 b5: - //SEG1474 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1475 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1475 [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1476 [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 - //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 + //SEG1477 [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 - //SEG1477 bitmap_line_xdyd::@3 + //SEG1478 bitmap_line_xdyd::@3 b3: - //SEG1478 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1479 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1479 [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1480 [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 - //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 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: - //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 + //SEG1482 [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 + //SEG1483 [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 - //SEG1483 bitmap_line_xdyd::@2 + //SEG1484 bitmap_line_xdyd::@2 b2: - //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 + //SEG1485 [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 - //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 + //SEG1486 [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 - //SEG1486 bitmap_line_xdyd::@return + //SEG1487 bitmap_line_xdyd::@return breturn: - //SEG1487 [732] return + //SEG1488 [732] return rts } -//SEG1488 bitmap_line_ydxd +//SEG1489 bitmap_line_ydxd bitmap_line_ydxd: { .label y = $e .label y1 = $f .label yd = 7 .label xd = 8 .label e = 9 - //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 + //SEG1490 [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 - //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 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: - //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 + //SEG1492 [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 + //SEG1493 [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 + //SEG1494 [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 - //SEG1494 bitmap_line_ydxd::@1 + //SEG1495 bitmap_line_ydxd::@1 b1: - //SEG1495 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - //SEG1496 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 + //SEG1496 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + //SEG1497 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy y - //SEG1497 [738] call bitmap_plot - //SEG1498 [696] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1498 [738] call bitmap_plot + //SEG1499 [696] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from_b1: - //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 + //SEG1500 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1501 [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 - //SEG1501 bitmap_line_ydxd::@5 + //SEG1502 bitmap_line_ydxd::@5 b5: - //SEG1502 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1503 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1503 [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1504 [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 - //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 + //SEG1505 [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 - //SEG1505 bitmap_line_ydxd::@3 + //SEG1506 bitmap_line_ydxd::@3 b3: - //SEG1506 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx + //SEG1507 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx dex - //SEG1507 [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1508 [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 - //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 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: - //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 + //SEG1510 [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 + //SEG1511 [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 - //SEG1511 bitmap_line_ydxd::@2 + //SEG1512 bitmap_line_ydxd::@2 b2: - //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 + //SEG1513 [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 - //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 + //SEG1514 [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 - //SEG1514 bitmap_line_ydxd::@return + //SEG1515 bitmap_line_ydxd::@return breturn: - //SEG1515 [747] return + //SEG1516 [747] return rts } -//SEG1516 bitmap_clear +//SEG1517 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //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 + //SEG1518 [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 - //SEG1518 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG1519 [750] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1519 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG1520 [750] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //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 + //SEG1521 [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 - //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 (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1522 [750] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1523 [750] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //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 + //SEG1524 [750] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1525 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1525 bitmap_clear::@1 + //SEG1526 bitmap_clear::@1 b1: - //SEG1526 [751] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1527 [751] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //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 + //SEG1528 [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 - //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 (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1529 [751] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1530 [751] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //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 + //SEG1531 [751] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1532 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1532 bitmap_clear::@2 + //SEG1533 bitmap_clear::@2 b2: - //SEG1533 [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1534 [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 - //SEG1534 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1535 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1535 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG1536 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1537 [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 - //SEG1537 bitmap_clear::@3 + //SEG1538 bitmap_clear::@3 b3: - //SEG1538 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1539 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG1540 [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 - //SEG1540 bitmap_clear::@return + //SEG1541 bitmap_clear::@return breturn: - //SEG1541 [758] return + //SEG1542 [758] return rts } -//SEG1542 bitmap_init +//SEG1543 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _6 = 2 .label yoffs = 3 - //SEG1543 [760] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1544 [760] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //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 + //SEG1545 [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 - //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 + //SEG1546 [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 - //SEG1546 [760] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1547 [760] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //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 + //SEG1548 [760] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1549 [760] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG1549 bitmap_init::@1 + //SEG1550 bitmap_init::@1 b1: - //SEG1550 [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG1551 [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 - //SEG1551 [762] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1552 [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 - //SEG1552 [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1553 [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 - //SEG1553 [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG1554 [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 - //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 + //SEG1555 [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 - //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 + //SEG1556 [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 - //SEG1556 [767] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1557 [767] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //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 + //SEG1558 [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 - //SEG1558 bitmap_init::@2 + //SEG1559 bitmap_init::@2 b2: - //SEG1559 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG1560 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1561 [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 - //SEG1561 [770] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1562 [770] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //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 + //SEG1563 [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 - //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 + //SEG1564 [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 - //SEG1564 [770] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1565 [770] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //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 + //SEG1566 [770] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1567 [770] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG1567 bitmap_init::@3 + //SEG1568 bitmap_init::@3 b3: - //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 + //SEG1569 [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 - //SEG1569 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG1570 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG1570 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG1571 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG1571 [774] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1572 [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 - //SEG1572 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG1573 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG1573 [776] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1574 [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 - //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 + //SEG1575 [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 - //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 + //SEG1576 [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 - //SEG1576 bitmap_init::@7 + //SEG1577 bitmap_init::@7 b7: - //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 + //SEG1578 [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 @@ -25644,513 +25644,513 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 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: - //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 [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 - //SEG1580 bitmap_init::@4 + //SEG1581 bitmap_init::@4 b4: - //SEG1581 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG1582 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1583 [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 - //SEG1583 bitmap_init::@return + //SEG1584 bitmap_init::@return breturn: - //SEG1584 [783] return + //SEG1585 [783] return rts - //SEG1585 [784] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1586 [784] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG1586 bitmap_init::@10 + //SEG1587 bitmap_init::@10 b10: - //SEG1587 [767] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1588 [767] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG1588 [767] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG1589 [767] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG1589 gfx_init_charset +//SEG1590 gfx_init_charset gfx_init_charset: { .label charset = 5 .label chargen = 3 .label c = 2 - //SEG1590 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG1591 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG1591 [786] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] + //SEG1592 [786] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] b1_from_gfx_init_charset: - //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 + //SEG1593 [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 - //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 + //SEG1594 [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 - //SEG1594 [786] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 + //SEG1595 [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 - //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 from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] b1_from_b3: - //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 + //SEG1597 [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 + //SEG1598 [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 + //SEG1599 [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 - //SEG1599 gfx_init_charset::@1 + //SEG1600 gfx_init_charset::@1 b1: - //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 from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] b2_from_b1: - //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 + //SEG1602 [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 - //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 + //SEG1603 [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 + //SEG1604 [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 - //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 from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] b2_from_b2: - //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 + //SEG1606 [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 + //SEG1607 [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 + //SEG1608 [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 - //SEG1608 gfx_init_charset::@2 + //SEG1609 gfx_init_charset::@2 b2: - //SEG1609 [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1610 [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 - //SEG1610 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 + //SEG1611 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 inc charset bne !+ inc charset+1 !: - //SEG1611 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1612 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1612 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuxx=_inc_vbuxx + //SEG1613 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1614 [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 - //SEG1614 gfx_init_charset::@3 + //SEG1615 gfx_init_charset::@3 b3: - //SEG1615 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 + //SEG1616 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 inc c - //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 + //SEG1617 [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 - //SEG1617 gfx_init_charset::@4 + //SEG1618 gfx_init_charset::@4 b4: - //SEG1618 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG1619 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT jmp breturn - //SEG1619 gfx_init_charset::@return + //SEG1620 gfx_init_charset::@return breturn: - //SEG1620 [796] return + //SEG1621 [796] return rts } -//SEG1621 gfx_init_screen4 +//SEG1622 gfx_init_screen4 // Initialize VIC screen 4 - all chars are 00 gfx_init_screen4: { .label ch = 3 .label cy = 2 - //SEG1622 [798] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] + //SEG1623 [798] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] b1_from_gfx_init_screen4: - //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 + //SEG1624 [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 - //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 + //SEG1625 [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 - //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 from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] b1_from_b3: - //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 + //SEG1627 [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 + //SEG1628 [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 - //SEG1628 gfx_init_screen4::@1 + //SEG1629 gfx_init_screen4::@1 b1: - //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 from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] b2_from_b1: - //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 + //SEG1631 [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 - //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 (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 - //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 from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] b2_from_b2: - //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 + //SEG1634 [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 + //SEG1635 [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 - //SEG1635 gfx_init_screen4::@2 + //SEG1636 gfx_init_screen4::@2 b2: - //SEG1636 [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1637 [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 - //SEG1637 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1638 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1638 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuxx=_inc_vbuxx + //SEG1639 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1640 [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 - //SEG1640 gfx_init_screen4::@3 + //SEG1641 gfx_init_screen4::@3 b3: - //SEG1641 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1642 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1643 [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 - //SEG1643 gfx_init_screen4::@return + //SEG1644 gfx_init_screen4::@return breturn: - //SEG1644 [806] return + //SEG1645 [806] return rts } -//SEG1645 gfx_init_screen3 +//SEG1646 gfx_init_screen3 // Initialize VIC screen 3 ( value is %00xx00yy where xx is xpos and yy is ypos gfx_init_screen3: { .label _1 = 7 .label ch = 3 .label cy = 2 - //SEG1646 [808] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] + //SEG1647 [808] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] b1_from_gfx_init_screen3: - //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 + //SEG1648 [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 - //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 + //SEG1649 [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 - //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 from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] b1_from_b3: - //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 + //SEG1651 [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 + //SEG1652 [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 - //SEG1652 gfx_init_screen3::@1 + //SEG1653 gfx_init_screen3::@1 b1: - //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 from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] b2_from_b1: - //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 + //SEG1655 [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 + //SEG1656 [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 - //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 from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] b2_from_b2: - //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 + //SEG1658 [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 + //SEG1659 [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 - //SEG1659 gfx_init_screen3::@2 + //SEG1660 gfx_init_screen3::@2 b2: - //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 + //SEG1661 [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 - //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 + //SEG1662 [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 - //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 + //SEG1663 [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 - //SEG1663 [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG1664 [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG1664 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuaa + //SEG1665 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1665 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1666 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1666 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuxx=_inc_vbuxx + //SEG1667 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1668 [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 - //SEG1668 gfx_init_screen3::@3 + //SEG1669 gfx_init_screen3::@3 b3: - //SEG1669 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1670 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1671 [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 - //SEG1671 gfx_init_screen3::@return + //SEG1672 gfx_init_screen3::@return breturn: - //SEG1672 [820] return + //SEG1673 [820] return rts } -//SEG1673 gfx_init_screen2 +//SEG1674 gfx_init_screen2 // Initialize VIC screen 2 ( value is %ccccrrrr where cccc is (x+y mod $f) and rrrr is %1111-%cccc) gfx_init_screen2: { .label col2 = 7 .label ch = 3 .label cy = 2 - //SEG1674 [822] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] + //SEG1675 [822] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] b1_from_gfx_init_screen2: - //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 + //SEG1676 [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 - //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 + //SEG1677 [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 - //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 from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] b1_from_b3: - //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 + //SEG1679 [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 + //SEG1680 [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 - //SEG1680 gfx_init_screen2::@1 + //SEG1681 gfx_init_screen2::@1 b1: - //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 from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] b2_from_b1: - //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 + //SEG1683 [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 + //SEG1684 [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 - //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 from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] b2_from_b2: - //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 + //SEG1686 [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 + //SEG1687 [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 - //SEG1687 gfx_init_screen2::@2 + //SEG1688 gfx_init_screen2::@2 b2: - //SEG1688 [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1689 [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 - //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 + //SEG1690 [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 - //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 + //SEG1691 [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 - //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 + //SEG1692 [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 - //SEG1692 [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuaa=vbuaa_bor_vbuz1 + //SEG1693 [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuaa=vbuaa_bor_vbuz1 ora col2 - //SEG1693 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuaa + //SEG1694 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1694 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1695 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1695 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuxx=_inc_vbuxx + //SEG1696 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1697 [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 - //SEG1697 gfx_init_screen2::@3 + //SEG1698 gfx_init_screen2::@3 b3: - //SEG1698 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1699 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1700 [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 - //SEG1700 gfx_init_screen2::@return + //SEG1701 gfx_init_screen2::@return breturn: - //SEG1701 [835] return + //SEG1702 [835] return rts } -//SEG1702 gfx_init_screen1 +//SEG1703 gfx_init_screen1 // Initialize VIC screen 1 ( value is %0000cccc where cccc is (x+y mod $f)) gfx_init_screen1: { .label ch = 3 .label cy = 2 - //SEG1703 [837] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] + //SEG1704 [837] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] b1_from_gfx_init_screen1: - //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 + //SEG1705 [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 - //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 + //SEG1706 [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 - //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 from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] b1_from_b3: - //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 + //SEG1708 [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 + //SEG1709 [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 - //SEG1709 gfx_init_screen1::@1 + //SEG1710 gfx_init_screen1::@1 b1: - //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 from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] b2_from_b1: - //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 + //SEG1712 [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 + //SEG1713 [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 - //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 from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] b2_from_b2: - //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 + //SEG1715 [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 + //SEG1716 [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 - //SEG1716 gfx_init_screen1::@2 + //SEG1717 gfx_init_screen1::@2 b2: - //SEG1717 [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1718 [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 - //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 + //SEG1719 [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 - //SEG1719 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuaa + //SEG1720 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1720 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1721 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1721 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuxx=_inc_vbuxx + //SEG1722 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1723 [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 - //SEG1723 gfx_init_screen1::@3 + //SEG1724 gfx_init_screen1::@3 b3: - //SEG1724 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1725 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1726 [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 - //SEG1726 gfx_init_screen1::@return + //SEG1727 gfx_init_screen1::@return breturn: - //SEG1727 [847] return + //SEG1728 [847] return rts } -//SEG1728 gfx_init_screen0 +//SEG1729 gfx_init_screen0 // Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos) gfx_init_screen0: { .label _1 = 7 .label ch = 3 .label cy = 2 - //SEG1729 [849] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG1730 [849] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] b1_from_gfx_init_screen0: - //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 + //SEG1731 [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 - //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 + //SEG1732 [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 - //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 from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] b1_from_b3: - //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 + //SEG1734 [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 + //SEG1735 [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 - //SEG1735 gfx_init_screen0::@1 + //SEG1736 gfx_init_screen0::@1 b1: - //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 from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] b2_from_b1: - //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 + //SEG1738 [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 + //SEG1739 [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 - //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 from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] b2_from_b2: - //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 + //SEG1741 [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 + //SEG1742 [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 - //SEG1742 gfx_init_screen0::@2 + //SEG1743 gfx_init_screen0::@2 b2: - //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 + //SEG1744 [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 - //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 + //SEG1745 [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 - //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 + //SEG1746 [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 - //SEG1746 [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG1747 [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG1747 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa + //SEG1748 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1748 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1749 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1749 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx + //SEG1750 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1751 [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 - //SEG1751 gfx_init_screen0::@3 + //SEG1752 gfx_init_screen0::@3 b3: - //SEG1752 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1753 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1754 [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 - //SEG1754 gfx_init_screen0::@return + //SEG1755 gfx_init_screen0::@return breturn: - //SEG1755 [861] return + //SEG1756 [861] return rts } -//SEG1756 keyboard_init +//SEG1757 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG1757 [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG1758 [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 - //SEG1758 [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1759 [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 - //SEG1759 keyboard_init::@return + //SEG1760 keyboard_init::@return breturn: - //SEG1760 [864] return + //SEG1761 [864] return rts } // Default vallues for the palette @@ -26164,8 +26164,6 @@ keyboard_init: { keyboard_events: .fill 8, 0 // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() keyboard_scan_values: .fill 8, 0 - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 @@ -28989,12 +28987,13 @@ reg byte a [ gfx_init_screen0::$3 ] FINAL ASSEMBLER Score: 11370517 -//SEG0 Basic Upstart +//SEG0 File Comments +// Interactive Explorer for C64DTV Screen Modes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -29162,59 +29161,59 @@ Score: 11370517 .label keyboard_events_size = 9 .label keyboard_modifiers = 2 .label form_cursor_count = $e -//SEG2 @begin -//SEG3 [1] phi from @begin to @68 [phi:@begin->@68] -//SEG4 @68 -//SEG5 [2] call main -//SEG6 [3] phi from @68 to @end [phi:@68->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @68 [phi:@begin->@68] +//SEG5 @68 +//SEG6 [2] call main +//SEG7 [3] phi from @68 to @end [phi:@68->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG13 [8] call keyboard_init + //SEG14 [8] call keyboard_init jsr keyboard_init - //SEG14 [9] phi from main to main::@7 [phi:main->main::@7] - //SEG15 main::@7 - //SEG16 [10] call gfx_init - //SEG17 [449] phi from main::@7 to gfx_init [phi:main::@7->gfx_init] + //SEG15 [9] phi from main to main::@7 [phi:main->main::@7] + //SEG16 main::@7 + //SEG17 [10] call gfx_init + //SEG18 [449] phi from main::@7 to gfx_init [phi:main::@7->gfx_init] jsr gfx_init - //SEG18 [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - //SEG19 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuxx=vbuc1 + //SEG19 [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG20 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG20 [11] phi (byte) keyboard_events_size#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 + //SEG21 [11] phi (byte) keyboard_events_size#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 txa sta keyboard_events_size - //SEG21 [11] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@7->main::@1#2] -- vbsz1=vbuc1 + //SEG22 [11] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@7->main::@1#2] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 sta form_cursor_count - //SEG22 main::@1 - //SEG23 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG24 main::@2 + //SEG23 main::@1 + //SEG24 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG25 main::@2 b2: - //SEG25 [13] call form_mode - //SEG26 [254] phi from main::@2 to form_mode [phi:main::@2->form_mode] + //SEG26 [13] call form_mode + //SEG27 [254] phi from main::@2 to form_mode [phi:main::@2->form_mode] jsr form_mode - //SEG27 [14] phi from main::@2 to main::@9 [phi:main::@2->main::@9] - //SEG28 main::@9 - //SEG29 [15] call gfx_mode + //SEG28 [14] phi from main::@2 to main::@9 [phi:main::@2->main::@9] + //SEG29 main::@9 + //SEG30 [15] call gfx_mode jsr gfx_mode - //SEG30 [11] phi from main::@9 to main::@1 [phi:main::@9->main::@1] - //SEG31 [11] phi (byte) form_field_idx#1 = (byte) form_field_idx#18 [phi:main::@9->main::@1#0] -- register_copy - //SEG32 [11] phi (byte) keyboard_events_size#27 = (byte) keyboard_events_size#24 [phi:main::@9->main::@1#1] -- register_copy - //SEG33 [11] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#16 [phi:main::@9->main::@1#2] -- register_copy + //SEG31 [11] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG32 [11] phi (byte) form_field_idx#1 = (byte) form_field_idx#18 [phi:main::@9->main::@1#0] -- register_copy + //SEG33 [11] phi (byte) keyboard_events_size#27 = (byte) keyboard_events_size#24 [phi:main::@9->main::@1#1] -- register_copy + //SEG34 [11] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#16 [phi:main::@9->main::@1#2] -- register_copy jmp b2 } -//SEG34 gfx_mode +//SEG35 gfx_mode // Change graphics mode to show the selected graphics mode gfx_mode: { .label _31 = $a @@ -29237,157 +29236,157 @@ gfx_mode: { .label col = 5 .label cx = 7 .label cy = 2 - //SEG35 [16] if(*((const byte*) form_ctrl_line#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 + //SEG36 [16] if(*((const byte*) form_ctrl_line#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_line cmp #0 beq b12 - //SEG36 [17] phi from gfx_mode to gfx_mode::@23 [phi:gfx_mode->gfx_mode::@23] - //SEG37 gfx_mode::@23 - //SEG38 [18] phi from gfx_mode::@23 to gfx_mode::@1 [phi:gfx_mode::@23->gfx_mode::@1] - //SEG39 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuyy=vbuc1 + //SEG37 [17] phi from gfx_mode to gfx_mode::@23 [phi:gfx_mode->gfx_mode::@23] + //SEG38 gfx_mode::@23 + //SEG39 [18] phi from gfx_mode::@23 to gfx_mode::@1 [phi:gfx_mode::@23->gfx_mode::@1] + //SEG40 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuyy=vbuc1 ldy #0|DTV_LINEAR jmp b1 - //SEG40 [18] phi from gfx_mode to gfx_mode::@1 [phi:gfx_mode->gfx_mode::@1] + //SEG41 [18] phi from gfx_mode to gfx_mode::@1 [phi:gfx_mode->gfx_mode::@1] b12: - //SEG41 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuyy=vbuc1 + //SEG42 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG42 gfx_mode::@1 + //SEG43 gfx_mode::@1 b1: - //SEG43 [19] if(*((const byte*) form_ctrl_borof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 + //SEG44 [19] if(*((const byte*) form_ctrl_borof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_borof cmp #0 beq b2 - //SEG44 gfx_mode::@24 - //SEG45 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG45 gfx_mode::@24 + //SEG46 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_BORDER_OFF tay - //SEG46 [21] phi from gfx_mode::@1 gfx_mode::@24 to gfx_mode::@2 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2] - //SEG47 [21] phi (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#14 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2#0] -- register_copy - //SEG48 gfx_mode::@2 + //SEG47 [21] phi from gfx_mode::@1 gfx_mode::@24 to gfx_mode::@2 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2] + //SEG48 [21] phi (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#14 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2#0] -- register_copy + //SEG49 gfx_mode::@2 b2: - //SEG49 [22] if(*((const byte*) form_ctrl_hicol#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 + //SEG50 [22] if(*((const byte*) form_ctrl_hicol#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_hicol cmp #0 beq b3 - //SEG50 gfx_mode::@25 - //SEG51 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG51 gfx_mode::@25 + //SEG52 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_HIGHCOLOR tay - //SEG52 [24] phi from gfx_mode::@2 gfx_mode::@25 to gfx_mode::@3 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3] - //SEG53 [24] phi (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#15 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3#0] -- register_copy - //SEG54 gfx_mode::@3 + //SEG53 [24] phi from gfx_mode::@2 gfx_mode::@25 to gfx_mode::@3 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3] + //SEG54 [24] phi (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#15 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3#0] -- register_copy + //SEG55 gfx_mode::@3 b3: - //SEG55 [25] if(*((const byte*) form_ctrl_overs#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 + //SEG56 [25] if(*((const byte*) form_ctrl_overs#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_overs cmp #0 beq b4 - //SEG56 gfx_mode::@26 - //SEG57 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG57 gfx_mode::@26 + //SEG58 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_OVERSCAN tay - //SEG58 [27] phi from gfx_mode::@26 gfx_mode::@3 to gfx_mode::@4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4] - //SEG59 [27] phi (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4#0] -- register_copy - //SEG60 gfx_mode::@4 + //SEG59 [27] phi from gfx_mode::@26 gfx_mode::@3 to gfx_mode::@4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4] + //SEG60 [27] phi (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4#0] -- register_copy + //SEG61 gfx_mode::@4 b4: - //SEG61 [28] if(*((const byte*) form_ctrl_colof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 + //SEG62 [28] if(*((const byte*) form_ctrl_colof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_colof cmp #0 beq b5 - //SEG62 gfx_mode::@27 - //SEG63 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG63 gfx_mode::@27 + //SEG64 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_COLORRAM_OFF tay - //SEG64 [30] phi from gfx_mode::@27 gfx_mode::@4 to gfx_mode::@5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5] - //SEG65 [30] phi (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5#0] -- register_copy - //SEG66 gfx_mode::@5 + //SEG65 [30] phi from gfx_mode::@27 gfx_mode::@4 to gfx_mode::@5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5] + //SEG66 [30] phi (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5#0] -- register_copy + //SEG67 gfx_mode::@5 b5: - //SEG67 [31] if(*((const byte*) form_ctrl_chunk#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 + //SEG68 [31] if(*((const byte*) form_ctrl_chunk#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_chunk cmp #0 beq b6 - //SEG68 gfx_mode::@28 - //SEG69 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG69 gfx_mode::@28 + //SEG70 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #DTV_CHUNKY tay - //SEG70 [33] phi from gfx_mode::@28 gfx_mode::@5 to gfx_mode::@6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6] - //SEG71 [33] phi (byte) gfx_mode::dtv_control#12 = (byte) gfx_mode::dtv_control#6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6#0] -- register_copy - //SEG72 gfx_mode::@6 + //SEG71 [33] phi from gfx_mode::@28 gfx_mode::@5 to gfx_mode::@6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6] + //SEG72 [33] phi (byte) gfx_mode::dtv_control#12 = (byte) gfx_mode::dtv_control#6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6#0] -- register_copy + //SEG73 gfx_mode::@6 b6: - //SEG73 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuyy + //SEG74 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuyy sty DTV_CONTROL - //SEG74 [35] if(*((const byte*) form_ctrl_ecm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 + //SEG75 [35] if(*((const byte*) form_ctrl_ecm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_ecm cmp #0 beq b14 - //SEG75 [36] phi from gfx_mode::@6 to gfx_mode::@29 [phi:gfx_mode::@6->gfx_mode::@29] - //SEG76 gfx_mode::@29 - //SEG77 [37] phi from gfx_mode::@29 to gfx_mode::@7 [phi:gfx_mode::@29->gfx_mode::@7] - //SEG78 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuyy=vbuc1 + //SEG76 [36] phi from gfx_mode::@6 to gfx_mode::@29 [phi:gfx_mode::@6->gfx_mode::@29] + //SEG77 gfx_mode::@29 + //SEG78 [37] phi from gfx_mode::@29 to gfx_mode::@7 [phi:gfx_mode::@29->gfx_mode::@7] + //SEG79 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuyy=vbuc1 ldy #VIC_DEN|VIC_RSEL|3|VIC_ECM jmp b7 - //SEG79 [37] phi from gfx_mode::@6 to gfx_mode::@7 [phi:gfx_mode::@6->gfx_mode::@7] + //SEG80 [37] phi from gfx_mode::@6 to gfx_mode::@7 [phi:gfx_mode::@6->gfx_mode::@7] b14: - //SEG80 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuyy=vbuc1 + //SEG81 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuyy=vbuc1 ldy #VIC_DEN|VIC_RSEL|3 - //SEG81 gfx_mode::@7 + //SEG82 gfx_mode::@7 b7: - //SEG82 [38] if(*((const byte*) form_ctrl_bmm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 + //SEG83 [38] if(*((const byte*) form_ctrl_bmm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_bmm cmp #0 beq b8 - //SEG83 gfx_mode::@30 - //SEG84 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuyy=vbuyy_bor_vbuc1 + //SEG84 gfx_mode::@30 + //SEG85 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuyy=vbuyy_bor_vbuc1 tya ora #VIC_BMM tay - //SEG85 [40] phi from gfx_mode::@30 gfx_mode::@7 to gfx_mode::@8 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8] - //SEG86 [40] phi (byte) gfx_mode::vic_control#4 = (byte) gfx_mode::vic_control#2 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8#0] -- register_copy - //SEG87 gfx_mode::@8 + //SEG86 [40] phi from gfx_mode::@30 gfx_mode::@7 to gfx_mode::@8 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8] + //SEG87 [40] phi (byte) gfx_mode::vic_control#4 = (byte) gfx_mode::vic_control#2 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8#0] -- register_copy + //SEG88 gfx_mode::@8 b8: - //SEG88 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuyy + //SEG89 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuyy sty VIC_CONTROL - //SEG89 [42] if(*((const byte*) form_ctrl_mcm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 + //SEG90 [42] if(*((const byte*) form_ctrl_mcm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_mcm cmp #0 beq b16 - //SEG90 [43] phi from gfx_mode::@8 to gfx_mode::@31 [phi:gfx_mode::@8->gfx_mode::@31] - //SEG91 gfx_mode::@31 - //SEG92 [44] phi from gfx_mode::@31 to gfx_mode::@9 [phi:gfx_mode::@31->gfx_mode::@9] - //SEG93 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 [phi:gfx_mode::@31->gfx_mode::@9#0] -- vbuaa=vbuc1 + //SEG91 [43] phi from gfx_mode::@8 to gfx_mode::@31 [phi:gfx_mode::@8->gfx_mode::@31] + //SEG92 gfx_mode::@31 + //SEG93 [44] phi from gfx_mode::@31 to gfx_mode::@9 [phi:gfx_mode::@31->gfx_mode::@9] + //SEG94 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 [phi:gfx_mode::@31->gfx_mode::@9#0] -- vbuaa=vbuc1 lda #VIC_CSEL|VIC_MCM jmp b9 - //SEG94 [44] phi from gfx_mode::@8 to gfx_mode::@9 [phi:gfx_mode::@8->gfx_mode::@9] + //SEG95 [44] phi from gfx_mode::@8 to gfx_mode::@9 [phi:gfx_mode::@8->gfx_mode::@9] b16: - //SEG95 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0 [phi:gfx_mode::@8->gfx_mode::@9#0] -- vbuaa=vbuc1 + //SEG96 [44] phi (byte) gfx_mode::vic_control2#2 = (const byte) VIC_CSEL#0 [phi:gfx_mode::@8->gfx_mode::@9#0] -- vbuaa=vbuc1 lda #VIC_CSEL - //SEG96 gfx_mode::@9 + //SEG97 gfx_mode::@9 b9: - //SEG97 [45] *((const byte*) VIC_CONTROL2#0) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuaa + //SEG98 [45] *((const byte*) VIC_CONTROL2#0) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuaa sta VIC_CONTROL2 - //SEG98 [46] (byte~) gfx_mode::$29 ← *((const byte*) form_a_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG99 [46] (byte~) gfx_mode::$29 ← *((const byte*) form_a_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_a_start_hi asl asl asl asl - //SEG99 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 + //SEG100 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 ora form_a_start_lo tay - //SEG100 [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern#0) -- vbuaa=_deref_pbuc1 + //SEG101 [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern#0) -- vbuaa=_deref_pbuc1 lda form_a_pattern - //SEG101 [49] call get_plane - //SEG102 [236] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] - //SEG103 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#0 [phi:gfx_mode::@9->get_plane#0] -- register_copy + //SEG102 [49] call get_plane + //SEG103 [236] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] + //SEG104 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#0 [phi:gfx_mode::@9->get_plane#0] -- register_copy jsr get_plane - //SEG104 [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 - //SEG105 gfx_mode::@46 - //SEG106 [51] (dword~) gfx_mode::$31 ← (dword) get_plane::return#16 - //SEG107 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz1_plus_vbuyy + //SEG105 [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 + //SEG106 gfx_mode::@46 + //SEG107 [51] (dword~) gfx_mode::$31 ← (dword) get_plane::return#16 + //SEG108 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz1_plus_vbuyy tya clc adc plane_a @@ -29401,74 +29400,74 @@ gfx_mode: { lda plane_a+3 adc #0 sta plane_a+3 - //SEG108 [53] (word~) gfx_mode::$33 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 + //SEG109 [53] (word~) gfx_mode::$33 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 lda plane_a sta _33 lda plane_a+1 sta _33+1 - //SEG109 [54] (byte~) gfx_mode::$34 ← < (word~) gfx_mode::$33 -- vbuaa=_lo_vwuz1 + //SEG110 [54] (byte~) gfx_mode::$34 ← < (word~) gfx_mode::$33 -- vbuaa=_lo_vwuz1 lda _33 - //SEG110 [55] *((const byte*) DTV_PLANEA_START_LO#0) ← (byte~) gfx_mode::$34 -- _deref_pbuc1=vbuaa + //SEG111 [55] *((const byte*) DTV_PLANEA_START_LO#0) ← (byte~) gfx_mode::$34 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_START_LO - //SEG111 [56] (word~) gfx_mode::$35 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 + //SEG112 [56] (word~) gfx_mode::$35 ← < (dword) gfx_mode::plane_a#0 -- vwuz1=_lo_vduz2 lda plane_a sta _35 lda plane_a+1 sta _35+1 - //SEG112 [57] (byte~) gfx_mode::$36 ← > (word~) gfx_mode::$35 -- vbuaa=_hi_vwuz1 - //SEG113 [58] *((const byte*) DTV_PLANEA_START_MI#0) ← (byte~) gfx_mode::$36 -- _deref_pbuc1=vbuaa + //SEG113 [57] (byte~) gfx_mode::$36 ← > (word~) gfx_mode::$35 -- vbuaa=_hi_vwuz1 + //SEG114 [58] *((const byte*) DTV_PLANEA_START_MI#0) ← (byte~) gfx_mode::$36 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_START_MI - //SEG114 [59] (word~) gfx_mode::$37 ← > (dword) gfx_mode::plane_a#0 -- vwuz1=_hi_vduz2 + //SEG115 [59] (word~) gfx_mode::$37 ← > (dword) gfx_mode::plane_a#0 -- vwuz1=_hi_vduz2 lda plane_a+2 sta _37 lda plane_a+3 sta _37+1 - //SEG115 [60] (byte~) gfx_mode::$38 ← < (word~) gfx_mode::$37 -- vbuaa=_lo_vwuz1 + //SEG116 [60] (byte~) gfx_mode::$38 ← < (word~) gfx_mode::$37 -- vbuaa=_lo_vwuz1 lda _37 - //SEG116 [61] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte~) gfx_mode::$38 -- _deref_pbuc1=vbuaa + //SEG117 [61] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte~) gfx_mode::$38 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_START_HI - //SEG117 [62] (byte~) gfx_mode::$39 ← *((const byte*) form_a_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG118 [62] (byte~) gfx_mode::$39 ← *((const byte*) form_a_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_a_step_hi asl asl asl asl - //SEG118 [63] (byte~) gfx_mode::$40 ← (byte~) gfx_mode::$39 | *((const byte*) form_a_step_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG119 [63] (byte~) gfx_mode::$40 ← (byte~) gfx_mode::$39 | *((const byte*) form_a_step_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_a_step_lo - //SEG119 [64] *((const byte*) DTV_PLANEA_STEP#0) ← (byte~) gfx_mode::$40 -- _deref_pbuc1=vbuaa + //SEG120 [64] *((const byte*) DTV_PLANEA_STEP#0) ← (byte~) gfx_mode::$40 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_STEP - //SEG120 [65] (byte~) gfx_mode::$41 ← *((const byte*) form_a_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG121 [65] (byte~) gfx_mode::$41 ← *((const byte*) form_a_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_a_mod_hi asl asl asl asl - //SEG121 [66] (byte~) gfx_mode::$42 ← (byte~) gfx_mode::$41 | *((const byte*) form_a_mod_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG122 [66] (byte~) gfx_mode::$42 ← (byte~) gfx_mode::$41 | *((const byte*) form_a_mod_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_a_mod_lo - //SEG122 [67] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte~) gfx_mode::$42 -- _deref_pbuc1=vbuaa + //SEG123 [67] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte~) gfx_mode::$42 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_MODULO_LO - //SEG123 [68] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG124 [68] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG124 [69] (byte~) gfx_mode::$43 ← *((const byte*) form_b_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG125 [69] (byte~) gfx_mode::$43 ← *((const byte*) form_b_start_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_b_start_hi asl asl asl asl - //SEG125 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 + //SEG126 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 ora form_b_start_lo tay - //SEG126 [71] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern#0) -- vbuaa=_deref_pbuc1 + //SEG127 [71] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern#0) -- vbuaa=_deref_pbuc1 lda form_b_pattern - //SEG127 [72] call get_plane - //SEG128 [236] phi from gfx_mode::@46 to get_plane [phi:gfx_mode::@46->get_plane] - //SEG129 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#1 [phi:gfx_mode::@46->get_plane#0] -- register_copy + //SEG128 [72] call get_plane + //SEG129 [236] phi from gfx_mode::@46 to get_plane [phi:gfx_mode::@46->get_plane] + //SEG130 [236] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#1 [phi:gfx_mode::@46->get_plane#0] -- register_copy jsr get_plane - //SEG130 [73] (dword) get_plane::return#17 ← (dword) get_plane::return#14 - //SEG131 gfx_mode::@47 - //SEG132 [74] (dword~) gfx_mode::$45 ← (dword) get_plane::return#17 - //SEG133 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz1_plus_vbuyy + //SEG131 [73] (dword) get_plane::return#17 ← (dword) get_plane::return#14 + //SEG132 gfx_mode::@47 + //SEG133 [74] (dword~) gfx_mode::$45 ← (dword) get_plane::return#17 + //SEG134 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz1_plus_vbuyy tya clc adc plane_b @@ -29482,309 +29481,309 @@ gfx_mode: { lda plane_b+3 adc #0 sta plane_b+3 - //SEG134 [76] (word~) gfx_mode::$47 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 + //SEG135 [76] (word~) gfx_mode::$47 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 lda plane_b sta _47 lda plane_b+1 sta _47+1 - //SEG135 [77] (byte~) gfx_mode::$48 ← < (word~) gfx_mode::$47 -- vbuaa=_lo_vwuz1 + //SEG136 [77] (byte~) gfx_mode::$48 ← < (word~) gfx_mode::$47 -- vbuaa=_lo_vwuz1 lda _47 - //SEG136 [78] *((const byte*) DTV_PLANEB_START_LO#0) ← (byte~) gfx_mode::$48 -- _deref_pbuc1=vbuaa + //SEG137 [78] *((const byte*) DTV_PLANEB_START_LO#0) ← (byte~) gfx_mode::$48 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_START_LO - //SEG137 [79] (word~) gfx_mode::$49 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 + //SEG138 [79] (word~) gfx_mode::$49 ← < (dword) gfx_mode::plane_b#0 -- vwuz1=_lo_vduz2 lda plane_b sta _49 lda plane_b+1 sta _49+1 - //SEG138 [80] (byte~) gfx_mode::$50 ← > (word~) gfx_mode::$49 -- vbuaa=_hi_vwuz1 - //SEG139 [81] *((const byte*) DTV_PLANEB_START_MI#0) ← (byte~) gfx_mode::$50 -- _deref_pbuc1=vbuaa + //SEG139 [80] (byte~) gfx_mode::$50 ← > (word~) gfx_mode::$49 -- vbuaa=_hi_vwuz1 + //SEG140 [81] *((const byte*) DTV_PLANEB_START_MI#0) ← (byte~) gfx_mode::$50 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_START_MI - //SEG140 [82] (word~) gfx_mode::$51 ← > (dword) gfx_mode::plane_b#0 -- vwuz1=_hi_vduz2 + //SEG141 [82] (word~) gfx_mode::$51 ← > (dword) gfx_mode::plane_b#0 -- vwuz1=_hi_vduz2 lda plane_b+2 sta _51 lda plane_b+3 sta _51+1 - //SEG141 [83] (byte~) gfx_mode::$52 ← < (word~) gfx_mode::$51 -- vbuaa=_lo_vwuz1 + //SEG142 [83] (byte~) gfx_mode::$52 ← < (word~) gfx_mode::$51 -- vbuaa=_lo_vwuz1 lda _51 - //SEG142 [84] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte~) gfx_mode::$52 -- _deref_pbuc1=vbuaa + //SEG143 [84] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte~) gfx_mode::$52 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_START_HI - //SEG143 [85] (byte~) gfx_mode::$53 ← *((const byte*) form_b_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG144 [85] (byte~) gfx_mode::$53 ← *((const byte*) form_b_step_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_b_step_hi asl asl asl asl - //SEG144 [86] (byte~) gfx_mode::$54 ← (byte~) gfx_mode::$53 | *((const byte*) form_b_step_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG145 [86] (byte~) gfx_mode::$54 ← (byte~) gfx_mode::$53 | *((const byte*) form_b_step_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_b_step_lo - //SEG145 [87] *((const byte*) DTV_PLANEB_STEP#0) ← (byte~) gfx_mode::$54 -- _deref_pbuc1=vbuaa + //SEG146 [87] *((const byte*) DTV_PLANEB_STEP#0) ← (byte~) gfx_mode::$54 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_STEP - //SEG146 [88] (byte~) gfx_mode::$55 ← *((const byte*) form_b_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG147 [88] (byte~) gfx_mode::$55 ← *((const byte*) form_b_mod_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_b_mod_hi asl asl asl asl - //SEG147 [89] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const byte*) form_b_mod_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG148 [89] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const byte*) form_b_mod_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_b_mod_lo - //SEG148 [90] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuaa + //SEG149 [90] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_MODULO_LO - //SEG149 [91] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG150 [91] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG150 [92] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG151 [92] *((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 - //SEG151 [93] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) VIC_SCREEN0#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG152 [93] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) VIC_SCREEN0#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^VIC_SCREEN0/$4000 sta CIA2_PORT_A - //SEG152 [94] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen#0) -- vbuaa=_deref_pbuc1 + //SEG153 [94] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen#0) -- vbuaa=_deref_pbuc1 lda form_vic_screen - //SEG153 [95] call get_vic_screen - //SEG154 [222] phi from gfx_mode::@47 to get_vic_screen [phi:gfx_mode::@47->get_vic_screen] - //SEG155 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#0 [phi:gfx_mode::@47->get_vic_screen#0] -- register_copy + //SEG154 [95] call get_vic_screen + //SEG155 [222] phi from gfx_mode::@47 to get_vic_screen [phi:gfx_mode::@47->get_vic_screen] + //SEG156 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#0 [phi:gfx_mode::@47->get_vic_screen#0] -- register_copy jsr get_vic_screen - //SEG156 [96] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 - //SEG157 gfx_mode::@48 - //SEG158 [97] (byte*~) gfx_mode::$61 ← (byte*) get_vic_screen::return#10 - //SEG159 [98] (word~) gfx_mode::$63 ← (word)(byte*~) gfx_mode::$61 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 + //SEG157 [96] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 + //SEG158 gfx_mode::@48 + //SEG159 [97] (byte*~) gfx_mode::$61 ← (byte*) get_vic_screen::return#10 + //SEG160 [98] (word~) gfx_mode::$63 ← (word)(byte*~) gfx_mode::$61 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 lda _63 and #<$3fff sta _63 lda _63+1 and #>$3fff sta _63+1 - //SEG160 [99] (word~) gfx_mode::$64 ← (word~) gfx_mode::$63 >> (byte/signed byte/word/signed word/dword/signed dword) 6 -- vwuz1=vwuz1_ror_6 + //SEG161 [99] (word~) gfx_mode::$64 ← (word~) gfx_mode::$63 >> (byte/signed byte/word/signed word/dword/signed dword) 6 -- vwuz1=vwuz1_ror_6 ldy #6 !: lsr _64+1 ror _64 dey bne !- - //SEG161 [100] (byte~) gfx_mode::$65 ← ((byte)) (word~) gfx_mode::$64 -- vbuz1=_byte_vwuz2 + //SEG162 [100] (byte~) gfx_mode::$65 ← ((byte)) (word~) gfx_mode::$64 -- vbuz1=_byte_vwuz2 lda _64 sta _65 - //SEG162 [101] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx#0) -- vbuaa=_deref_pbuc1 + //SEG163 [101] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx#0) -- vbuaa=_deref_pbuc1 lda form_vic_gfx - //SEG163 [102] call get_vic_charset + //SEG164 [102] call get_vic_charset jsr get_vic_charset - //SEG164 [103] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 - //SEG165 gfx_mode::@49 - //SEG166 [104] (byte*~) gfx_mode::$66 ← (byte*) get_vic_charset::return#4 - //SEG167 [105] (word~) gfx_mode::$68 ← (word)(byte*~) gfx_mode::$66 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 + //SEG165 [103] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 + //SEG166 gfx_mode::@49 + //SEG167 [104] (byte*~) gfx_mode::$66 ← (byte*) get_vic_charset::return#4 + //SEG168 [105] (word~) gfx_mode::$68 ← (word)(byte*~) gfx_mode::$66 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 lda _68 and #<$3fff sta _68 lda _68+1 and #>$3fff sta _68+1 - //SEG168 [106] (byte~) gfx_mode::$69 ← > (word~) gfx_mode::$68 -- vbuaa=_hi_vwuz1 - //SEG169 [107] (byte~) gfx_mode::$70 ← (byte~) gfx_mode::$69 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 + //SEG169 [106] (byte~) gfx_mode::$69 ← > (word~) gfx_mode::$68 -- vbuaa=_hi_vwuz1 + //SEG170 [107] (byte~) gfx_mode::$70 ← (byte~) gfx_mode::$69 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG170 [108] (byte~) gfx_mode::$71 ← (byte~) gfx_mode::$65 | (byte~) gfx_mode::$70 -- vbuaa=vbuz1_bor_vbuaa + //SEG171 [108] (byte~) gfx_mode::$71 ← (byte~) gfx_mode::$65 | (byte~) gfx_mode::$70 -- vbuaa=vbuz1_bor_vbuaa ora _65 - //SEG171 [109] *((const byte*) VIC_MEMORY#0) ← (byte~) gfx_mode::$71 -- _deref_pbuc1=vbuaa + //SEG172 [109] *((const byte*) VIC_MEMORY#0) ← (byte~) gfx_mode::$71 -- _deref_pbuc1=vbuaa sta VIC_MEMORY - //SEG172 [110] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols#0) -- vbuaa=_deref_pbuc1 + //SEG173 [110] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols#0) -- vbuaa=_deref_pbuc1 lda form_vic_cols - //SEG173 [111] call get_vic_screen - //SEG174 [222] phi from gfx_mode::@49 to get_vic_screen [phi:gfx_mode::@49->get_vic_screen] - //SEG175 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#1 [phi:gfx_mode::@49->get_vic_screen#0] -- register_copy + //SEG174 [111] call get_vic_screen + //SEG175 [222] phi from gfx_mode::@49 to get_vic_screen [phi:gfx_mode::@49->get_vic_screen] + //SEG176 [222] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#1 [phi:gfx_mode::@49->get_vic_screen#0] -- register_copy jsr get_vic_screen - //SEG176 [112] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 - //SEG177 gfx_mode::@50 - //SEG178 [113] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 - //SEG179 [114] phi from gfx_mode::@50 to gfx_mode::@10 [phi:gfx_mode::@50->gfx_mode::@10] - //SEG180 [114] phi (byte) gfx_mode::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@50->gfx_mode::@10#0] -- vbuz1=vbuc1 + //SEG177 [112] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 + //SEG178 gfx_mode::@50 + //SEG179 [113] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 + //SEG180 [114] phi from gfx_mode::@50 to gfx_mode::@10 [phi:gfx_mode::@50->gfx_mode::@10] + //SEG181 [114] phi (byte) gfx_mode::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@50->gfx_mode::@10#0] -- vbuz1=vbuc1 lda #0 sta cy - //SEG181 [114] phi (byte*) gfx_mode::col#3 = (const byte*) COLS#0 [phi:gfx_mode::@50->gfx_mode::@10#1] -- pbuz1=pbuc1 + //SEG182 [114] phi (byte*) gfx_mode::col#3 = (const byte*) COLS#0 [phi:gfx_mode::@50->gfx_mode::@10#1] -- pbuz1=pbuc1 lda #COLS sta col+1 - //SEG182 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#0 [phi:gfx_mode::@50->gfx_mode::@10#2] -- register_copy - //SEG183 [114] phi from gfx_mode::@32 to gfx_mode::@10 [phi:gfx_mode::@32->gfx_mode::@10] - //SEG184 [114] phi (byte) gfx_mode::cy#4 = (byte) gfx_mode::cy#1 [phi:gfx_mode::@32->gfx_mode::@10#0] -- register_copy - //SEG185 [114] phi (byte*) gfx_mode::col#3 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@32->gfx_mode::@10#1] -- register_copy - //SEG186 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@32->gfx_mode::@10#2] -- register_copy - //SEG187 gfx_mode::@10 + //SEG183 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#0 [phi:gfx_mode::@50->gfx_mode::@10#2] -- register_copy + //SEG184 [114] phi from gfx_mode::@32 to gfx_mode::@10 [phi:gfx_mode::@32->gfx_mode::@10] + //SEG185 [114] phi (byte) gfx_mode::cy#4 = (byte) gfx_mode::cy#1 [phi:gfx_mode::@32->gfx_mode::@10#0] -- register_copy + //SEG186 [114] phi (byte*) gfx_mode::col#3 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@32->gfx_mode::@10#1] -- register_copy + //SEG187 [114] phi (byte*) gfx_mode::vic_colors#3 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@32->gfx_mode::@10#2] -- register_copy + //SEG188 gfx_mode::@10 b10: - //SEG188 [115] phi from gfx_mode::@10 to gfx_mode::@11 [phi:gfx_mode::@10->gfx_mode::@11] - //SEG189 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuz1=vbuc1 + //SEG189 [115] phi from gfx_mode::@10 to gfx_mode::@11 [phi:gfx_mode::@10->gfx_mode::@11] + //SEG190 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuz1=vbuc1 lda #0 sta cx - //SEG190 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#3 [phi:gfx_mode::@10->gfx_mode::@11#1] -- register_copy - //SEG191 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#3 [phi:gfx_mode::@10->gfx_mode::@11#2] -- register_copy - //SEG192 [115] phi from gfx_mode::@11 to gfx_mode::@11 [phi:gfx_mode::@11->gfx_mode::@11] - //SEG193 [115] phi (byte) gfx_mode::cx#2 = (byte) gfx_mode::cx#1 [phi:gfx_mode::@11->gfx_mode::@11#0] -- register_copy - //SEG194 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@11->gfx_mode::@11#1] -- register_copy - //SEG195 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@11->gfx_mode::@11#2] -- register_copy - //SEG196 gfx_mode::@11 + //SEG191 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#3 [phi:gfx_mode::@10->gfx_mode::@11#1] -- register_copy + //SEG192 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#3 [phi:gfx_mode::@10->gfx_mode::@11#2] -- register_copy + //SEG193 [115] phi from gfx_mode::@11 to gfx_mode::@11 [phi:gfx_mode::@11->gfx_mode::@11] + //SEG194 [115] phi (byte) gfx_mode::cx#2 = (byte) gfx_mode::cx#1 [phi:gfx_mode::@11->gfx_mode::@11#0] -- register_copy + //SEG195 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#1 [phi:gfx_mode::@11->gfx_mode::@11#1] -- register_copy + //SEG196 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#1 [phi:gfx_mode::@11->gfx_mode::@11#2] -- register_copy + //SEG197 gfx_mode::@11 b11: - //SEG197 [116] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG198 [116] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (vic_colors),y sta (col),y - //SEG198 [117] (byte*) gfx_mode::col#1 ← ++ (byte*) gfx_mode::col#2 -- pbuz1=_inc_pbuz1 + //SEG199 [117] (byte*) gfx_mode::col#1 ← ++ (byte*) gfx_mode::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG199 [118] (byte*) gfx_mode::vic_colors#1 ← ++ (byte*) gfx_mode::vic_colors#2 -- pbuz1=_inc_pbuz1 + //SEG200 [118] (byte*) gfx_mode::vic_colors#1 ← ++ (byte*) gfx_mode::vic_colors#2 -- pbuz1=_inc_pbuz1 inc vic_colors bne !+ inc vic_colors+1 !: - //SEG200 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuz1=_inc_vbuz1 + //SEG201 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG201 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_mode::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG202 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_mode::@11 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b11 - //SEG202 gfx_mode::@32 - //SEG203 [121] (byte) gfx_mode::cy#1 ← ++ (byte) gfx_mode::cy#4 -- vbuz1=_inc_vbuz1 + //SEG203 gfx_mode::@32 + //SEG204 [121] (byte) gfx_mode::cy#1 ← ++ (byte) gfx_mode::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG204 [122] if((byte) gfx_mode::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_mode::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG205 [122] if((byte) gfx_mode::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_mode::@10 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b10 - //SEG205 gfx_mode::@33 - //SEG206 [123] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG206 gfx_mode::@33 + //SEG207 [123] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG207 [124] (byte~) gfx_mode::$75 ← *((const byte*) form_vic_bg0_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG208 [124] (byte~) gfx_mode::$75 ← *((const byte*) form_vic_bg0_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg0_hi asl asl asl asl - //SEG208 [125] (byte~) gfx_mode::$76 ← (byte~) gfx_mode::$75 | *((const byte*) form_vic_bg0_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG209 [125] (byte~) gfx_mode::$76 ← (byte~) gfx_mode::$75 | *((const byte*) form_vic_bg0_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg0_lo - //SEG209 [126] *((const byte*) BGCOL1#0) ← (byte~) gfx_mode::$76 -- _deref_pbuc1=vbuaa + //SEG210 [126] *((const byte*) BGCOL1#0) ← (byte~) gfx_mode::$76 -- _deref_pbuc1=vbuaa sta BGCOL1 - //SEG210 [127] (byte~) gfx_mode::$77 ← *((const byte*) form_vic_bg1_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG211 [127] (byte~) gfx_mode::$77 ← *((const byte*) form_vic_bg1_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg1_hi asl asl asl asl - //SEG211 [128] (byte~) gfx_mode::$78 ← (byte~) gfx_mode::$77 | *((const byte*) form_vic_bg1_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG212 [128] (byte~) gfx_mode::$78 ← (byte~) gfx_mode::$77 | *((const byte*) form_vic_bg1_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg1_lo - //SEG212 [129] *((const byte*) BGCOL2#0) ← (byte~) gfx_mode::$78 -- _deref_pbuc1=vbuaa + //SEG213 [129] *((const byte*) BGCOL2#0) ← (byte~) gfx_mode::$78 -- _deref_pbuc1=vbuaa sta BGCOL2 - //SEG213 [130] (byte~) gfx_mode::$79 ← *((const byte*) form_vic_bg2_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG214 [130] (byte~) gfx_mode::$79 ← *((const byte*) form_vic_bg2_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg2_hi asl asl asl asl - //SEG214 [131] (byte~) gfx_mode::$80 ← (byte~) gfx_mode::$79 | *((const byte*) form_vic_bg2_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG215 [131] (byte~) gfx_mode::$80 ← (byte~) gfx_mode::$79 | *((const byte*) form_vic_bg2_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg2_lo - //SEG215 [132] *((const byte*) BGCOL3#0) ← (byte~) gfx_mode::$80 -- _deref_pbuc1=vbuaa + //SEG216 [132] *((const byte*) BGCOL3#0) ← (byte~) gfx_mode::$80 -- _deref_pbuc1=vbuaa sta BGCOL3 - //SEG216 [133] (byte~) gfx_mode::$81 ← *((const byte*) form_vic_bg3_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 + //SEG217 [133] (byte~) gfx_mode::$81 ← *((const byte*) form_vic_bg3_hi#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg3_hi asl asl asl asl - //SEG217 [134] (byte~) gfx_mode::$82 ← (byte~) gfx_mode::$81 | *((const byte*) form_vic_bg3_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 + //SEG218 [134] (byte~) gfx_mode::$82 ← (byte~) gfx_mode::$81 | *((const byte*) form_vic_bg3_lo#0) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg3_lo - //SEG218 [135] *((const byte*) BGCOL4#0) ← (byte~) gfx_mode::$82 -- _deref_pbuc1=vbuaa + //SEG219 [135] *((const byte*) BGCOL4#0) ← (byte~) gfx_mode::$82 -- _deref_pbuc1=vbuaa sta BGCOL4 - //SEG219 [136] if(*((const byte*) form_dtv_palet#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@15 -- _deref_pbuc1_eq_0_then_la1 + //SEG220 [136] if(*((const byte*) form_dtv_palet#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@15 -- _deref_pbuc1_eq_0_then_la1 lda form_dtv_palet cmp #0 beq b18 - //SEG220 [137] phi from gfx_mode::@33 to gfx_mode::@13 [phi:gfx_mode::@33->gfx_mode::@13] - //SEG221 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuyy=vbuc1 + //SEG221 [137] phi from gfx_mode::@33 to gfx_mode::@13 [phi:gfx_mode::@33->gfx_mode::@13] + //SEG222 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuyy=vbuc1 ldy #0 - //SEG222 [137] phi from gfx_mode::@13 to gfx_mode::@13 [phi:gfx_mode::@13->gfx_mode::@13] - //SEG223 [137] phi (byte) gfx_mode::j#2 = (byte) gfx_mode::j#1 [phi:gfx_mode::@13->gfx_mode::@13#0] -- register_copy - //SEG224 gfx_mode::@13 + //SEG223 [137] phi from gfx_mode::@13 to gfx_mode::@13 [phi:gfx_mode::@13->gfx_mode::@13] + //SEG224 [137] phi (byte) gfx_mode::j#2 = (byte) gfx_mode::j#1 [phi:gfx_mode::@13->gfx_mode::@13#0] -- register_copy + //SEG225 gfx_mode::@13 b13: - //SEG225 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuyy=vbuyy + //SEG226 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuyy=vbuyy tya sta DTV_PALETTE,y - //SEG226 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuyy=_inc_vbuyy + //SEG227 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuyy=_inc_vbuyy iny - //SEG227 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@13 -- vbuyy_neq_vbuc1_then_la1 + //SEG228 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@13 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b13 - //SEG228 gfx_mode::@19 + //SEG229 gfx_mode::@19 b19: - //SEG229 [141] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto gfx_mode::@19 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG230 [141] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto gfx_mode::@19 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b19 - //SEG230 [142] phi from gfx_mode::@19 to gfx_mode::@21 [phi:gfx_mode::@19->gfx_mode::@21] - //SEG231 gfx_mode::@21 - //SEG232 [143] call keyboard_event_scan - //SEG233 [159] phi from gfx_mode::@21 to keyboard_event_scan [phi:gfx_mode::@21->keyboard_event_scan] - //SEG234 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#24 [phi:gfx_mode::@21->keyboard_event_scan#0] -- register_copy + //SEG231 [142] phi from gfx_mode::@19 to gfx_mode::@21 [phi:gfx_mode::@19->gfx_mode::@21] + //SEG232 gfx_mode::@21 + //SEG233 [143] call keyboard_event_scan + //SEG234 [159] phi from gfx_mode::@21 to keyboard_event_scan [phi:gfx_mode::@21->keyboard_event_scan] + //SEG235 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#24 [phi:gfx_mode::@21->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan - //SEG235 [144] phi from gfx_mode::@21 to gfx_mode::@51 [phi:gfx_mode::@21->gfx_mode::@51] - //SEG236 gfx_mode::@51 - //SEG237 [145] call keyboard_event_get + //SEG236 [144] phi from gfx_mode::@21 to gfx_mode::@51 [phi:gfx_mode::@21->gfx_mode::@51] + //SEG237 gfx_mode::@51 + //SEG238 [145] call keyboard_event_get jsr keyboard_event_get - //SEG238 [146] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - //SEG239 gfx_mode::@52 - //SEG240 [147] (byte) gfx_mode::keyboard_event#0 ← (byte) keyboard_event_get::return#3 - //SEG241 [148] if((byte) gfx_mode::keyboard_event#0!=(const byte) KEY_SPACE#0) goto gfx_mode::@19 -- vbuaa_neq_vbuc1_then_la1 + //SEG239 [146] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG240 gfx_mode::@52 + //SEG241 [147] (byte) gfx_mode::keyboard_event#0 ← (byte) keyboard_event_get::return#3 + //SEG242 [148] if((byte) gfx_mode::keyboard_event#0!=(const byte) KEY_SPACE#0) goto gfx_mode::@19 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b19 - //SEG242 gfx_mode::@return - //SEG243 [149] return + //SEG243 gfx_mode::@return + //SEG244 [149] return rts - //SEG244 [150] phi from gfx_mode::@15 to gfx_mode::@15 [phi:gfx_mode::@15->gfx_mode::@15] - //SEG245 [150] phi (byte) gfx_mode::i#2 = (byte) gfx_mode::i#1 [phi:gfx_mode::@15->gfx_mode::@15#0] -- register_copy - //SEG246 [150] phi from gfx_mode::@33 to gfx_mode::@15 [phi:gfx_mode::@33->gfx_mode::@15] + //SEG245 [150] phi from gfx_mode::@15 to gfx_mode::@15 [phi:gfx_mode::@15->gfx_mode::@15] + //SEG246 [150] phi (byte) gfx_mode::i#2 = (byte) gfx_mode::i#1 [phi:gfx_mode::@15->gfx_mode::@15#0] -- register_copy + //SEG247 [150] phi from gfx_mode::@33 to gfx_mode::@15 [phi:gfx_mode::@33->gfx_mode::@15] b18: - //SEG247 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuyy=vbuc1 + //SEG248 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuyy=vbuc1 ldy #0 - //SEG248 gfx_mode::@15 + //SEG249 gfx_mode::@15 b15: - //SEG249 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + //SEG250 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG250 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuyy=_inc_vbuyy + //SEG251 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuyy=_inc_vbuyy iny - //SEG251 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@15 -- vbuyy_neq_vbuc1_then_la1 + //SEG252 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto gfx_mode::@15 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b15 jmp b19 } -//SEG252 keyboard_event_get +//SEG253 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - //SEG253 [154] if((byte) keyboard_events_size#100==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG254 [154] if((byte) keyboard_events_size#100==(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 - //SEG254 keyboard_event_get::@3 - //SEG255 [155] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#100 -- vbuz1=_dec_vbuz1 + //SEG255 keyboard_event_get::@3 + //SEG256 [155] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#100 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG256 [156] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG257 [156] (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 - //SEG257 [157] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG258 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG259 [157] 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 + //SEG258 [157] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG259 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG260 [157] 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 - //SEG260 [157] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG261 [157] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG261 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#100 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG262 [157] 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 + //SEG262 [157] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#100 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG263 [157] 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 - //SEG263 keyboard_event_get::@return + //SEG264 keyboard_event_get::@return breturn: - //SEG264 [158] return + //SEG265 [158] return rts } -//SEG265 keyboard_event_scan +//SEG266 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -29794,440 +29793,440 @@ keyboard_event_scan: { .label keycode = 8 .label row = 2 .label col = 7 - //SEG266 [160] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG267 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#110 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG268 [160] 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 + //SEG267 [160] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG268 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#110 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG269 [160] 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 - //SEG269 [160] 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 + //SEG270 [160] 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 - //SEG270 [160] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG271 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG272 [160] 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 - //SEG273 [160] 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 - //SEG274 keyboard_event_scan::@1 + //SEG271 [160] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG272 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG273 [160] 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 + //SEG274 [160] 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 + //SEG275 keyboard_event_scan::@1 b1: - //SEG275 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuaa=vbuz1 + //SEG276 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuaa=vbuz1 lda row - //SEG276 [162] call keyboard_matrix_read + //SEG277 [162] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG277 [163] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG278 keyboard_event_scan::@25 - //SEG279 [164] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG278 [163] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG279 keyboard_event_scan::@25 + //SEG280 [164] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG280 [165] 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 + //SEG281 [165] 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 b6 - //SEG281 keyboard_event_scan::@13 - //SEG282 [166] (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 + //SEG282 keyboard_event_scan::@13 + //SEG283 [166] (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 - //SEG283 [167] 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] - //SEG284 [167] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG285 [167] 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 - //SEG286 keyboard_event_scan::@3 + //SEG284 [167] 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] + //SEG285 [167] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG286 [167] 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 + //SEG287 keyboard_event_scan::@3 b3: - //SEG287 [168] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG288 [168] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG288 [169] 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 + //SEG289 [169] 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 - //SEG289 [170] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG290 keyboard_event_scan::@20 - //SEG291 [171] call keyboard_event_pressed - //SEG292 [213] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG293 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG290 [170] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG291 keyboard_event_scan::@20 + //SEG292 [171] call keyboard_event_pressed + //SEG293 [213] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG294 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG294 [172] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 - //SEG295 keyboard_event_scan::@26 - //SEG296 [173] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - //SEG297 [174] 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 + //SEG295 [172] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 + //SEG296 keyboard_event_scan::@26 + //SEG297 [173] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG298 [174] 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 b2 - //SEG298 [175] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG299 keyboard_event_scan::@21 - //SEG300 [176] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] - //SEG301 [176] phi (byte) keyboard_modifiers#18 = (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 + //SEG299 [175] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG300 keyboard_event_scan::@21 + //SEG301 [176] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG302 [176] phi (byte) keyboard_modifiers#18 = (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 - //SEG302 [176] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG303 [176] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b2: - //SEG303 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + //SEG304 [176] phi (byte) keyboard_modifiers#18 = (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 - //SEG304 keyboard_event_scan::@9 + //SEG305 keyboard_event_scan::@9 b9: - //SEG305 [177] call keyboard_event_pressed - //SEG306 [213] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG307 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG306 [177] call keyboard_event_pressed + //SEG307 [213] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG308 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG308 [178] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 - //SEG309 keyboard_event_scan::@27 - //SEG310 [179] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - //SEG311 [180] 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 + //SEG309 [178] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 + //SEG310 keyboard_event_scan::@27 + //SEG311 [179] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG312 [180] 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 - //SEG312 keyboard_event_scan::@22 - //SEG313 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG313 keyboard_event_scan::@22 + //SEG314 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_RSHIFT ora keyboard_modifiers sta keyboard_modifiers - //SEG314 [182] 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] - //SEG315 [182] phi (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy - //SEG316 keyboard_event_scan::@10 + //SEG315 [182] 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] + //SEG316 [182] phi (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG317 keyboard_event_scan::@10 b10: - //SEG317 [183] call keyboard_event_pressed - //SEG318 [213] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG319 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG318 [183] call keyboard_event_pressed + //SEG319 [213] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG320 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG320 [184] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 - //SEG321 keyboard_event_scan::@28 - //SEG322 [185] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - //SEG323 [186] 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 + //SEG321 [184] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 + //SEG322 keyboard_event_scan::@28 + //SEG323 [185] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG324 [186] 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 - //SEG324 keyboard_event_scan::@23 - //SEG325 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG325 keyboard_event_scan::@23 + //SEG326 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_CTRL ora keyboard_modifiers sta keyboard_modifiers - //SEG326 [188] 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] - //SEG327 [188] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy - //SEG328 keyboard_event_scan::@11 + //SEG327 [188] 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] + //SEG328 [188] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG329 keyboard_event_scan::@11 b11: - //SEG329 [189] call keyboard_event_pressed - //SEG330 [213] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG331 [213] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG330 [189] call keyboard_event_pressed + //SEG331 [213] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG332 [213] phi (byte) keyboard_event_pressed::keycode#4 = (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 - //SEG332 [190] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 - //SEG333 keyboard_event_scan::@29 - //SEG334 [191] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#3 - //SEG335 [192] 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 + //SEG333 [190] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 + //SEG334 keyboard_event_scan::@29 + //SEG335 [191] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#3 + //SEG336 [192] 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 - //SEG336 keyboard_event_scan::@24 - //SEG337 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG337 keyboard_event_scan::@24 + //SEG338 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz1_bor_vbuc1 lda #KEY_MODIFIER_COMMODORE ora keyboard_modifiers sta keyboard_modifiers - //SEG338 [194] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return] - //SEG339 [194] phi (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy - //SEG340 keyboard_event_scan::@return + //SEG339 [194] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return] + //SEG340 [194] phi (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy + //SEG341 keyboard_event_scan::@return breturn: - //SEG341 [195] return + //SEG342 [195] return rts - //SEG342 [196] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG343 [196] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b6: - //SEG343 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG344 [196] 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 - //SEG345 [196] 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 + //SEG344 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG345 [196] 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 + //SEG346 [196] 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 - //SEG346 [196] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG347 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#119 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG348 [196] 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 - //SEG349 [196] 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 - //SEG350 keyboard_event_scan::@4 + //SEG347 [196] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG348 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#119 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG349 [196] 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 + //SEG350 [196] 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 + //SEG351 keyboard_event_scan::@4 b4: - //SEG351 [197] (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 + //SEG352 [197] (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 - //SEG352 [198] (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_vbuz1 + //SEG353 [198] (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_vbuz1 ldy col and keyboard_matrix_col_bitmask,y - //SEG353 [199] 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 + //SEG354 [199] 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 - //SEG354 keyboard_event_scan::@15 - //SEG355 [200] if((byte) keyboard_events_size#18==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG355 keyboard_event_scan::@15 + //SEG356 [200] if((byte) keyboard_events_size#18==(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 - //SEG356 keyboard_event_scan::@16 - //SEG357 [201] (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_vbuz2 + //SEG357 keyboard_event_scan::@16 + //SEG358 [201] (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_vbuz2 lda row_scan and keyboard_matrix_col_bitmask,y - //SEG358 [202] 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 + //SEG359 [202] 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 - //SEG359 keyboard_event_scan::@17 - //SEG360 [203] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG360 keyboard_event_scan::@17 + //SEG361 [203] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG361 [204] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 + //SEG362 [204] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG362 [205] 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] - //SEG363 [205] phi (byte) keyboard_events_size#119 = (byte) keyboard_events_size#18 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy - //SEG364 keyboard_event_scan::@5 + //SEG363 [205] 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] + //SEG364 [205] phi (byte) keyboard_events_size#119 = (byte) keyboard_events_size#18 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG365 keyboard_event_scan::@5 b5: - //SEG365 [206] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG366 [206] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG366 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG367 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG367 [208] 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 + //SEG368 [208] 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 - //SEG368 keyboard_event_scan::@19 - //SEG369 [209] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG369 keyboard_event_scan::@19 + //SEG370 [209] *((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 - //SEG370 keyboard_event_scan::@7 + //SEG371 keyboard_event_scan::@7 b7: - //SEG371 [210] (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 + //SEG372 [210] (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 - //SEG372 [211] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG373 [211] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG373 [212] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 + //SEG374 [212] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG374 keyboard_event_pressed +//SEG375 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed keyboard_event_pressed: { .label row_bits = 8 .label keycode = 7 - //SEG375 [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG376 [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG376 [215] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG377 [215] (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 - //SEG377 [216] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG378 [216] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG378 [217] (byte) keyboard_event_pressed::return#10 ← (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 + //SEG379 [217] (byte) keyboard_event_pressed::return#10 ← (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 - //SEG379 keyboard_event_pressed::@return - //SEG380 [218] return + //SEG380 keyboard_event_pressed::@return + //SEG381 [218] return rts } -//SEG381 keyboard_matrix_read +//SEG382 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG382 [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuaa + //SEG383 [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuaa tay lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG383 [220] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG384 [220] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG384 keyboard_matrix_read::@return - //SEG385 [221] return + //SEG385 keyboard_matrix_read::@return + //SEG386 [221] return rts } -//SEG386 get_vic_screen +//SEG387 get_vic_screen // Get the VIC screen address from the screen index get_vic_screen: { .label return = 3 - //SEG387 [223] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_screen::@return -- vbuaa_eq_0_then_la1 + //SEG388 [223] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_screen::@return -- vbuaa_eq_0_then_la1 cmp #0 beq b1 - //SEG388 get_vic_screen::@10 - //SEG389 [224] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG389 get_vic_screen::@10 + //SEG390 [224] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 cmp #1 beq b2 - //SEG390 get_vic_screen::@11 - //SEG391 [225] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG391 get_vic_screen::@11 + //SEG392 [225] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 cmp #2 beq b3 - //SEG392 get_vic_screen::@12 - //SEG393 [226] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG393 get_vic_screen::@12 + //SEG394 [226] if((byte) get_vic_screen::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_vic_screen::@return -- vbuaa_eq_vbuc1_then_la1 cmp #3 beq b4 - //SEG394 get_vic_screen::@13 - //SEG395 [227] if((byte) get_vic_screen::idx#2!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_vic_screen::@9 -- vbuaa_neq_vbuc1_then_la1 + //SEG395 get_vic_screen::@13 + //SEG396 [227] if((byte) get_vic_screen::idx#2!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_vic_screen::@9 -- vbuaa_neq_vbuc1_then_la1 cmp #4 bne b1 - //SEG396 [228] phi from get_vic_screen::@13 to get_vic_screen::@return [phi:get_vic_screen::@13->get_vic_screen::@return] - //SEG397 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN4#0 [phi:get_vic_screen::@13->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG397 [228] phi from get_vic_screen::@13 to get_vic_screen::@return [phi:get_vic_screen::@13->get_vic_screen::@return] + //SEG398 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN4#0 [phi:get_vic_screen::@13->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN4 sta return+1 jmp breturn - //SEG398 [228] phi from get_vic_screen get_vic_screen::@9 to get_vic_screen::@return [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return] + //SEG399 [228] phi from get_vic_screen get_vic_screen::@9 to get_vic_screen::@return [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return] b1: - //SEG399 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN0#0 [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG400 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN0#0 [phi:get_vic_screen/get_vic_screen::@9->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN0 sta return+1 jmp breturn - //SEG400 [228] phi from get_vic_screen::@10 to get_vic_screen::@return [phi:get_vic_screen::@10->get_vic_screen::@return] + //SEG401 [228] phi from get_vic_screen::@10 to get_vic_screen::@return [phi:get_vic_screen::@10->get_vic_screen::@return] b2: - //SEG401 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN1#0 [phi:get_vic_screen::@10->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG402 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN1#0 [phi:get_vic_screen::@10->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN1 sta return+1 jmp breturn - //SEG402 [228] phi from get_vic_screen::@11 to get_vic_screen::@return [phi:get_vic_screen::@11->get_vic_screen::@return] + //SEG403 [228] phi from get_vic_screen::@11 to get_vic_screen::@return [phi:get_vic_screen::@11->get_vic_screen::@return] b3: - //SEG403 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN2#0 [phi:get_vic_screen::@11->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG404 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN2#0 [phi:get_vic_screen::@11->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN2 sta return+1 jmp breturn - //SEG404 [228] phi from get_vic_screen::@12 to get_vic_screen::@return [phi:get_vic_screen::@12->get_vic_screen::@return] + //SEG405 [228] phi from get_vic_screen::@12 to get_vic_screen::@return [phi:get_vic_screen::@12->get_vic_screen::@return] b4: - //SEG405 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN3#0 [phi:get_vic_screen::@12->get_vic_screen::@return#0] -- pbuz1=pbuc1 + //SEG406 [228] phi (byte*) get_vic_screen::return#5 = (const byte*) VIC_SCREEN3#0 [phi:get_vic_screen::@12->get_vic_screen::@return#0] -- pbuz1=pbuc1 lda #VIC_SCREEN3 sta return+1 - //SEG406 get_vic_screen::@return + //SEG407 get_vic_screen::@return breturn: - //SEG407 [229] return + //SEG408 [229] return rts - //SEG408 [230] phi from get_vic_screen::@13 to get_vic_screen::@9 [phi:get_vic_screen::@13->get_vic_screen::@9] - //SEG409 get_vic_screen::@9 + //SEG409 [230] phi from get_vic_screen::@13 to get_vic_screen::@9 [phi:get_vic_screen::@13->get_vic_screen::@9] + //SEG410 get_vic_screen::@9 } -//SEG410 get_vic_charset +//SEG411 get_vic_charset // Get the VIC charset/bitmap address from the index get_vic_charset: { .label return = 3 - //SEG411 [231] if((byte) get_vic_charset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_charset::@return -- vbuaa_eq_0_then_la1 + //SEG412 [231] if((byte) get_vic_charset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_vic_charset::@return -- vbuaa_eq_0_then_la1 cmp #0 beq b1 - //SEG412 get_vic_charset::@4 - //SEG413 [232] if((byte) get_vic_charset::idx#0!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_charset::@3 -- vbuaa_neq_vbuc1_then_la1 + //SEG413 get_vic_charset::@4 + //SEG414 [232] if((byte) get_vic_charset::idx#0!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_vic_charset::@3 -- vbuaa_neq_vbuc1_then_la1 cmp #1 bne b1 - //SEG414 [233] phi from get_vic_charset::@4 to get_vic_charset::@return [phi:get_vic_charset::@4->get_vic_charset::@return] - //SEG415 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_BITMAP#0 [phi:get_vic_charset::@4->get_vic_charset::@return#0] -- pbuz1=pbuc1 + //SEG415 [233] phi from get_vic_charset::@4 to get_vic_charset::@return [phi:get_vic_charset::@4->get_vic_charset::@return] + //SEG416 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_BITMAP#0 [phi:get_vic_charset::@4->get_vic_charset::@return#0] -- pbuz1=pbuc1 lda #VIC_BITMAP sta return+1 jmp breturn - //SEG416 [233] phi from get_vic_charset get_vic_charset::@3 to get_vic_charset::@return [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return] + //SEG417 [233] phi from get_vic_charset get_vic_charset::@3 to get_vic_charset::@return [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return] b1: - //SEG417 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_CHARSET_ROM#0 [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return#0] -- pbuz1=pbuc1 + //SEG418 [233] phi (byte*) get_vic_charset::return#2 = (const byte*) VIC_CHARSET_ROM#0 [phi:get_vic_charset/get_vic_charset::@3->get_vic_charset::@return#0] -- pbuz1=pbuc1 lda #VIC_CHARSET_ROM sta return+1 - //SEG418 get_vic_charset::@return + //SEG419 get_vic_charset::@return breturn: - //SEG419 [234] return + //SEG420 [234] return rts - //SEG420 [235] phi from get_vic_charset::@4 to get_vic_charset::@3 [phi:get_vic_charset::@4->get_vic_charset::@3] - //SEG421 get_vic_charset::@3 + //SEG421 [235] phi from get_vic_charset::@4 to get_vic_charset::@3 [phi:get_vic_charset::@4->get_vic_charset::@3] + //SEG422 get_vic_charset::@3 } -//SEG422 get_plane +//SEG423 get_plane // Get plane address from a plane index (from the form) get_plane: { .label return = $a - //SEG423 [237] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_plane::@return -- vbuaa_eq_0_then_la1 + //SEG424 [237] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_plane::@return -- vbuaa_eq_0_then_la1 cmp #0 beq b1 - //SEG424 get_plane::@28 - //SEG425 [238] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG425 get_plane::@28 + //SEG426 [238] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #1 beq b2 - //SEG426 get_plane::@29 - //SEG427 [239] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG427 get_plane::@29 + //SEG428 [239] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #2 bne !b3+ jmp b3 !b3: - //SEG428 get_plane::@30 - //SEG429 [240] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG429 get_plane::@30 + //SEG430 [240] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #3 bne !b4+ jmp b4 !b4: - //SEG430 get_plane::@31 - //SEG431 [241] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG431 get_plane::@31 + //SEG432 [241] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #4 bne !b5+ jmp b5 !b5: - //SEG432 get_plane::@32 - //SEG433 [242] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG433 get_plane::@32 + //SEG434 [242] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #5 bne !b6+ jmp b6 !b6: - //SEG434 get_plane::@33 - //SEG435 [243] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG435 get_plane::@33 + //SEG436 [243] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #6 bne !b7+ jmp b7 !b7: - //SEG436 get_plane::@34 - //SEG437 [244] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG437 get_plane::@34 + //SEG438 [244] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #7 bne !b8+ jmp b8 !b8: - //SEG438 get_plane::@35 - //SEG439 [245] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG439 get_plane::@35 + //SEG440 [245] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #8 bne !b9+ jmp b9 !b9: - //SEG440 get_plane::@36 - //SEG441 [246] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG441 get_plane::@36 + //SEG442 [246] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #9 bne !b10+ jmp b10 !b10: - //SEG442 get_plane::@37 - //SEG443 [247] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG443 get_plane::@37 + //SEG444 [247] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #$a bne !b11+ jmp b11 !b11: - //SEG444 get_plane::@38 - //SEG445 [248] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 11) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG445 get_plane::@38 + //SEG446 [248] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 11) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #$b bne !b12+ jmp b12 !b12: - //SEG446 get_plane::@39 - //SEG447 [249] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 12) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 + //SEG447 get_plane::@39 + //SEG448 [249] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 12) goto get_plane::@return -- vbuaa_eq_vbuc1_then_la1 cmp #$c bne !b13+ jmp b13 !b13: - //SEG448 get_plane::@40 - //SEG449 [250] if((byte) get_plane::idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 13) goto get_plane::@27 -- vbuaa_neq_vbuc1_then_la1 + //SEG449 get_plane::@40 + //SEG450 [250] if((byte) get_plane::idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 13) goto get_plane::@27 -- vbuaa_neq_vbuc1_then_la1 cmp #$d bne b1 - //SEG450 [251] phi from get_plane::@40 to get_plane::@return [phi:get_plane::@40->get_plane::@return] - //SEG451 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_FULL#0 [phi:get_plane::@40->get_plane::@return#0] -- vduz1=vduc1 + //SEG451 [251] phi from get_plane::@40 to get_plane::@return [phi:get_plane::@40->get_plane::@return] + //SEG452 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_FULL#0 [phi:get_plane::@40->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_FULL @@ -30237,9 +30236,9 @@ get_plane: { lda #>PLANE_FULL>>$10 sta return+3 jmp breturn - //SEG452 [251] phi from get_plane get_plane::@27 to get_plane::@return [phi:get_plane/get_plane::@27->get_plane::@return] + //SEG453 [251] phi from get_plane get_plane::@27 to get_plane::@return [phi:get_plane/get_plane::@27->get_plane::@return] b1: - //SEG453 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN0#0 [phi:get_plane/get_plane::@27->get_plane::@return#0] -- vduz1=vwuc1 + //SEG454 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN0#0 [phi:get_plane/get_plane::@27->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN0 sta return lda #>$ffffffff&VIC_SCREEN0 @@ -30249,9 +30248,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN0>>$10 sta return+3 jmp breturn - //SEG454 [251] phi from get_plane::@28 to get_plane::@return [phi:get_plane::@28->get_plane::@return] + //SEG455 [251] phi from get_plane::@28 to get_plane::@return [phi:get_plane::@28->get_plane::@return] b2: - //SEG455 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN1#0 [phi:get_plane::@28->get_plane::@return#0] -- vduz1=vwuc1 + //SEG456 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN1#0 [phi:get_plane::@28->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN1 sta return lda #>$ffffffff&VIC_SCREEN1 @@ -30261,9 +30260,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN1>>$10 sta return+3 jmp breturn - //SEG456 [251] phi from get_plane::@29 to get_plane::@return [phi:get_plane::@29->get_plane::@return] + //SEG457 [251] phi from get_plane::@29 to get_plane::@return [phi:get_plane::@29->get_plane::@return] b3: - //SEG457 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN2#0 [phi:get_plane::@29->get_plane::@return#0] -- vduz1=vwuc1 + //SEG458 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN2#0 [phi:get_plane::@29->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN2 sta return lda #>$ffffffff&VIC_SCREEN2 @@ -30273,9 +30272,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN2>>$10 sta return+3 jmp breturn - //SEG458 [251] phi from get_plane::@30 to get_plane::@return [phi:get_plane::@30->get_plane::@return] + //SEG459 [251] phi from get_plane::@30 to get_plane::@return [phi:get_plane::@30->get_plane::@return] b4: - //SEG459 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN3#0 [phi:get_plane::@30->get_plane::@return#0] -- vduz1=vwuc1 + //SEG460 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_SCREEN3#0 [phi:get_plane::@30->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_SCREEN3 sta return lda #>$ffffffff&VIC_SCREEN3 @@ -30285,9 +30284,9 @@ get_plane: { lda #>$ffffffff&VIC_SCREEN3>>$10 sta return+3 jmp breturn - //SEG460 [251] phi from get_plane::@31 to get_plane::@return [phi:get_plane::@31->get_plane::@return] + //SEG461 [251] phi from get_plane::@31 to get_plane::@return [phi:get_plane::@31->get_plane::@return] b5: - //SEG461 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_BITMAP#0 [phi:get_plane::@31->get_plane::@return#0] -- vduz1=vwuc1 + //SEG462 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_BITMAP#0 [phi:get_plane::@31->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_BITMAP sta return lda #>$ffffffff&VIC_BITMAP @@ -30297,9 +30296,9 @@ get_plane: { lda #>$ffffffff&VIC_BITMAP>>$10 sta return+3 jmp breturn - //SEG462 [251] phi from get_plane::@32 to get_plane::@return [phi:get_plane::@32->get_plane::@return] + //SEG463 [251] phi from get_plane::@32 to get_plane::@return [phi:get_plane::@32->get_plane::@return] b6: - //SEG463 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_CHARSET_ROM#0 [phi:get_plane::@32->get_plane::@return#0] -- vduz1=vwuc1 + //SEG464 [251] phi (dword) get_plane::return#14 = ((dword))(const byte*) VIC_CHARSET_ROM#0 [phi:get_plane::@32->get_plane::@return#0] -- vduz1=vwuc1 lda #<$ffffffff&VIC_CHARSET_ROM sta return lda #>$ffffffff&VIC_CHARSET_ROM @@ -30309,9 +30308,9 @@ get_plane: { lda #>$ffffffff&VIC_CHARSET_ROM>>$10 sta return+3 jmp breturn - //SEG464 [251] phi from get_plane::@33 to get_plane::@return [phi:get_plane::@33->get_plane::@return] + //SEG465 [251] phi from get_plane::@33 to get_plane::@return [phi:get_plane::@33->get_plane::@return] b7: - //SEG465 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_8BPP_CHUNKY#0 [phi:get_plane::@33->get_plane::@return#0] -- vduz1=vduc1 + //SEG466 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_8BPP_CHUNKY#0 [phi:get_plane::@33->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_8BPP_CHUNKY @@ -30321,9 +30320,9 @@ get_plane: { lda #>PLANE_8BPP_CHUNKY>>$10 sta return+3 jmp breturn - //SEG466 [251] phi from get_plane::@34 to get_plane::@return [phi:get_plane::@34->get_plane::@return] + //SEG467 [251] phi from get_plane::@34 to get_plane::@return [phi:get_plane::@34->get_plane::@return] b8: - //SEG467 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL#0 [phi:get_plane::@34->get_plane::@return#0] -- vduz1=vduc1 + //SEG468 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL#0 [phi:get_plane::@34->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_HORISONTAL @@ -30333,9 +30332,9 @@ get_plane: { lda #>PLANE_HORISONTAL>>$10 sta return+3 jmp breturn - //SEG468 [251] phi from get_plane::@35 to get_plane::@return [phi:get_plane::@35->get_plane::@return] + //SEG469 [251] phi from get_plane::@35 to get_plane::@return [phi:get_plane::@35->get_plane::@return] b9: - //SEG469 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL#0 [phi:get_plane::@35->get_plane::@return#0] -- vduz1=vduc1 + //SEG470 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL#0 [phi:get_plane::@35->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_VERTICAL @@ -30345,9 +30344,9 @@ get_plane: { lda #>PLANE_VERTICAL>>$10 sta return+3 jmp breturn - //SEG470 [251] phi from get_plane::@36 to get_plane::@return [phi:get_plane::@36->get_plane::@return] + //SEG471 [251] phi from get_plane::@36 to get_plane::@return [phi:get_plane::@36->get_plane::@return] b10: - //SEG471 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL2#0 [phi:get_plane::@36->get_plane::@return#0] -- vduz1=vduc1 + //SEG472 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_HORISONTAL2#0 [phi:get_plane::@36->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_HORISONTAL2 @@ -30357,9 +30356,9 @@ get_plane: { lda #>PLANE_HORISONTAL2>>$10 sta return+3 jmp breturn - //SEG472 [251] phi from get_plane::@37 to get_plane::@return [phi:get_plane::@37->get_plane::@return] + //SEG473 [251] phi from get_plane::@37 to get_plane::@return [phi:get_plane::@37->get_plane::@return] b11: - //SEG473 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL2#0 [phi:get_plane::@37->get_plane::@return#0] -- vduz1=vduc1 + //SEG474 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_VERTICAL2#0 [phi:get_plane::@37->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_VERTICAL2 @@ -30369,9 +30368,9 @@ get_plane: { lda #>PLANE_VERTICAL2>>$10 sta return+3 jmp breturn - //SEG474 [251] phi from get_plane::@38 to get_plane::@return [phi:get_plane::@38->get_plane::@return] + //SEG475 [251] phi from get_plane::@38 to get_plane::@return [phi:get_plane::@38->get_plane::@return] b12: - //SEG475 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_CHARSET8#0 [phi:get_plane::@38->get_plane::@return#0] -- vduz1=vduc1 + //SEG476 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_CHARSET8#0 [phi:get_plane::@38->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_CHARSET8 @@ -30381,9 +30380,9 @@ get_plane: { lda #>PLANE_CHARSET8>>$10 sta return+3 jmp breturn - //SEG476 [251] phi from get_plane::@39 to get_plane::@return [phi:get_plane::@39->get_plane::@return] + //SEG477 [251] phi from get_plane::@39 to get_plane::@return [phi:get_plane::@39->get_plane::@return] b13: - //SEG477 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_BLANK#0 [phi:get_plane::@39->get_plane::@return#0] -- vduz1=vduc1 + //SEG478 [251] phi (dword) get_plane::return#14 = ((dword))(const dword) PLANE_BLANK#0 [phi:get_plane::@39->get_plane::@return#0] -- vduz1=vduc1 lda #PLANE_BLANK @@ -30392,349 +30391,349 @@ get_plane: { sta return+2 lda #>PLANE_BLANK>>$10 sta return+3 - //SEG478 get_plane::@return + //SEG479 get_plane::@return breturn: - //SEG479 [252] return + //SEG480 [252] return rts - //SEG480 [253] phi from get_plane::@40 to get_plane::@27 [phi:get_plane::@40->get_plane::@27] - //SEG481 get_plane::@27 + //SEG481 [253] phi from get_plane::@40 to get_plane::@27 [phi:get_plane::@40->get_plane::@27] + //SEG482 get_plane::@27 } -//SEG482 form_mode +//SEG483 form_mode // Show the form - and let the user change values form_mode: { .label preset_current = $f - //SEG483 [255] call print_set_screen - //SEG484 [447] phi from form_mode to print_set_screen [phi:form_mode->print_set_screen] - //SEG485 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:form_mode->print_set_screen#0] -- pbuz1=pbuc1 + //SEG484 [255] call print_set_screen + //SEG485 [447] phi from form_mode to print_set_screen [phi:form_mode->print_set_screen] + //SEG486 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:form_mode->print_set_screen#0] -- pbuz1=pbuc1 lda #COLS sta print_set_screen.screen+1 jsr print_set_screen - //SEG486 [256] phi from form_mode to form_mode::@21 [phi:form_mode->form_mode::@21] - //SEG487 form_mode::@21 - //SEG488 [257] call print_cls + //SEG487 [256] phi from form_mode to form_mode::@21 [phi:form_mode->form_mode::@21] + //SEG488 form_mode::@21 + //SEG489 [257] call print_cls jsr print_cls - //SEG489 [258] phi from form_mode::@21 to form_mode::@22 [phi:form_mode::@21->form_mode::@22] - //SEG490 form_mode::@22 - //SEG491 [259] call print_str_lines - //SEG492 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] - //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 + //SEG490 [258] phi from form_mode::@21 to form_mode::@22 [phi:form_mode::@21->form_mode::@22] + //SEG491 form_mode::@22 + //SEG492 [259] call print_str_lines + //SEG493 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] + //SEG494 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_COLS sta print_str_lines.str+1 jsr print_str_lines - //SEG494 [260] phi from form_mode::@22 to form_mode::@23 [phi:form_mode::@22->form_mode::@23] - //SEG495 form_mode::@23 - //SEG496 [261] call print_set_screen - //SEG497 [447] phi from form_mode::@23 to print_set_screen [phi:form_mode::@23->print_set_screen] - //SEG498 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) FORM_SCREEN#0 [phi:form_mode::@23->print_set_screen#0] -- pbuz1=pbuc1 + //SEG495 [260] phi from form_mode::@22 to form_mode::@23 [phi:form_mode::@22->form_mode::@23] + //SEG496 form_mode::@23 + //SEG497 [261] call print_set_screen + //SEG498 [447] phi from form_mode::@23 to print_set_screen [phi:form_mode::@23->print_set_screen] + //SEG499 [447] phi (byte*) print_set_screen::screen#2 = (const byte*) FORM_SCREEN#0 [phi:form_mode::@23->print_set_screen#0] -- pbuz1=pbuc1 lda #FORM_SCREEN sta print_set_screen.screen+1 jsr print_set_screen - //SEG499 [262] phi from form_mode::@23 to form_mode::@24 [phi:form_mode::@23->form_mode::@24] - //SEG500 form_mode::@24 - //SEG501 [263] call print_cls + //SEG500 [262] phi from form_mode::@23 to form_mode::@24 [phi:form_mode::@23->form_mode::@24] + //SEG501 form_mode::@24 + //SEG502 [263] call print_cls jsr print_cls - //SEG502 [264] phi from form_mode::@24 to form_mode::@25 [phi:form_mode::@24->form_mode::@25] - //SEG503 form_mode::@25 - //SEG504 [265] call print_str_lines - //SEG505 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] - //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 + //SEG503 [264] phi from form_mode::@24 to form_mode::@25 [phi:form_mode::@24->form_mode::@25] + //SEG504 form_mode::@25 + //SEG505 [265] call print_str_lines + //SEG506 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] + //SEG507 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_TEXT sta print_str_lines.str+1 jsr print_str_lines - //SEG507 [266] phi from form_mode::@25 to form_mode::@26 [phi:form_mode::@25->form_mode::@26] - //SEG508 form_mode::@26 - //SEG509 [267] call form_set_screen - //SEG510 [409] phi from form_mode::@26 to form_set_screen [phi:form_mode::@26->form_set_screen] + //SEG508 [266] phi from form_mode::@25 to form_mode::@26 [phi:form_mode::@25->form_mode::@26] + //SEG509 form_mode::@26 + //SEG510 [267] call form_set_screen + //SEG511 [409] phi from form_mode::@26 to form_set_screen [phi:form_mode::@26->form_set_screen] jsr form_set_screen - //SEG511 [268] phi from form_mode::@26 to form_mode::@27 [phi:form_mode::@26->form_mode::@27] - //SEG512 form_mode::@27 - //SEG513 [269] call form_render_values - //SEG514 [330] phi from form_mode::@27 to form_render_values [phi:form_mode::@27->form_render_values] + //SEG512 [268] phi from form_mode::@26 to form_mode::@27 [phi:form_mode::@26->form_mode::@27] + //SEG513 form_mode::@27 + //SEG514 [269] call form_render_values + //SEG515 [330] phi from form_mode::@27 to form_render_values [phi:form_mode::@27->form_render_values] jsr form_render_values - //SEG515 form_mode::@28 - //SEG516 [270] (byte) render_preset_name::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 + //SEG516 form_mode::@28 + //SEG517 [270] (byte) render_preset_name::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 lda form_fields_val - //SEG517 [271] call render_preset_name - //SEG518 [306] phi from form_mode::@28 to render_preset_name [phi:form_mode::@28->render_preset_name] - //SEG519 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#0 [phi:form_mode::@28->render_preset_name#0] -- register_copy + //SEG518 [271] call render_preset_name + //SEG519 [306] phi from form_mode::@28 to render_preset_name [phi:form_mode::@28->render_preset_name] + //SEG520 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#0 [phi:form_mode::@28->render_preset_name#0] -- register_copy jsr render_preset_name - //SEG520 form_mode::@29 - //SEG521 [272] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) FORM_CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG521 form_mode::@29 + //SEG522 [272] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) FORM_CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&FORM_CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG522 [273] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG523 [273] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG523 [274] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG524 [274] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG524 [275] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG525 [275] *((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 - //SEG525 [276] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG526 [276] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^FORM_CHARSET/$4000 sta CIA2_PORT_A - //SEG526 [277] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG527 [277] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG527 [278] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG528 [278] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG528 [279] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG529 [279] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG529 [280] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) FORM_SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) FORM_CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG530 [280] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) FORM_SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) FORM_CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(FORM_SCREEN&$3fff)/$40|(FORM_CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG530 [281] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG531 [281] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 + //SEG532 [282] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) FORM_SCREEN#0 -- _deref_pbuc1=vbuc2 lda #>FORM_SCREEN sta DTV_PLANEA_START_MI - //SEG532 [283] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG533 [283] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG533 [284] phi from form_mode::@29 to form_mode::@1 [phi:form_mode::@29->form_mode::@1] - //SEG534 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuyy=vbuc1 + //SEG534 [284] phi from form_mode::@29 to form_mode::@1 [phi:form_mode::@29->form_mode::@1] + //SEG535 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuyy=vbuc1 tay - //SEG535 [284] phi from form_mode::@1 to form_mode::@1 [phi:form_mode::@1->form_mode::@1] - //SEG536 [284] phi (byte) form_mode::i#2 = (byte) form_mode::i#1 [phi:form_mode::@1->form_mode::@1#0] -- register_copy - //SEG537 form_mode::@1 + //SEG536 [284] phi from form_mode::@1 to form_mode::@1 [phi:form_mode::@1->form_mode::@1] + //SEG537 [284] phi (byte) form_mode::i#2 = (byte) form_mode::i#1 [phi:form_mode::@1->form_mode::@1#0] -- register_copy + //SEG538 form_mode::@1 b1: - //SEG538 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + //SEG539 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG539 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuyy=_inc_vbuyy + //SEG540 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuyy=_inc_vbuyy iny - //SEG540 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto form_mode::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG541 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto form_mode::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b1 - //SEG541 form_mode::@10 - //SEG542 [288] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG542 form_mode::@10 + //SEG543 [288] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG543 [289] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG544 [289] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta BORDERCOL - //SEG544 [290] (byte) form_mode::preset_current#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG545 [290] (byte) form_mode::preset_current#0 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta preset_current - //SEG545 [291] phi from form_mode::@10 form_mode::@32 to form_mode::@2 [phi:form_mode::@10/form_mode::@32->form_mode::@2] - //SEG546 [291] phi (byte) form_mode::preset_current#6 = (byte) form_mode::preset_current#0 [phi:form_mode::@10/form_mode::@32->form_mode::@2#0] -- register_copy - //SEG547 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#1] -- register_copy - //SEG548 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#27 [phi:form_mode::@10/form_mode::@32->form_mode::@2#2] -- register_copy - //SEG549 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#3] -- register_copy - //SEG550 [291] phi from form_mode::@8 to form_mode::@2 [phi:form_mode::@8->form_mode::@2] - //SEG551 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#18 [phi:form_mode::@8->form_mode::@2#0] -- register_copy - //SEG552 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#24 [phi:form_mode::@8->form_mode::@2#1] -- register_copy - //SEG553 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#16 [phi:form_mode::@8->form_mode::@2#2] -- register_copy - //SEG554 form_mode::@2 - //SEG555 form_mode::@5 + //SEG546 [291] phi from form_mode::@10 form_mode::@32 to form_mode::@2 [phi:form_mode::@10/form_mode::@32->form_mode::@2] + //SEG547 [291] phi (byte) form_mode::preset_current#6 = (byte) form_mode::preset_current#0 [phi:form_mode::@10/form_mode::@32->form_mode::@2#0] -- register_copy + //SEG548 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#1] -- register_copy + //SEG549 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#27 [phi:form_mode::@10/form_mode::@32->form_mode::@2#2] -- register_copy + //SEG550 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#1 [phi:form_mode::@10/form_mode::@32->form_mode::@2#3] -- register_copy + //SEG551 [291] phi from form_mode::@8 to form_mode::@2 [phi:form_mode::@8->form_mode::@2] + //SEG552 [291] phi (byte) form_field_idx#28 = (byte) form_field_idx#18 [phi:form_mode::@8->form_mode::@2#0] -- register_copy + //SEG553 [291] phi (byte) keyboard_events_size#47 = (byte) keyboard_events_size#24 [phi:form_mode::@8->form_mode::@2#1] -- register_copy + //SEG554 [291] phi (signed byte) form_cursor_count#21 = (signed byte) form_cursor_count#16 [phi:form_mode::@8->form_mode::@2#2] -- register_copy + //SEG555 form_mode::@2 + //SEG556 form_mode::@5 b5: - //SEG556 [292] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto form_mode::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG557 [292] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto form_mode::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b5 - //SEG557 [293] phi from form_mode::@5 to form_mode::@7 [phi:form_mode::@5->form_mode::@7] - //SEG558 form_mode::@7 - //SEG559 [294] call form_control + //SEG558 [293] phi from form_mode::@5 to form_mode::@7 [phi:form_mode::@5->form_mode::@7] + //SEG559 form_mode::@7 + //SEG560 [294] call form_control jsr form_control - //SEG560 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuaa=vbuyy + //SEG561 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuaa=vbuyy tya - //SEG561 form_mode::@30 - //SEG562 [296] (byte~) form_mode::$36 ← (byte) form_control::return#0 - //SEG563 [297] if((byte~) form_mode::$36==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_mode::@8 -- vbuaa_eq_0_then_la1 + //SEG562 form_mode::@30 + //SEG563 [296] (byte~) form_mode::$36 ← (byte) form_control::return#0 + //SEG564 [297] if((byte~) form_mode::$36==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_mode::@8 -- vbuaa_eq_0_then_la1 cmp #0 beq b8 - //SEG564 form_mode::@return - //SEG565 [298] return + //SEG565 form_mode::@return + //SEG566 [298] return rts - //SEG566 form_mode::@8 + //SEG567 form_mode::@8 b8: - //SEG567 [299] if((byte) form_mode::preset_current#6==*((const byte[]) form_fields_val#0)) goto form_mode::@2 -- vbuz1_eq__deref_pbuc1_then_la1 + //SEG568 [299] if((byte) form_mode::preset_current#6==*((const byte[]) form_fields_val#0)) goto form_mode::@2 -- vbuz1_eq__deref_pbuc1_then_la1 lda form_fields_val cmp preset_current beq b5 - //SEG568 form_mode::@18 - //SEG569 [300] (byte) apply_preset::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 - //SEG570 [301] call apply_preset + //SEG569 form_mode::@18 + //SEG570 [300] (byte) apply_preset::idx#0 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 + //SEG571 [301] call apply_preset jsr apply_preset - //SEG571 form_mode::@31 - //SEG572 [302] (byte) form_mode::preset_current#1 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 + //SEG572 form_mode::@31 + //SEG573 [302] (byte) form_mode::preset_current#1 ← *((const byte[]) form_fields_val#0) -- vbuz1=_deref_pbuc1 lda form_fields_val sta preset_current - //SEG573 [303] call form_render_values - //SEG574 [330] phi from form_mode::@31 to form_render_values [phi:form_mode::@31->form_render_values] + //SEG574 [303] call form_render_values + //SEG575 [330] phi from form_mode::@31 to form_render_values [phi:form_mode::@31->form_render_values] jsr form_render_values - //SEG575 form_mode::@32 - //SEG576 [304] (byte) render_preset_name::idx#1 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 + //SEG576 form_mode::@32 + //SEG577 [304] (byte) render_preset_name::idx#1 ← *((const byte[]) form_fields_val#0) -- vbuaa=_deref_pbuc1 lda form_fields_val - //SEG577 [305] call render_preset_name - //SEG578 [306] phi from form_mode::@32 to render_preset_name [phi:form_mode::@32->render_preset_name] - //SEG579 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#1 [phi:form_mode::@32->render_preset_name#0] -- register_copy + //SEG578 [305] call render_preset_name + //SEG579 [306] phi from form_mode::@32 to render_preset_name [phi:form_mode::@32->render_preset_name] + //SEG580 [306] phi (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#1 [phi:form_mode::@32->render_preset_name#0] -- register_copy jsr render_preset_name jmp b5 } -//SEG580 render_preset_name +//SEG581 render_preset_name // Render form preset name in the form // idx is the ID of the preset render_preset_name: { .label name = 3 - //SEG581 [307] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_preset_name::@22 -- vbuaa_eq_0_then_la1 + //SEG582 [307] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_preset_name::@22 -- vbuaa_eq_0_then_la1 cmp #0 beq b1 - //SEG582 render_preset_name::@23 - //SEG583 [308] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG583 render_preset_name::@23 + //SEG584 [308] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #1 beq b2 - //SEG584 render_preset_name::@24 - //SEG585 [309] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG585 render_preset_name::@24 + //SEG586 [309] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #2 beq b3 - //SEG586 render_preset_name::@25 - //SEG587 [310] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG587 render_preset_name::@25 + //SEG588 [310] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 3) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #3 beq b4 - //SEG588 render_preset_name::@26 - //SEG589 [311] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG589 render_preset_name::@26 + //SEG590 [311] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #4 beq b5 - //SEG590 render_preset_name::@27 - //SEG591 [312] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG591 render_preset_name::@27 + //SEG592 [312] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 5) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #5 beq b6 - //SEG592 render_preset_name::@28 - //SEG593 [313] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG593 render_preset_name::@28 + //SEG594 [313] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #6 beq b7 - //SEG594 render_preset_name::@29 - //SEG595 [314] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG595 render_preset_name::@29 + //SEG596 [314] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 7) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #7 beq b8 - //SEG596 render_preset_name::@30 - //SEG597 [315] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG597 render_preset_name::@30 + //SEG598 [315] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #8 beq b9 - //SEG598 render_preset_name::@31 - //SEG599 [316] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG599 render_preset_name::@31 + //SEG600 [316] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 9) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #9 beq b10 - //SEG600 render_preset_name::@32 - //SEG601 [317] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG601 render_preset_name::@32 + //SEG602 [317] if((byte) render_preset_name::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 10) goto render_preset_name::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #$a beq b11 - //SEG602 [318] phi from render_preset_name::@32 to render_preset_name::@33 [phi:render_preset_name::@32->render_preset_name::@33] - //SEG603 render_preset_name::@33 - //SEG604 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] - //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG603 [318] phi from render_preset_name::@32 to render_preset_name::@33 [phi:render_preset_name::@32->render_preset_name::@33] + //SEG604 render_preset_name::@33 + //SEG605 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] + //SEG606 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_11 sta name+1 jmp b22 - //SEG606 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] + //SEG607 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] b1: - //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG608 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_0 sta name+1 jmp b22 - //SEG608 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] + //SEG609 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] b2: - //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG610 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_1 sta name+1 jmp b22 - //SEG610 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] + //SEG611 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] b3: - //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG612 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_2 sta name+1 jmp b22 - //SEG612 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] + //SEG613 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] b4: - //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG614 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_3 sta name+1 jmp b22 - //SEG614 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] + //SEG615 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] b5: - //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG616 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_4 sta name+1 jmp b22 - //SEG616 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] + //SEG617 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] b6: - //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG618 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_5 sta name+1 jmp b22 - //SEG618 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] + //SEG619 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] b7: - //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG620 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_6 sta name+1 jmp b22 - //SEG620 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] + //SEG621 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] b8: - //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG622 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_7 sta name+1 jmp b22 - //SEG622 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] + //SEG623 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] b9: - //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG624 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_8 sta name+1 jmp b22 - //SEG624 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] + //SEG625 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] b10: - //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG626 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_9 sta name+1 jmp b22 - //SEG626 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] + //SEG627 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] b11: - //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG628 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_10 sta name+1 - //SEG628 render_preset_name::@22 + //SEG629 render_preset_name::@22 b22: - //SEG629 [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 - //SEG630 [321] call print_str_at - //SEG631 [323] phi from render_preset_name::@22 to print_str_at [phi:render_preset_name::@22->print_str_at] + //SEG630 [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 + //SEG631 [321] call print_str_at + //SEG632 [323] phi from render_preset_name::@22 to print_str_at [phi:render_preset_name::@22->print_str_at] jsr print_str_at - //SEG632 render_preset_name::@return - //SEG633 [322] return + //SEG633 render_preset_name::@return + //SEG634 [322] return rts name_0: .text "Standard Charset @" name_1: .text "Extended Color Charset @" @@ -30749,302 +30748,302 @@ render_preset_name: { name_10: .text "8bpp Pixel Cell @" name_11: .text "Standard Charset @" } -//SEG634 print_str_at +//SEG635 print_str_at // Print a string at a specific screen position print_str_at: { .label at = 5 .label str = 3 - //SEG635 [324] phi from print_str_at to print_str_at::@1 [phi:print_str_at->print_str_at::@1] - //SEG636 [324] phi (byte*) print_str_at::at#2 = (const byte*) FORM_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) 10 [phi:print_str_at->print_str_at::@1#0] -- pbuz1=pbuc1 + //SEG636 [324] phi from print_str_at to print_str_at::@1 [phi:print_str_at->print_str_at::@1] + //SEG637 [324] phi (byte*) print_str_at::at#2 = (const byte*) FORM_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) 10 [phi:print_str_at->print_str_at::@1#0] -- pbuz1=pbuc1 lda #FORM_SCREEN+$28*2+$a sta at+1 - //SEG637 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#1 [phi:print_str_at->print_str_at::@1#1] -- register_copy - //SEG638 print_str_at::@1 + //SEG638 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#1 [phi:print_str_at->print_str_at::@1#1] -- register_copy + //SEG639 print_str_at::@1 b1: - //SEG639 [325] if(*((byte*) print_str_at::str#2)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG640 [325] if(*((byte*) print_str_at::str#2)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG640 print_str_at::@return - //SEG641 [326] return + //SEG641 print_str_at::@return + //SEG642 [326] return rts - //SEG642 print_str_at::@2 + //SEG643 print_str_at::@2 b2: - //SEG643 [327] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG644 [327] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (at),y - //SEG644 [328] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#2 -- pbuz1=_inc_pbuz1 + //SEG645 [328] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#2 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG645 [329] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#2 -- pbuz1=_inc_pbuz1 + //SEG646 [329] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG646 [324] phi from print_str_at::@2 to print_str_at::@1 [phi:print_str_at::@2->print_str_at::@1] - //SEG647 [324] phi (byte*) print_str_at::at#2 = (byte*) print_str_at::at#0 [phi:print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG648 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#0 [phi:print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG647 [324] phi from print_str_at::@2 to print_str_at::@1 [phi:print_str_at::@2->print_str_at::@1] + //SEG648 [324] phi (byte*) print_str_at::at#2 = (byte*) print_str_at::at#0 [phi:print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG649 [324] phi (byte*) print_str_at::str#2 = (byte*) print_str_at::str#0 [phi:print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 } -//SEG649 form_render_values +//SEG650 form_render_values // Render all form values from the form_fields_val array form_render_values: { .label field = 3 .label idx = 2 - //SEG650 [331] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1] - //SEG651 [331] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuz1=vbuc1 + //SEG651 [331] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1] + //SEG652 [331] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG652 [331] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1] - //SEG653 [331] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy - //SEG654 form_render_values::@1 + //SEG653 [331] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1] + //SEG654 [331] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy + //SEG655 form_render_values::@1 b1: - //SEG655 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 - //SEG656 [333] call form_field_ptr - //SEG657 [340] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr] - //SEG658 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy + //SEG656 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 + //SEG657 [333] call form_field_ptr + //SEG658 [340] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr] + //SEG659 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy jsr form_field_ptr - //SEG659 [334] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 - //SEG660 form_render_values::@3 - //SEG661 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 - //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG660 [334] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 + //SEG661 form_render_values::@3 + //SEG662 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 + //SEG663 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy idx lda form_fields_val,y tay lda print_hextab,y ldy #0 sta (field),y - //SEG663 [337] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 -- vbuz1=_inc_vbuz1 + //SEG664 [337] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 -- vbuz1=_inc_vbuz1 inc idx - //SEG664 [338] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG665 [338] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 -- vbuz1_lt_vbuc1_then_la1 lda idx cmp #form_fields_cnt bcc b1 - //SEG665 form_render_values::@return - //SEG666 [339] return + //SEG666 form_render_values::@return + //SEG667 [339] return rts } -//SEG667 form_field_ptr +//SEG668 form_field_ptr // Get the screen address of a form field // field_idx is the index of the field to get the screen address for form_field_ptr: { .label return = 3 .label field_idx = 2 .label _2 = 3 - //SEG668 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG669 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 ldy field_idx lda form_fields_y,y - //SEG669 [342] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa + //SEG670 [342] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa tay lda form_line_hi,y sta _2+1 lda form_line_lo,y sta _2 - //SEG670 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG671 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 ldy field_idx lda form_fields_x,y - //SEG671 [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 -- pbuz1=pbuz1_plus_vbuaa + //SEG672 [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 -- pbuz1=pbuz1_plus_vbuaa clc adc return sta return lda #0 adc return+1 sta return+1 - //SEG672 form_field_ptr::@return - //SEG673 [345] return + //SEG673 form_field_ptr::@return + //SEG674 [345] return rts } -//SEG674 apply_preset +//SEG675 apply_preset // Apply a form value preset to the form values // idx is the ID of the preset apply_preset: { .label preset = 3 - //SEG675 [346] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto apply_preset::@22 -- vbuaa_eq_0_then_la1 + //SEG676 [346] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto apply_preset::@22 -- vbuaa_eq_0_then_la1 cmp #0 beq b34 - //SEG676 apply_preset::@24 - //SEG677 [347] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 1) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG677 apply_preset::@24 + //SEG678 [347] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 1) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #1 beq b1 - //SEG678 apply_preset::@25 - //SEG679 [348] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 2) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG679 apply_preset::@25 + //SEG680 [348] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 2) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #2 beq b2 - //SEG680 apply_preset::@26 - //SEG681 [349] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 3) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG681 apply_preset::@26 + //SEG682 [349] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 3) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #3 beq b3 - //SEG682 apply_preset::@27 - //SEG683 [350] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 4) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG683 apply_preset::@27 + //SEG684 [350] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 4) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #4 beq b4 - //SEG684 apply_preset::@28 - //SEG685 [351] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 5) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG685 apply_preset::@28 + //SEG686 [351] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 5) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #5 beq b5 - //SEG686 apply_preset::@29 - //SEG687 [352] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 6) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG687 apply_preset::@29 + //SEG688 [352] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 6) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #6 beq b6 - //SEG688 apply_preset::@30 - //SEG689 [353] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 7) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG689 apply_preset::@30 + //SEG690 [353] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 7) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #7 beq b7 - //SEG690 apply_preset::@31 - //SEG691 [354] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 8) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG691 apply_preset::@31 + //SEG692 [354] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 8) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #8 beq b8 - //SEG692 apply_preset::@32 - //SEG693 [355] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 9) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG693 apply_preset::@32 + //SEG694 [355] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 9) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #9 beq b9 - //SEG694 apply_preset::@33 - //SEG695 [356] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 10) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 + //SEG695 apply_preset::@33 + //SEG696 [356] if((byte) apply_preset::idx#0==(byte/signed byte/word/signed word/dword/signed dword) 10) goto apply_preset::@22 -- vbuaa_eq_vbuc1_then_la1 cmp #$a beq b10 - //SEG696 [357] phi from apply_preset::@33 to apply_preset::@34 [phi:apply_preset::@33->apply_preset::@34] - //SEG697 apply_preset::@34 + //SEG697 [357] phi from apply_preset::@33 to apply_preset::@34 [phi:apply_preset::@33->apply_preset::@34] + //SEG698 apply_preset::@34 b34: - //SEG698 [358] phi from apply_preset apply_preset::@34 to apply_preset::@22 [phi:apply_preset/apply_preset::@34->apply_preset::@22] - //SEG699 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdchar#0 [phi:apply_preset/apply_preset::@34->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG699 [358] phi from apply_preset apply_preset::@34 to apply_preset::@22 [phi:apply_preset/apply_preset::@34->apply_preset::@22] + //SEG700 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdchar#0 [phi:apply_preset/apply_preset::@34->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_stdchar sta preset+1 jmp b22 - //SEG700 [358] phi from apply_preset::@24 to apply_preset::@22 [phi:apply_preset::@24->apply_preset::@22] + //SEG701 [358] phi from apply_preset::@24 to apply_preset::@22 [phi:apply_preset::@24->apply_preset::@22] b1: - //SEG701 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_ecmchar#0 [phi:apply_preset::@24->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG702 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_ecmchar#0 [phi:apply_preset::@24->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_ecmchar sta preset+1 jmp b22 - //SEG702 [358] phi from apply_preset::@25 to apply_preset::@22 [phi:apply_preset::@25->apply_preset::@22] + //SEG703 [358] phi from apply_preset::@25 to apply_preset::@22 [phi:apply_preset::@25->apply_preset::@22] b2: - //SEG703 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdbm#0 [phi:apply_preset::@25->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG704 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_stdbm#0 [phi:apply_preset::@25->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_stdbm sta preset+1 jmp b22 - //SEG704 [358] phi from apply_preset::@26 to apply_preset::@22 [phi:apply_preset::@26->apply_preset::@22] + //SEG705 [358] phi from apply_preset::@26 to apply_preset::@22 [phi:apply_preset::@26->apply_preset::@22] b3: - //SEG705 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_mcbm#0 [phi:apply_preset::@26->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG706 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_mcbm#0 [phi:apply_preset::@26->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_mcbm sta preset+1 jmp b22 - //SEG706 [358] phi from apply_preset::@27 to apply_preset::@22 [phi:apply_preset::@27->apply_preset::@22] + //SEG707 [358] phi from apply_preset::@27 to apply_preset::@22 [phi:apply_preset::@27->apply_preset::@22] b4: - //SEG707 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_stdchar#0 [phi:apply_preset::@27->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG708 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_stdchar#0 [phi:apply_preset::@27->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_hi_stdchar sta preset+1 jmp b22 - //SEG708 [358] phi from apply_preset::@28 to apply_preset::@22 [phi:apply_preset::@28->apply_preset::@22] + //SEG709 [358] phi from apply_preset::@28 to apply_preset::@22 [phi:apply_preset::@28->apply_preset::@22] b5: - //SEG709 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_ecmchar#0 [phi:apply_preset::@28->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG710 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_hi_ecmchar#0 [phi:apply_preset::@28->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_hi_ecmchar sta preset+1 jmp b22 - //SEG710 [358] phi from apply_preset::@29 to apply_preset::@22 [phi:apply_preset::@29->apply_preset::@22] + //SEG711 [358] phi from apply_preset::@29 to apply_preset::@22 [phi:apply_preset::@29->apply_preset::@22] b6: - //SEG711 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_twoplane#0 [phi:apply_preset::@29->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG712 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_twoplane#0 [phi:apply_preset::@29->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_twoplane sta preset+1 jmp b22 - //SEG712 [358] phi from apply_preset::@30 to apply_preset::@22 [phi:apply_preset::@30->apply_preset::@22] + //SEG713 [358] phi from apply_preset::@30 to apply_preset::@22 [phi:apply_preset::@30->apply_preset::@22] b7: - //SEG713 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_chunky#0 [phi:apply_preset::@30->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG714 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_chunky#0 [phi:apply_preset::@30->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_chunky sta preset+1 jmp b22 - //SEG714 [358] phi from apply_preset::@31 to apply_preset::@22 [phi:apply_preset::@31->apply_preset::@22] + //SEG715 [358] phi from apply_preset::@31 to apply_preset::@22 [phi:apply_preset::@31->apply_preset::@22] b8: - //SEG715 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred#0 [phi:apply_preset::@31->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG716 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred#0 [phi:apply_preset::@31->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_sixsfred sta preset+1 jmp b22 - //SEG716 [358] phi from apply_preset::@32 to apply_preset::@22 [phi:apply_preset::@32->apply_preset::@22] + //SEG717 [358] phi from apply_preset::@32 to apply_preset::@22 [phi:apply_preset::@32->apply_preset::@22] b9: - //SEG717 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred2#0 [phi:apply_preset::@32->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG718 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_sixsfred2#0 [phi:apply_preset::@32->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_sixsfred2 sta preset+1 jmp b22 - //SEG718 [358] phi from apply_preset::@33 to apply_preset::@22 [phi:apply_preset::@33->apply_preset::@22] + //SEG719 [358] phi from apply_preset::@33 to apply_preset::@22 [phi:apply_preset::@33->apply_preset::@22] b10: - //SEG719 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_8bpppixelcell#0 [phi:apply_preset::@33->apply_preset::@22#0] -- pbuz1=pbuc1 + //SEG720 [358] phi (byte*) apply_preset::preset#13 = (const byte[]) preset_8bpppixelcell#0 [phi:apply_preset::@33->apply_preset::@22#0] -- pbuz1=pbuc1 lda #preset_8bpppixelcell sta preset+1 - //SEG720 apply_preset::@22 + //SEG721 apply_preset::@22 b22: - //SEG721 [359] phi from apply_preset::@22 to apply_preset::@23 [phi:apply_preset::@22->apply_preset::@23] - //SEG722 [359] phi (byte) apply_preset::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:apply_preset::@22->apply_preset::@23#0] -- vbuyy=vbuc1 + //SEG722 [359] phi from apply_preset::@22 to apply_preset::@23 [phi:apply_preset::@22->apply_preset::@23] + //SEG723 [359] phi (byte) apply_preset::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:apply_preset::@22->apply_preset::@23#0] -- vbuyy=vbuc1 ldy #0 - //SEG723 [359] phi from apply_preset::@23 to apply_preset::@23 [phi:apply_preset::@23->apply_preset::@23] - //SEG724 [359] phi (byte) apply_preset::i#2 = (byte) apply_preset::i#1 [phi:apply_preset::@23->apply_preset::@23#0] -- register_copy - //SEG725 apply_preset::@23 + //SEG724 [359] phi from apply_preset::@23 to apply_preset::@23 [phi:apply_preset::@23->apply_preset::@23] + //SEG725 [359] phi (byte) apply_preset::i#2 = (byte) apply_preset::i#1 [phi:apply_preset::@23->apply_preset::@23#0] -- register_copy + //SEG726 apply_preset::@23 b23: - //SEG726 [360] *((const byte[]) form_fields_val#0 + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#2) -- pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy + //SEG727 [360] *((const byte[]) form_fields_val#0 + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#2) -- pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy lda (preset),y sta form_fields_val,y - //SEG727 [361] (byte) apply_preset::i#1 ← ++ (byte) apply_preset::i#2 -- vbuyy=_inc_vbuyy + //SEG728 [361] (byte) apply_preset::i#1 ← ++ (byte) apply_preset::i#2 -- vbuyy=_inc_vbuyy iny - //SEG728 [362] if((byte) apply_preset::i#1!=(const byte) form_fields_cnt#0) goto apply_preset::@23 -- vbuyy_neq_vbuc1_then_la1 + //SEG729 [362] if((byte) apply_preset::i#1!=(const byte) form_fields_cnt#0) goto apply_preset::@23 -- vbuyy_neq_vbuc1_then_la1 cpy #form_fields_cnt bne b23 - //SEG729 apply_preset::@return - //SEG730 [363] return + //SEG730 apply_preset::@return + //SEG731 [363] return rts } -//SEG731 form_control +//SEG732 form_control // Reads keyboard and allows the user to navigate and change the fields of the form // Returns 0 if space is not pressed, non-0 if space is pressed form_control: { .label field = 3 - //SEG732 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuz1=vbuxx + //SEG733 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuz1=vbuxx stx form_field_ptr.field_idx - //SEG733 [365] call form_field_ptr - //SEG734 [340] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr] - //SEG735 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy + //SEG734 [365] call form_field_ptr + //SEG735 [340] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr] + //SEG736 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy jsr form_field_ptr - //SEG736 [366] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 - //SEG737 form_control::@33 - //SEG738 [367] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 - //SEG739 [368] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#21 -- vbsz1=_dec_vbsz1 + //SEG737 [366] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 + //SEG738 form_control::@33 + //SEG739 [367] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 + //SEG740 [368] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#21 -- vbsz1=_dec_vbsz1 dec form_cursor_count - //SEG740 [369] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@36 -- vbsz1_ge_0_then_la1 + //SEG741 [369] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@36 -- vbsz1_ge_0_then_la1 lda form_cursor_count cmp #0 bpl b1 - //SEG741 [370] phi from form_control::@33 to form_control::@1 [phi:form_control::@33->form_control::@1] - //SEG742 [370] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@33->form_control::@1#0] -- vbsz1=vbsc1 + //SEG742 [370] phi from form_control::@33 to form_control::@1 [phi:form_control::@33->form_control::@1] + //SEG743 [370] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@33->form_control::@1#0] -- vbsz1=vbsc1 lda #FORM_CURSOR_BLINK sta form_cursor_count - //SEG743 form_control::@1 + //SEG744 form_control::@1 b1: - //SEG744 [371] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2) goto form_control::@2 -- vbsz1_lt_vbuc1_then_la1 + //SEG745 [371] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2) goto form_control::@2 -- vbsz1_lt_vbuc1_then_la1 lda form_cursor_count sec sbc #FORM_CURSOR_BLINK/2 @@ -31054,190 +31053,190 @@ form_control: { bpl !b2+ jmp b2 !b2: - //SEG745 form_control::@16 - //SEG746 [372] (byte~) form_control::$5 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG746 form_control::@16 + //SEG747 [372] (byte~) form_control::$5 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #$7f ldy #0 and (field),y - //SEG747 [373] *((byte*) form_control::field#0) ← (byte~) form_control::$5 -- _deref_pbuz1=vbuaa + //SEG748 [373] *((byte*) form_control::field#0) ← (byte~) form_control::$5 -- _deref_pbuz1=vbuaa sta (field),y - //SEG748 [374] phi from form_control::@16 form_control::@2 to form_control::@3 [phi:form_control::@16/form_control::@2->form_control::@3] - //SEG749 form_control::@3 + //SEG749 [374] phi from form_control::@16 form_control::@2 to form_control::@3 [phi:form_control::@16/form_control::@2->form_control::@3] + //SEG750 form_control::@3 b3: - //SEG750 [375] call keyboard_event_scan - //SEG751 [159] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] - //SEG752 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy + //SEG751 [375] call keyboard_event_scan + //SEG752 [159] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] + //SEG753 [159] phi (byte) keyboard_events_size#110 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan - //SEG753 [376] phi from form_control::@3 to form_control::@34 [phi:form_control::@3->form_control::@34] - //SEG754 form_control::@34 - //SEG755 [377] call keyboard_event_get + //SEG754 [376] phi from form_control::@3 to form_control::@34 [phi:form_control::@3->form_control::@34] + //SEG755 form_control::@34 + //SEG756 [377] call keyboard_event_get jsr keyboard_event_get - //SEG756 [378] (byte) keyboard_event_get::return#4 ← (byte) keyboard_event_get::return#2 - //SEG757 form_control::@35 - //SEG758 [379] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#4 - //SEG759 [380] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG757 [378] (byte) keyboard_event_get::return#4 ← (byte) keyboard_event_get::return#2 + //SEG758 form_control::@35 + //SEG759 [379] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#4 + //SEG760 [380] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_CRSR_DOWN bne b4 - //SEG760 form_control::@18 - //SEG761 [381] (byte~) form_control::$11 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG761 form_control::@18 + //SEG762 [381] (byte~) form_control::$11 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #$7f ldy #0 and (field),y - //SEG762 [382] *((byte*) form_control::field#0) ← (byte~) form_control::$11 -- _deref_pbuz1=vbuaa + //SEG763 [382] *((byte*) form_control::field#0) ← (byte~) form_control::$11 -- _deref_pbuz1=vbuaa sta (field),y - //SEG763 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 + //SEG764 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 lda #KEY_MODIFIER_SHIFT and keyboard_modifiers - //SEG764 [384] if((byte~) form_control::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 -- vbuaa_eq_0_then_la1 + //SEG765 [384] if((byte~) form_control::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG765 form_control::@19 - //SEG766 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuxx=_dec_vbuxx + //SEG766 form_control::@19 + //SEG767 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuxx=_dec_vbuxx dex - //SEG767 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@37 -- vbuxx_neq_vbuc1_then_la1 + //SEG768 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@37 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b7 - //SEG768 [387] phi from form_control::@19 to form_control::@7 [phi:form_control::@19->form_control::@7] - //SEG769 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuxx=vbuc1 + //SEG769 [387] phi from form_control::@19 to form_control::@7 [phi:form_control::@19->form_control::@7] + //SEG770 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuxx=vbuc1 ldx #form_fields_cnt-1 - //SEG770 form_control::@7 + //SEG771 form_control::@7 b7: - //SEG771 [388] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return] - //SEG772 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@7->form_control::@return#0] -- register_copy - //SEG773 [388] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1 + //SEG772 [388] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return] + //SEG773 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@7->form_control::@return#0] -- register_copy + //SEG774 [388] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 sta form_cursor_count - //SEG774 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuyy=vbuc1 + //SEG775 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuyy=vbuc1 ldy #0 - //SEG775 form_control::@return + //SEG776 form_control::@return breturn: - //SEG776 [389] return + //SEG777 [389] return rts - //SEG777 [390] phi from form_control::@19 to form_control::@37 [phi:form_control::@19->form_control::@37] - //SEG778 form_control::@37 - //SEG779 [387] phi from form_control::@37 form_control::@38 to form_control::@7 [phi:form_control::@37/form_control::@38->form_control::@7] - //SEG780 [387] phi (byte) form_field_idx#32 = (byte) form_field_idx#44 [phi:form_control::@37/form_control::@38->form_control::@7#0] -- register_copy - //SEG781 form_control::@5 + //SEG778 [390] phi from form_control::@19 to form_control::@37 [phi:form_control::@19->form_control::@37] + //SEG779 form_control::@37 + //SEG780 [387] phi from form_control::@37 form_control::@38 to form_control::@7 [phi:form_control::@37/form_control::@38->form_control::@7] + //SEG781 [387] phi (byte) form_field_idx#32 = (byte) form_field_idx#44 [phi:form_control::@37/form_control::@38->form_control::@7#0] -- register_copy + //SEG782 form_control::@5 b5: - //SEG782 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuxx=_inc_vbuxx + //SEG783 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuxx=_inc_vbuxx inx - //SEG783 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuxx_neq_vbuc1_then_la1 + //SEG784 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuxx_neq_vbuc1_then_la1 cpx #form_fields_cnt bne b7 - //SEG784 [387] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7] - //SEG785 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuxx=vbuc1 + //SEG785 [387] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7] + //SEG786 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuxx=vbuc1 ldx #0 jmp b7 - //SEG786 [393] phi from form_control::@5 to form_control::@38 [phi:form_control::@5->form_control::@38] - //SEG787 form_control::@38 - //SEG788 form_control::@4 + //SEG787 [393] phi from form_control::@5 to form_control::@38 [phi:form_control::@5->form_control::@38] + //SEG788 form_control::@38 + //SEG789 form_control::@4 b4: - //SEG789 [394] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@9 -- vbuaa_neq_vbuc1_then_la1 + //SEG790 [394] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@9 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_CRSR_RIGHT bne b9 - //SEG790 form_control::@24 - //SEG791 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 + //SEG791 form_control::@24 + //SEG792 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 lda #KEY_MODIFIER_SHIFT and keyboard_modifiers - //SEG792 [396] if((byte~) form_control::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 -- vbuaa_eq_0_then_la1 + //SEG793 [396] if((byte~) form_control::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG793 form_control::@25 - //SEG794 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx + //SEG794 form_control::@25 + //SEG795 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx dec form_fields_val,x - //SEG795 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG796 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda form_fields_val,x cmp #$ff bne b12 - //SEG796 form_control::@26 - //SEG797 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG797 form_control::@26 + //SEG798 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda form_fields_max,x sta form_fields_val,x - //SEG798 form_control::@12 + //SEG799 form_control::@12 b12: - //SEG799 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx + //SEG800 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx lda form_fields_val,x tay lda print_hextab,y ldy #0 sta (field),y - //SEG800 [388] phi from form_control::@12 form_control::@39 to form_control::@return [phi:form_control::@12/form_control::@39->form_control::@return] + //SEG801 [388] phi from form_control::@12 form_control::@39 to form_control::@return [phi:form_control::@12/form_control::@39->form_control::@return] b6: - //SEG801 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@12/form_control::@39->form_control::@return#0] -- register_copy - //SEG802 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@39->form_control::@return#1] -- register_copy - //SEG803 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuyy=vbuc1 + //SEG802 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@12/form_control::@39->form_control::@return#0] -- register_copy + //SEG803 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@39->form_control::@return#1] -- register_copy + //SEG804 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuyy=vbuc1 ldy #0 jmp breturn - //SEG804 form_control::@10 + //SEG805 form_control::@10 b10: - //SEG805 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx + //SEG806 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx inc form_fields_val,x - //SEG806 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuxx_le_pbuc2_derefidx_vbuxx_then_la1 + //SEG807 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuxx_le_pbuc2_derefidx_vbuxx_then_la1 txa tay lda form_fields_val,x cmp form_fields_max,y bcc b12 beq b12 - //SEG807 form_control::@28 - //SEG808 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG808 form_control::@28 + //SEG809 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta form_fields_val,x jmp b12 - //SEG809 form_control::@9 + //SEG810 form_control::@9 b9: - //SEG810 [404] if((byte) form_control::key_event#0!=(const byte) KEY_SPACE#0) goto form_control::@39 -- vbuaa_neq_vbuc1_then_la1 + //SEG811 [404] if((byte) form_control::key_event#0!=(const byte) KEY_SPACE#0) goto form_control::@39 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b6 - //SEG811 [388] phi from form_control::@9 to form_control::@return [phi:form_control::@9->form_control::@return] - //SEG812 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@9->form_control::@return#0] -- register_copy - //SEG813 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@9->form_control::@return#1] -- register_copy - //SEG814 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:form_control::@9->form_control::@return#2] -- vbuyy=vbuc1 + //SEG812 [388] phi from form_control::@9 to form_control::@return [phi:form_control::@9->form_control::@return] + //SEG813 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@9->form_control::@return#0] -- register_copy + //SEG814 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@9->form_control::@return#1] -- register_copy + //SEG815 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:form_control::@9->form_control::@return#2] -- vbuyy=vbuc1 ldy #$ff jmp breturn - //SEG815 [405] phi from form_control::@9 to form_control::@39 [phi:form_control::@9->form_control::@39] - //SEG816 form_control::@39 - //SEG817 form_control::@2 + //SEG816 [405] phi from form_control::@9 to form_control::@39 [phi:form_control::@9->form_control::@39] + //SEG817 form_control::@39 + //SEG818 form_control::@2 b2: - //SEG818 [406] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 -- vbuaa=_deref_pbuz1_bor_vbuc1 + //SEG819 [406] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 -- vbuaa=_deref_pbuz1_bor_vbuc1 lda #$80 ldy #0 ora (field),y - //SEG819 [407] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 -- _deref_pbuz1=vbuaa + //SEG820 [407] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 -- _deref_pbuz1=vbuaa sta (field),y jmp b3 - //SEG820 [408] phi from form_control::@33 to form_control::@36 [phi:form_control::@33->form_control::@36] - //SEG821 form_control::@36 - //SEG822 [370] phi from form_control::@36 to form_control::@1 [phi:form_control::@36->form_control::@1] - //SEG823 [370] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@36->form_control::@1#0] -- register_copy + //SEG821 [408] phi from form_control::@33 to form_control::@36 [phi:form_control::@33->form_control::@36] + //SEG822 form_control::@36 + //SEG823 [370] phi from form_control::@36 to form_control::@1 [phi:form_control::@36->form_control::@1] + //SEG824 [370] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@36->form_control::@1#0] -- register_copy } -//SEG824 form_set_screen +//SEG825 form_set_screen // Set the screen to use for the form. // screen is the start address of the screen to use form_set_screen: { .label line = 3 - //SEG825 [410] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1] - //SEG826 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuyy=vbuc1 + //SEG826 [410] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1] + //SEG827 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG827 [410] phi (byte*) form_set_screen::line#2 = (const byte*) FORM_SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1 + //SEG828 [410] phi (byte*) form_set_screen::line#2 = (const byte*) FORM_SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1 lda #FORM_SCREEN sta line+1 - //SEG828 [410] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1] - //SEG829 [410] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy - //SEG830 [410] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy - //SEG831 form_set_screen::@1 + //SEG829 [410] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1] + //SEG830 [410] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy + //SEG831 [410] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy + //SEG832 form_set_screen::@1 b1: - //SEG832 [411] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 -- vbuaa=_lo_pbuz1 + //SEG833 [411] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 -- vbuaa=_lo_pbuz1 lda line - //SEG833 [412] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG834 [412] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 -- pbuc1_derefidx_vbuyy=vbuaa sta form_line_lo,y - //SEG834 [413] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 -- vbuaa=_hi_pbuz1 + //SEG835 [413] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 -- vbuaa=_hi_pbuz1 lda line+1 - //SEG835 [414] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG836 [414] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuyy=vbuaa sta form_line_hi,y - //SEG836 [415] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG837 [415] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -31245,91 +31244,91 @@ form_set_screen: { bcc !+ inc line+1 !: - //SEG837 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuyy=_inc_vbuyy + //SEG838 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuyy=_inc_vbuyy iny - //SEG838 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG839 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$19 bne b1 - //SEG839 form_set_screen::@return - //SEG840 [418] return + //SEG840 form_set_screen::@return + //SEG841 [418] return rts } -//SEG841 print_str_lines +//SEG842 print_str_lines // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. print_str_lines: { .label str = 3 - //SEG842 [420] (byte*~) print_char_cursor#77 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + //SEG843 [420] (byte*~) print_char_cursor#77 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda print_set_screen.screen sta print_char_cursor lda print_set_screen.screen+1 sta print_char_cursor+1 - //SEG843 [421] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1] - //SEG844 [421] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy - //SEG845 [421] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#77 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy - //SEG846 [421] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy - //SEG847 print_str_lines::@1 + //SEG844 [421] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1] + //SEG845 [421] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy + //SEG846 [421] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#77 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG847 [421] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy + //SEG848 print_str_lines::@1 b1: - //SEG848 [422] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG849 [422] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b4 - //SEG849 print_str_lines::@return - //SEG850 [423] return + //SEG850 print_str_lines::@return + //SEG851 [423] return rts - //SEG851 [424] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] - //SEG852 [424] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy - //SEG853 [424] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy - //SEG854 print_str_lines::@4 + //SEG852 [424] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] + //SEG853 [424] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy + //SEG854 [424] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy + //SEG855 print_str_lines::@4 b4: - //SEG855 [425] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) -- vbuaa=_deref_pbuz1 + //SEG856 [425] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) -- vbuaa=_deref_pbuz1 ldy #0 lda (str),y - //SEG856 [426] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 -- pbuz1=_inc_pbuz1 + //SEG857 [426] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG857 [427] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuaa_eq_vbuc1_then_la1 + //SEG858 [427] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuaa_eq_vbuc1_then_la1 cmp #'@' beq b5 - //SEG858 print_str_lines::@8 - //SEG859 [428] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuaa + //SEG859 print_str_lines::@8 + //SEG860 [428] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG860 [429] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 -- pbuz1=_inc_pbuz1 + //SEG861 [429] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG861 [430] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] - //SEG862 [430] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy - //SEG863 print_str_lines::@5 + //SEG862 [430] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] + //SEG863 [430] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy + //SEG864 print_str_lines::@5 b5: - //SEG864 [431] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG865 [431] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b4 - //SEG865 [432] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] - //SEG866 print_str_lines::@9 - //SEG867 [433] call print_ln - //SEG868 [435] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] + //SEG866 [432] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] + //SEG867 print_str_lines::@9 + //SEG868 [433] call print_ln + //SEG869 [435] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] jsr print_ln - //SEG869 [434] (byte*~) print_char_cursor#78 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 + //SEG870 [434] (byte*~) print_char_cursor#78 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 jmp b1 } -//SEG870 print_ln +//SEG871 print_ln // Print a newline print_ln: { - //SEG871 [436] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG872 [436] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG873 print_ln::@1 + //SEG872 [436] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG873 [436] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG874 print_ln::@1 b1: - //SEG874 [437] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG875 [437] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -31337,7 +31336,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG875 [438] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG876 [438] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -31346,34 +31345,34 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG876 print_ln::@return - //SEG877 [439] return + //SEG877 print_ln::@return + //SEG878 [439] return rts } -//SEG878 print_cls +//SEG879 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label _0 = 5 .label sc = 3 - //SEG879 [440] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + //SEG880 [440] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda print_set_screen.screen sta sc lda print_set_screen.screen+1 sta sc+1 - //SEG880 [441] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1] - //SEG881 [441] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy - //SEG882 print_cls::@1 + //SEG881 [441] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1] + //SEG882 [441] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy + //SEG883 print_cls::@1 b1: - //SEG883 [442] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG884 [442] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG884 [443] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG885 [443] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG885 [444] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG886 [444] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda print_set_screen.screen clc adc #<$3e8 @@ -31381,113 +31380,113 @@ print_cls: { lda print_set_screen.screen+1 adc #>$3e8 sta _0+1 - //SEG886 [445] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG887 [445] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -- pbuz1_neq_pbuz2_then_la1 lda sc+1 cmp _0+1 bne b1 lda sc cmp _0 bne b1 - //SEG887 print_cls::@return - //SEG888 [446] return + //SEG888 print_cls::@return + //SEG889 [446] return rts } -//SEG889 print_set_screen +//SEG890 print_set_screen // Set the screen to print on. Also resets current line/char cursor. print_set_screen: { .label screen = $10 - //SEG890 print_set_screen::@return - //SEG891 [448] return + //SEG891 print_set_screen::@return + //SEG892 [448] return rts } -//SEG892 gfx_init +//SEG893 gfx_init // Initialize the different graphics in the memory gfx_init: { - //SEG893 [450] call gfx_init_screen0 - //SEG894 [848] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG894 [450] call gfx_init_screen0 + //SEG895 [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 [836] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] + //SEG896 [451] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] + //SEG897 gfx_init::@1 + //SEG898 [452] call gfx_init_screen1 + //SEG899 [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 [821] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] + //SEG900 [453] phi from gfx_init::@1 to gfx_init::@2 [phi:gfx_init::@1->gfx_init::@2] + //SEG901 gfx_init::@2 + //SEG902 [454] call gfx_init_screen2 + //SEG903 [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 [807] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] + //SEG904 [455] phi from gfx_init::@2 to gfx_init::@3 [phi:gfx_init::@2->gfx_init::@3] + //SEG905 gfx_init::@3 + //SEG906 [456] call gfx_init_screen3 + //SEG907 [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 [797] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] + //SEG908 [457] phi from gfx_init::@3 to gfx_init::@4 [phi:gfx_init::@3->gfx_init::@4] + //SEG909 gfx_init::@4 + //SEG910 [458] call gfx_init_screen4 + //SEG911 [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 - //SEG913 [460] call gfx_init_charset + //SEG912 [459] phi from gfx_init::@4 to gfx_init::@5 [phi:gfx_init::@4->gfx_init::@5] + //SEG913 gfx_init::@5 + //SEG914 [460] call gfx_init_charset jsr gfx_init_charset - //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 [606] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] + //SEG915 [461] phi from gfx_init::@5 to gfx_init::@6 [phi:gfx_init::@5->gfx_init::@6] + //SEG916 gfx_init::@6 + //SEG917 [462] call gfx_init_vic_bitmap + //SEG918 [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 [586] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] + //SEG919 [463] phi from gfx_init::@6 to gfx_init::@7 [phi:gfx_init::@6->gfx_init::@7] + //SEG920 gfx_init::@7 + //SEG921 [464] call gfx_init_plane_8bppchunky + //SEG922 [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 [561] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] + //SEG923 [465] phi from gfx_init::@7 to gfx_init::@8 [phi:gfx_init::@7->gfx_init::@8] + //SEG924 gfx_init::@8 + //SEG925 [466] call gfx_init_plane_charset8 + //SEG926 [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 [543] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] + //SEG927 [467] phi from gfx_init::@8 to gfx_init::@9 [phi:gfx_init::@8->gfx_init::@9] + //SEG928 gfx_init::@9 + //SEG929 [468] call gfx_init_plane_horisontal + //SEG930 [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 [530] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] + //SEG931 [469] phi from gfx_init::@9 to gfx_init::@10 [phi:gfx_init::@9->gfx_init::@10] + //SEG932 gfx_init::@10 + //SEG933 [470] call gfx_init_plane_vertical + //SEG934 [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 [515] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] + //SEG935 [471] phi from gfx_init::@10 to gfx_init::@11 [phi:gfx_init::@10->gfx_init::@11] + //SEG936 gfx_init::@11 + //SEG937 [472] call gfx_init_plane_horisontal2 + //SEG938 [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 [512] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] + //SEG939 [473] phi from gfx_init::@11 to gfx_init::@12 [phi:gfx_init::@11->gfx_init::@12] + //SEG940 gfx_init::@12 + //SEG941 [474] call gfx_init_plane_vertical2 + //SEG942 [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 [509] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] + //SEG943 [475] phi from gfx_init::@12 to gfx_init::@13 [phi:gfx_init::@12->gfx_init::@13] + //SEG944 gfx_init::@13 + //SEG945 [476] call gfx_init_plane_blank + //SEG946 [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 - //SEG948 [478] call gfx_init_plane_full - //SEG949 [480] phi from gfx_init::@14 to gfx_init_plane_full [phi:gfx_init::@14->gfx_init_plane_full] + //SEG947 [477] phi from gfx_init::@13 to gfx_init::@14 [phi:gfx_init::@13->gfx_init::@14] + //SEG948 gfx_init::@14 + //SEG949 [478] call gfx_init_plane_full + //SEG950 [480] phi from gfx_init::@14 to gfx_init_plane_full [phi:gfx_init::@14->gfx_init_plane_full] jsr gfx_init_plane_full - //SEG950 gfx_init::@return - //SEG951 [479] return + //SEG951 gfx_init::@return + //SEG952 [479] return rts } -//SEG952 gfx_init_plane_full +//SEG953 gfx_init_plane_full // Initialize Plane with all pixels gfx_init_plane_full: { - //SEG953 [481] call gfx_init_plane_fill - //SEG954 [483] phi from gfx_init_plane_full to gfx_init_plane_fill [phi:gfx_init_plane_full->gfx_init_plane_fill] - //SEG955 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/word/signed word/dword/signed dword) 255 [phi:gfx_init_plane_full->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG954 [481] call gfx_init_plane_fill + //SEG955 [483] phi from gfx_init_plane_full to gfx_init_plane_fill [phi:gfx_init_plane_full->gfx_init_plane_fill] + //SEG956 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/word/signed word/dword/signed dword) 255 [phi:gfx_init_plane_full->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #$ff sta gfx_init_plane_fill.fill - //SEG956 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_FULL#0 [phi:gfx_init_plane_full->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG957 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_FULL#0 [phi:gfx_init_plane_full->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_FULL @@ -31497,11 +31496,11 @@ gfx_init_plane_full: { lda #>PLANE_FULL>>$10 sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill - //SEG957 gfx_init_plane_full::@return - //SEG958 [482] return + //SEG958 gfx_init_plane_full::@return + //SEG959 [482] return rts } -//SEG959 gfx_init_plane_fill +//SEG960 gfx_init_plane_fill // Initialize 320*200 1bpp pixel ($2000) plane with identical bytes gfx_init_plane_fill: { .label _0 = $13 @@ -31513,7 +31512,7 @@ gfx_init_plane_fill: { .label by = 7 .label plane_addr = $a .label fill = 2 - //SEG960 [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 -- vduz1=vduz2_rol_2 + //SEG961 [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 -- vduz1=vduz2_rol_2 lda plane_addr sta _0 lda plane_addr+1 @@ -31530,36 +31529,36 @@ gfx_init_plane_fill: { rol _0+1 rol _0+2 rol _0+3 - //SEG961 [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 -- vwuz1=_hi_vduz2 + //SEG962 [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 -- vwuz1=_hi_vduz2 lda _0+2 sta _1 lda _0+3 sta _1+1 - //SEG962 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuxx=_lo_vwuz1 + //SEG963 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuxx=_lo_vwuz1 lda _1 tax - //SEG963 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuaa=vbuxx + //SEG964 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuaa=vbuxx txa - //SEG964 [488] call dtvSetCpuBankSegment1 - //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 + //SEG965 [488] call dtvSetCpuBankSegment1 + //SEG966 [505] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] + //SEG967 [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] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuxx=_inc_vbuxx + //SEG968 gfx_init_plane_fill::@5 + //SEG969 [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 + //SEG970 [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 - //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 + //SEG971 [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 - //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 + //SEG972 [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 @@ -31567,83 +31566,83 @@ gfx_init_plane_fill: { lda _6+1 adc #>$4000 sta _6+1 - //SEG972 [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 - //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 + //SEG973 [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 + //SEG974 [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] + //SEG975 [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 - //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 + //SEG976 [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 + //SEG977 [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] + //SEG978 [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 + //SEG979 [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 + //SEG980 gfx_init_plane_fill::@1 b1: - //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 + //SEG981 [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] + //SEG982 [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 - //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 + //SEG983 [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 + //SEG984 [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] + //SEG985 [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 + //SEG986 [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 + //SEG987 gfx_init_plane_fill::@2 b2: - //SEG987 [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 + //SEG988 [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 - //SEG988 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG989 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG989 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuxx=_inc_vbuxx + //SEG990 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG991 [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 - //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 + //SEG992 gfx_init_plane_fill::@3 + //SEG993 [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 inc by - //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 + //SEG994 [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 - //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 + //SEG995 [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] + //SEG996 gfx_init_plane_fill::@4 + //SEG997 [503] call dtvSetCpuBankSegment1 + //SEG998 [505] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] + //SEG999 [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 - //SEG999 gfx_init_plane_fill::@return - //SEG1000 [504] return + //SEG1000 gfx_init_plane_fill::@return + //SEG1001 [504] return rts } -//SEG1001 dtvSetCpuBankSegment1 +//SEG1002 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG1002 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuaa + //SEG1003 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG1003 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG1004 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 - //SEG1004 dtvSetCpuBankSegment1::@return - //SEG1005 [508] return + //SEG1005 dtvSetCpuBankSegment1::@return + //SEG1006 [508] return rts } -//SEG1006 gfx_init_plane_blank +//SEG1007 gfx_init_plane_blank // Initialize Plane with blank pixels gfx_init_plane_blank: { - //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 + //SEG1008 [510] call gfx_init_plane_fill + //SEG1009 [483] phi from gfx_init_plane_blank to gfx_init_plane_fill [phi:gfx_init_plane_blank->gfx_init_plane_fill] + //SEG1010 [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 - //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 + //SEG1011 [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 @@ -31653,19 +31652,19 @@ gfx_init_plane_blank: { lda #>PLANE_BLANK>>$10 sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill - //SEG1011 gfx_init_plane_blank::@return - //SEG1012 [511] return + //SEG1012 gfx_init_plane_blank::@return + //SEG1013 [511] return rts } -//SEG1013 gfx_init_plane_vertical2 +//SEG1014 gfx_init_plane_vertical2 // Initialize Plane with Vertical Stripes every 2 pixels gfx_init_plane_vertical2: { - //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 + //SEG1015 [513] call gfx_init_plane_fill + //SEG1016 [483] phi from gfx_init_plane_vertical2 to gfx_init_plane_fill [phi:gfx_init_plane_vertical2->gfx_init_plane_fill] + //SEG1017 [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 - //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 + //SEG1018 [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 @@ -31675,239 +31674,239 @@ gfx_init_plane_vertical2: { lda #>PLANE_VERTICAL2>>$10 sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill - //SEG1018 gfx_init_plane_vertical2::@return - //SEG1019 [514] return + //SEG1019 gfx_init_plane_vertical2::@return + //SEG1020 [514] return rts } -//SEG1020 gfx_init_plane_horisontal2 +//SEG1021 gfx_init_plane_horisontal2 // Initialize Plane with Horizontal Stripes every 2 pixels gfx_init_plane_horisontal2: { .const gfxbCpuBank = PLANE_HORISONTAL2/$4000 .label gfxa = 3 .label ay = 2 - //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 + //SEG1022 [516] call dtvSetCpuBankSegment1 + //SEG1023 [505] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] + //SEG1024 [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 - //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 + //SEG1025 [517] phi from gfx_init_plane_horisontal2 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1] + //SEG1026 [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 - //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 + //SEG1027 [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 - //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 + //SEG1028 [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] + //SEG1029 [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 + //SEG1030 [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 + //SEG1031 gfx_init_plane_horisontal2::@1 b1: - //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 + //SEG1032 [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] + //SEG1033 [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 - //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 + //SEG1034 [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 + //SEG1035 [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] + //SEG1036 [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 + //SEG1037 [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 + //SEG1038 gfx_init_plane_horisontal2::@2 b2: - //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 + //SEG1039 [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 - //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 + //SEG1040 [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 - //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 + //SEG1041 [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 - //SEG1041 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1042 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1042 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuxx=_inc_vbuxx + //SEG1043 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1044 [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 - //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 + //SEG1045 gfx_init_plane_horisontal2::@3 + //SEG1046 [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //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 + //SEG1047 [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 - //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 + //SEG1048 [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] + //SEG1049 gfx_init_plane_horisontal2::@4 + //SEG1050 [528] call dtvSetCpuBankSegment1 + //SEG1051 [505] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] + //SEG1052 [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 - //SEG1052 gfx_init_plane_horisontal2::@return - //SEG1053 [529] return + //SEG1053 gfx_init_plane_horisontal2::@return + //SEG1054 [529] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG1054 gfx_init_plane_vertical +//SEG1055 gfx_init_plane_vertical // Initialize Plane with Vertical Stripes gfx_init_plane_vertical: { .const gfxbCpuBank = PLANE_VERTICAL/$4000 .label gfxb = 3 .label by = 2 - //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 + //SEG1056 [531] call dtvSetCpuBankSegment1 + //SEG1057 [505] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] + //SEG1058 [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 - //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 + //SEG1059 [532] phi from gfx_init_plane_vertical to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1] + //SEG1060 [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 - //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 + //SEG1061 [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 - //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 + //SEG1062 [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] + //SEG1063 [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 + //SEG1064 [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 + //SEG1065 gfx_init_plane_vertical::@1 b1: - //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 + //SEG1066 [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] + //SEG1067 [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 - //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 + //SEG1068 [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 + //SEG1069 [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] + //SEG1070 [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 + //SEG1071 [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 + //SEG1072 gfx_init_plane_vertical::@2 b2: - //SEG1072 [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG1073 [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 - //SEG1073 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG1074 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1074 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuxx=_inc_vbuxx + //SEG1075 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1076 [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 - //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 + //SEG1077 gfx_init_plane_vertical::@3 + //SEG1078 [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 inc by - //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 + //SEG1079 [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 - //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 + //SEG1080 [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] + //SEG1081 gfx_init_plane_vertical::@4 + //SEG1082 [541] call dtvSetCpuBankSegment1 + //SEG1083 [505] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] + //SEG1084 [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 - //SEG1084 gfx_init_plane_vertical::@return - //SEG1085 [542] return + //SEG1085 gfx_init_plane_vertical::@return + //SEG1086 [542] return rts } -//SEG1086 gfx_init_plane_horisontal +//SEG1087 gfx_init_plane_horisontal // Initialize Plane with Horizontal Stripes gfx_init_plane_horisontal: { .const gfxbCpuBank = PLANE_HORISONTAL/$4000 .label gfxa = 3 .label ay = 2 - //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 + //SEG1088 [544] call dtvSetCpuBankSegment1 + //SEG1089 [505] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] + //SEG1090 [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 - //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 + //SEG1091 [545] phi from gfx_init_plane_horisontal to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1] + //SEG1092 [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 - //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 + //SEG1093 [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 - //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 + //SEG1094 [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] + //SEG1095 [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 + //SEG1096 [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 + //SEG1097 gfx_init_plane_horisontal::@1 b1: - //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 + //SEG1098 [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] + //SEG1099 [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 - //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 + //SEG1100 [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 + //SEG1101 [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] + //SEG1102 [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 + //SEG1103 [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 + //SEG1104 gfx_init_plane_horisontal::@2 b2: - //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 + //SEG1105 [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 - //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 + //SEG1106 [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 - //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 + //SEG1107 gfx_init_plane_horisontal::@5 + //SEG1108 [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 - //SEG1108 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1109 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //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 + //SEG1110 [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] + //SEG1111 [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 + //SEG1112 gfx_init_plane_horisontal::@4 b4: - //SEG1112 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuxx=_inc_vbuxx + //SEG1113 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1114 [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 - //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 + //SEG1115 gfx_init_plane_horisontal::@7 + //SEG1116 [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //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 + //SEG1117 [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 - //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 + //SEG1118 [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] + //SEG1119 gfx_init_plane_horisontal::@8 + //SEG1120 [557] call dtvSetCpuBankSegment1 + //SEG1121 [505] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] + //SEG1122 [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 - //SEG1122 gfx_init_plane_horisontal::@return - //SEG1123 [558] return + //SEG1123 gfx_init_plane_horisontal::@return + //SEG1124 [558] return rts - //SEG1124 gfx_init_plane_horisontal::@3 + //SEG1125 gfx_init_plane_horisontal::@3 b3: - //SEG1125 [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1126 [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 - //SEG1126 [560] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1127 [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 } -//SEG1127 gfx_init_plane_charset8 +//SEG1128 gfx_init_plane_charset8 // Initialize Plane with 8bpp charset gfx_init_plane_charset8: { .const gfxbCpuBank = PLANE_CHARSET8/$4000 @@ -31917,208 +31916,208 @@ gfx_init_plane_charset8: { .label col = 9 .label cr = 7 .label ch = 2 - //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 + //SEG1129 [562] call dtvSetCpuBankSegment1 + //SEG1130 [505] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG1131 [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 - //SEG1131 gfx_init_plane_charset8::@9 - //SEG1132 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG1132 gfx_init_plane_charset8::@9 + //SEG1133 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //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 + //SEG1134 [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] + //SEG1135 [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 - //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 + //SEG1136 [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 - //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 + //SEG1137 [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 - //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 + //SEG1138 [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 - //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 + //SEG1139 [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] + //SEG1140 [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 + //SEG1141 [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 + //SEG1142 [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 + //SEG1143 [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 + //SEG1144 gfx_init_plane_charset8::@1 b1: - //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 + //SEG1145 [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] + //SEG1146 [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 - //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 + //SEG1147 [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 + //SEG1148 [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 + //SEG1149 [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 + //SEG1150 [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] + //SEG1151 [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 + //SEG1152 [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 + //SEG1153 [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 + //SEG1154 [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 + //SEG1155 gfx_init_plane_charset8::@2 b2: - //SEG1155 [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG1156 [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 - //SEG1156 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1157 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //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 + //SEG1158 [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] + //SEG1159 [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 - //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 + //SEG1160 [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 + //SEG1161 [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 + //SEG1162 [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 + //SEG1163 [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] + //SEG1164 [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 + //SEG1165 [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 + //SEG1166 [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 + //SEG1167 [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 + //SEG1168 gfx_init_plane_charset8::@3 b3: - //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 + //SEG1169 [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 - //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 + //SEG1170 [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 - //SEG1170 gfx_init_plane_charset8::@5 - //SEG1171 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 + //SEG1171 gfx_init_plane_charset8::@5 + //SEG1172 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 lda col - //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 + //SEG1173 [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] + //SEG1174 [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 - //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] + //SEG1175 [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: - //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 + //SEG1176 [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 - //SEG1176 gfx_init_plane_charset8::@4 + //SEG1177 gfx_init_plane_charset8::@4 b4: - //SEG1177 [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa + //SEG1178 [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxa),y - //SEG1178 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1179 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+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 + //SEG1180 [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 - //SEG1180 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG1181 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1181 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx + //SEG1182 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1183 [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 - //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 + //SEG1184 gfx_init_plane_charset8::@6 + //SEG1185 [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //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 + //SEG1186 [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 - //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 + //SEG1187 gfx_init_plane_charset8::@7 + //SEG1188 [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //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 + //SEG1189 [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 - //SEG1189 gfx_init_plane_charset8::@8 - //SEG1190 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1190 gfx_init_plane_charset8::@8 + //SEG1191 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //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 + //SEG1192 [584] call dtvSetCpuBankSegment1 + //SEG1193 [505] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG1194 [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 - //SEG1194 gfx_init_plane_charset8::@return - //SEG1195 [585] return + //SEG1195 gfx_init_plane_charset8::@return + //SEG1196 [585] return rts } -//SEG1196 gfx_init_plane_8bppchunky +//SEG1197 gfx_init_plane_8bppchunky // Initialize 8BPP Chunky Bitmap (contains 8bpp pixels) gfx_init_plane_8bppchunky: { .label _6 = $10 .label gfxb = 5 .label x = 3 .label y = 2 - //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 + //SEG1198 [587] call dtvSetCpuBankSegment1 + //SEG1199 [505] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] + //SEG1200 [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 - //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 + //SEG1201 [588] phi from gfx_init_plane_8bppchunky to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1] + //SEG1202 [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 - //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 + //SEG1203 [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 - //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 + //SEG1204 [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 - //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 + //SEG1205 [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] + //SEG1206 [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 + //SEG1207 [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 + //SEG1208 [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 + //SEG1209 gfx_init_plane_8bppchunky::@1 b1: - //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 + //SEG1210 [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] + //SEG1211 [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 + //SEG1212 [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 - //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 + //SEG1213 [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 + //SEG1214 [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] + //SEG1215 [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 + //SEG1216 [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 + //SEG1217 [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 + //SEG1218 gfx_init_plane_8bppchunky::@2 b2: - //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 + //SEG1219 [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 - //SEG1219 gfx_init_plane_8bppchunky::@4 - //SEG1220 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuaa=vbuxx + //SEG1220 gfx_init_plane_8bppchunky::@4 + //SEG1221 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuaa=vbuxx txa - //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 + //SEG1222 [592] call dtvSetCpuBankSegment1 + //SEG1223 [505] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] + //SEG1224 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 - //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 + //SEG1225 gfx_init_plane_8bppchunky::@8 + //SEG1226 [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1227 [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] + //SEG1228 [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 + //SEG1229 [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 - //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 + //SEG1230 [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] + //SEG1231 [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 + //SEG1232 [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 + //SEG1233 gfx_init_plane_8bppchunky::@3 b3: - //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 + //SEG1234 [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 @@ -32126,95 +32125,95 @@ gfx_init_plane_8bppchunky: { lda #0 adc x+1 sta _6+1 - //SEG1234 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuaa=_byte_vwuz1 + //SEG1235 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuaa=_byte_vwuz1 lda _6 - //SEG1235 [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuaa + //SEG1236 [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG1236 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG1237 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1237 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG1238 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //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 + //SEG1239 [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 - //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 + //SEG1240 gfx_init_plane_8bppchunky::@5 + //SEG1241 [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG1242 [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 - //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 + //SEG1243 [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] + //SEG1244 gfx_init_plane_8bppchunky::@6 + //SEG1245 [604] call dtvSetCpuBankSegment1 + //SEG1246 [505] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] + //SEG1247 [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 - //SEG1247 gfx_init_plane_8bppchunky::@return - //SEG1248 [605] return + //SEG1248 gfx_init_plane_8bppchunky::@return + //SEG1249 [605] return rts } -//SEG1249 gfx_init_vic_bitmap +//SEG1250 gfx_init_vic_bitmap // Initialize VIC bitmap gfx_init_vic_bitmap: { .const lines_cnt = 9 .label l = 2 - //SEG1250 [607] call bitmap_init - //SEG1251 [759] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] + //SEG1251 [607] call bitmap_init + //SEG1252 [759] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] jsr bitmap_init - //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 + //SEG1253 [608] phi from gfx_init_vic_bitmap to gfx_init_vic_bitmap::@3 [phi:gfx_init_vic_bitmap->gfx_init_vic_bitmap::@3] + //SEG1254 gfx_init_vic_bitmap::@3 + //SEG1255 [609] call bitmap_clear jsr bitmap_clear - //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 + //SEG1256 [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] + //SEG1257 [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 - //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 + //SEG1258 [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] + //SEG1259 [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 + //SEG1260 gfx_init_vic_bitmap::@1 b1: - //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 + //SEG1261 [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 - //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 + //SEG1262 [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 - //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 + //SEG1263 [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 - //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 + //SEG1264 [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 - //SEG1264 [615] call bitmap_line + //SEG1265 [615] call bitmap_line jsr bitmap_line - //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 + //SEG1266 gfx_init_vic_bitmap::@5 + //SEG1267 [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //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 + //SEG1268 [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 - //SEG1268 gfx_init_vic_bitmap::@return - //SEG1269 [618] return + //SEG1269 gfx_init_vic_bitmap::@return + //SEG1270 [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 } -//SEG1270 bitmap_line +//SEG1271 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = 8 @@ -32222,229 +32221,229 @@ bitmap_line: { .label x0 = 9 .label x1 = $12 .label y0 = $f - //SEG1271 [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG1272 [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 - //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 + //SEG1273 bitmap_line::@15 + //SEG1274 [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 - //SEG1274 [621] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 + //SEG1275 [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 !: - //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 + //SEG1276 bitmap_line::@16 + //SEG1277 [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 - //SEG1277 [623] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1278 [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 - //SEG1278 bitmap_line::@17 - //SEG1279 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1279 bitmap_line::@17 + //SEG1280 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y - //SEG1280 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1281 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1281 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 - //SEG1282 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG1283 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 - //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 + //SEG1282 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + //SEG1283 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1284 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1285 [629] call bitmap_line_ydxi + //SEG1286 [703] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1287 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1288 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1289 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1290 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1291 [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 - //SEG1291 bitmap_line::@return + //SEG1292 bitmap_line::@return breturn: - //SEG1292 [630] return + //SEG1293 [630] return rts - //SEG1293 bitmap_line::@3 + //SEG1294 bitmap_line::@3 b3: - //SEG1294 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1295 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1295 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1296 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyi.y - //SEG1296 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 - //SEG1297 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1298 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 - //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 + //SEG1297 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + //SEG1298 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1299 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1300 [636] call bitmap_line_xdyi + //SEG1301 [681] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1302 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1303 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1304 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1305 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1306 [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 - //SEG1306 bitmap_line::@2 + //SEG1307 bitmap_line::@2 b2: - //SEG1307 [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1308 [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 - //SEG1308 [638] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1309 [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 - //SEG1309 bitmap_line::@20 - //SEG1310 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1310 bitmap_line::@20 + //SEG1311 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1311 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1312 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1312 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1313 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y1 - //SEG1313 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG1314 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 - //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 + //SEG1314 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1315 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1316 [644] call bitmap_line_ydxd + //SEG1317 [733] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1318 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1319 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1320 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1321 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1322 [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 - //SEG1322 bitmap_line::@6 + //SEG1323 bitmap_line::@6 b6: - //SEG1323 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1324 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1324 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1325 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyd.y - //SEG1325 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1326 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1326 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1327 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 - //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 + //SEG1327 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1328 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1329 [650] call bitmap_line_xdyd + //SEG1330 [718] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1331 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1332 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1333 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1334 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1335 [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 - //SEG1335 bitmap_line::@1 + //SEG1336 bitmap_line::@1 b1: - //SEG1336 [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1337 [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 - //SEG1337 [652] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 + //SEG1338 [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 !: - //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 + //SEG1339 bitmap_line::@23 + //SEG1340 [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 - //SEG1340 [654] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1341 [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 - //SEG1341 bitmap_line::@24 - //SEG1342 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1342 bitmap_line::@24 + //SEG1343 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y - //SEG1343 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1344 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1344 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 - //SEG1345 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG1346 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 - //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 + //SEG1345 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + //SEG1346 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1347 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1348 [660] call bitmap_line_ydxd + //SEG1349 [733] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1350 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1351 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1352 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1353 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1354 [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 - //SEG1354 bitmap_line::@10 + //SEG1355 bitmap_line::@10 b10: - //SEG1355 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1356 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1356 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - //SEG1357 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 - //SEG1358 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1359 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 - //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 + //SEG1357 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + //SEG1358 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + //SEG1359 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1360 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1361 [666] call bitmap_line_xdyd + //SEG1362 [718] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1363 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1364 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1365 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1366 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1367 [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 - //SEG1367 bitmap_line::@9 + //SEG1368 bitmap_line::@9 b9: - //SEG1368 [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1369 [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 - //SEG1369 [668] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1370 [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 - //SEG1370 bitmap_line::@27 - //SEG1371 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1371 bitmap_line::@27 + //SEG1372 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1372 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1373 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1373 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1374 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y1 - //SEG1374 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG1375 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 - //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 + //SEG1375 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1376 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1377 [674] call bitmap_line_ydxi + //SEG1378 [703] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1379 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1380 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1381 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1382 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1383 [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 - //SEG1383 bitmap_line::@13 + //SEG1384 bitmap_line::@13 b13: - //SEG1384 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1385 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1385 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - //SEG1386 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1386 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + //SEG1387 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1387 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1388 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 - //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 + //SEG1388 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1389 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1390 [680] call bitmap_line_xdyi + //SEG1391 [681] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1392 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1393 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1394 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1395 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1396 [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 } -//SEG1396 bitmap_line_xdyi +//SEG1397 bitmap_line_xdyi bitmap_line_xdyi: { .label x = $e .label y = $f @@ -32452,76 +32451,76 @@ bitmap_line_xdyi: { .label xd = 8 .label yd = 7 .label e = $12 - //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 + //SEG1398 [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 - //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 + //SEG1399 [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] + //SEG1400 [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 + //SEG1401 [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 + //SEG1402 [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 + //SEG1403 bitmap_line_xdyi::@1 b1: - //SEG1403 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 + //SEG1404 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx x - //SEG1404 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 + //SEG1405 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy y - //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 + //SEG1406 [686] call bitmap_plot + //SEG1407 [696] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1408 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1409 [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 - //SEG1409 bitmap_line_xdyi::@5 - //SEG1410 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1410 bitmap_line_xdyi::@5 + //SEG1411 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1411 [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1412 [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 - //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 + //SEG1413 [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 - //SEG1413 bitmap_line_xdyi::@3 - //SEG1414 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1414 bitmap_line_xdyi::@3 + //SEG1415 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1415 [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1416 [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 - //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 + //SEG1417 [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] + //SEG1418 [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 + //SEG1419 [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 + //SEG1420 bitmap_line_xdyi::@2 b2: - //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 + //SEG1421 [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 - //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 + //SEG1422 [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 - //SEG1422 bitmap_line_xdyi::@return - //SEG1423 [695] return + //SEG1423 bitmap_line_xdyi::@return + //SEG1424 [695] return rts } -//SEG1424 bitmap_plot +//SEG1425 bitmap_plot bitmap_plot: { .label _0 = 3 .label plotter_x = 3 .label plotter_y = 5 - //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 + //SEG1426 [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 - //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 + //SEG1427 [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 - //SEG1427 [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG1428 [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 @@ -32529,78 +32528,78 @@ bitmap_plot: { lda _0+1 adc plotter_y+1 sta _0+1 - //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 + //SEG1429 [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 - //SEG1429 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa + //SEG1430 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa sta (_0),y - //SEG1430 bitmap_plot::@return - //SEG1431 [702] return + //SEG1431 bitmap_plot::@return + //SEG1432 [702] return rts } -//SEG1432 bitmap_line_ydxi +//SEG1433 bitmap_line_ydxi bitmap_line_ydxi: { .label y = $e .label y1 = $f .label yd = 7 .label xd = 8 .label e = 9 - //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 + //SEG1434 [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 - //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 + //SEG1435 [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] + //SEG1436 [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 + //SEG1437 [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 + //SEG1438 [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 + //SEG1439 bitmap_line_ydxi::@1 b1: - //SEG1439 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - //SEG1440 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 + //SEG1440 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + //SEG1441 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy y - //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 + //SEG1442 [708] call bitmap_plot + //SEG1443 [696] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1444 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1445 [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 - //SEG1445 bitmap_line_ydxi::@5 - //SEG1446 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1446 bitmap_line_ydxi::@5 + //SEG1447 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1447 [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1448 [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 - //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 + //SEG1449 [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 - //SEG1449 bitmap_line_ydxi::@3 - //SEG1450 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx + //SEG1450 bitmap_line_ydxi::@3 + //SEG1451 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG1451 [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1452 [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 - //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 + //SEG1453 [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] + //SEG1454 [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 + //SEG1455 [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 + //SEG1456 bitmap_line_ydxi::@2 b2: - //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 + //SEG1457 [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 - //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 + //SEG1458 [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 - //SEG1458 bitmap_line_ydxi::@return - //SEG1459 [717] return + //SEG1459 bitmap_line_ydxi::@return + //SEG1460 [717] return rts } -//SEG1460 bitmap_line_xdyd +//SEG1461 bitmap_line_xdyd bitmap_line_xdyd: { .label x = $e .label y = $f @@ -32608,254 +32607,254 @@ bitmap_line_xdyd: { .label xd = 8 .label yd = 7 .label e = 9 - //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 + //SEG1462 [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 - //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 + //SEG1463 [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] + //SEG1464 [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 + //SEG1465 [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 + //SEG1466 [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 + //SEG1467 bitmap_line_xdyd::@1 b1: - //SEG1467 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 + //SEG1468 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx x - //SEG1468 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 + //SEG1469 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy y - //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 + //SEG1470 [723] call bitmap_plot + //SEG1471 [696] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1472 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1473 [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 - //SEG1473 bitmap_line_xdyd::@5 - //SEG1474 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1474 bitmap_line_xdyd::@5 + //SEG1475 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1475 [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1476 [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 - //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 + //SEG1477 [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 - //SEG1477 bitmap_line_xdyd::@3 - //SEG1478 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1478 bitmap_line_xdyd::@3 + //SEG1479 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1479 [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1480 [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 - //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 + //SEG1481 [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] + //SEG1482 [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 + //SEG1483 [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 + //SEG1484 bitmap_line_xdyd::@2 b2: - //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 + //SEG1485 [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 - //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 + //SEG1486 [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 - //SEG1486 bitmap_line_xdyd::@return - //SEG1487 [732] return + //SEG1487 bitmap_line_xdyd::@return + //SEG1488 [732] return rts } -//SEG1488 bitmap_line_ydxd +//SEG1489 bitmap_line_ydxd bitmap_line_ydxd: { .label y = $e .label y1 = $f .label yd = 7 .label xd = 8 .label e = 9 - //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 + //SEG1490 [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 - //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 + //SEG1491 [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] + //SEG1492 [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 + //SEG1493 [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 + //SEG1494 [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 + //SEG1495 bitmap_line_ydxd::@1 b1: - //SEG1495 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - //SEG1496 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 + //SEG1496 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + //SEG1497 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy y - //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 + //SEG1498 [738] call bitmap_plot + //SEG1499 [696] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1500 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1501 [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 - //SEG1501 bitmap_line_ydxd::@5 - //SEG1502 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1502 bitmap_line_ydxd::@5 + //SEG1503 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1503 [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1504 [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 - //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 + //SEG1505 [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 - //SEG1505 bitmap_line_ydxd::@3 - //SEG1506 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx + //SEG1506 bitmap_line_ydxd::@3 + //SEG1507 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx dex - //SEG1507 [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1508 [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 - //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 + //SEG1509 [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] + //SEG1510 [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 + //SEG1511 [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 + //SEG1512 bitmap_line_ydxd::@2 b2: - //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 + //SEG1513 [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 - //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 + //SEG1514 [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 - //SEG1514 bitmap_line_ydxd::@return - //SEG1515 [747] return + //SEG1515 bitmap_line_ydxd::@return + //SEG1516 [747] return rts } -//SEG1516 bitmap_clear +//SEG1517 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //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 + //SEG1518 [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 - //SEG1518 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //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 + //SEG1519 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG1520 [750] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1521 [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 - //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 + //SEG1522 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG1523 [750] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1524 [750] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1525 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG1526 bitmap_clear::@1 b1: - //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 + //SEG1527 [751] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1528 [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 - //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 + //SEG1529 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG1530 [751] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1531 [751] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1532 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG1533 bitmap_clear::@2 b2: - //SEG1533 [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1534 [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 - //SEG1534 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1535 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1535 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG1536 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1537 [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 - //SEG1537 bitmap_clear::@3 - //SEG1538 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1538 bitmap_clear::@3 + //SEG1539 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG1540 [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 - //SEG1540 bitmap_clear::@return - //SEG1541 [758] return + //SEG1541 bitmap_clear::@return + //SEG1542 [758] return rts } -//SEG1542 bitmap_init +//SEG1543 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _6 = 2 .label yoffs = 3 - //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 + //SEG1544 [760] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1545 [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 - //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 + //SEG1546 [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 - //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 + //SEG1547 [760] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1548 [760] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1549 [760] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG1550 bitmap_init::@1 b1: - //SEG1550 [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG1551 [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 - //SEG1551 [762] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1552 [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 - //SEG1552 [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1553 [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 - //SEG1553 [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG1554 [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 - //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 + //SEG1555 [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 - //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 + //SEG1556 [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 - //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 + //SEG1557 [767] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1558 [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 - //SEG1558 bitmap_init::@2 + //SEG1559 bitmap_init::@2 b2: - //SEG1559 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG1560 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1561 [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 - //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 + //SEG1562 [770] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1563 [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 - //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 + //SEG1564 [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 - //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 + //SEG1565 [770] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1566 [770] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1567 [770] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG1568 bitmap_init::@3 b3: - //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 + //SEG1569 [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 - //SEG1569 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG1570 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG1570 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG1571 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG1571 [774] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1572 [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 - //SEG1572 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG1573 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG1573 [776] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1574 [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 - //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 + //SEG1575 [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 - //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 + //SEG1576 [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 - //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 + //SEG1577 bitmap_init::@7 + //SEG1578 [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 @@ -32863,426 +32862,426 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 + //SEG1579 [780] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG1580 [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 + //SEG1581 bitmap_init::@4 b4: - //SEG1581 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG1582 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1583 [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 - //SEG1583 bitmap_init::@return - //SEG1584 [783] return + //SEG1584 bitmap_init::@return + //SEG1585 [783] return rts - //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 + //SEG1586 [784] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1587 bitmap_init::@10 + //SEG1588 [767] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1589 [767] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } -//SEG1589 gfx_init_charset +//SEG1590 gfx_init_charset gfx_init_charset: { .label charset = 5 .label chargen = 3 .label c = 2 - //SEG1590 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG1591 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //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 + //SEG1592 [786] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] + //SEG1593 [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 - //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 + //SEG1594 [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 - //SEG1594 [786] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 + //SEG1595 [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 - //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 + //SEG1596 [786] phi from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] + //SEG1597 [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 + //SEG1598 [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 + //SEG1599 [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 + //SEG1600 gfx_init_charset::@1 b1: - //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 + //SEG1601 [787] phi from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] + //SEG1602 [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 - //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 + //SEG1603 [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 + //SEG1604 [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 + //SEG1605 [787] phi from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] + //SEG1606 [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 + //SEG1607 [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 + //SEG1608 [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 + //SEG1609 gfx_init_charset::@2 b2: - //SEG1609 [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1610 [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 - //SEG1610 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 + //SEG1611 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 inc charset bne !+ inc charset+1 !: - //SEG1611 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1612 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1612 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuxx=_inc_vbuxx + //SEG1613 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1614 [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 - //SEG1614 gfx_init_charset::@3 - //SEG1615 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 + //SEG1615 gfx_init_charset::@3 + //SEG1616 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 inc c - //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 + //SEG1617 [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 - //SEG1617 gfx_init_charset::@4 - //SEG1618 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG1618 gfx_init_charset::@4 + //SEG1619 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG1619 gfx_init_charset::@return - //SEG1620 [796] return + //SEG1620 gfx_init_charset::@return + //SEG1621 [796] return rts } -//SEG1621 gfx_init_screen4 +//SEG1622 gfx_init_screen4 // Initialize VIC screen 4 - all chars are 00 gfx_init_screen4: { .label ch = 3 .label cy = 2 - //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 + //SEG1623 [798] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] + //SEG1624 [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 - //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 + //SEG1625 [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 - //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 + //SEG1626 [798] phi from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] + //SEG1627 [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 + //SEG1628 [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 + //SEG1629 gfx_init_screen4::@1 b1: - //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 + //SEG1630 [799] phi from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] + //SEG1631 [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 - //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 + //SEG1632 [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 + //SEG1633 [799] phi from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] + //SEG1634 [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 + //SEG1635 [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 + //SEG1636 gfx_init_screen4::@2 b2: - //SEG1636 [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1637 [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 - //SEG1637 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1638 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1638 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuxx=_inc_vbuxx + //SEG1639 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1640 [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 - //SEG1640 gfx_init_screen4::@3 - //SEG1641 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1641 gfx_init_screen4::@3 + //SEG1642 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1643 [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 - //SEG1643 gfx_init_screen4::@return - //SEG1644 [806] return + //SEG1644 gfx_init_screen4::@return + //SEG1645 [806] return rts } -//SEG1645 gfx_init_screen3 +//SEG1646 gfx_init_screen3 // Initialize VIC screen 3 ( value is %00xx00yy where xx is xpos and yy is ypos gfx_init_screen3: { .label _1 = 7 .label ch = 3 .label cy = 2 - //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 + //SEG1647 [808] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] + //SEG1648 [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 - //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 + //SEG1649 [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 - //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 + //SEG1650 [808] phi from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] + //SEG1651 [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 + //SEG1652 [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 + //SEG1653 gfx_init_screen3::@1 b1: - //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 + //SEG1654 [809] phi from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] + //SEG1655 [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 + //SEG1656 [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 - //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 + //SEG1657 [809] phi from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] + //SEG1658 [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 + //SEG1659 [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 + //SEG1660 gfx_init_screen3::@2 b2: - //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 + //SEG1661 [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 - //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 + //SEG1662 [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 - //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 + //SEG1663 [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 - //SEG1663 [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG1664 [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG1664 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuaa + //SEG1665 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1665 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1666 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1666 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuxx=_inc_vbuxx + //SEG1667 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1668 [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 - //SEG1668 gfx_init_screen3::@3 - //SEG1669 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1669 gfx_init_screen3::@3 + //SEG1670 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1671 [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 - //SEG1671 gfx_init_screen3::@return - //SEG1672 [820] return + //SEG1672 gfx_init_screen3::@return + //SEG1673 [820] return rts } -//SEG1673 gfx_init_screen2 +//SEG1674 gfx_init_screen2 // Initialize VIC screen 2 ( value is %ccccrrrr where cccc is (x+y mod $f) and rrrr is %1111-%cccc) gfx_init_screen2: { .label col2 = 7 .label ch = 3 .label cy = 2 - //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 + //SEG1675 [822] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] + //SEG1676 [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 - //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 + //SEG1677 [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 - //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 + //SEG1678 [822] phi from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] + //SEG1679 [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 + //SEG1680 [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 + //SEG1681 gfx_init_screen2::@1 b1: - //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 + //SEG1682 [823] phi from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] + //SEG1683 [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 + //SEG1684 [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 - //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 + //SEG1685 [823] phi from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] + //SEG1686 [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 + //SEG1687 [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 + //SEG1688 gfx_init_screen2::@2 b2: - //SEG1688 [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1689 [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 - //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 + //SEG1690 [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 - //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 + //SEG1691 [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 - //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 + //SEG1692 [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 - //SEG1692 [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuaa=vbuaa_bor_vbuz1 + //SEG1693 [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuaa=vbuaa_bor_vbuz1 ora col2 - //SEG1693 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuaa + //SEG1694 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1694 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1695 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1695 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuxx=_inc_vbuxx + //SEG1696 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1697 [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 - //SEG1697 gfx_init_screen2::@3 - //SEG1698 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1698 gfx_init_screen2::@3 + //SEG1699 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1700 [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 - //SEG1700 gfx_init_screen2::@return - //SEG1701 [835] return + //SEG1701 gfx_init_screen2::@return + //SEG1702 [835] return rts } -//SEG1702 gfx_init_screen1 +//SEG1703 gfx_init_screen1 // Initialize VIC screen 1 ( value is %0000cccc where cccc is (x+y mod $f)) gfx_init_screen1: { .label ch = 3 .label cy = 2 - //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 + //SEG1704 [837] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] + //SEG1705 [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 - //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 + //SEG1706 [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 - //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 + //SEG1707 [837] phi from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] + //SEG1708 [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 + //SEG1709 [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 + //SEG1710 gfx_init_screen1::@1 b1: - //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 + //SEG1711 [838] phi from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] + //SEG1712 [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 + //SEG1713 [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 - //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 + //SEG1714 [838] phi from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] + //SEG1715 [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 + //SEG1716 [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 + //SEG1717 gfx_init_screen1::@2 b2: - //SEG1717 [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1718 [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 - //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 + //SEG1719 [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 - //SEG1719 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuaa + //SEG1720 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1720 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1721 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1721 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuxx=_inc_vbuxx + //SEG1722 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1723 [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 - //SEG1723 gfx_init_screen1::@3 - //SEG1724 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1724 gfx_init_screen1::@3 + //SEG1725 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1726 [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 - //SEG1726 gfx_init_screen1::@return - //SEG1727 [847] return + //SEG1727 gfx_init_screen1::@return + //SEG1728 [847] return rts } -//SEG1728 gfx_init_screen0 +//SEG1729 gfx_init_screen0 // Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos) gfx_init_screen0: { .label _1 = 7 .label ch = 3 .label cy = 2 - //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 + //SEG1730 [849] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG1731 [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 - //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 + //SEG1732 [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 - //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 + //SEG1733 [849] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] + //SEG1734 [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 + //SEG1735 [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 + //SEG1736 gfx_init_screen0::@1 b1: - //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 + //SEG1737 [850] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] + //SEG1738 [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 + //SEG1739 [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 - //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 + //SEG1740 [850] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] + //SEG1741 [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 + //SEG1742 [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 + //SEG1743 gfx_init_screen0::@2 b2: - //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 + //SEG1744 [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 - //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 + //SEG1745 [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 - //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 + //SEG1746 [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 - //SEG1746 [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG1747 [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG1747 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa + //SEG1748 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1748 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1749 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1749 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx + //SEG1750 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG1751 [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 - //SEG1751 gfx_init_screen0::@3 - //SEG1752 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1752 gfx_init_screen0::@3 + //SEG1753 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //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 + //SEG1754 [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 - //SEG1754 gfx_init_screen0::@return - //SEG1755 [861] return + //SEG1755 gfx_init_screen0::@return + //SEG1756 [861] return rts } -//SEG1756 keyboard_init +//SEG1757 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG1757 [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG1758 [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 - //SEG1758 [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1759 [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 - //SEG1759 keyboard_init::@return - //SEG1760 [864] return + //SEG1760 keyboard_init::@return + //SEG1761 [864] return rts } // Default vallues for the palette @@ -33296,8 +33295,6 @@ keyboard_init: { keyboard_events: .fill 8, 0 // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() keyboard_scan_values: .fill 8, 0 - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 diff --git a/src/test/ref/c64dtv-gfxmodes.asm b/src/test/ref/c64dtv-gfxmodes.asm index 5a420a620..3f452ae42 100644 --- a/src/test/ref/c64dtv-gfxmodes.asm +++ b/src/test/ref/c64dtv-gfxmodes.asm @@ -1,7 +1,7 @@ +// Exploring C64DTV Screen Modes .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -2211,8 +2211,6 @@ print_set_screen: { keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 diff --git a/src/test/ref/c64dtv-gfxmodes.log b/src/test/ref/c64dtv-gfxmodes.log index c41793ea1..de5ed5529 100644 --- a/src/test/ref/c64dtv-gfxmodes.log +++ b/src/test/ref/c64dtv-gfxmodes.log @@ -12578,12 +12578,13 @@ Allocated zp ZP_BYTE:294 [ mode_stdchar::$29 ] Allocated zp ZP_BYTE:295 [ print_str_lines::ch#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Exploring C64DTV Screen Modes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -12681,44 +12682,44 @@ INITIAL ASM .label print_char_cursor = $9b .label dtv_control = $c .label print_line_cursor = $9d -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @54 [phi:@begin->@54] +//SEG4 [1] phi from @begin to @54 [phi:@begin->@54] b54_from_bbegin: jmp b54 -//SEG4 @54 +//SEG5 @54 b54: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @54 to @end [phi:@54->@end] +//SEG7 [3] phi from @54 to @end [phi:@54->@end] bend_from_b54: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG13 [8] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] + //SEG14 [8] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] b2_from_main: b2_from_b2: jmp b2 - //SEG14 main::@2 + //SEG15 main::@2 b2: - //SEG15 [9] call menu + //SEG16 [9] call menu jsr menu jmp b2_from_b2 } -//SEG16 menu +//SEG17 menu menu: { .label SCREEN = $8000 .label CHARSET = $9800 @@ -12736,79 +12737,79 @@ menu: { .label _73 = $b8 .label i = 2 .label c = 3 - //SEG17 [10] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG18 [11] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG19 [12] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG20 [13] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG21 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((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 - //SEG22 [15] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG23 [16] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG24 [17] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG25 [18] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG26 [19] phi from menu to menu::@1 [phi:menu->menu::@1] + //SEG27 [19] phi from menu to menu::@1 [phi:menu->menu::@1] b1_from_menu: - //SEG27 [19] phi (byte) menu::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:menu->menu::@1#0] -- vbuz1=vbuc1 + //SEG28 [19] phi (byte) menu::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:menu->menu::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG28 [19] phi from menu::@1 to menu::@1 [phi:menu::@1->menu::@1] + //SEG29 [19] phi from menu::@1 to menu::@1 [phi:menu::@1->menu::@1] b1_from_b1: - //SEG29 [19] phi (byte) menu::i#2 = (byte) menu::i#1 [phi:menu::@1->menu::@1#0] -- register_copy + //SEG30 [19] phi (byte) menu::i#2 = (byte) menu::i#1 [phi:menu::@1->menu::@1#0] -- register_copy jmp b1 - //SEG30 menu::@1 + //SEG31 menu::@1 b1: - //SEG31 [20] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG32 [20] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG32 [21] (byte) menu::i#1 ← ++ (byte) menu::i#2 -- vbuz1=_inc_vbuz1 + //SEG33 [21] (byte) menu::i#1 ← ++ (byte) menu::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG33 [22] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [22] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 - //SEG34 [23] phi from menu::@1 to menu::@2 [phi:menu::@1->menu::@2] + //SEG35 [23] phi from menu::@1 to menu::@2 [phi:menu::@1->menu::@2] b2_from_b1: - //SEG35 [23] phi (byte*) menu::c#2 = (const byte*) COLS#0 [phi:menu::@1->menu::@2#0] -- pbuz1=pbuc1 + //SEG36 [23] phi (byte*) menu::c#2 = (const byte*) COLS#0 [phi:menu::@1->menu::@2#0] -- pbuz1=pbuc1 lda #COLS sta c+1 jmp b2 - //SEG36 [23] phi from menu::@2 to menu::@2 [phi:menu::@2->menu::@2] + //SEG37 [23] phi from menu::@2 to menu::@2 [phi:menu::@2->menu::@2] b2_from_b2: - //SEG37 [23] phi (byte*) menu::c#2 = (byte*) menu::c#1 [phi:menu::@2->menu::@2#0] -- register_copy + //SEG38 [23] phi (byte*) menu::c#2 = (byte*) menu::c#1 [phi:menu::@2->menu::@2#0] -- register_copy jmp b2 - //SEG38 menu::@2 + //SEG39 menu::@2 b2: - //SEG39 [24] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN#0 -- _deref_pbuz1=vbuc1 + //SEG40 [24] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN#0 -- _deref_pbuz1=vbuc1 lda #LIGHT_GREEN ldy #0 sta (c),y - //SEG40 [25] (byte*) menu::c#1 ← ++ (byte*) menu::c#2 -- pbuz1=_inc_pbuz1 + //SEG41 [25] (byte*) menu::c#1 ← ++ (byte*) menu::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG41 [26] if((byte*) menu::c#1!=(const byte*) COLS#0+(word/signed word/dword/signed dword) 1000) goto menu::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG42 [26] if((byte*) menu::c#1!=(const byte*) COLS#0+(word/signed word/dword/signed dword) 1000) goto menu::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>COLS+$3e8 bne b2_from_b2 @@ -12816,439 +12817,439 @@ menu: { cmp #print_set_screen] + //SEG46 [29] call print_set_screen + //SEG47 [891] phi from menu::@19 to print_set_screen [phi:menu::@19->print_set_screen] print_set_screen_from_b19: jsr print_set_screen - //SEG47 [30] phi from menu::@19 to menu::@47 [phi:menu::@19->menu::@47] + //SEG48 [30] phi from menu::@19 to menu::@47 [phi:menu::@19->menu::@47] b47_from_b19: jmp b47 - //SEG48 menu::@47 + //SEG49 menu::@47 b47: - //SEG49 [31] call print_cls - //SEG50 [885] phi from menu::@47 to print_cls [phi:menu::@47->print_cls] + //SEG50 [31] call print_cls + //SEG51 [885] phi from menu::@47 to print_cls [phi:menu::@47->print_cls] print_cls_from_b47: jsr print_cls - //SEG51 [32] phi from menu::@47 to menu::@48 [phi:menu::@47->menu::@48] + //SEG52 [32] phi from menu::@47 to menu::@48 [phi:menu::@47->menu::@48] b48_from_b47: jmp b48 - //SEG52 menu::@48 + //SEG53 menu::@48 b48: - //SEG53 [33] call print_str_lines - //SEG54 [865] phi from menu::@48 to print_str_lines [phi:menu::@48->print_str_lines] + //SEG54 [33] call print_str_lines + //SEG55 [865] phi from menu::@48 to print_str_lines [phi:menu::@48->print_str_lines] print_str_lines_from_b48: jsr print_str_lines - //SEG55 [34] phi from menu::@48 menu::@71 to menu::@4 [phi:menu::@48/menu::@71->menu::@4] + //SEG56 [34] phi from menu::@48 menu::@71 to menu::@4 [phi:menu::@48/menu::@71->menu::@4] b4_from_b48: b4_from_b71: jmp b4 - //SEG56 menu::@4 + //SEG57 menu::@4 b4: - //SEG57 [35] call keyboard_key_pressed - //SEG58 [211] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] + //SEG58 [35] call keyboard_key_pressed + //SEG59 [211] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] keyboard_key_pressed_from_b4: - //SEG59 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_1#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG60 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_1#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_1 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG60 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG61 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_2 jmp b50 - //SEG61 menu::@50 + //SEG62 menu::@50 b50: - //SEG62 [37] (byte~) menu::$29 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 + //SEG63 [37] (byte~) menu::$29 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_2 sta _29 - //SEG63 [38] if((byte~) menu::$29==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuz1_eq_0_then_la1 + //SEG64 [38] if((byte~) menu::$29==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuz1_eq_0_then_la1 lda _29 cmp #0 beq b6_from_b50 - //SEG64 [39] phi from menu::@50 to menu::@22 [phi:menu::@50->menu::@22] + //SEG65 [39] phi from menu::@50 to menu::@22 [phi:menu::@50->menu::@22] b22_from_b50: jmp b22 - //SEG65 menu::@22 + //SEG66 menu::@22 b22: - //SEG66 [40] call mode_stdchar + //SEG67 [40] call mode_stdchar jsr mode_stdchar jmp breturn - //SEG67 menu::@return + //SEG68 menu::@return breturn: - //SEG68 [41] return + //SEG69 [41] return rts - //SEG69 [42] phi from menu::@50 to menu::@6 [phi:menu::@50->menu::@6] + //SEG70 [42] phi from menu::@50 to menu::@6 [phi:menu::@50->menu::@6] b6_from_b50: jmp b6 - //SEG70 menu::@6 + //SEG71 menu::@6 b6: - //SEG71 [43] call keyboard_key_pressed - //SEG72 [211] phi from menu::@6 to keyboard_key_pressed [phi:menu::@6->keyboard_key_pressed] + //SEG72 [43] call keyboard_key_pressed + //SEG73 [211] phi from menu::@6 to keyboard_key_pressed [phi:menu::@6->keyboard_key_pressed] keyboard_key_pressed_from_b6: - //SEG73 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_2#0 [phi:menu::@6->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG74 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_2#0 [phi:menu::@6->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_2 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG74 [44] (byte) keyboard_key_pressed::return#24 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG75 [44] (byte) keyboard_key_pressed::return#24 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_24 jmp b51 - //SEG75 menu::@51 + //SEG76 menu::@51 b51: - //SEG76 [45] (byte~) menu::$33 ← (byte) keyboard_key_pressed::return#24 -- vbuz1=vbuz2 + //SEG77 [45] (byte~) menu::$33 ← (byte) keyboard_key_pressed::return#24 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_24 sta _33 - //SEG77 [46] if((byte~) menu::$33==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@7 -- vbuz1_eq_0_then_la1 + //SEG78 [46] if((byte~) menu::$33==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@7 -- vbuz1_eq_0_then_la1 lda _33 cmp #0 beq b7_from_b51 - //SEG78 [47] phi from menu::@51 to menu::@24 [phi:menu::@51->menu::@24] + //SEG79 [47] phi from menu::@51 to menu::@24 [phi:menu::@51->menu::@24] b24_from_b51: jmp b24 - //SEG79 menu::@24 + //SEG80 menu::@24 b24: - //SEG80 [48] call mode_ecmchar + //SEG81 [48] call mode_ecmchar jsr mode_ecmchar jmp breturn - //SEG81 [49] phi from menu::@51 to menu::@7 [phi:menu::@51->menu::@7] + //SEG82 [49] phi from menu::@51 to menu::@7 [phi:menu::@51->menu::@7] b7_from_b51: jmp b7 - //SEG82 menu::@7 + //SEG83 menu::@7 b7: - //SEG83 [50] call keyboard_key_pressed - //SEG84 [211] phi from menu::@7 to keyboard_key_pressed [phi:menu::@7->keyboard_key_pressed] + //SEG84 [50] call keyboard_key_pressed + //SEG85 [211] phi from menu::@7 to keyboard_key_pressed [phi:menu::@7->keyboard_key_pressed] keyboard_key_pressed_from_b7: - //SEG85 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_3#0 [phi:menu::@7->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG86 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_3#0 [phi:menu::@7->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_3 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG86 [51] (byte) keyboard_key_pressed::return#25 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG87 [51] (byte) keyboard_key_pressed::return#25 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_25 jmp b53 - //SEG87 menu::@53 + //SEG88 menu::@53 b53: - //SEG88 [52] (byte~) menu::$37 ← (byte) keyboard_key_pressed::return#25 -- vbuz1=vbuz2 + //SEG89 [52] (byte~) menu::$37 ← (byte) keyboard_key_pressed::return#25 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_25 sta _37 - //SEG89 [53] if((byte~) menu::$37==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@8 -- vbuz1_eq_0_then_la1 + //SEG90 [53] if((byte~) menu::$37==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@8 -- vbuz1_eq_0_then_la1 lda _37 cmp #0 beq b8_from_b53 - //SEG90 [54] phi from menu::@53 to menu::@26 [phi:menu::@53->menu::@26] + //SEG91 [54] phi from menu::@53 to menu::@26 [phi:menu::@53->menu::@26] b26_from_b53: jmp b26 - //SEG91 menu::@26 + //SEG92 menu::@26 b26: - //SEG92 [55] call mode_mcchar + //SEG93 [55] call mode_mcchar jsr mode_mcchar jmp breturn - //SEG93 [56] phi from menu::@53 to menu::@8 [phi:menu::@53->menu::@8] + //SEG94 [56] phi from menu::@53 to menu::@8 [phi:menu::@53->menu::@8] b8_from_b53: jmp b8 - //SEG94 menu::@8 + //SEG95 menu::@8 b8: - //SEG95 [57] call keyboard_key_pressed - //SEG96 [211] phi from menu::@8 to keyboard_key_pressed [phi:menu::@8->keyboard_key_pressed] + //SEG96 [57] call keyboard_key_pressed + //SEG97 [211] phi from menu::@8 to keyboard_key_pressed [phi:menu::@8->keyboard_key_pressed] keyboard_key_pressed_from_b8: - //SEG97 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_4#0 [phi:menu::@8->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG98 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_4#0 [phi:menu::@8->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_4 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG98 [58] (byte) keyboard_key_pressed::return#26 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG99 [58] (byte) keyboard_key_pressed::return#26 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_26 jmp b55 - //SEG99 menu::@55 + //SEG100 menu::@55 b55: - //SEG100 [59] (byte~) menu::$41 ← (byte) keyboard_key_pressed::return#26 -- vbuz1=vbuz2 + //SEG101 [59] (byte~) menu::$41 ← (byte) keyboard_key_pressed::return#26 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_26 sta _41 - //SEG101 [60] if((byte~) menu::$41==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@9 -- vbuz1_eq_0_then_la1 + //SEG102 [60] if((byte~) menu::$41==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@9 -- vbuz1_eq_0_then_la1 lda _41 cmp #0 beq b9_from_b55 - //SEG102 [61] phi from menu::@55 to menu::@28 [phi:menu::@55->menu::@28] + //SEG103 [61] phi from menu::@55 to menu::@28 [phi:menu::@55->menu::@28] b28_from_b55: jmp b28 - //SEG103 menu::@28 + //SEG104 menu::@28 b28: - //SEG104 [62] call mode_stdbitmap + //SEG105 [62] call mode_stdbitmap jsr mode_stdbitmap jmp breturn - //SEG105 [63] phi from menu::@55 to menu::@9 [phi:menu::@55->menu::@9] + //SEG106 [63] phi from menu::@55 to menu::@9 [phi:menu::@55->menu::@9] b9_from_b55: jmp b9 - //SEG106 menu::@9 + //SEG107 menu::@9 b9: - //SEG107 [64] call keyboard_key_pressed - //SEG108 [211] phi from menu::@9 to keyboard_key_pressed [phi:menu::@9->keyboard_key_pressed] + //SEG108 [64] call keyboard_key_pressed + //SEG109 [211] phi from menu::@9 to keyboard_key_pressed [phi:menu::@9->keyboard_key_pressed] keyboard_key_pressed_from_b9: - //SEG109 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_6#0 [phi:menu::@9->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG110 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_6#0 [phi:menu::@9->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_6 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG110 [65] (byte) keyboard_key_pressed::return#27 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG111 [65] (byte) keyboard_key_pressed::return#27 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_27 jmp b57 - //SEG111 menu::@57 + //SEG112 menu::@57 b57: - //SEG112 [66] (byte~) menu::$45 ← (byte) keyboard_key_pressed::return#27 -- vbuz1=vbuz2 + //SEG113 [66] (byte~) menu::$45 ← (byte) keyboard_key_pressed::return#27 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_27 sta _45 - //SEG113 [67] if((byte~) menu::$45==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@10 -- vbuz1_eq_0_then_la1 + //SEG114 [67] if((byte~) menu::$45==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@10 -- vbuz1_eq_0_then_la1 lda _45 cmp #0 beq b10_from_b57 - //SEG114 [68] phi from menu::@57 to menu::@30 [phi:menu::@57->menu::@30] + //SEG115 [68] phi from menu::@57 to menu::@30 [phi:menu::@57->menu::@30] b30_from_b57: jmp b30 - //SEG115 menu::@30 + //SEG116 menu::@30 b30: - //SEG116 [69] call mode_hicolstdchar + //SEG117 [69] call mode_hicolstdchar jsr mode_hicolstdchar jmp breturn - //SEG117 [70] phi from menu::@57 to menu::@10 [phi:menu::@57->menu::@10] + //SEG118 [70] phi from menu::@57 to menu::@10 [phi:menu::@57->menu::@10] b10_from_b57: jmp b10 - //SEG118 menu::@10 + //SEG119 menu::@10 b10: - //SEG119 [71] call keyboard_key_pressed - //SEG120 [211] phi from menu::@10 to keyboard_key_pressed [phi:menu::@10->keyboard_key_pressed] + //SEG120 [71] call keyboard_key_pressed + //SEG121 [211] phi from menu::@10 to keyboard_key_pressed [phi:menu::@10->keyboard_key_pressed] keyboard_key_pressed_from_b10: - //SEG121 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_7#0 [phi:menu::@10->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG122 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_7#0 [phi:menu::@10->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_7 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG122 [72] (byte) keyboard_key_pressed::return#28 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG123 [72] (byte) keyboard_key_pressed::return#28 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_28 jmp b59 - //SEG123 menu::@59 + //SEG124 menu::@59 b59: - //SEG124 [73] (byte~) menu::$49 ← (byte) keyboard_key_pressed::return#28 -- vbuz1=vbuz2 + //SEG125 [73] (byte~) menu::$49 ← (byte) keyboard_key_pressed::return#28 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_28 sta _49 - //SEG125 [74] if((byte~) menu::$49==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@11 -- vbuz1_eq_0_then_la1 + //SEG126 [74] if((byte~) menu::$49==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@11 -- vbuz1_eq_0_then_la1 lda _49 cmp #0 beq b11_from_b59 - //SEG126 [75] phi from menu::@59 to menu::@32 [phi:menu::@59->menu::@32] + //SEG127 [75] phi from menu::@59 to menu::@32 [phi:menu::@59->menu::@32] b32_from_b59: jmp b32 - //SEG127 menu::@32 + //SEG128 menu::@32 b32: - //SEG128 [76] call mode_hicolecmchar + //SEG129 [76] call mode_hicolecmchar jsr mode_hicolecmchar jmp breturn - //SEG129 [77] phi from menu::@59 to menu::@11 [phi:menu::@59->menu::@11] + //SEG130 [77] phi from menu::@59 to menu::@11 [phi:menu::@59->menu::@11] b11_from_b59: jmp b11 - //SEG130 menu::@11 + //SEG131 menu::@11 b11: - //SEG131 [78] call keyboard_key_pressed - //SEG132 [211] phi from menu::@11 to keyboard_key_pressed [phi:menu::@11->keyboard_key_pressed] + //SEG132 [78] call keyboard_key_pressed + //SEG133 [211] phi from menu::@11 to keyboard_key_pressed [phi:menu::@11->keyboard_key_pressed] keyboard_key_pressed_from_b11: - //SEG133 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_8#0 [phi:menu::@11->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG134 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_8#0 [phi:menu::@11->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_8 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG134 [79] (byte) keyboard_key_pressed::return#29 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG135 [79] (byte) keyboard_key_pressed::return#29 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_29 jmp b61 - //SEG135 menu::@61 + //SEG136 menu::@61 b61: - //SEG136 [80] (byte~) menu::$53 ← (byte) keyboard_key_pressed::return#29 -- vbuz1=vbuz2 + //SEG137 [80] (byte~) menu::$53 ← (byte) keyboard_key_pressed::return#29 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_29 sta _53 - //SEG137 [81] if((byte~) menu::$53==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@12 -- vbuz1_eq_0_then_la1 + //SEG138 [81] if((byte~) menu::$53==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@12 -- vbuz1_eq_0_then_la1 lda _53 cmp #0 beq b12_from_b61 - //SEG138 [82] phi from menu::@61 to menu::@34 [phi:menu::@61->menu::@34] + //SEG139 [82] phi from menu::@61 to menu::@34 [phi:menu::@61->menu::@34] b34_from_b61: jmp b34 - //SEG139 menu::@34 + //SEG140 menu::@34 b34: - //SEG140 [83] call mode_hicolmcchar + //SEG141 [83] call mode_hicolmcchar jsr mode_hicolmcchar jmp breturn - //SEG141 [84] phi from menu::@61 to menu::@12 [phi:menu::@61->menu::@12] + //SEG142 [84] phi from menu::@61 to menu::@12 [phi:menu::@61->menu::@12] b12_from_b61: jmp b12 - //SEG142 menu::@12 + //SEG143 menu::@12 b12: - //SEG143 [85] call keyboard_key_pressed - //SEG144 [211] phi from menu::@12 to keyboard_key_pressed [phi:menu::@12->keyboard_key_pressed] + //SEG144 [85] call keyboard_key_pressed + //SEG145 [211] phi from menu::@12 to keyboard_key_pressed [phi:menu::@12->keyboard_key_pressed] keyboard_key_pressed_from_b12: - //SEG145 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_A#0 [phi:menu::@12->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG146 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_A#0 [phi:menu::@12->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_A sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG146 [86] (byte) keyboard_key_pressed::return#30 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG147 [86] (byte) keyboard_key_pressed::return#30 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_30 jmp b63 - //SEG147 menu::@63 + //SEG148 menu::@63 b63: - //SEG148 [87] (byte~) menu::$57 ← (byte) keyboard_key_pressed::return#30 -- vbuz1=vbuz2 + //SEG149 [87] (byte~) menu::$57 ← (byte) keyboard_key_pressed::return#30 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_30 sta _57 - //SEG149 [88] if((byte~) menu::$57==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@13 -- vbuz1_eq_0_then_la1 + //SEG150 [88] if((byte~) menu::$57==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@13 -- vbuz1_eq_0_then_la1 lda _57 cmp #0 beq b13_from_b63 - //SEG150 [89] phi from menu::@63 to menu::@36 [phi:menu::@63->menu::@36] + //SEG151 [89] phi from menu::@63 to menu::@36 [phi:menu::@63->menu::@36] b36_from_b63: jmp b36 - //SEG151 menu::@36 + //SEG152 menu::@36 b36: - //SEG152 [90] call mode_sixsfred2 + //SEG153 [90] call mode_sixsfred2 jsr mode_sixsfred2 jmp breturn - //SEG153 [91] phi from menu::@63 to menu::@13 [phi:menu::@63->menu::@13] + //SEG154 [91] phi from menu::@63 to menu::@13 [phi:menu::@63->menu::@13] b13_from_b63: jmp b13 - //SEG154 menu::@13 + //SEG155 menu::@13 b13: - //SEG155 [92] call keyboard_key_pressed - //SEG156 [211] phi from menu::@13 to keyboard_key_pressed [phi:menu::@13->keyboard_key_pressed] + //SEG156 [92] call keyboard_key_pressed + //SEG157 [211] phi from menu::@13 to keyboard_key_pressed [phi:menu::@13->keyboard_key_pressed] keyboard_key_pressed_from_b13: - //SEG157 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:menu::@13->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG158 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:menu::@13->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_B sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG158 [93] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG159 [93] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_10 jmp b65 - //SEG159 menu::@65 + //SEG160 menu::@65 b65: - //SEG160 [94] (byte~) menu::$61 ← (byte) keyboard_key_pressed::return#10 -- vbuz1=vbuz2 + //SEG161 [94] (byte~) menu::$61 ← (byte) keyboard_key_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_10 sta _61 - //SEG161 [95] if((byte~) menu::$61==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@14 -- vbuz1_eq_0_then_la1 + //SEG162 [95] if((byte~) menu::$61==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@14 -- vbuz1_eq_0_then_la1 lda _61 cmp #0 beq b14_from_b65 - //SEG162 [96] phi from menu::@65 to menu::@38 [phi:menu::@65->menu::@38] + //SEG163 [96] phi from menu::@65 to menu::@38 [phi:menu::@65->menu::@38] b38_from_b65: jmp b38 - //SEG163 menu::@38 + //SEG164 menu::@38 b38: - //SEG164 [97] call mode_twoplanebitmap + //SEG165 [97] call mode_twoplanebitmap jsr mode_twoplanebitmap jmp breturn - //SEG165 [98] phi from menu::@65 to menu::@14 [phi:menu::@65->menu::@14] + //SEG166 [98] phi from menu::@65 to menu::@14 [phi:menu::@65->menu::@14] b14_from_b65: jmp b14 - //SEG166 menu::@14 + //SEG167 menu::@14 b14: - //SEG167 [99] call keyboard_key_pressed - //SEG168 [211] phi from menu::@14 to keyboard_key_pressed [phi:menu::@14->keyboard_key_pressed] + //SEG168 [99] call keyboard_key_pressed + //SEG169 [211] phi from menu::@14 to keyboard_key_pressed [phi:menu::@14->keyboard_key_pressed] keyboard_key_pressed_from_b14: - //SEG169 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:menu::@14->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG170 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:menu::@14->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_C sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG170 [100] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG171 [100] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_11 jmp b67 - //SEG171 menu::@67 + //SEG172 menu::@67 b67: - //SEG172 [101] (byte~) menu::$65 ← (byte) keyboard_key_pressed::return#11 -- vbuz1=vbuz2 + //SEG173 [101] (byte~) menu::$65 ← (byte) keyboard_key_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_11 sta _65 - //SEG173 [102] if((byte~) menu::$65==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@15 -- vbuz1_eq_0_then_la1 + //SEG174 [102] if((byte~) menu::$65==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@15 -- vbuz1_eq_0_then_la1 lda _65 cmp #0 beq b15_from_b67 - //SEG174 [103] phi from menu::@67 to menu::@40 [phi:menu::@67->menu::@40] + //SEG175 [103] phi from menu::@67 to menu::@40 [phi:menu::@67->menu::@40] b40_from_b67: jmp b40 - //SEG175 menu::@40 + //SEG176 menu::@40 b40: - //SEG176 [104] call mode_sixsfred + //SEG177 [104] call mode_sixsfred jsr mode_sixsfred jmp breturn - //SEG177 [105] phi from menu::@67 to menu::@15 [phi:menu::@67->menu::@15] + //SEG178 [105] phi from menu::@67 to menu::@15 [phi:menu::@67->menu::@15] b15_from_b67: jmp b15 - //SEG178 menu::@15 + //SEG179 menu::@15 b15: - //SEG179 [106] call keyboard_key_pressed - //SEG180 [211] phi from menu::@15 to keyboard_key_pressed [phi:menu::@15->keyboard_key_pressed] + //SEG180 [106] call keyboard_key_pressed + //SEG181 [211] phi from menu::@15 to keyboard_key_pressed [phi:menu::@15->keyboard_key_pressed] keyboard_key_pressed_from_b15: - //SEG181 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_D#0 [phi:menu::@15->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG182 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_D#0 [phi:menu::@15->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_D sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG182 [107] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG183 [107] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_12 jmp b69 - //SEG183 menu::@69 + //SEG184 menu::@69 b69: - //SEG184 [108] (byte~) menu::$69 ← (byte) keyboard_key_pressed::return#12 -- vbuz1=vbuz2 + //SEG185 [108] (byte~) menu::$69 ← (byte) keyboard_key_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_12 sta _69 - //SEG185 [109] if((byte~) menu::$69==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@16 -- vbuz1_eq_0_then_la1 + //SEG186 [109] if((byte~) menu::$69==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@16 -- vbuz1_eq_0_then_la1 lda _69 cmp #0 beq b16_from_b69 - //SEG186 [110] phi from menu::@69 to menu::@42 [phi:menu::@69->menu::@42] + //SEG187 [110] phi from menu::@69 to menu::@42 [phi:menu::@69->menu::@42] b42_from_b69: jmp b42 - //SEG187 menu::@42 + //SEG188 menu::@42 b42: - //SEG188 [111] call mode_8bpppixelcell + //SEG189 [111] call mode_8bpppixelcell jsr mode_8bpppixelcell jmp breturn - //SEG189 [112] phi from menu::@69 to menu::@16 [phi:menu::@69->menu::@16] + //SEG190 [112] phi from menu::@69 to menu::@16 [phi:menu::@69->menu::@16] b16_from_b69: jmp b16 - //SEG190 menu::@16 + //SEG191 menu::@16 b16: - //SEG191 [113] call keyboard_key_pressed - //SEG192 [211] phi from menu::@16 to keyboard_key_pressed [phi:menu::@16->keyboard_key_pressed] + //SEG192 [113] call keyboard_key_pressed + //SEG193 [211] phi from menu::@16 to keyboard_key_pressed [phi:menu::@16->keyboard_key_pressed] keyboard_key_pressed_from_b16: - //SEG193 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_E#0 [phi:menu::@16->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG194 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_E#0 [phi:menu::@16->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_E sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG194 [114] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG195 [114] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_13 jmp b71 - //SEG195 menu::@71 + //SEG196 menu::@71 b71: - //SEG196 [115] (byte~) menu::$73 ← (byte) keyboard_key_pressed::return#13 -- vbuz1=vbuz2 + //SEG197 [115] (byte~) menu::$73 ← (byte) keyboard_key_pressed::return#13 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_13 sta _73 - //SEG197 [116] if((byte~) menu::$73==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuz1_eq_0_then_la1 + //SEG198 [116] if((byte~) menu::$73==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuz1_eq_0_then_la1 lda _73 cmp #0 beq b4_from_b71 - //SEG198 [117] phi from menu::@71 to menu::@44 [phi:menu::@71->menu::@44] + //SEG199 [117] phi from menu::@71 to menu::@44 [phi:menu::@71->menu::@44] b44_from_b71: jmp b44 - //SEG199 menu::@44 + //SEG200 menu::@44 b44: - //SEG200 [118] call mode_8bppchunkybmm + //SEG201 [118] call mode_8bppchunkybmm jsr mode_8bppchunkybmm jmp breturn } -//SEG201 mode_8bppchunkybmm +//SEG202 mode_8bppchunkybmm // Chunky 8bpp Bitmap Mode (BMM = 0, ECM/MCM/HICOL/LINEAR/CHUNK/COLDIS = 1) // Resolution: 320x200 // Linear Adressing @@ -13265,111 +13266,111 @@ mode_8bppchunkybmm: { .label x = 7 .label gfxbCpuBank = 9 .label y = 6 - //SEG202 [119] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG203 [119] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF sta DTV_CONTROL - //SEG203 [120] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG204 [120] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG204 [121] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG205 [121] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG205 [122] *((const byte*) DTV_PLANEB_START_LO#0) ← <<(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG206 [122] *((const byte*) DTV_PLANEB_START_LO#0) ← <<(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #PLANEB&$ffff sta DTV_PLANEB_START_LO - //SEG206 [123] *((const byte*) DTV_PLANEB_START_MI#0) ← ><(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG207 [123] *((const byte*) DTV_PLANEB_START_MI#0) ← ><(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_MI - //SEG207 [124] *((const byte*) DTV_PLANEB_START_HI#0) ← <>(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG208 [124] *((const byte*) DTV_PLANEB_START_HI#0) ← <>(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #PLANEB>>$10 sta DTV_PLANEB_START_HI - //SEG208 [125] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG209 [125] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta DTV_PLANEB_STEP - //SEG209 [126] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG210 [126] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG210 [127] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG211 [127] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG211 [128] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG212 [128] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG212 [129] phi from mode_8bppchunkybmm to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1] + //SEG213 [129] phi from mode_8bppchunkybmm to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1] b1_from_mode_8bppchunkybmm: - //SEG213 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1#0] -- vbuz1=vbuc1 + //SEG214 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG214 [129] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1] + //SEG215 [129] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1] b1_from_b1: - //SEG215 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte) mode_8bppchunkybmm::i#1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1#0] -- register_copy + //SEG216 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte) mode_8bppchunkybmm::i#1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1#0] -- register_copy jmp b1 - //SEG216 mode_8bppchunkybmm::@1 + //SEG217 mode_8bppchunkybmm::@1 b1: - //SEG217 [130] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bppchunkybmm::i#2) ← (byte) mode_8bppchunkybmm::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG218 [130] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bppchunkybmm::i#2) ← (byte) mode_8bppchunkybmm::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta DTV_PALETTE,y - //SEG218 [131] (byte) mode_8bppchunkybmm::i#1 ← ++ (byte) mode_8bppchunkybmm::i#2 -- vbuz1=_inc_vbuz1 + //SEG219 [131] (byte) mode_8bppchunkybmm::i#1 ← ++ (byte) mode_8bppchunkybmm::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG219 [132] if((byte) mode_8bppchunkybmm::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bppchunkybmm::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG220 [132] if((byte) mode_8bppchunkybmm::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bppchunkybmm::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 - //SEG220 [133] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@5 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@5] + //SEG221 [133] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@5 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@5] b5_from_b1: jmp b5 - //SEG221 mode_8bppchunkybmm::@5 + //SEG222 mode_8bppchunkybmm::@5 b5: - //SEG222 [134] call dtvSetCpuBankSegment1 - //SEG223 [223] phi from mode_8bppchunkybmm::@5 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1] + //SEG223 [134] call dtvSetCpuBankSegment1 + //SEG224 [223] phi from mode_8bppchunkybmm::@5 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b5: - //SEG224 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG225 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #PLANEB/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 - //SEG225 [135] phi from mode_8bppchunkybmm::@5 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2] + //SEG226 [135] phi from mode_8bppchunkybmm::@5 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2] b2_from_b5: - //SEG226 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = ++((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#0] -- vbuz1=vbuc1 + //SEG227 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = ++((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#0] -- vbuz1=vbuc1 lda #PLANEB/$4000+1 sta gfxbCpuBank - //SEG227 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#1] -- vbuz1=vbuc1 + //SEG228 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG228 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#2] -- pbuz1=pbuc1 + //SEG229 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b2 - //SEG229 [135] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2] + //SEG230 [135] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2] b2_from_b7: - //SEG230 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#0] -- register_copy - //SEG231 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte) mode_8bppchunkybmm::y#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#1] -- register_copy - //SEG232 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#2] -- register_copy + //SEG231 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#0] -- register_copy + //SEG232 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte) mode_8bppchunkybmm::y#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#1] -- register_copy + //SEG233 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#2] -- register_copy jmp b2 - //SEG233 mode_8bppchunkybmm::@2 + //SEG234 mode_8bppchunkybmm::@2 b2: - //SEG234 [136] phi from mode_8bppchunkybmm::@2 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3] + //SEG235 [136] phi from mode_8bppchunkybmm::@2 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3] b3_from_b2: - //SEG235 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#7 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#0] -- register_copy - //SEG236 [136] phi (word) mode_8bppchunkybmm::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#1] -- vwuz1=vbuc1 + //SEG236 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#7 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#0] -- register_copy + //SEG237 [136] phi (word) mode_8bppchunkybmm::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#1] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 - //SEG237 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#5 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#2] -- register_copy + //SEG238 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#5 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#2] -- register_copy jmp b3 - //SEG238 [136] phi from mode_8bppchunkybmm::@4 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3] + //SEG239 [136] phi from mode_8bppchunkybmm::@4 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3] b3_from_b4: - //SEG239 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#0] -- register_copy - //SEG240 [136] phi (word) mode_8bppchunkybmm::x#2 = (word) mode_8bppchunkybmm::x#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#1] -- register_copy - //SEG241 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#2] -- register_copy + //SEG240 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#0] -- register_copy + //SEG241 [136] phi (word) mode_8bppchunkybmm::x#2 = (word) mode_8bppchunkybmm::x#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#1] -- register_copy + //SEG242 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#2] -- register_copy jmp b3 - //SEG242 mode_8bppchunkybmm::@3 + //SEG243 mode_8bppchunkybmm::@3 b3: - //SEG243 [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word/dword/signed dword) 32768) goto mode_8bppchunkybmm::@4 -- pbuz1_neq_vwuc1_then_la1 + //SEG244 [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word/dword/signed dword) 32768) goto mode_8bppchunkybmm::@4 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b4_from_b3 @@ -13377,38 +13378,38 @@ mode_8bppchunkybmm: { cmp #<$8000 bne b4_from_b3 jmp b6 - //SEG244 mode_8bppchunkybmm::@6 + //SEG245 mode_8bppchunkybmm::@6 b6: - //SEG245 [138] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuz1=vbuz2 + //SEG246 [138] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuz1=vbuz2 lda gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx - //SEG246 [139] call dtvSetCpuBankSegment1 - //SEG247 [223] phi from mode_8bppchunkybmm::@6 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1] + //SEG247 [139] call dtvSetCpuBankSegment1 + //SEG248 [223] phi from mode_8bppchunkybmm::@6 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b6: - //SEG248 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1#0] -- register_copy + //SEG249 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b10 - //SEG249 mode_8bppchunkybmm::@10 + //SEG250 mode_8bppchunkybmm::@10 b10: - //SEG250 [140] (byte) mode_8bppchunkybmm::gfxbCpuBank#2 ← ++ (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuz1=_inc_vbuz1 + //SEG251 [140] (byte) mode_8bppchunkybmm::gfxbCpuBank#2 ← ++ (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuz1=_inc_vbuz1 inc gfxbCpuBank - //SEG251 [141] phi from mode_8bppchunkybmm::@10 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4] + //SEG252 [141] phi from mode_8bppchunkybmm::@10 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4] b4_from_b10: - //SEG252 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#2 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#0] -- register_copy - //SEG253 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#1] -- pbuz1=pbuc1 + //SEG253 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#2 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#0] -- register_copy + //SEG254 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b4 - //SEG254 [141] phi from mode_8bppchunkybmm::@3 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4] + //SEG255 [141] phi from mode_8bppchunkybmm::@3 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4] b4_from_b3: - //SEG255 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#0] -- register_copy - //SEG256 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = (byte*) mode_8bppchunkybmm::gfxb#3 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#1] -- register_copy + //SEG256 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#0] -- register_copy + //SEG257 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = (byte*) mode_8bppchunkybmm::gfxb#3 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#1] -- register_copy jmp b4 - //SEG257 mode_8bppchunkybmm::@4 + //SEG258 mode_8bppchunkybmm::@4 b4: - //SEG258 [142] (word~) mode_8bppchunkybmm::$23 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG259 [142] (word~) mode_8bppchunkybmm::$23 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -13416,24 +13417,24 @@ mode_8bppchunkybmm: { lda #0 adc x+1 sta _23+1 - //SEG259 [143] (byte) mode_8bppchunkybmm::c#0 ← ((byte)) (word~) mode_8bppchunkybmm::$23 -- vbuz1=_byte_vwuz2 + //SEG260 [143] (byte) mode_8bppchunkybmm::c#0 ← ((byte)) (word~) mode_8bppchunkybmm::$23 -- vbuz1=_byte_vwuz2 lda _23 sta c - //SEG260 [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 -- _deref_pbuz1=vbuz2 + //SEG261 [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (gfxb),y - //SEG261 [145] (byte*) mode_8bppchunkybmm::gfxb#1 ← ++ (byte*) mode_8bppchunkybmm::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG262 [145] (byte*) mode_8bppchunkybmm::gfxb#1 ← ++ (byte*) mode_8bppchunkybmm::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG262 [146] (word) mode_8bppchunkybmm::x#1 ← ++ (word) mode_8bppchunkybmm::x#2 -- vwuz1=_inc_vwuz1 + //SEG263 [146] (word) mode_8bppchunkybmm::x#1 ← ++ (word) mode_8bppchunkybmm::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG263 [147] if((word) mode_8bppchunkybmm::x#1!=(word/signed word/dword/signed dword) 320) goto mode_8bppchunkybmm::@3 -- vwuz1_neq_vwuc1_then_la1 + //SEG264 [147] if((word) mode_8bppchunkybmm::x#1!=(word/signed word/dword/signed dword) 320) goto mode_8bppchunkybmm::@3 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b3_from_b4 @@ -13441,45 +13442,45 @@ mode_8bppchunkybmm: { cmp #<$140 bne b3_from_b4 jmp b7 - //SEG264 mode_8bppchunkybmm::@7 + //SEG265 mode_8bppchunkybmm::@7 b7: - //SEG265 [148] (byte) mode_8bppchunkybmm::y#1 ← ++ (byte) mode_8bppchunkybmm::y#6 -- vbuz1=_inc_vbuz1 + //SEG266 [148] (byte) mode_8bppchunkybmm::y#1 ← ++ (byte) mode_8bppchunkybmm::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG266 [149] if((byte) mode_8bppchunkybmm::y#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_8bppchunkybmm::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG267 [149] if((byte) mode_8bppchunkybmm::y#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_8bppchunkybmm::@2 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$c8 bne b2_from_b7 - //SEG267 [150] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@8] + //SEG268 [150] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@8] b8_from_b7: jmp b8 - //SEG268 mode_8bppchunkybmm::@8 + //SEG269 mode_8bppchunkybmm::@8 b8: - //SEG269 [151] call dtvSetCpuBankSegment1 - //SEG270 [223] phi from mode_8bppchunkybmm::@8 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1] + //SEG270 [151] call dtvSetCpuBankSegment1 + //SEG271 [223] phi from mode_8bppchunkybmm::@8 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //SEG271 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG272 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$4000/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 - //SEG272 [152] phi from mode_8bppchunkybmm::@8 to mode_8bppchunkybmm::@11 [phi:mode_8bppchunkybmm::@8->mode_8bppchunkybmm::@11] + //SEG273 [152] phi from mode_8bppchunkybmm::@8 to mode_8bppchunkybmm::@11 [phi:mode_8bppchunkybmm::@8->mode_8bppchunkybmm::@11] b11_from_b8: jmp b11 - //SEG273 mode_8bppchunkybmm::@11 + //SEG274 mode_8bppchunkybmm::@11 b11: - //SEG274 [153] call mode_ctrl - //SEG275 [155] phi from mode_8bppchunkybmm::@11 to mode_ctrl [phi:mode_8bppchunkybmm::@11->mode_ctrl] + //SEG275 [153] call mode_ctrl + //SEG276 [155] phi from mode_8bppchunkybmm::@11 to mode_ctrl [phi:mode_8bppchunkybmm::@11->mode_ctrl] mode_ctrl_from_b11: - //SEG276 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 [phi:mode_8bppchunkybmm::@11->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG277 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 [phi:mode_8bppchunkybmm::@11->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF sta dtv_control jsr mode_ctrl jmp breturn - //SEG277 mode_8bppchunkybmm::@return + //SEG278 mode_8bppchunkybmm::@return breturn: - //SEG278 [154] return + //SEG279 [154] return rts } -//SEG279 mode_ctrl +//SEG280 mode_ctrl // Allow the user to control the DTV graphics using different keys mode_ctrl: { .label _1 = $bd @@ -13491,318 +13492,318 @@ mode_ctrl: { .label _24 = $c9 .label _28 = $cb .label ctrl = $d - //SEG280 [156] phi from mode_ctrl mode_ctrl::@30 to mode_ctrl::@1 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1] + //SEG281 [156] phi from mode_ctrl mode_ctrl::@30 to mode_ctrl::@1 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1] b1_from_mode_ctrl: b1_from_b30: - //SEG281 [156] phi (byte) dtv_control#114 = (byte) dtv_control#145 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1#0] -- register_copy + //SEG282 [156] phi (byte) dtv_control#114 = (byte) dtv_control#145 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1#0] -- register_copy jmp b1 - //SEG282 [156] phi from mode_ctrl::@14 to mode_ctrl::@1 [phi:mode_ctrl::@14->mode_ctrl::@1] + //SEG283 [156] phi from mode_ctrl::@14 to mode_ctrl::@1 [phi:mode_ctrl::@14->mode_ctrl::@1] b1_from_b14: jmp b1 - //SEG283 mode_ctrl::@1 + //SEG284 mode_ctrl::@1 b1: jmp b4 - //SEG284 mode_ctrl::@4 + //SEG285 mode_ctrl::@4 b4: - //SEG285 [157] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG286 [157] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG286 [158] phi from mode_ctrl::@4 to mode_ctrl::@6 [phi:mode_ctrl::@4->mode_ctrl::@6] + //SEG287 [158] phi from mode_ctrl::@4 to mode_ctrl::@6 [phi:mode_ctrl::@4->mode_ctrl::@6] b6_from_b4: jmp b6 - //SEG287 mode_ctrl::@6 + //SEG288 mode_ctrl::@6 b6: - //SEG288 [159] call keyboard_key_pressed - //SEG289 [211] phi from mode_ctrl::@6 to keyboard_key_pressed [phi:mode_ctrl::@6->keyboard_key_pressed] + //SEG289 [159] call keyboard_key_pressed + //SEG290 [211] phi from mode_ctrl::@6 to keyboard_key_pressed [phi:mode_ctrl::@6->keyboard_key_pressed] keyboard_key_pressed_from_b6: - //SEG290 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_SPACE#0 [phi:mode_ctrl::@6->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG291 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_SPACE#0 [phi:mode_ctrl::@6->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG291 [160] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG292 [160] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_14 jmp b32 - //SEG292 mode_ctrl::@32 + //SEG293 mode_ctrl::@32 b32: - //SEG293 [161] (byte~) mode_ctrl::$1 ← (byte) keyboard_key_pressed::return#14 -- vbuz1=vbuz2 + //SEG294 [161] (byte~) mode_ctrl::$1 ← (byte) keyboard_key_pressed::return#14 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_14 sta _1 - //SEG294 [162] if((byte~) mode_ctrl::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@7 -- vbuz1_eq_0_then_la1 + //SEG295 [162] if((byte~) mode_ctrl::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@7 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b7 jmp breturn - //SEG295 mode_ctrl::@return + //SEG296 mode_ctrl::@return breturn: - //SEG296 [163] return + //SEG297 [163] return rts - //SEG297 mode_ctrl::@7 + //SEG298 mode_ctrl::@7 b7: - //SEG298 [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuz1=vbuz2 + //SEG299 [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuz1=vbuz2 lda dtv_control sta ctrl - //SEG299 [165] call keyboard_key_pressed - //SEG300 [211] phi from mode_ctrl::@7 to keyboard_key_pressed [phi:mode_ctrl::@7->keyboard_key_pressed] + //SEG300 [165] call keyboard_key_pressed + //SEG301 [211] phi from mode_ctrl::@7 to keyboard_key_pressed [phi:mode_ctrl::@7->keyboard_key_pressed] keyboard_key_pressed_from_b7: - //SEG301 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_L#0 [phi:mode_ctrl::@7->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG302 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_L#0 [phi:mode_ctrl::@7->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_L sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG302 [166] (byte) keyboard_key_pressed::return#15 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG303 [166] (byte) keyboard_key_pressed::return#15 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_15 jmp b33 - //SEG303 mode_ctrl::@33 + //SEG304 mode_ctrl::@33 b33: - //SEG304 [167] (byte~) mode_ctrl::$4 ← (byte) keyboard_key_pressed::return#15 -- vbuz1=vbuz2 + //SEG305 [167] (byte~) mode_ctrl::$4 ← (byte) keyboard_key_pressed::return#15 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_15 sta _4 - //SEG305 [168] if((byte~) mode_ctrl::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@8 -- vbuz1_eq_0_then_la1 + //SEG306 [168] if((byte~) mode_ctrl::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@8 -- vbuz1_eq_0_then_la1 lda _4 cmp #0 beq b8_from_b33 jmp b23 - //SEG306 mode_ctrl::@23 + //SEG307 mode_ctrl::@23 b23: - //SEG307 [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG308 [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_LINEAR ora ctrl sta ctrl - //SEG308 [170] phi from mode_ctrl::@23 mode_ctrl::@33 to mode_ctrl::@8 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8] + //SEG309 [170] phi from mode_ctrl::@23 mode_ctrl::@33 to mode_ctrl::@8 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8] b8_from_b23: b8_from_b33: - //SEG309 [170] phi (byte) mode_ctrl::ctrl#17 = (byte) mode_ctrl::ctrl#1 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8#0] -- register_copy + //SEG310 [170] phi (byte) mode_ctrl::ctrl#17 = (byte) mode_ctrl::ctrl#1 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8#0] -- register_copy jmp b8 - //SEG310 mode_ctrl::@8 + //SEG311 mode_ctrl::@8 b8: - //SEG311 [171] call keyboard_key_pressed - //SEG312 [211] phi from mode_ctrl::@8 to keyboard_key_pressed [phi:mode_ctrl::@8->keyboard_key_pressed] + //SEG312 [171] call keyboard_key_pressed + //SEG313 [211] phi from mode_ctrl::@8 to keyboard_key_pressed [phi:mode_ctrl::@8->keyboard_key_pressed] keyboard_key_pressed_from_b8: - //SEG313 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_H#0 [phi:mode_ctrl::@8->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG314 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_H#0 [phi:mode_ctrl::@8->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_H sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG314 [172] (byte) keyboard_key_pressed::return#16 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG315 [172] (byte) keyboard_key_pressed::return#16 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_16 jmp b34 - //SEG315 mode_ctrl::@34 + //SEG316 mode_ctrl::@34 b34: - //SEG316 [173] (byte~) mode_ctrl::$8 ← (byte) keyboard_key_pressed::return#16 -- vbuz1=vbuz2 + //SEG317 [173] (byte~) mode_ctrl::$8 ← (byte) keyboard_key_pressed::return#16 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_16 sta _8 - //SEG317 [174] if((byte~) mode_ctrl::$8==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@9 -- vbuz1_eq_0_then_la1 + //SEG318 [174] if((byte~) mode_ctrl::$8==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@9 -- vbuz1_eq_0_then_la1 lda _8 cmp #0 beq b9_from_b34 jmp b24 - //SEG318 mode_ctrl::@24 + //SEG319 mode_ctrl::@24 b24: - //SEG319 [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG320 [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_HIGHCOLOR ora ctrl sta ctrl - //SEG320 [176] phi from mode_ctrl::@24 mode_ctrl::@34 to mode_ctrl::@9 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9] + //SEG321 [176] phi from mode_ctrl::@24 mode_ctrl::@34 to mode_ctrl::@9 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9] b9_from_b24: b9_from_b34: - //SEG321 [176] phi (byte) mode_ctrl::ctrl#10 = (byte) mode_ctrl::ctrl#2 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9#0] -- register_copy + //SEG322 [176] phi (byte) mode_ctrl::ctrl#10 = (byte) mode_ctrl::ctrl#2 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9#0] -- register_copy jmp b9 - //SEG322 mode_ctrl::@9 + //SEG323 mode_ctrl::@9 b9: - //SEG323 [177] call keyboard_key_pressed - //SEG324 [211] phi from mode_ctrl::@9 to keyboard_key_pressed [phi:mode_ctrl::@9->keyboard_key_pressed] + //SEG324 [177] call keyboard_key_pressed + //SEG325 [211] phi from mode_ctrl::@9 to keyboard_key_pressed [phi:mode_ctrl::@9->keyboard_key_pressed] keyboard_key_pressed_from_b9: - //SEG325 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_O#0 [phi:mode_ctrl::@9->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG326 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_O#0 [phi:mode_ctrl::@9->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_O sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG326 [178] (byte) keyboard_key_pressed::return#17 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG327 [178] (byte) keyboard_key_pressed::return#17 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_17 jmp b35 - //SEG327 mode_ctrl::@35 + //SEG328 mode_ctrl::@35 b35: - //SEG328 [179] (byte~) mode_ctrl::$12 ← (byte) keyboard_key_pressed::return#17 -- vbuz1=vbuz2 + //SEG329 [179] (byte~) mode_ctrl::$12 ← (byte) keyboard_key_pressed::return#17 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_17 sta _12 - //SEG329 [180] if((byte~) mode_ctrl::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@10 -- vbuz1_eq_0_then_la1 + //SEG330 [180] if((byte~) mode_ctrl::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@10 -- vbuz1_eq_0_then_la1 lda _12 cmp #0 beq b10_from_b35 jmp b25 - //SEG330 mode_ctrl::@25 + //SEG331 mode_ctrl::@25 b25: - //SEG331 [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG332 [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_OVERSCAN ora ctrl sta ctrl - //SEG332 [182] phi from mode_ctrl::@25 mode_ctrl::@35 to mode_ctrl::@10 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10] + //SEG333 [182] phi from mode_ctrl::@25 mode_ctrl::@35 to mode_ctrl::@10 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10] b10_from_b25: b10_from_b35: - //SEG333 [182] phi (byte) mode_ctrl::ctrl#11 = (byte) mode_ctrl::ctrl#3 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10#0] -- register_copy + //SEG334 [182] phi (byte) mode_ctrl::ctrl#11 = (byte) mode_ctrl::ctrl#3 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10#0] -- register_copy jmp b10 - //SEG334 mode_ctrl::@10 + //SEG335 mode_ctrl::@10 b10: - //SEG335 [183] call keyboard_key_pressed - //SEG336 [211] phi from mode_ctrl::@10 to keyboard_key_pressed [phi:mode_ctrl::@10->keyboard_key_pressed] + //SEG336 [183] call keyboard_key_pressed + //SEG337 [211] phi from mode_ctrl::@10 to keyboard_key_pressed [phi:mode_ctrl::@10->keyboard_key_pressed] keyboard_key_pressed_from_b10: - //SEG337 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:mode_ctrl::@10->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG338 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:mode_ctrl::@10->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_B sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG338 [184] (byte) keyboard_key_pressed::return#18 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG339 [184] (byte) keyboard_key_pressed::return#18 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_18 jmp b36 - //SEG339 mode_ctrl::@36 + //SEG340 mode_ctrl::@36 b36: - //SEG340 [185] (byte~) mode_ctrl::$16 ← (byte) keyboard_key_pressed::return#18 -- vbuz1=vbuz2 + //SEG341 [185] (byte~) mode_ctrl::$16 ← (byte) keyboard_key_pressed::return#18 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_18 sta _16 - //SEG341 [186] if((byte~) mode_ctrl::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@11 -- vbuz1_eq_0_then_la1 + //SEG342 [186] if((byte~) mode_ctrl::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@11 -- vbuz1_eq_0_then_la1 lda _16 cmp #0 beq b11_from_b36 jmp b26 - //SEG342 mode_ctrl::@26 + //SEG343 mode_ctrl::@26 b26: - //SEG343 [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG344 [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_BORDER_OFF ora ctrl sta ctrl - //SEG344 [188] phi from mode_ctrl::@26 mode_ctrl::@36 to mode_ctrl::@11 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11] + //SEG345 [188] phi from mode_ctrl::@26 mode_ctrl::@36 to mode_ctrl::@11 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11] b11_from_b26: b11_from_b36: - //SEG345 [188] phi (byte) mode_ctrl::ctrl#12 = (byte) mode_ctrl::ctrl#4 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11#0] -- register_copy + //SEG346 [188] phi (byte) mode_ctrl::ctrl#12 = (byte) mode_ctrl::ctrl#4 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11#0] -- register_copy jmp b11 - //SEG346 mode_ctrl::@11 + //SEG347 mode_ctrl::@11 b11: - //SEG347 [189] call keyboard_key_pressed - //SEG348 [211] phi from mode_ctrl::@11 to keyboard_key_pressed [phi:mode_ctrl::@11->keyboard_key_pressed] + //SEG348 [189] call keyboard_key_pressed + //SEG349 [211] phi from mode_ctrl::@11 to keyboard_key_pressed [phi:mode_ctrl::@11->keyboard_key_pressed] keyboard_key_pressed_from_b11: - //SEG349 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_U#0 [phi:mode_ctrl::@11->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG350 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_U#0 [phi:mode_ctrl::@11->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_U sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG350 [190] (byte) keyboard_key_pressed::return#19 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG351 [190] (byte) keyboard_key_pressed::return#19 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_19 jmp b37 - //SEG351 mode_ctrl::@37 + //SEG352 mode_ctrl::@37 b37: - //SEG352 [191] (byte~) mode_ctrl::$20 ← (byte) keyboard_key_pressed::return#19 -- vbuz1=vbuz2 + //SEG353 [191] (byte~) mode_ctrl::$20 ← (byte) keyboard_key_pressed::return#19 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_19 sta _20 - //SEG353 [192] if((byte~) mode_ctrl::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@12 -- vbuz1_eq_0_then_la1 + //SEG354 [192] if((byte~) mode_ctrl::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@12 -- vbuz1_eq_0_then_la1 lda _20 cmp #0 beq b12_from_b37 jmp b27 - //SEG354 mode_ctrl::@27 + //SEG355 mode_ctrl::@27 b27: - //SEG355 [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG356 [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_CHUNKY ora ctrl sta ctrl - //SEG356 [194] phi from mode_ctrl::@27 mode_ctrl::@37 to mode_ctrl::@12 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12] + //SEG357 [194] phi from mode_ctrl::@27 mode_ctrl::@37 to mode_ctrl::@12 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12] b12_from_b27: b12_from_b37: - //SEG357 [194] phi (byte) mode_ctrl::ctrl#13 = (byte) mode_ctrl::ctrl#5 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12#0] -- register_copy + //SEG358 [194] phi (byte) mode_ctrl::ctrl#13 = (byte) mode_ctrl::ctrl#5 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12#0] -- register_copy jmp b12 - //SEG358 mode_ctrl::@12 + //SEG359 mode_ctrl::@12 b12: - //SEG359 [195] call keyboard_key_pressed - //SEG360 [211] phi from mode_ctrl::@12 to keyboard_key_pressed [phi:mode_ctrl::@12->keyboard_key_pressed] + //SEG360 [195] call keyboard_key_pressed + //SEG361 [211] phi from mode_ctrl::@12 to keyboard_key_pressed [phi:mode_ctrl::@12->keyboard_key_pressed] keyboard_key_pressed_from_b12: - //SEG361 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:mode_ctrl::@12->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG362 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:mode_ctrl::@12->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_C sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG362 [196] (byte) keyboard_key_pressed::return#20 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG363 [196] (byte) keyboard_key_pressed::return#20 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_20 jmp b38 - //SEG363 mode_ctrl::@38 + //SEG364 mode_ctrl::@38 b38: - //SEG364 [197] (byte~) mode_ctrl::$24 ← (byte) keyboard_key_pressed::return#20 -- vbuz1=vbuz2 + //SEG365 [197] (byte~) mode_ctrl::$24 ← (byte) keyboard_key_pressed::return#20 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_20 sta _24 - //SEG365 [198] if((byte~) mode_ctrl::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@13 -- vbuz1_eq_0_then_la1 + //SEG366 [198] if((byte~) mode_ctrl::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@13 -- vbuz1_eq_0_then_la1 lda _24 cmp #0 beq b13_from_b38 jmp b28 - //SEG366 mode_ctrl::@28 + //SEG367 mode_ctrl::@28 b28: - //SEG367 [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG368 [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF#0 -- vbuz1=vbuz1_bor_vbuc1 lda #DTV_COLORRAM_OFF ora ctrl sta ctrl - //SEG368 [200] phi from mode_ctrl::@28 mode_ctrl::@38 to mode_ctrl::@13 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13] + //SEG369 [200] phi from mode_ctrl::@28 mode_ctrl::@38 to mode_ctrl::@13 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13] b13_from_b28: b13_from_b38: - //SEG369 [200] phi (byte) mode_ctrl::ctrl#22 = (byte) mode_ctrl::ctrl#6 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13#0] -- register_copy + //SEG370 [200] phi (byte) mode_ctrl::ctrl#22 = (byte) mode_ctrl::ctrl#6 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13#0] -- register_copy jmp b13 - //SEG370 mode_ctrl::@13 + //SEG371 mode_ctrl::@13 b13: - //SEG371 [201] call keyboard_key_pressed - //SEG372 [211] phi from mode_ctrl::@13 to keyboard_key_pressed [phi:mode_ctrl::@13->keyboard_key_pressed] + //SEG372 [201] call keyboard_key_pressed + //SEG373 [211] phi from mode_ctrl::@13 to keyboard_key_pressed [phi:mode_ctrl::@13->keyboard_key_pressed] keyboard_key_pressed_from_b13: - //SEG373 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_0#0 [phi:mode_ctrl::@13->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG374 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_0#0 [phi:mode_ctrl::@13->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_0 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG374 [202] (byte) keyboard_key_pressed::return#21 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG375 [202] (byte) keyboard_key_pressed::return#21 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_21 jmp b39 - //SEG375 mode_ctrl::@39 + //SEG376 mode_ctrl::@39 b39: - //SEG376 [203] (byte~) mode_ctrl::$28 ← (byte) keyboard_key_pressed::return#21 -- vbuz1=vbuz2 + //SEG377 [203] (byte~) mode_ctrl::$28 ← (byte) keyboard_key_pressed::return#21 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_21 sta _28 - //SEG377 [204] if((byte~) mode_ctrl::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@46 -- vbuz1_eq_0_then_la1 + //SEG378 [204] if((byte~) mode_ctrl::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@46 -- vbuz1_eq_0_then_la1 lda _28 cmp #0 beq b46_from_b39 - //SEG378 [205] phi from mode_ctrl::@39 to mode_ctrl::@14 [phi:mode_ctrl::@39->mode_ctrl::@14] + //SEG379 [205] phi from mode_ctrl::@39 to mode_ctrl::@14 [phi:mode_ctrl::@39->mode_ctrl::@14] b14_from_b39: - //SEG379 [205] phi (byte) mode_ctrl::ctrl#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ctrl::@39->mode_ctrl::@14#0] -- vbuz1=vbuc1 + //SEG380 [205] phi (byte) mode_ctrl::ctrl#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ctrl::@39->mode_ctrl::@14#0] -- vbuz1=vbuc1 lda #0 sta ctrl jmp b14 - //SEG380 mode_ctrl::@14 + //SEG381 mode_ctrl::@14 b14: - //SEG381 [206] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuz1_eq_vbuz2_then_la1 + //SEG382 [206] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuz1_eq_vbuz2_then_la1 lda ctrl cmp dtv_control beq b1_from_b14 jmp b30 - //SEG382 mode_ctrl::@30 + //SEG383 mode_ctrl::@30 b30: - //SEG383 [207] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuz1=vbuz2 + //SEG384 [207] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuz1=vbuz2 lda ctrl sta dtv_control - //SEG384 [208] *((const byte*) DTV_CONTROL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuz1 + //SEG385 [208] *((const byte*) DTV_CONTROL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuz1 lda ctrl sta DTV_CONTROL - //SEG385 [209] *((const byte*) BORDERCOL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuz1 + //SEG386 [209] *((const byte*) BORDERCOL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuz1 lda ctrl sta BORDERCOL jmp b1_from_b30 - //SEG386 [210] phi from mode_ctrl::@39 to mode_ctrl::@46 [phi:mode_ctrl::@39->mode_ctrl::@46] + //SEG387 [210] phi from mode_ctrl::@39 to mode_ctrl::@46 [phi:mode_ctrl::@39->mode_ctrl::@46] b46_from_b39: jmp b46 - //SEG387 mode_ctrl::@46 + //SEG388 mode_ctrl::@46 b46: - //SEG388 [205] phi from mode_ctrl::@46 to mode_ctrl::@14 [phi:mode_ctrl::@46->mode_ctrl::@14] + //SEG389 [205] phi from mode_ctrl::@46 to mode_ctrl::@14 [phi:mode_ctrl::@46->mode_ctrl::@14] b14_from_b46: - //SEG389 [205] phi (byte) mode_ctrl::ctrl#14 = (byte) mode_ctrl::ctrl#22 [phi:mode_ctrl::@46->mode_ctrl::@14#0] -- register_copy + //SEG390 [205] phi (byte) mode_ctrl::ctrl#14 = (byte) mode_ctrl::ctrl#22 [phi:mode_ctrl::@46->mode_ctrl::@14#0] -- register_copy jmp b14 } -//SEG390 keyboard_key_pressed +//SEG391 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. @@ -13833,42 +13834,42 @@ keyboard_key_pressed: { .label return_28 = $ab .label return_29 = $ad .label return_30 = $af - //SEG391 [212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG392 [212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and key sta colidx - //SEG392 [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + //SEG393 [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda key lsr lsr lsr sta rowidx - //SEG393 [214] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuz1=vbuz2 + //SEG394 [214] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuz1=vbuz2 lda rowidx sta keyboard_matrix_read.rowid - //SEG394 [215] call keyboard_matrix_read + //SEG395 [215] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG395 [216] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG396 [216] (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 b2 - //SEG396 keyboard_key_pressed::@2 + //SEG397 keyboard_key_pressed::@2 b2: - //SEG397 [217] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG398 [217] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta _2 - //SEG398 [218] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG399 [218] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _2 ldy colidx and keyboard_matrix_col_bitmask,y sta return jmp breturn - //SEG399 keyboard_key_pressed::@return + //SEG400 keyboard_key_pressed::@return breturn: - //SEG400 [219] return + //SEG401 [219] return rts } -//SEG401 keyboard_matrix_read +//SEG402 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -13878,41 +13879,41 @@ keyboard_matrix_read: { .label return = $d2 .label rowid = $ce .label return_2 = $cf - //SEG402 [220] *((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 + //SEG403 [220] *((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 - //SEG403 [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG404 [221] (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 - //SEG404 keyboard_matrix_read::@return + //SEG405 keyboard_matrix_read::@return breturn: - //SEG405 [222] return + //SEG406 [222] return rts } -//SEG406 dtvSetCpuBankSegment1 +//SEG407 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff .label cpuBankIdx = $f - //SEG407 [224] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuz1 + //SEG408 [224] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuz1 lda cpuBankIdx sta cpuBank - //SEG408 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG409 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG409 dtvSetCpuBankSegment1::@return + //SEG410 dtvSetCpuBankSegment1::@return breturn: - //SEG410 [226] return + //SEG411 [226] return rts } -//SEG411 mode_8bpppixelcell +//SEG412 mode_8bpppixelcell // 8bpp Pixel Cell Mode (BMM/COLDIS = 0, ECM/MCM/HICOL/LINEAR/CHUNK = 1) // Pixel Cell Adressing // CharData[8]: (PlaneA[21:0]) @@ -13944,313 +13945,313 @@ mode_8bpppixelcell: { .label cr = $18 .label ch = $15 .label c = $1e - //SEG412 [227] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG413 [227] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY sta DTV_CONTROL - //SEG413 [228] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG414 [228] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG414 [229] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG415 [229] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG415 [230] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG416 [230] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG417 [231] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG417 [232] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG418 [232] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG418 [233] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG419 [233] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG419 [234] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG420 [234] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG420 [235] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG421 [235] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG421 [236] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG422 [236] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG423 [237] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG423 [238] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG424 [238] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG424 [239] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG425 [239] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_STEP - //SEG425 [240] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG426 [240] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG426 [241] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG427 [241] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG427 [242] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG428 [242] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG428 [243] phi from mode_8bpppixelcell to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1] + //SEG429 [243] phi from mode_8bpppixelcell to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1] b1_from_mode_8bpppixelcell: - //SEG429 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1#0] -- vbuz1=vbuc1 + //SEG430 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG430 [243] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1] + //SEG431 [243] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1] b1_from_b1: - //SEG431 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte) mode_8bpppixelcell::i#1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1#0] -- register_copy + //SEG432 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte) mode_8bpppixelcell::i#1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1#0] -- register_copy jmp b1 - //SEG432 mode_8bpppixelcell::@1 + //SEG433 mode_8bpppixelcell::@1 b1: - //SEG433 [244] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bpppixelcell::i#2) ← (byte) mode_8bpppixelcell::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG434 [244] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bpppixelcell::i#2) ← (byte) mode_8bpppixelcell::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta DTV_PALETTE,y - //SEG434 [245] (byte) mode_8bpppixelcell::i#1 ← ++ (byte) mode_8bpppixelcell::i#2 -- vbuz1=_inc_vbuz1 + //SEG435 [245] (byte) mode_8bpppixelcell::i#1 ← ++ (byte) mode_8bpppixelcell::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG435 [246] if((byte) mode_8bpppixelcell::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bpppixelcell::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG436 [246] if((byte) mode_8bpppixelcell::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bpppixelcell::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 - //SEG436 [247] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2] + //SEG437 [247] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2] b2_from_b1: - //SEG437 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (const byte*) mode_8bpppixelcell::PLANEA#0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#0] -- pbuz1=pbuc1 + //SEG438 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (const byte*) mode_8bpppixelcell::PLANEA#0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG438 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#1] -- vbuz1=vbuc1 + //SEG439 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b2 - //SEG439 [247] phi from mode_8bpppixelcell::@9 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2] + //SEG440 [247] phi from mode_8bpppixelcell::@9 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2] b2_from_b9: - //SEG440 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#0] -- register_copy - //SEG441 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte) mode_8bpppixelcell::ay#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#1] -- register_copy + //SEG441 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#0] -- register_copy + //SEG442 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte) mode_8bpppixelcell::ay#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#1] -- register_copy jmp b2 - //SEG442 mode_8bpppixelcell::@2 + //SEG443 mode_8bpppixelcell::@2 b2: - //SEG443 [248] phi from mode_8bpppixelcell::@2 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3] + //SEG444 [248] phi from mode_8bpppixelcell::@2 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3] b3_from_b2: - //SEG444 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#0] -- register_copy - //SEG445 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#1] -- vbuz1=vbuc1 + //SEG445 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#0] -- register_copy + //SEG446 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#1] -- vbuz1=vbuc1 lda #0 sta ax jmp b3 - //SEG446 [248] phi from mode_8bpppixelcell::@3 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3] + //SEG447 [248] phi from mode_8bpppixelcell::@3 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3] b3_from_b3: - //SEG447 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#0] -- register_copy - //SEG448 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte) mode_8bpppixelcell::ax#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#1] -- register_copy + //SEG448 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#0] -- register_copy + //SEG449 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte) mode_8bpppixelcell::ax#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#1] -- register_copy jmp b3 - //SEG449 mode_8bpppixelcell::@3 + //SEG450 mode_8bpppixelcell::@3 b3: - //SEG450 [249] (byte~) mode_8bpppixelcell::$13 ← (byte) mode_8bpppixelcell::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG451 [249] (byte~) mode_8bpppixelcell::$13 ← (byte) mode_8bpppixelcell::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and ay sta _13 - //SEG451 [250] (byte~) mode_8bpppixelcell::$14 ← (byte~) mode_8bpppixelcell::$13 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG452 [250] (byte~) mode_8bpppixelcell::$14 ← (byte~) mode_8bpppixelcell::$13 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _13 asl asl asl asl sta _14 - //SEG452 [251] (byte~) mode_8bpppixelcell::$15 ← (byte) mode_8bpppixelcell::ax#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG453 [251] (byte~) mode_8bpppixelcell::$15 ← (byte) mode_8bpppixelcell::ax#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and ax sta _15 - //SEG453 [252] (byte~) mode_8bpppixelcell::$16 ← (byte~) mode_8bpppixelcell::$14 | (byte~) mode_8bpppixelcell::$15 -- vbuz1=vbuz2_bor_vbuz3 + //SEG454 [252] (byte~) mode_8bpppixelcell::$16 ← (byte~) mode_8bpppixelcell::$14 | (byte~) mode_8bpppixelcell::$15 -- vbuz1=vbuz2_bor_vbuz3 lda _14 ora _15 sta _16 - //SEG454 [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$16 -- _deref_pbuz1=vbuz2 + //SEG455 [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$16 -- _deref_pbuz1=vbuz2 lda _16 ldy #0 sta (gfxa),y - //SEG455 [254] (byte*) mode_8bpppixelcell::gfxa#1 ← ++ (byte*) mode_8bpppixelcell::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG456 [254] (byte*) mode_8bpppixelcell::gfxa#1 ← ++ (byte*) mode_8bpppixelcell::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG456 [255] (byte) mode_8bpppixelcell::ax#1 ← ++ (byte) mode_8bpppixelcell::ax#2 -- vbuz1=_inc_vbuz1 + //SEG457 [255] (byte) mode_8bpppixelcell::ax#1 ← ++ (byte) mode_8bpppixelcell::ax#2 -- vbuz1=_inc_vbuz1 inc ax - //SEG457 [256] if((byte) mode_8bpppixelcell::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_8bpppixelcell::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG458 [256] if((byte) mode_8bpppixelcell::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_8bpppixelcell::@3 -- vbuz1_neq_vbuc1_then_la1 lda ax cmp #$28 bne b3_from_b3 jmp b9 - //SEG458 mode_8bpppixelcell::@9 + //SEG459 mode_8bpppixelcell::@9 b9: - //SEG459 [257] (byte) mode_8bpppixelcell::ay#1 ← ++ (byte) mode_8bpppixelcell::ay#4 -- vbuz1=_inc_vbuz1 + //SEG460 [257] (byte) mode_8bpppixelcell::ay#1 ← ++ (byte) mode_8bpppixelcell::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG460 [258] if((byte) mode_8bpppixelcell::ay#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_8bpppixelcell::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG461 [258] if((byte) mode_8bpppixelcell::ay#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_8bpppixelcell::@2 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$19 bne b2_from_b9 jmp b10 - //SEG461 mode_8bpppixelcell::@10 + //SEG462 mode_8bpppixelcell::@10 b10: - //SEG462 [259] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG463 [259] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG463 [260] phi from mode_8bpppixelcell::@10 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4] + //SEG464 [260] phi from mode_8bpppixelcell::@10 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4] b4_from_b10: - //SEG464 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#0] -- vbuz1=vbuc1 + //SEG465 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#0] -- vbuz1=vbuc1 lda #0 sta ch - //SEG465 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#1] -- vbuz1=vbuc1 + //SEG466 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#1] -- vbuz1=vbuc1 lda #0 sta col - //SEG466 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (const byte*) mode_8bpppixelcell::PLANEB#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#2] -- pbuz1=pbuc1 + //SEG467 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (const byte*) mode_8bpppixelcell::PLANEB#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#2] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 - //SEG467 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) 53248 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1 + //SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) 53248 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1 lda #<$d000 sta chargen lda #>$d000 sta chargen+1 jmp b4 - //SEG468 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4] + //SEG469 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4] b4_from_b13: - //SEG469 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte) mode_8bpppixelcell::ch#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#0] -- register_copy - //SEG470 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#1] -- register_copy - //SEG471 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#2] -- register_copy - //SEG472 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#3] -- register_copy + //SEG470 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte) mode_8bpppixelcell::ch#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#0] -- register_copy + //SEG471 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#1] -- register_copy + //SEG472 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#2] -- register_copy + //SEG473 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#3] -- register_copy jmp b4 - //SEG473 mode_8bpppixelcell::@4 + //SEG474 mode_8bpppixelcell::@4 b4: - //SEG474 [261] phi from mode_8bpppixelcell::@4 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5] + //SEG475 [261] phi from mode_8bpppixelcell::@4 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5] b5_from_b4: - //SEG475 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#0] -- vbuz1=vbuc1 + //SEG476 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#0] -- vbuz1=vbuc1 lda #0 sta cr - //SEG476 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#1] -- register_copy - //SEG477 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#2] -- register_copy - //SEG478 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#4 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#3] -- register_copy + //SEG477 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#1] -- register_copy + //SEG478 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#2] -- register_copy + //SEG479 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#4 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#3] -- register_copy jmp b5 - //SEG479 [261] phi from mode_8bpppixelcell::@12 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5] + //SEG480 [261] phi from mode_8bpppixelcell::@12 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5] b5_from_b12: - //SEG480 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte) mode_8bpppixelcell::cr#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#0] -- register_copy - //SEG481 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#1] -- register_copy - //SEG482 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#2] -- register_copy - //SEG483 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#3] -- register_copy + //SEG481 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte) mode_8bpppixelcell::cr#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#0] -- register_copy + //SEG482 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#1] -- register_copy + //SEG483 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#2] -- register_copy + //SEG484 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#3] -- register_copy jmp b5 - //SEG484 mode_8bpppixelcell::@5 + //SEG485 mode_8bpppixelcell::@5 b5: - //SEG485 [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG486 [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG486 [263] (byte*) mode_8bpppixelcell::chargen#1 ← ++ (byte*) mode_8bpppixelcell::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG487 [263] (byte*) mode_8bpppixelcell::chargen#1 ← ++ (byte*) mode_8bpppixelcell::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG487 [264] phi from mode_8bpppixelcell::@5 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6] + //SEG488 [264] phi from mode_8bpppixelcell::@5 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6] b6_from_b5: - //SEG488 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#0] -- vbuz1=vbuc1 + //SEG489 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#0] -- vbuz1=vbuc1 lda #0 sta cp - //SEG489 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#1] -- register_copy - //SEG490 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#2] -- register_copy - //SEG491 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#3] -- register_copy + //SEG490 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#1] -- register_copy + //SEG491 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#2] -- register_copy + //SEG492 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#3] -- register_copy jmp b6 - //SEG492 [264] phi from mode_8bpppixelcell::@7 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6] + //SEG493 [264] phi from mode_8bpppixelcell::@7 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6] b6_from_b7: - //SEG493 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte) mode_8bpppixelcell::cp#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#0] -- register_copy - //SEG494 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#1] -- register_copy - //SEG495 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#2] -- register_copy - //SEG496 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#3] -- register_copy + //SEG494 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte) mode_8bpppixelcell::cp#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#0] -- register_copy + //SEG495 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#1] -- register_copy + //SEG496 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#2] -- register_copy + //SEG497 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#3] -- register_copy jmp b6 - //SEG497 mode_8bpppixelcell::@6 + //SEG498 mode_8bpppixelcell::@6 b6: - //SEG498 [265] (byte~) mode_8bpppixelcell::$19 ← (byte) mode_8bpppixelcell::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG499 [265] (byte~) mode_8bpppixelcell::$19 ← (byte) mode_8bpppixelcell::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and bits sta _19 - //SEG499 [266] if((byte~) mode_8bpppixelcell::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@7 -- vbuz1_eq_0_then_la1 + //SEG500 [266] if((byte~) mode_8bpppixelcell::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@7 -- vbuz1_eq_0_then_la1 lda _19 cmp #0 beq b7_from_b6 jmp b11 - //SEG500 mode_8bpppixelcell::@11 + //SEG501 mode_8bpppixelcell::@11 b11: - //SEG501 [267] (byte~) mode_8bpppixelcell::c#3 ← (byte) mode_8bpppixelcell::col#2 -- vbuz1=vbuz2 + //SEG502 [267] (byte~) mode_8bpppixelcell::c#3 ← (byte) mode_8bpppixelcell::col#2 -- vbuz1=vbuz2 lda col sta c - //SEG502 [268] phi from mode_8bpppixelcell::@11 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7] + //SEG503 [268] phi from mode_8bpppixelcell::@11 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7] b7_from_b11: - //SEG503 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte~) mode_8bpppixelcell::c#3 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7#0] -- register_copy + //SEG504 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte~) mode_8bpppixelcell::c#3 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7#0] -- register_copy jmp b7 - //SEG504 [268] phi from mode_8bpppixelcell::@6 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7] + //SEG505 [268] phi from mode_8bpppixelcell::@6 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7] b7_from_b6: - //SEG505 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7#0] -- vbuz1=vbuc1 + //SEG506 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7#0] -- vbuz1=vbuc1 lda #0 sta c jmp b7 - //SEG506 mode_8bpppixelcell::@7 + //SEG507 mode_8bpppixelcell::@7 b7: - //SEG507 [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 -- _deref_pbuz1=vbuz2 + //SEG508 [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (gfxb),y - //SEG508 [270] (byte*) mode_8bpppixelcell::gfxb#1 ← ++ (byte*) mode_8bpppixelcell::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG509 [270] (byte*) mode_8bpppixelcell::gfxb#1 ← ++ (byte*) mode_8bpppixelcell::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG509 [271] (byte) mode_8bpppixelcell::bits#1 ← (byte) mode_8bpppixelcell::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG510 [271] (byte) mode_8bpppixelcell::bits#1 ← (byte) mode_8bpppixelcell::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG510 [272] (byte) mode_8bpppixelcell::col#1 ← ++ (byte) mode_8bpppixelcell::col#2 -- vbuz1=_inc_vbuz1 + //SEG511 [272] (byte) mode_8bpppixelcell::col#1 ← ++ (byte) mode_8bpppixelcell::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG511 [273] (byte) mode_8bpppixelcell::cp#1 ← ++ (byte) mode_8bpppixelcell::cp#2 -- vbuz1=_inc_vbuz1 + //SEG512 [273] (byte) mode_8bpppixelcell::cp#1 ← ++ (byte) mode_8bpppixelcell::cp#2 -- vbuz1=_inc_vbuz1 inc cp - //SEG512 [274] if((byte) mode_8bpppixelcell::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG513 [274] if((byte) mode_8bpppixelcell::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@6 -- vbuz1_neq_vbuc1_then_la1 lda cp cmp #8 bne b6_from_b7 jmp b12 - //SEG513 mode_8bpppixelcell::@12 + //SEG514 mode_8bpppixelcell::@12 b12: - //SEG514 [275] (byte) mode_8bpppixelcell::cr#1 ← ++ (byte) mode_8bpppixelcell::cr#6 -- vbuz1=_inc_vbuz1 + //SEG515 [275] (byte) mode_8bpppixelcell::cr#1 ← ++ (byte) mode_8bpppixelcell::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG515 [276] if((byte) mode_8bpppixelcell::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG516 [276] if((byte) mode_8bpppixelcell::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@5 -- vbuz1_neq_vbuc1_then_la1 lda cr cmp #8 bne b5_from_b12 jmp b13 - //SEG516 mode_8bpppixelcell::@13 + //SEG517 mode_8bpppixelcell::@13 b13: - //SEG517 [277] (byte) mode_8bpppixelcell::ch#1 ← ++ (byte) mode_8bpppixelcell::ch#8 -- vbuz1=_inc_vbuz1 + //SEG518 [277] (byte) mode_8bpppixelcell::ch#1 ← ++ (byte) mode_8bpppixelcell::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG518 [278] if((byte) mode_8bpppixelcell::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@4 -- vbuz1_neq_0_then_la1 + //SEG519 [278] if((byte) mode_8bpppixelcell::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@4 -- vbuz1_neq_0_then_la1 lda ch cmp #0 bne b4_from_b13 jmp b14 - //SEG519 mode_8bpppixelcell::@14 + //SEG520 mode_8bpppixelcell::@14 b14: - //SEG520 [279] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG521 [279] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG521 [280] call mode_ctrl - //SEG522 [155] phi from mode_8bpppixelcell::@14 to mode_ctrl [phi:mode_8bpppixelcell::@14->mode_ctrl] + //SEG522 [280] call mode_ctrl + //SEG523 [155] phi from mode_8bpppixelcell::@14 to mode_ctrl [phi:mode_8bpppixelcell::@14->mode_ctrl] mode_ctrl_from_b14: - //SEG523 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 [phi:mode_8bpppixelcell::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG524 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 [phi:mode_8bpppixelcell::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY sta dtv_control jsr mode_ctrl jmp breturn - //SEG524 mode_8bpppixelcell::@return + //SEG525 mode_8bpppixelcell::@return breturn: - //SEG525 [281] return + //SEG526 [281] return rts } -//SEG526 mode_sixsfred +//SEG527 mode_sixsfred // Sixs Fred Mode - 8bpp Packed Bitmap - Generated from the two DTV linear graphics plane counters // Two Plane MultiColor Bitmap - 8bpp Packed Bitmap (CHUNK/COLDIS = 0, ECM/BMM/MCM/HICOL/LINEAR = 1) // Resolution: 160x200 @@ -14275,291 +14276,291 @@ mode_sixsfred: { .label gfxb = $29 .label bx = $2b .label by = $28 - //SEG527 [282] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG528 [282] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR sta DTV_CONTROL - //SEG528 [283] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG529 [283] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG529 [284] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG530 [284] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG530 [285] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG531 [285] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG532 [286] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG532 [287] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG533 [287] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG533 [288] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG534 [288] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG534 [289] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG535 [289] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG535 [290] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG536 [290] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG536 [291] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG537 [291] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG538 [292] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG538 [293] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG539 [293] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG539 [294] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG540 [294] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG540 [295] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG541 [295] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG541 [296] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG542 [296] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG542 [297] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG543 [297] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG544 [298] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG544 [299] phi from mode_sixsfred to mode_sixsfred::@1 [phi:mode_sixsfred->mode_sixsfred::@1] + //SEG545 [299] phi from mode_sixsfred to mode_sixsfred::@1 [phi:mode_sixsfred->mode_sixsfred::@1] b1_from_mode_sixsfred: - //SEG545 [299] phi (byte) mode_sixsfred::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred->mode_sixsfred::@1#0] -- vbuz1=vbuc1 + //SEG546 [299] phi (byte) mode_sixsfred::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred->mode_sixsfred::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG546 [299] phi from mode_sixsfred::@1 to mode_sixsfred::@1 [phi:mode_sixsfred::@1->mode_sixsfred::@1] + //SEG547 [299] phi from mode_sixsfred::@1 to mode_sixsfred::@1 [phi:mode_sixsfred::@1->mode_sixsfred::@1] b1_from_b1: - //SEG547 [299] phi (byte) mode_sixsfred::i#2 = (byte) mode_sixsfred::i#1 [phi:mode_sixsfred::@1->mode_sixsfred::@1#0] -- register_copy + //SEG548 [299] phi (byte) mode_sixsfred::i#2 = (byte) mode_sixsfred::i#1 [phi:mode_sixsfred::@1->mode_sixsfred::@1#0] -- register_copy jmp b1 - //SEG548 mode_sixsfred::@1 + //SEG549 mode_sixsfred::@1 b1: - //SEG549 [300] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred::i#2) ← (byte) mode_sixsfred::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG550 [300] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred::i#2) ← (byte) mode_sixsfred::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta DTV_PALETTE,y - //SEG550 [301] (byte) mode_sixsfred::i#1 ← ++ (byte) mode_sixsfred::i#2 -- vbuz1=_inc_vbuz1 + //SEG551 [301] (byte) mode_sixsfred::i#1 ← ++ (byte) mode_sixsfred::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG551 [302] if((byte) mode_sixsfred::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG552 [302] if((byte) mode_sixsfred::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b8 - //SEG552 mode_sixsfred::@8 + //SEG553 mode_sixsfred::@8 b8: - //SEG553 [303] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG554 [303] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG554 [304] phi from mode_sixsfred::@8 to mode_sixsfred::@2 [phi:mode_sixsfred::@8->mode_sixsfred::@2] + //SEG555 [304] phi from mode_sixsfred::@8 to mode_sixsfred::@2 [phi:mode_sixsfred::@8->mode_sixsfred::@2] b2_from_b8: - //SEG555 [304] phi (byte*) mode_sixsfred::col#3 = (const byte*) mode_sixsfred::COLORS#0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#0] -- pbuz1=pbuc1 + //SEG556 [304] phi (byte*) mode_sixsfred::col#3 = (const byte*) mode_sixsfred::COLORS#0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG556 [304] phi (byte) mode_sixsfred::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#1] -- vbuz1=vbuc1 + //SEG557 [304] phi (byte) mode_sixsfred::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG557 [304] phi from mode_sixsfred::@9 to mode_sixsfred::@2 [phi:mode_sixsfred::@9->mode_sixsfred::@2] + //SEG558 [304] phi from mode_sixsfred::@9 to mode_sixsfred::@2 [phi:mode_sixsfred::@9->mode_sixsfred::@2] b2_from_b9: - //SEG558 [304] phi (byte*) mode_sixsfred::col#3 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#0] -- register_copy - //SEG559 [304] phi (byte) mode_sixsfred::cy#4 = (byte) mode_sixsfred::cy#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#1] -- register_copy + //SEG559 [304] phi (byte*) mode_sixsfred::col#3 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#0] -- register_copy + //SEG560 [304] phi (byte) mode_sixsfred::cy#4 = (byte) mode_sixsfred::cy#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#1] -- register_copy jmp b2 - //SEG560 mode_sixsfred::@2 + //SEG561 mode_sixsfred::@2 b2: - //SEG561 [305] phi from mode_sixsfred::@2 to mode_sixsfred::@3 [phi:mode_sixsfred::@2->mode_sixsfred::@3] + //SEG562 [305] phi from mode_sixsfred::@2 to mode_sixsfred::@3 [phi:mode_sixsfred::@2->mode_sixsfred::@3] b3_from_b2: - //SEG562 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#3 [phi:mode_sixsfred::@2->mode_sixsfred::@3#0] -- register_copy - //SEG563 [305] phi (byte) mode_sixsfred::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@2->mode_sixsfred::@3#1] -- vbuz1=vbuc1 + //SEG563 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#3 [phi:mode_sixsfred::@2->mode_sixsfred::@3#0] -- register_copy + //SEG564 [305] phi (byte) mode_sixsfred::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@2->mode_sixsfred::@3#1] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG564 [305] phi from mode_sixsfred::@3 to mode_sixsfred::@3 [phi:mode_sixsfred::@3->mode_sixsfred::@3] + //SEG565 [305] phi from mode_sixsfred::@3 to mode_sixsfred::@3 [phi:mode_sixsfred::@3->mode_sixsfred::@3] b3_from_b3: - //SEG565 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#0] -- register_copy - //SEG566 [305] phi (byte) mode_sixsfred::cx#2 = (byte) mode_sixsfred::cx#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#1] -- register_copy + //SEG566 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#0] -- register_copy + //SEG567 [305] phi (byte) mode_sixsfred::cx#2 = (byte) mode_sixsfred::cx#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#1] -- register_copy jmp b3 - //SEG567 mode_sixsfred::@3 + //SEG568 mode_sixsfred::@3 b3: - //SEG568 [306] (byte~) mode_sixsfred::$16 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG569 [306] (byte~) mode_sixsfred::$16 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 -- vbuz1=vbuz2_plus_vbuz3 lda cx clc adc cy sta _16 - //SEG569 [307] (byte~) mode_sixsfred::$17 ← (byte~) mode_sixsfred::$16 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG570 [307] (byte~) mode_sixsfred::$17 ← (byte~) mode_sixsfred::$16 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and _16 sta _17 - //SEG570 [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$17 -- _deref_pbuz1=vbuz2 + //SEG571 [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$17 -- _deref_pbuz1=vbuz2 lda _17 ldy #0 sta (col),y - //SEG571 [309] (byte*) mode_sixsfred::col#1 ← ++ (byte*) mode_sixsfred::col#2 -- pbuz1=_inc_pbuz1 + //SEG572 [309] (byte*) mode_sixsfred::col#1 ← ++ (byte*) mode_sixsfred::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG572 [310] (byte) mode_sixsfred::cx#1 ← ++ (byte) mode_sixsfred::cx#2 -- vbuz1=_inc_vbuz1 + //SEG573 [310] (byte) mode_sixsfred::cx#1 ← ++ (byte) mode_sixsfred::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG573 [311] if((byte) mode_sixsfred::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG574 [311] if((byte) mode_sixsfred::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b9 - //SEG574 mode_sixsfred::@9 + //SEG575 mode_sixsfred::@9 b9: - //SEG575 [312] (byte) mode_sixsfred::cy#1 ← ++ (byte) mode_sixsfred::cy#4 -- vbuz1=_inc_vbuz1 + //SEG576 [312] (byte) mode_sixsfred::cy#1 ← ++ (byte) mode_sixsfred::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG576 [313] if((byte) mode_sixsfred::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG577 [313] if((byte) mode_sixsfred::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b9 - //SEG577 [314] phi from mode_sixsfred::@9 to mode_sixsfred::@4 [phi:mode_sixsfred::@9->mode_sixsfred::@4] + //SEG578 [314] phi from mode_sixsfred::@9 to mode_sixsfred::@4 [phi:mode_sixsfred::@9->mode_sixsfred::@4] b4_from_b9: - //SEG578 [314] phi (byte*) mode_sixsfred::gfxa#3 = (const byte*) mode_sixsfred::PLANEA#0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#0] -- pbuz1=pbuc1 + //SEG579 [314] phi (byte*) mode_sixsfred::gfxa#3 = (const byte*) mode_sixsfred::PLANEA#0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG579 [314] phi (byte) mode_sixsfred::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#1] -- vbuz1=vbuc1 + //SEG580 [314] phi (byte) mode_sixsfred::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b4 - //SEG580 [314] phi from mode_sixsfred::@11 to mode_sixsfred::@4 [phi:mode_sixsfred::@11->mode_sixsfred::@4] + //SEG581 [314] phi from mode_sixsfred::@11 to mode_sixsfred::@4 [phi:mode_sixsfred::@11->mode_sixsfred::@4] b4_from_b11: - //SEG581 [314] phi (byte*) mode_sixsfred::gfxa#3 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#0] -- register_copy - //SEG582 [314] phi (byte) mode_sixsfred::ay#4 = (byte) mode_sixsfred::ay#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#1] -- register_copy + //SEG582 [314] phi (byte*) mode_sixsfred::gfxa#3 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#0] -- register_copy + //SEG583 [314] phi (byte) mode_sixsfred::ay#4 = (byte) mode_sixsfred::ay#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#1] -- register_copy jmp b4 - //SEG583 mode_sixsfred::@4 + //SEG584 mode_sixsfred::@4 b4: - //SEG584 [315] phi from mode_sixsfred::@4 to mode_sixsfred::@5 [phi:mode_sixsfred::@4->mode_sixsfred::@5] + //SEG585 [315] phi from mode_sixsfred::@4 to mode_sixsfred::@5 [phi:mode_sixsfred::@4->mode_sixsfred::@5] b5_from_b4: - //SEG585 [315] phi (byte) mode_sixsfred::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@4->mode_sixsfred::@5#0] -- vbuz1=vbuc1 + //SEG586 [315] phi (byte) mode_sixsfred::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@4->mode_sixsfred::@5#0] -- vbuz1=vbuc1 lda #0 sta ax - //SEG586 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#3 [phi:mode_sixsfred::@4->mode_sixsfred::@5#1] -- register_copy + //SEG587 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#3 [phi:mode_sixsfred::@4->mode_sixsfred::@5#1] -- register_copy jmp b5 - //SEG587 [315] phi from mode_sixsfred::@5 to mode_sixsfred::@5 [phi:mode_sixsfred::@5->mode_sixsfred::@5] + //SEG588 [315] phi from mode_sixsfred::@5 to mode_sixsfred::@5 [phi:mode_sixsfred::@5->mode_sixsfred::@5] b5_from_b5: - //SEG588 [315] phi (byte) mode_sixsfred::ax#2 = (byte) mode_sixsfred::ax#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#0] -- register_copy - //SEG589 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#1] -- register_copy + //SEG589 [315] phi (byte) mode_sixsfred::ax#2 = (byte) mode_sixsfred::ax#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#0] -- register_copy + //SEG590 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#1] -- register_copy jmp b5 - //SEG590 mode_sixsfred::@5 + //SEG591 mode_sixsfred::@5 b5: - //SEG591 [316] (byte~) mode_sixsfred::$20 ← (byte) mode_sixsfred::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG592 [316] (byte~) mode_sixsfred::$20 ← (byte) mode_sixsfred::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda ay lsr sta _20 - //SEG592 [317] (byte) mode_sixsfred::row#0 ← (byte~) mode_sixsfred::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 + //SEG593 [317] (byte) mode_sixsfred::row#0 ← (byte~) mode_sixsfred::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 lda #3 and _20 sta row - //SEG593 [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte[]) mode_sixsfred::row_bitmask#0 + (byte) mode_sixsfred::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG594 [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte[]) mode_sixsfred::row_bitmask#0 + (byte) mode_sixsfred::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy row lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG594 [319] (byte*) mode_sixsfred::gfxa#1 ← ++ (byte*) mode_sixsfred::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG595 [319] (byte*) mode_sixsfred::gfxa#1 ← ++ (byte*) mode_sixsfred::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG595 [320] (byte) mode_sixsfred::ax#1 ← ++ (byte) mode_sixsfred::ax#2 -- vbuz1=_inc_vbuz1 + //SEG596 [320] (byte) mode_sixsfred::ax#1 ← ++ (byte) mode_sixsfred::ax#2 -- vbuz1=_inc_vbuz1 inc ax - //SEG596 [321] if((byte) mode_sixsfred::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG597 [321] if((byte) mode_sixsfred::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@5 -- vbuz1_neq_vbuc1_then_la1 lda ax cmp #$28 bne b5_from_b5 jmp b11 - //SEG597 mode_sixsfred::@11 + //SEG598 mode_sixsfred::@11 b11: - //SEG598 [322] (byte) mode_sixsfred::ay#1 ← ++ (byte) mode_sixsfred::ay#4 -- vbuz1=_inc_vbuz1 + //SEG599 [322] (byte) mode_sixsfred::ay#1 ← ++ (byte) mode_sixsfred::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG599 [323] if((byte) mode_sixsfred::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG600 [323] if((byte) mode_sixsfred::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4_from_b11 - //SEG600 [324] phi from mode_sixsfred::@11 to mode_sixsfred::@6 [phi:mode_sixsfred::@11->mode_sixsfred::@6] + //SEG601 [324] phi from mode_sixsfred::@11 to mode_sixsfred::@6 [phi:mode_sixsfred::@11->mode_sixsfred::@6] b6_from_b11: - //SEG601 [324] phi (byte) mode_sixsfred::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#0] -- vbuz1=vbuc1 + //SEG602 [324] phi (byte) mode_sixsfred::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG602 [324] phi (byte*) mode_sixsfred::gfxb#3 = (const byte*) mode_sixsfred::PLANEB#0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#1] -- pbuz1=pbuc1 + //SEG603 [324] phi (byte*) mode_sixsfred::gfxb#3 = (const byte*) mode_sixsfred::PLANEB#0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 jmp b6 - //SEG603 [324] phi from mode_sixsfred::@13 to mode_sixsfred::@6 [phi:mode_sixsfred::@13->mode_sixsfred::@6] + //SEG604 [324] phi from mode_sixsfred::@13 to mode_sixsfred::@6 [phi:mode_sixsfred::@13->mode_sixsfred::@6] b6_from_b13: - //SEG604 [324] phi (byte) mode_sixsfred::by#4 = (byte) mode_sixsfred::by#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#0] -- register_copy - //SEG605 [324] phi (byte*) mode_sixsfred::gfxb#3 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#1] -- register_copy + //SEG605 [324] phi (byte) mode_sixsfred::by#4 = (byte) mode_sixsfred::by#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#0] -- register_copy + //SEG606 [324] phi (byte*) mode_sixsfred::gfxb#3 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#1] -- register_copy jmp b6 - //SEG606 mode_sixsfred::@6 + //SEG607 mode_sixsfred::@6 b6: - //SEG607 [325] phi from mode_sixsfred::@6 to mode_sixsfred::@7 [phi:mode_sixsfred::@6->mode_sixsfred::@7] + //SEG608 [325] phi from mode_sixsfred::@6 to mode_sixsfred::@7 [phi:mode_sixsfred::@6->mode_sixsfred::@7] b7_from_b6: - //SEG608 [325] phi (byte) mode_sixsfred::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@6->mode_sixsfred::@7#0] -- vbuz1=vbuc1 + //SEG609 [325] phi (byte) mode_sixsfred::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@6->mode_sixsfred::@7#0] -- vbuz1=vbuc1 lda #0 sta bx - //SEG609 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#3 [phi:mode_sixsfred::@6->mode_sixsfred::@7#1] -- register_copy + //SEG610 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#3 [phi:mode_sixsfred::@6->mode_sixsfred::@7#1] -- register_copy jmp b7 - //SEG610 [325] phi from mode_sixsfred::@7 to mode_sixsfred::@7 [phi:mode_sixsfred::@7->mode_sixsfred::@7] + //SEG611 [325] phi from mode_sixsfred::@7 to mode_sixsfred::@7 [phi:mode_sixsfred::@7->mode_sixsfred::@7] b7_from_b7: - //SEG611 [325] phi (byte) mode_sixsfred::bx#2 = (byte) mode_sixsfred::bx#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#0] -- register_copy - //SEG612 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#1] -- register_copy + //SEG612 [325] phi (byte) mode_sixsfred::bx#2 = (byte) mode_sixsfred::bx#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#0] -- register_copy + //SEG613 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#1] -- register_copy jmp b7 - //SEG613 mode_sixsfred::@7 + //SEG614 mode_sixsfred::@7 b7: - //SEG614 [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 + //SEG615 [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 lda #$1b ldy #0 sta (gfxb),y - //SEG615 [327] (byte*) mode_sixsfred::gfxb#1 ← ++ (byte*) mode_sixsfred::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG616 [327] (byte*) mode_sixsfred::gfxb#1 ← ++ (byte*) mode_sixsfred::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG616 [328] (byte) mode_sixsfred::bx#1 ← ++ (byte) mode_sixsfred::bx#2 -- vbuz1=_inc_vbuz1 + //SEG617 [328] (byte) mode_sixsfred::bx#1 ← ++ (byte) mode_sixsfred::bx#2 -- vbuz1=_inc_vbuz1 inc bx - //SEG617 [329] if((byte) mode_sixsfred::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG618 [329] if((byte) mode_sixsfred::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@7 -- vbuz1_neq_vbuc1_then_la1 lda bx cmp #$28 bne b7_from_b7 jmp b13 - //SEG618 mode_sixsfred::@13 + //SEG619 mode_sixsfred::@13 b13: - //SEG619 [330] (byte) mode_sixsfred::by#1 ← ++ (byte) mode_sixsfred::by#4 -- vbuz1=_inc_vbuz1 + //SEG620 [330] (byte) mode_sixsfred::by#1 ← ++ (byte) mode_sixsfred::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG620 [331] if((byte) mode_sixsfred::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG621 [331] if((byte) mode_sixsfred::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@6 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b6_from_b13 - //SEG621 [332] phi from mode_sixsfred::@13 to mode_sixsfred::@14 [phi:mode_sixsfred::@13->mode_sixsfred::@14] + //SEG622 [332] phi from mode_sixsfred::@13 to mode_sixsfred::@14 [phi:mode_sixsfred::@13->mode_sixsfred::@14] b14_from_b13: jmp b14 - //SEG622 mode_sixsfred::@14 + //SEG623 mode_sixsfred::@14 b14: - //SEG623 [333] call mode_ctrl - //SEG624 [155] phi from mode_sixsfred::@14 to mode_ctrl [phi:mode_sixsfred::@14->mode_ctrl] + //SEG624 [333] call mode_ctrl + //SEG625 [155] phi from mode_sixsfred::@14 to mode_ctrl [phi:mode_sixsfred::@14->mode_ctrl] mode_ctrl_from_b14: - //SEG625 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_sixsfred::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG626 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_sixsfred::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR sta dtv_control jsr mode_ctrl jmp breturn - //SEG626 mode_sixsfred::@return + //SEG627 mode_sixsfred::@return breturn: - //SEG627 [334] return + //SEG628 [334] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG628 mode_twoplanebitmap +//SEG629 mode_twoplanebitmap // Two Plane Bitmap - generated from the two DTV linear graphics plane counters // Two Plane Bitmap Mode (CHUNK/COLDIS/MCM = 0, ECM/BMM/HICOL/LINEAR = 1) // Resolution: 320x200 @@ -14588,327 +14589,327 @@ mode_twoplanebitmap: { .label gfxb = $36 .label bx = $38 .label by = $35 - //SEG629 [335] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG630 [335] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR sta DTV_CONTROL - //SEG630 [336] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG631 [336] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG631 [337] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG632 [337] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG632 [338] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG633 [338] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG634 [339] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG634 [340] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG635 [340] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG635 [341] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG636 [341] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG636 [342] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG637 [342] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG637 [343] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG638 [343] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG638 [344] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG639 [344] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG640 [345] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG640 [346] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG641 [346] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG641 [347] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG642 [347] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG642 [348] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG643 [348] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG643 [349] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG644 [349] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG644 [350] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG645 [350] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG646 [351] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG646 [352] phi from mode_twoplanebitmap to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1] + //SEG647 [352] phi from mode_twoplanebitmap to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1] b1_from_mode_twoplanebitmap: - //SEG647 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1#0] -- vbuz1=vbuc1 + //SEG648 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG648 [352] phi from mode_twoplanebitmap::@1 to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1] + //SEG649 [352] phi from mode_twoplanebitmap::@1 to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1] b1_from_b1: - //SEG649 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte) mode_twoplanebitmap::i#1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1#0] -- register_copy + //SEG650 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte) mode_twoplanebitmap::i#1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1#0] -- register_copy jmp b1 - //SEG650 mode_twoplanebitmap::@1 + //SEG651 mode_twoplanebitmap::@1 b1: - //SEG651 [353] *((const byte*) DTV_PALETTE#0 + (byte) mode_twoplanebitmap::i#2) ← (byte) mode_twoplanebitmap::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG652 [353] *((const byte*) DTV_PALETTE#0 + (byte) mode_twoplanebitmap::i#2) ← (byte) mode_twoplanebitmap::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta DTV_PALETTE,y - //SEG652 [354] (byte) mode_twoplanebitmap::i#1 ← ++ (byte) mode_twoplanebitmap::i#2 -- vbuz1=_inc_vbuz1 + //SEG653 [354] (byte) mode_twoplanebitmap::i#1 ← ++ (byte) mode_twoplanebitmap::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG653 [355] if((byte) mode_twoplanebitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_twoplanebitmap::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG654 [355] if((byte) mode_twoplanebitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_twoplanebitmap::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b10 - //SEG654 mode_twoplanebitmap::@10 + //SEG655 mode_twoplanebitmap::@10 b10: - //SEG655 [356] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG656 [356] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG656 [357] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 112 -- _deref_pbuc1=vbuc2 + //SEG657 [357] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 112 -- _deref_pbuc1=vbuc2 lda #$70 sta BGCOL1 - //SEG657 [358] *((const byte*) BGCOL2#0) ← (byte/word/signed word/dword/signed dword) 212 -- _deref_pbuc1=vbuc2 + //SEG658 [358] *((const byte*) BGCOL2#0) ← (byte/word/signed word/dword/signed dword) 212 -- _deref_pbuc1=vbuc2 lda #$d4 sta BGCOL2 - //SEG658 [359] phi from mode_twoplanebitmap::@10 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2] + //SEG659 [359] phi from mode_twoplanebitmap::@10 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2] b2_from_b10: - //SEG659 [359] phi (byte*) mode_twoplanebitmap::col#3 = (const byte*) mode_twoplanebitmap::COLORS#0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#0] -- pbuz1=pbuc1 + //SEG660 [359] phi (byte*) mode_twoplanebitmap::col#3 = (const byte*) mode_twoplanebitmap::COLORS#0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG660 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#1] -- vbuz1=vbuc1 + //SEG661 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG661 [359] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2] + //SEG662 [359] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2] b2_from_b11: - //SEG662 [359] phi (byte*) mode_twoplanebitmap::col#3 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#0] -- register_copy - //SEG663 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte) mode_twoplanebitmap::cy#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#1] -- register_copy + //SEG663 [359] phi (byte*) mode_twoplanebitmap::col#3 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#0] -- register_copy + //SEG664 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte) mode_twoplanebitmap::cy#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#1] -- register_copy jmp b2 - //SEG664 mode_twoplanebitmap::@2 + //SEG665 mode_twoplanebitmap::@2 b2: - //SEG665 [360] phi from mode_twoplanebitmap::@2 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3] + //SEG666 [360] phi from mode_twoplanebitmap::@2 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3] b3_from_b2: - //SEG666 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#0] -- register_copy - //SEG667 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#1] -- vbuz1=vbuc1 + //SEG667 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#0] -- register_copy + //SEG668 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#1] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG668 [360] phi from mode_twoplanebitmap::@3 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3] + //SEG669 [360] phi from mode_twoplanebitmap::@3 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3] b3_from_b3: - //SEG669 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#0] -- register_copy - //SEG670 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte) mode_twoplanebitmap::cx#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#1] -- register_copy + //SEG670 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#0] -- register_copy + //SEG671 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte) mode_twoplanebitmap::cx#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#1] -- register_copy jmp b3 - //SEG671 mode_twoplanebitmap::@3 + //SEG672 mode_twoplanebitmap::@3 b3: - //SEG672 [361] (byte~) mode_twoplanebitmap::$15 ← (byte) mode_twoplanebitmap::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG673 [361] (byte~) mode_twoplanebitmap::$15 ← (byte) mode_twoplanebitmap::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cy sta _15 - //SEG673 [362] (byte~) mode_twoplanebitmap::$16 ← (byte~) mode_twoplanebitmap::$15 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG674 [362] (byte~) mode_twoplanebitmap::$16 ← (byte~) mode_twoplanebitmap::$15 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _15 asl asl asl asl sta _16 - //SEG674 [363] (byte~) mode_twoplanebitmap::$17 ← (byte) mode_twoplanebitmap::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG675 [363] (byte~) mode_twoplanebitmap::$17 ← (byte) mode_twoplanebitmap::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cx sta _17 - //SEG675 [364] (byte~) mode_twoplanebitmap::$18 ← (byte~) mode_twoplanebitmap::$16 | (byte~) mode_twoplanebitmap::$17 -- vbuz1=vbuz2_bor_vbuz3 + //SEG676 [364] (byte~) mode_twoplanebitmap::$18 ← (byte~) mode_twoplanebitmap::$16 | (byte~) mode_twoplanebitmap::$17 -- vbuz1=vbuz2_bor_vbuz3 lda _16 ora _17 sta _18 - //SEG676 [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$18 -- _deref_pbuz1=vbuz2 + //SEG677 [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$18 -- _deref_pbuz1=vbuz2 lda _18 ldy #0 sta (col),y - //SEG677 [366] (byte*) mode_twoplanebitmap::col#1 ← ++ (byte*) mode_twoplanebitmap::col#2 -- pbuz1=_inc_pbuz1 + //SEG678 [366] (byte*) mode_twoplanebitmap::col#1 ← ++ (byte*) mode_twoplanebitmap::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG678 [367] (byte) mode_twoplanebitmap::cx#1 ← ++ (byte) mode_twoplanebitmap::cx#2 -- vbuz1=_inc_vbuz1 + //SEG679 [367] (byte) mode_twoplanebitmap::cx#1 ← ++ (byte) mode_twoplanebitmap::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG679 [368] if((byte) mode_twoplanebitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG680 [368] if((byte) mode_twoplanebitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b11 - //SEG680 mode_twoplanebitmap::@11 + //SEG681 mode_twoplanebitmap::@11 b11: - //SEG681 [369] (byte) mode_twoplanebitmap::cy#1 ← ++ (byte) mode_twoplanebitmap::cy#4 -- vbuz1=_inc_vbuz1 + //SEG682 [369] (byte) mode_twoplanebitmap::cy#1 ← ++ (byte) mode_twoplanebitmap::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG682 [370] if((byte) mode_twoplanebitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_twoplanebitmap::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG683 [370] if((byte) mode_twoplanebitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_twoplanebitmap::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b11 - //SEG683 [371] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4] + //SEG684 [371] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4] b4_from_b11: - //SEG684 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (const byte*) mode_twoplanebitmap::PLANEA#0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#0] -- pbuz1=pbuc1 + //SEG685 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (const byte*) mode_twoplanebitmap::PLANEA#0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG685 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#1] -- vbuz1=vbuc1 + //SEG686 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b4 - //SEG686 [371] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4] + //SEG687 [371] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4] b4_from_b15: - //SEG687 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#0] -- register_copy - //SEG688 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte) mode_twoplanebitmap::ay#1 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#1] -- register_copy + //SEG688 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#0] -- register_copy + //SEG689 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte) mode_twoplanebitmap::ay#1 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#1] -- register_copy jmp b4 - //SEG689 mode_twoplanebitmap::@4 + //SEG690 mode_twoplanebitmap::@4 b4: - //SEG690 [372] phi from mode_twoplanebitmap::@4 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5] + //SEG691 [372] phi from mode_twoplanebitmap::@4 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5] b5_from_b4: - //SEG691 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#0] -- vbuz1=vbuc1 + //SEG692 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#0] -- vbuz1=vbuc1 lda #0 sta ax - //SEG692 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#6 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#1] -- register_copy + //SEG693 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#6 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#1] -- register_copy jmp b5 - //SEG693 [372] phi from mode_twoplanebitmap::@7 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5] + //SEG694 [372] phi from mode_twoplanebitmap::@7 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5] b5_from_b7: - //SEG694 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte) mode_twoplanebitmap::ax#1 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#0] -- register_copy - //SEG695 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#1] -- register_copy + //SEG695 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte) mode_twoplanebitmap::ax#1 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#0] -- register_copy + //SEG696 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#1] -- register_copy jmp b5 - //SEG696 mode_twoplanebitmap::@5 + //SEG697 mode_twoplanebitmap::@5 b5: - //SEG697 [373] (byte~) mode_twoplanebitmap::$21 ← (byte) mode_twoplanebitmap::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_band_vbuc1 + //SEG698 [373] (byte~) mode_twoplanebitmap::$21 ← (byte) mode_twoplanebitmap::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_band_vbuc1 lda #4 and ay sta _21 - //SEG698 [374] if((byte~) mode_twoplanebitmap::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_twoplanebitmap::@6 -- vbuz1_eq_0_then_la1 + //SEG699 [374] if((byte~) mode_twoplanebitmap::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_twoplanebitmap::@6 -- vbuz1_eq_0_then_la1 lda _21 cmp #0 beq b6 jmp b13 - //SEG699 mode_twoplanebitmap::@13 + //SEG700 mode_twoplanebitmap::@13 b13: - //SEG700 [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 + //SEG701 [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 lda #$ff ldy #0 sta (gfxa),y - //SEG701 [376] (byte*) mode_twoplanebitmap::gfxa#2 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG702 [376] (byte*) mode_twoplanebitmap::gfxa#2 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG702 [377] phi from mode_twoplanebitmap::@13 mode_twoplanebitmap::@6 to mode_twoplanebitmap::@7 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7] + //SEG703 [377] phi from mode_twoplanebitmap::@13 mode_twoplanebitmap::@6 to mode_twoplanebitmap::@7 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7] b7_from_b13: b7_from_b6: - //SEG703 [377] phi (byte*) mode_twoplanebitmap::gfxa#7 = (byte*) mode_twoplanebitmap::gfxa#2 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7#0] -- register_copy + //SEG704 [377] phi (byte*) mode_twoplanebitmap::gfxa#7 = (byte*) mode_twoplanebitmap::gfxa#2 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7#0] -- register_copy jmp b7 - //SEG704 mode_twoplanebitmap::@7 + //SEG705 mode_twoplanebitmap::@7 b7: - //SEG705 [378] (byte) mode_twoplanebitmap::ax#1 ← ++ (byte) mode_twoplanebitmap::ax#2 -- vbuz1=_inc_vbuz1 + //SEG706 [378] (byte) mode_twoplanebitmap::ax#1 ← ++ (byte) mode_twoplanebitmap::ax#2 -- vbuz1=_inc_vbuz1 inc ax - //SEG706 [379] if((byte) mode_twoplanebitmap::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG707 [379] if((byte) mode_twoplanebitmap::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@5 -- vbuz1_neq_vbuc1_then_la1 lda ax cmp #$28 bne b5_from_b7 jmp b15 - //SEG707 mode_twoplanebitmap::@15 + //SEG708 mode_twoplanebitmap::@15 b15: - //SEG708 [380] (byte) mode_twoplanebitmap::ay#1 ← ++ (byte) mode_twoplanebitmap::ay#4 -- vbuz1=_inc_vbuz1 + //SEG709 [380] (byte) mode_twoplanebitmap::ay#1 ← ++ (byte) mode_twoplanebitmap::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG709 [381] if((byte) mode_twoplanebitmap::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG710 [381] if((byte) mode_twoplanebitmap::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4_from_b15 - //SEG710 [382] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8] + //SEG711 [382] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8] b8_from_b15: - //SEG711 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#0] -- vbuz1=vbuc1 + //SEG712 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG712 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (const byte*) mode_twoplanebitmap::PLANEB#0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#1] -- pbuz1=pbuc1 + //SEG713 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (const byte*) mode_twoplanebitmap::PLANEB#0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 jmp b8 - //SEG713 [382] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8] + //SEG714 [382] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8] b8_from_b17: - //SEG714 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte) mode_twoplanebitmap::by#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#0] -- register_copy - //SEG715 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#1] -- register_copy + //SEG715 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte) mode_twoplanebitmap::by#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#0] -- register_copy + //SEG716 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#1] -- register_copy jmp b8 - //SEG716 mode_twoplanebitmap::@8 + //SEG717 mode_twoplanebitmap::@8 b8: - //SEG717 [383] phi from mode_twoplanebitmap::@8 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9] + //SEG718 [383] phi from mode_twoplanebitmap::@8 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9] b9_from_b8: - //SEG718 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#0] -- vbuz1=vbuc1 + //SEG719 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#0] -- vbuz1=vbuc1 lda #0 sta bx - //SEG719 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#3 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#1] -- register_copy + //SEG720 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#3 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#1] -- register_copy jmp b9 - //SEG720 [383] phi from mode_twoplanebitmap::@9 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9] + //SEG721 [383] phi from mode_twoplanebitmap::@9 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9] b9_from_b9: - //SEG721 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte) mode_twoplanebitmap::bx#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#0] -- register_copy - //SEG722 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#1] -- register_copy + //SEG722 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte) mode_twoplanebitmap::bx#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#0] -- register_copy + //SEG723 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#1] -- register_copy jmp b9 - //SEG723 mode_twoplanebitmap::@9 + //SEG724 mode_twoplanebitmap::@9 b9: - //SEG724 [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG725 [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 lda #$f ldy #0 sta (gfxb),y - //SEG725 [385] (byte*) mode_twoplanebitmap::gfxb#1 ← ++ (byte*) mode_twoplanebitmap::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG726 [385] (byte*) mode_twoplanebitmap::gfxb#1 ← ++ (byte*) mode_twoplanebitmap::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG726 [386] (byte) mode_twoplanebitmap::bx#1 ← ++ (byte) mode_twoplanebitmap::bx#2 -- vbuz1=_inc_vbuz1 + //SEG727 [386] (byte) mode_twoplanebitmap::bx#1 ← ++ (byte) mode_twoplanebitmap::bx#2 -- vbuz1=_inc_vbuz1 inc bx - //SEG727 [387] if((byte) mode_twoplanebitmap::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG728 [387] if((byte) mode_twoplanebitmap::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@9 -- vbuz1_neq_vbuc1_then_la1 lda bx cmp #$28 bne b9_from_b9 jmp b17 - //SEG728 mode_twoplanebitmap::@17 + //SEG729 mode_twoplanebitmap::@17 b17: - //SEG729 [388] (byte) mode_twoplanebitmap::by#1 ← ++ (byte) mode_twoplanebitmap::by#4 -- vbuz1=_inc_vbuz1 + //SEG730 [388] (byte) mode_twoplanebitmap::by#1 ← ++ (byte) mode_twoplanebitmap::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG730 [389] if((byte) mode_twoplanebitmap::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG731 [389] if((byte) mode_twoplanebitmap::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@8 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b8_from_b17 - //SEG731 [390] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@18 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@18] + //SEG732 [390] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@18 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@18] b18_from_b17: jmp b18 - //SEG732 mode_twoplanebitmap::@18 + //SEG733 mode_twoplanebitmap::@18 b18: - //SEG733 [391] call mode_ctrl - //SEG734 [155] phi from mode_twoplanebitmap::@18 to mode_ctrl [phi:mode_twoplanebitmap::@18->mode_ctrl] + //SEG734 [391] call mode_ctrl + //SEG735 [155] phi from mode_twoplanebitmap::@18 to mode_ctrl [phi:mode_twoplanebitmap::@18->mode_ctrl] mode_ctrl_from_b18: - //SEG735 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_twoplanebitmap::@18->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG736 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_twoplanebitmap::@18->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR sta dtv_control jsr mode_ctrl jmp breturn - //SEG736 mode_twoplanebitmap::@return + //SEG737 mode_twoplanebitmap::@return breturn: - //SEG737 [392] return + //SEG738 [392] return rts - //SEG738 mode_twoplanebitmap::@6 + //SEG739 mode_twoplanebitmap::@6 b6: - //SEG739 [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG740 [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (gfxa),y - //SEG740 [394] (byte*) mode_twoplanebitmap::gfxa#1 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG741 [394] (byte*) mode_twoplanebitmap::gfxa#1 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: jmp b7_from_b6 } -//SEG741 mode_sixsfred2 +//SEG742 mode_sixsfred2 // Sixs Fred Mode 2 - 8bpp Packed Bitmap - Generated from the two DTV linear graphics plane counters // Two Plane MultiColor Bitmap - 8bpp Packed Bitmap (CHUNK/COLDIS/HICOL = 0, ECM/BMM/MCM/LINEAR = 1) // Resolution: 160x200 @@ -14935,301 +14936,301 @@ mode_sixsfred2: { .label gfxb = $43 .label bx = $45 .label by = $42 - //SEG742 [395] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG743 [395] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_LINEAR sta DTV_CONTROL - //SEG743 [396] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG744 [396] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG744 [397] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG745 [397] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG745 [398] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG746 [398] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG747 [399] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG747 [400] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG748 [400] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG748 [401] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG749 [401] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG749 [402] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG750 [402] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG750 [403] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG751 [403] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG751 [404] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG752 [404] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG753 [405] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG753 [406] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG754 [406] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG754 [407] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG755 [407] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG755 [408] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG756 [408] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG756 [409] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG757 [409] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG757 [410] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG758 [410] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG759 [411] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG759 [412] phi from mode_sixsfred2 to mode_sixsfred2::@1 [phi:mode_sixsfred2->mode_sixsfred2::@1] + //SEG760 [412] phi from mode_sixsfred2 to mode_sixsfred2::@1 [phi:mode_sixsfred2->mode_sixsfred2::@1] b1_from_mode_sixsfred2: - //SEG760 [412] phi (byte) mode_sixsfred2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2->mode_sixsfred2::@1#0] -- vbuz1=vbuc1 + //SEG761 [412] phi (byte) mode_sixsfred2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2->mode_sixsfred2::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG761 [412] phi from mode_sixsfred2::@1 to mode_sixsfred2::@1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1] + //SEG762 [412] phi from mode_sixsfred2::@1 to mode_sixsfred2::@1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1] b1_from_b1: - //SEG762 [412] phi (byte) mode_sixsfred2::i#2 = (byte) mode_sixsfred2::i#1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1#0] -- register_copy + //SEG763 [412] phi (byte) mode_sixsfred2::i#2 = (byte) mode_sixsfred2::i#1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1#0] -- register_copy jmp b1 - //SEG763 mode_sixsfred2::@1 + //SEG764 mode_sixsfred2::@1 b1: - //SEG764 [413] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred2::i#2) ← (byte) mode_sixsfred2::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG765 [413] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred2::i#2) ← (byte) mode_sixsfred2::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta DTV_PALETTE,y - //SEG765 [414] (byte) mode_sixsfred2::i#1 ← ++ (byte) mode_sixsfred2::i#2 -- vbuz1=_inc_vbuz1 + //SEG766 [414] (byte) mode_sixsfred2::i#1 ← ++ (byte) mode_sixsfred2::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG766 [415] if((byte) mode_sixsfred2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG767 [415] if((byte) mode_sixsfred2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred2::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b8 - //SEG767 mode_sixsfred2::@8 + //SEG768 mode_sixsfred2::@8 b8: - //SEG768 [416] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG769 [416] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG769 [417] phi from mode_sixsfred2::@8 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2] + //SEG770 [417] phi from mode_sixsfred2::@8 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2] b2_from_b8: - //SEG770 [417] phi (byte*) mode_sixsfred2::col#3 = (const byte*) mode_sixsfred2::COLORS#0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#0] -- pbuz1=pbuc1 + //SEG771 [417] phi (byte*) mode_sixsfred2::col#3 = (const byte*) mode_sixsfred2::COLORS#0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG771 [417] phi (byte) mode_sixsfred2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#1] -- vbuz1=vbuc1 + //SEG772 [417] phi (byte) mode_sixsfred2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG772 [417] phi from mode_sixsfred2::@9 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2] + //SEG773 [417] phi from mode_sixsfred2::@9 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2] b2_from_b9: - //SEG773 [417] phi (byte*) mode_sixsfred2::col#3 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#0] -- register_copy - //SEG774 [417] phi (byte) mode_sixsfred2::cy#4 = (byte) mode_sixsfred2::cy#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#1] -- register_copy + //SEG774 [417] phi (byte*) mode_sixsfred2::col#3 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#0] -- register_copy + //SEG775 [417] phi (byte) mode_sixsfred2::cy#4 = (byte) mode_sixsfred2::cy#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#1] -- register_copy jmp b2 - //SEG775 mode_sixsfred2::@2 + //SEG776 mode_sixsfred2::@2 b2: - //SEG776 [418] phi from mode_sixsfred2::@2 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3] + //SEG777 [418] phi from mode_sixsfred2::@2 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3] b3_from_b2: - //SEG777 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#0] -- register_copy - //SEG778 [418] phi (byte) mode_sixsfred2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#1] -- vbuz1=vbuc1 + //SEG778 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#0] -- register_copy + //SEG779 [418] phi (byte) mode_sixsfred2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#1] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG779 [418] phi from mode_sixsfred2::@3 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3] + //SEG780 [418] phi from mode_sixsfred2::@3 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3] b3_from_b3: - //SEG780 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#0] -- register_copy - //SEG781 [418] phi (byte) mode_sixsfred2::cx#2 = (byte) mode_sixsfred2::cx#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#1] -- register_copy + //SEG781 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#0] -- register_copy + //SEG782 [418] phi (byte) mode_sixsfred2::cx#2 = (byte) mode_sixsfred2::cx#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#1] -- register_copy jmp b3 - //SEG782 mode_sixsfred2::@3 + //SEG783 mode_sixsfred2::@3 b3: - //SEG783 [419] (byte~) mode_sixsfred2::$14 ← (byte) mode_sixsfred2::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 + //SEG784 [419] (byte~) mode_sixsfred2::$14 ← (byte) mode_sixsfred2::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 lda #3 and cx sta _14 - //SEG784 [420] (byte~) mode_sixsfred2::$15 ← (byte~) mode_sixsfred2::$14 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG785 [420] (byte~) mode_sixsfred2::$15 ← (byte~) mode_sixsfred2::$14 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _14 asl asl asl asl sta _15 - //SEG785 [421] (byte~) mode_sixsfred2::$16 ← (byte) mode_sixsfred2::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 + //SEG786 [421] (byte~) mode_sixsfred2::$16 ← (byte) mode_sixsfred2::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 lda #3 and cy sta _16 - //SEG786 [422] (byte~) mode_sixsfred2::$17 ← (byte~) mode_sixsfred2::$15 | (byte~) mode_sixsfred2::$16 -- vbuz1=vbuz2_bor_vbuz3 + //SEG787 [422] (byte~) mode_sixsfred2::$17 ← (byte~) mode_sixsfred2::$15 | (byte~) mode_sixsfred2::$16 -- vbuz1=vbuz2_bor_vbuz3 lda _15 ora _16 sta _17 - //SEG787 [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$17 -- _deref_pbuz1=vbuz2 + //SEG788 [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$17 -- _deref_pbuz1=vbuz2 lda _17 ldy #0 sta (col),y - //SEG788 [424] (byte*) mode_sixsfred2::col#1 ← ++ (byte*) mode_sixsfred2::col#2 -- pbuz1=_inc_pbuz1 + //SEG789 [424] (byte*) mode_sixsfred2::col#1 ← ++ (byte*) mode_sixsfred2::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG789 [425] (byte) mode_sixsfred2::cx#1 ← ++ (byte) mode_sixsfred2::cx#2 -- vbuz1=_inc_vbuz1 + //SEG790 [425] (byte) mode_sixsfred2::cx#1 ← ++ (byte) mode_sixsfred2::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG790 [426] if((byte) mode_sixsfred2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG791 [426] if((byte) mode_sixsfred2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b9 - //SEG791 mode_sixsfred2::@9 + //SEG792 mode_sixsfred2::@9 b9: - //SEG792 [427] (byte) mode_sixsfred2::cy#1 ← ++ (byte) mode_sixsfred2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG793 [427] (byte) mode_sixsfred2::cy#1 ← ++ (byte) mode_sixsfred2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG793 [428] if((byte) mode_sixsfred2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred2::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG794 [428] if((byte) mode_sixsfred2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred2::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b9 - //SEG794 [429] phi from mode_sixsfred2::@9 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4] + //SEG795 [429] phi from mode_sixsfred2::@9 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4] b4_from_b9: - //SEG795 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (const byte*) mode_sixsfred2::PLANEA#0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#0] -- pbuz1=pbuc1 + //SEG796 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (const byte*) mode_sixsfred2::PLANEA#0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG796 [429] phi (byte) mode_sixsfred2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#1] -- vbuz1=vbuc1 + //SEG797 [429] phi (byte) mode_sixsfred2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b4 - //SEG797 [429] phi from mode_sixsfred2::@11 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4] + //SEG798 [429] phi from mode_sixsfred2::@11 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4] b4_from_b11: - //SEG798 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#0] -- register_copy - //SEG799 [429] phi (byte) mode_sixsfred2::ay#4 = (byte) mode_sixsfred2::ay#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#1] -- register_copy + //SEG799 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#0] -- register_copy + //SEG800 [429] phi (byte) mode_sixsfred2::ay#4 = (byte) mode_sixsfred2::ay#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#1] -- register_copy jmp b4 - //SEG800 mode_sixsfred2::@4 + //SEG801 mode_sixsfred2::@4 b4: - //SEG801 [430] phi from mode_sixsfred2::@4 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5] + //SEG802 [430] phi from mode_sixsfred2::@4 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5] b5_from_b4: - //SEG802 [430] phi (byte) mode_sixsfred2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#0] -- vbuz1=vbuc1 + //SEG803 [430] phi (byte) mode_sixsfred2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#0] -- vbuz1=vbuc1 lda #0 sta ax - //SEG803 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#3 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#1] -- register_copy + //SEG804 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#3 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#1] -- register_copy jmp b5 - //SEG804 [430] phi from mode_sixsfred2::@5 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5] + //SEG805 [430] phi from mode_sixsfred2::@5 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5] b5_from_b5: - //SEG805 [430] phi (byte) mode_sixsfred2::ax#2 = (byte) mode_sixsfred2::ax#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#0] -- register_copy - //SEG806 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#1] -- register_copy + //SEG806 [430] phi (byte) mode_sixsfred2::ax#2 = (byte) mode_sixsfred2::ax#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#0] -- register_copy + //SEG807 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#1] -- register_copy jmp b5 - //SEG807 mode_sixsfred2::@5 + //SEG808 mode_sixsfred2::@5 b5: - //SEG808 [431] (byte~) mode_sixsfred2::$20 ← (byte) mode_sixsfred2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG809 [431] (byte~) mode_sixsfred2::$20 ← (byte) mode_sixsfred2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda ay lsr sta _20 - //SEG809 [432] (byte) mode_sixsfred2::row#0 ← (byte~) mode_sixsfred2::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 + //SEG810 [432] (byte) mode_sixsfred2::row#0 ← (byte~) mode_sixsfred2::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 lda #3 and _20 sta row - //SEG810 [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte[]) mode_sixsfred2::row_bitmask#0 + (byte) mode_sixsfred2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG811 [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte[]) mode_sixsfred2::row_bitmask#0 + (byte) mode_sixsfred2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy row lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG811 [434] (byte*) mode_sixsfred2::gfxa#1 ← ++ (byte*) mode_sixsfred2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG812 [434] (byte*) mode_sixsfred2::gfxa#1 ← ++ (byte*) mode_sixsfred2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG812 [435] (byte) mode_sixsfred2::ax#1 ← ++ (byte) mode_sixsfred2::ax#2 -- vbuz1=_inc_vbuz1 + //SEG813 [435] (byte) mode_sixsfred2::ax#1 ← ++ (byte) mode_sixsfred2::ax#2 -- vbuz1=_inc_vbuz1 inc ax - //SEG813 [436] if((byte) mode_sixsfred2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG814 [436] if((byte) mode_sixsfred2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@5 -- vbuz1_neq_vbuc1_then_la1 lda ax cmp #$28 bne b5_from_b5 jmp b11 - //SEG814 mode_sixsfred2::@11 + //SEG815 mode_sixsfred2::@11 b11: - //SEG815 [437] (byte) mode_sixsfred2::ay#1 ← ++ (byte) mode_sixsfred2::ay#4 -- vbuz1=_inc_vbuz1 + //SEG816 [437] (byte) mode_sixsfred2::ay#1 ← ++ (byte) mode_sixsfred2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG816 [438] if((byte) mode_sixsfred2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG817 [438] if((byte) mode_sixsfred2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4_from_b11 - //SEG817 [439] phi from mode_sixsfred2::@11 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6] + //SEG818 [439] phi from mode_sixsfred2::@11 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6] b6_from_b11: - //SEG818 [439] phi (byte) mode_sixsfred2::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#0] -- vbuz1=vbuc1 + //SEG819 [439] phi (byte) mode_sixsfred2::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG819 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (const byte*) mode_sixsfred2::PLANEB#0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#1] -- pbuz1=pbuc1 + //SEG820 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (const byte*) mode_sixsfred2::PLANEB#0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 jmp b6 - //SEG820 [439] phi from mode_sixsfred2::@13 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6] + //SEG821 [439] phi from mode_sixsfred2::@13 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6] b6_from_b13: - //SEG821 [439] phi (byte) mode_sixsfred2::by#4 = (byte) mode_sixsfred2::by#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#0] -- register_copy - //SEG822 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#1] -- register_copy + //SEG822 [439] phi (byte) mode_sixsfred2::by#4 = (byte) mode_sixsfred2::by#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#0] -- register_copy + //SEG823 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#1] -- register_copy jmp b6 - //SEG823 mode_sixsfred2::@6 + //SEG824 mode_sixsfred2::@6 b6: - //SEG824 [440] phi from mode_sixsfred2::@6 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7] + //SEG825 [440] phi from mode_sixsfred2::@6 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7] b7_from_b6: - //SEG825 [440] phi (byte) mode_sixsfred2::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#0] -- vbuz1=vbuc1 + //SEG826 [440] phi (byte) mode_sixsfred2::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#0] -- vbuz1=vbuc1 lda #0 sta bx - //SEG826 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#3 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#1] -- register_copy + //SEG827 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#3 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#1] -- register_copy jmp b7 - //SEG827 [440] phi from mode_sixsfred2::@7 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7] + //SEG828 [440] phi from mode_sixsfred2::@7 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7] b7_from_b7: - //SEG828 [440] phi (byte) mode_sixsfred2::bx#2 = (byte) mode_sixsfred2::bx#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#0] -- register_copy - //SEG829 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#1] -- register_copy + //SEG829 [440] phi (byte) mode_sixsfred2::bx#2 = (byte) mode_sixsfred2::bx#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#0] -- register_copy + //SEG830 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#1] -- register_copy jmp b7 - //SEG830 mode_sixsfred2::@7 + //SEG831 mode_sixsfred2::@7 b7: - //SEG831 [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 + //SEG832 [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 lda #$1b ldy #0 sta (gfxb),y - //SEG832 [442] (byte*) mode_sixsfred2::gfxb#1 ← ++ (byte*) mode_sixsfred2::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG833 [442] (byte*) mode_sixsfred2::gfxb#1 ← ++ (byte*) mode_sixsfred2::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG833 [443] (byte) mode_sixsfred2::bx#1 ← ++ (byte) mode_sixsfred2::bx#2 -- vbuz1=_inc_vbuz1 + //SEG834 [443] (byte) mode_sixsfred2::bx#1 ← ++ (byte) mode_sixsfred2::bx#2 -- vbuz1=_inc_vbuz1 inc bx - //SEG834 [444] if((byte) mode_sixsfred2::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG835 [444] if((byte) mode_sixsfred2::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@7 -- vbuz1_neq_vbuc1_then_la1 lda bx cmp #$28 bne b7_from_b7 jmp b13 - //SEG835 mode_sixsfred2::@13 + //SEG836 mode_sixsfred2::@13 b13: - //SEG836 [445] (byte) mode_sixsfred2::by#1 ← ++ (byte) mode_sixsfred2::by#4 -- vbuz1=_inc_vbuz1 + //SEG837 [445] (byte) mode_sixsfred2::by#1 ← ++ (byte) mode_sixsfred2::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG837 [446] if((byte) mode_sixsfred2::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG838 [446] if((byte) mode_sixsfred2::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@6 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b6_from_b13 - //SEG838 [447] phi from mode_sixsfred2::@13 to mode_sixsfred2::@14 [phi:mode_sixsfred2::@13->mode_sixsfred2::@14] + //SEG839 [447] phi from mode_sixsfred2::@13 to mode_sixsfred2::@14 [phi:mode_sixsfred2::@13->mode_sixsfred2::@14] b14_from_b13: jmp b14 - //SEG839 mode_sixsfred2::@14 + //SEG840 mode_sixsfred2::@14 b14: - //SEG840 [448] call mode_ctrl - //SEG841 [155] phi from mode_sixsfred2::@14 to mode_ctrl [phi:mode_sixsfred2::@14->mode_ctrl] + //SEG841 [448] call mode_ctrl + //SEG842 [155] phi from mode_sixsfred2::@14 to mode_ctrl [phi:mode_sixsfred2::@14->mode_ctrl] mode_ctrl_from_b14: - //SEG842 [155] phi (byte) dtv_control#145 = (const byte) DTV_LINEAR#0 [phi:mode_sixsfred2::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG843 [155] phi (byte) dtv_control#145 = (const byte) DTV_LINEAR#0 [phi:mode_sixsfred2::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_LINEAR sta dtv_control jsr mode_ctrl jmp breturn - //SEG843 mode_sixsfred2::@return + //SEG844 mode_sixsfred2::@return breturn: - //SEG844 [449] return + //SEG845 [449] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG845 mode_hicolmcchar +//SEG846 mode_hicolmcchar // High Color Multicolor Character Mode (LINEAR/CHUNK/COLDIS/BMM/ECM = 0, MCM/HICOL = 1) // Resolution: 160x200 (320x200) // Normal VIC Adressing: @@ -15256,181 +15257,181 @@ mode_hicolmcchar: { .label ch = $4b .label cx = $48 .label cy = $47 - //SEG846 [450] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolmcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG847 [450] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolmcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG847 [451] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG848 [451] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG848 [452] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG849 [452] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG849 [453] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG850 [453] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG850 [454] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG851 [454] *((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 - //SEG851 [455] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolmcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG852 [455] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolmcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG852 [456] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG853 [456] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG853 [457] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG854 [457] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL|VIC_MCM sta VIC_CONTROL2 - //SEG854 [458] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolmcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolmcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG855 [458] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolmcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolmcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG855 [459] phi from mode_hicolmcchar to mode_hicolmcchar::@1 [phi:mode_hicolmcchar->mode_hicolmcchar::@1] + //SEG856 [459] phi from mode_hicolmcchar to mode_hicolmcchar::@1 [phi:mode_hicolmcchar->mode_hicolmcchar::@1] b1_from_mode_hicolmcchar: - //SEG856 [459] phi (byte) mode_hicolmcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar->mode_hicolmcchar::@1#0] -- vbuz1=vbuc1 + //SEG857 [459] phi (byte) mode_hicolmcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar->mode_hicolmcchar::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG857 [459] phi from mode_hicolmcchar::@1 to mode_hicolmcchar::@1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1] + //SEG858 [459] phi from mode_hicolmcchar::@1 to mode_hicolmcchar::@1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1] b1_from_b1: - //SEG858 [459] phi (byte) mode_hicolmcchar::i#2 = (byte) mode_hicolmcchar::i#1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1#0] -- register_copy + //SEG859 [459] phi (byte) mode_hicolmcchar::i#2 = (byte) mode_hicolmcchar::i#1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1#0] -- register_copy jmp b1 - //SEG859 mode_hicolmcchar::@1 + //SEG860 mode_hicolmcchar::@1 b1: - //SEG860 [460] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolmcchar::i#2) ← (byte) mode_hicolmcchar::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG861 [460] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolmcchar::i#2) ← (byte) mode_hicolmcchar::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta DTV_PALETTE,y - //SEG861 [461] (byte) mode_hicolmcchar::i#1 ← ++ (byte) mode_hicolmcchar::i#2 -- vbuz1=_inc_vbuz1 + //SEG862 [461] (byte) mode_hicolmcchar::i#1 ← ++ (byte) mode_hicolmcchar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG862 [462] if((byte) mode_hicolmcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolmcchar::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG863 [462] if((byte) mode_hicolmcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolmcchar::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b4 - //SEG863 mode_hicolmcchar::@4 + //SEG864 mode_hicolmcchar::@4 b4: - //SEG864 [463] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG865 [463] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG865 [464] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 + //SEG866 [464] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 lda #$50 sta BGCOL1 - //SEG866 [465] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 + //SEG867 [465] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 lda #$54 sta BGCOL2 - //SEG867 [466] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 + //SEG868 [466] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 lda #$58 sta BGCOL3 - //SEG868 [467] phi from mode_hicolmcchar::@4 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2] + //SEG869 [467] phi from mode_hicolmcchar::@4 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2] b2_from_b4: - //SEG869 [467] phi (byte*) mode_hicolmcchar::ch#3 = (const byte*) mode_hicolmcchar::SCREEN#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#0] -- pbuz1=pbuc1 + //SEG870 [467] phi (byte*) mode_hicolmcchar::ch#3 = (const byte*) mode_hicolmcchar::SCREEN#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG870 [467] phi (byte*) mode_hicolmcchar::col#3 = (const byte*) mode_hicolmcchar::COLORS#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#1] -- pbuz1=pbuc1 + //SEG871 [467] phi (byte*) mode_hicolmcchar::col#3 = (const byte*) mode_hicolmcchar::COLORS#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG871 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#2] -- vbuz1=vbuc1 + //SEG872 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG872 [467] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2] + //SEG873 [467] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2] b2_from_b5: - //SEG873 [467] phi (byte*) mode_hicolmcchar::ch#3 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#0] -- register_copy - //SEG874 [467] phi (byte*) mode_hicolmcchar::col#3 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#1] -- register_copy - //SEG875 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte) mode_hicolmcchar::cy#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#2] -- register_copy + //SEG874 [467] phi (byte*) mode_hicolmcchar::ch#3 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#0] -- register_copy + //SEG875 [467] phi (byte*) mode_hicolmcchar::col#3 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#1] -- register_copy + //SEG876 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte) mode_hicolmcchar::cy#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#2] -- register_copy jmp b2 - //SEG876 mode_hicolmcchar::@2 + //SEG877 mode_hicolmcchar::@2 b2: - //SEG877 [468] phi from mode_hicolmcchar::@2 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3] + //SEG878 [468] phi from mode_hicolmcchar::@2 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3] b3_from_b2: - //SEG878 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#0] -- register_copy - //SEG879 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#1] -- register_copy - //SEG880 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#2] -- vbuz1=vbuc1 + //SEG879 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#0] -- register_copy + //SEG880 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#1] -- register_copy + //SEG881 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#2] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG881 [468] phi from mode_hicolmcchar::@3 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3] + //SEG882 [468] phi from mode_hicolmcchar::@3 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3] b3_from_b3: - //SEG882 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#0] -- register_copy - //SEG883 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#1] -- register_copy - //SEG884 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte) mode_hicolmcchar::cx#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#2] -- register_copy + //SEG883 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#0] -- register_copy + //SEG884 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#1] -- register_copy + //SEG885 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte) mode_hicolmcchar::cx#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#2] -- register_copy jmp b3 - //SEG885 mode_hicolmcchar::@3 + //SEG886 mode_hicolmcchar::@3 b3: - //SEG886 [469] (byte~) mode_hicolmcchar::$25 ← (byte) mode_hicolmcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG887 [469] (byte~) mode_hicolmcchar::$25 ← (byte) mode_hicolmcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cy sta _25 - //SEG887 [470] (byte~) mode_hicolmcchar::$26 ← (byte~) mode_hicolmcchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG888 [470] (byte~) mode_hicolmcchar::$26 ← (byte~) mode_hicolmcchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _25 asl asl asl asl sta _26 - //SEG888 [471] (byte~) mode_hicolmcchar::$27 ← (byte) mode_hicolmcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG889 [471] (byte~) mode_hicolmcchar::$27 ← (byte) mode_hicolmcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cx sta _27 - //SEG889 [472] (byte) mode_hicolmcchar::v#0 ← (byte~) mode_hicolmcchar::$26 | (byte~) mode_hicolmcchar::$27 -- vbuz1=vbuz2_bor_vbuz3 + //SEG890 [472] (byte) mode_hicolmcchar::v#0 ← (byte~) mode_hicolmcchar::$26 | (byte~) mode_hicolmcchar::$27 -- vbuz1=vbuz2_bor_vbuz3 lda _26 ora _27 sta v - //SEG890 [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuz2 + //SEG891 [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuz2 lda v ldy #0 sta (col),y - //SEG891 [474] (byte*) mode_hicolmcchar::col#1 ← ++ (byte*) mode_hicolmcchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG892 [474] (byte*) mode_hicolmcchar::col#1 ← ++ (byte*) mode_hicolmcchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG892 [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuz2 + //SEG893 [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuz2 lda v ldy #0 sta (ch),y - //SEG893 [476] (byte*) mode_hicolmcchar::ch#1 ← ++ (byte*) mode_hicolmcchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG894 [476] (byte*) mode_hicolmcchar::ch#1 ← ++ (byte*) mode_hicolmcchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG894 [477] (byte) mode_hicolmcchar::cx#1 ← ++ (byte) mode_hicolmcchar::cx#2 -- vbuz1=_inc_vbuz1 + //SEG895 [477] (byte) mode_hicolmcchar::cx#1 ← ++ (byte) mode_hicolmcchar::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG895 [478] if((byte) mode_hicolmcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolmcchar::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG896 [478] if((byte) mode_hicolmcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolmcchar::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b5 - //SEG896 mode_hicolmcchar::@5 + //SEG897 mode_hicolmcchar::@5 b5: - //SEG897 [479] (byte) mode_hicolmcchar::cy#1 ← ++ (byte) mode_hicolmcchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG898 [479] (byte) mode_hicolmcchar::cy#1 ← ++ (byte) mode_hicolmcchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG898 [480] if((byte) mode_hicolmcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolmcchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG899 [480] if((byte) mode_hicolmcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolmcchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG899 [481] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@6 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@6] + //SEG900 [481] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@6 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@6] b6_from_b5: jmp b6 - //SEG900 mode_hicolmcchar::@6 + //SEG901 mode_hicolmcchar::@6 b6: - //SEG901 [482] call mode_ctrl - //SEG902 [155] phi from mode_hicolmcchar::@6 to mode_ctrl [phi:mode_hicolmcchar::@6->mode_ctrl] + //SEG902 [482] call mode_ctrl + //SEG903 [155] phi from mode_hicolmcchar::@6 to mode_ctrl [phi:mode_hicolmcchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG903 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG904 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl jmp breturn - //SEG904 mode_hicolmcchar::@return + //SEG905 mode_hicolmcchar::@return breturn: - //SEG905 [483] return + //SEG906 [483] return rts } -//SEG906 mode_hicolecmchar +//SEG907 mode_hicolecmchar // High Color Extended Background Color Character Mode (LINEAR/CHUNK/COLDIS/MCM/BMM = 0, ECM/HICOL = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -15456,184 +15457,184 @@ mode_hicolecmchar: { .label ch = $52 .label cx = $4f .label cy = $4e - //SEG907 [484] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG908 [484] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG908 [485] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG909 [485] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG909 [486] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG910 [486] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG910 [487] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG911 [487] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG911 [488] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG912 [488] *((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 - //SEG912 [489] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG913 [489] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG913 [490] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG914 [490] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|VIC_ECM|3 sta VIC_CONTROL - //SEG914 [491] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG915 [491] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG915 [492] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG916 [492] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG916 [493] phi from mode_hicolecmchar to mode_hicolecmchar::@1 [phi:mode_hicolecmchar->mode_hicolecmchar::@1] + //SEG917 [493] phi from mode_hicolecmchar to mode_hicolecmchar::@1 [phi:mode_hicolecmchar->mode_hicolecmchar::@1] b1_from_mode_hicolecmchar: - //SEG917 [493] phi (byte) mode_hicolecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar->mode_hicolecmchar::@1#0] -- vbuz1=vbuc1 + //SEG918 [493] phi (byte) mode_hicolecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar->mode_hicolecmchar::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG918 [493] phi from mode_hicolecmchar::@1 to mode_hicolecmchar::@1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1] + //SEG919 [493] phi from mode_hicolecmchar::@1 to mode_hicolecmchar::@1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1] b1_from_b1: - //SEG919 [493] phi (byte) mode_hicolecmchar::i#2 = (byte) mode_hicolecmchar::i#1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1#0] -- register_copy + //SEG920 [493] phi (byte) mode_hicolecmchar::i#2 = (byte) mode_hicolecmchar::i#1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1#0] -- register_copy jmp b1 - //SEG920 mode_hicolecmchar::@1 + //SEG921 mode_hicolecmchar::@1 b1: - //SEG921 [494] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolecmchar::i#2) ← (byte) mode_hicolecmchar::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG922 [494] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolecmchar::i#2) ← (byte) mode_hicolecmchar::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta DTV_PALETTE,y - //SEG922 [495] (byte) mode_hicolecmchar::i#1 ← ++ (byte) mode_hicolecmchar::i#2 -- vbuz1=_inc_vbuz1 + //SEG923 [495] (byte) mode_hicolecmchar::i#1 ← ++ (byte) mode_hicolecmchar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG923 [496] if((byte) mode_hicolecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolecmchar::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG924 [496] if((byte) mode_hicolecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolecmchar::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b4 - //SEG924 mode_hicolecmchar::@4 + //SEG925 mode_hicolecmchar::@4 b4: - //SEG925 [497] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG926 [497] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG926 [498] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 + //SEG927 [498] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 lda #$50 sta BGCOL1 - //SEG927 [499] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 + //SEG928 [499] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 lda #$54 sta BGCOL2 - //SEG928 [500] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 + //SEG929 [500] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 lda #$58 sta BGCOL3 - //SEG929 [501] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 92 -- _deref_pbuc1=vbuc2 + //SEG930 [501] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 92 -- _deref_pbuc1=vbuc2 lda #$5c sta BGCOL4 - //SEG930 [502] phi from mode_hicolecmchar::@4 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2] + //SEG931 [502] phi from mode_hicolecmchar::@4 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2] b2_from_b4: - //SEG931 [502] phi (byte*) mode_hicolecmchar::ch#3 = (const byte*) mode_hicolecmchar::SCREEN#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#0] -- pbuz1=pbuc1 + //SEG932 [502] phi (byte*) mode_hicolecmchar::ch#3 = (const byte*) mode_hicolecmchar::SCREEN#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG932 [502] phi (byte*) mode_hicolecmchar::col#3 = (const byte*) mode_hicolecmchar::COLORS#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#1] -- pbuz1=pbuc1 + //SEG933 [502] phi (byte*) mode_hicolecmchar::col#3 = (const byte*) mode_hicolecmchar::COLORS#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG933 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#2] -- vbuz1=vbuc1 + //SEG934 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG934 [502] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2] + //SEG935 [502] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2] b2_from_b5: - //SEG935 [502] phi (byte*) mode_hicolecmchar::ch#3 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#0] -- register_copy - //SEG936 [502] phi (byte*) mode_hicolecmchar::col#3 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#1] -- register_copy - //SEG937 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte) mode_hicolecmchar::cy#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#2] -- register_copy + //SEG936 [502] phi (byte*) mode_hicolecmchar::ch#3 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#0] -- register_copy + //SEG937 [502] phi (byte*) mode_hicolecmchar::col#3 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#1] -- register_copy + //SEG938 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte) mode_hicolecmchar::cy#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#2] -- register_copy jmp b2 - //SEG938 mode_hicolecmchar::@2 + //SEG939 mode_hicolecmchar::@2 b2: - //SEG939 [503] phi from mode_hicolecmchar::@2 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3] + //SEG940 [503] phi from mode_hicolecmchar::@2 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3] b3_from_b2: - //SEG940 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#0] -- register_copy - //SEG941 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#1] -- register_copy - //SEG942 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#2] -- vbuz1=vbuc1 + //SEG941 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#0] -- register_copy + //SEG942 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#1] -- register_copy + //SEG943 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#2] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG943 [503] phi from mode_hicolecmchar::@3 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3] + //SEG944 [503] phi from mode_hicolecmchar::@3 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3] b3_from_b3: - //SEG944 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#0] -- register_copy - //SEG945 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#1] -- register_copy - //SEG946 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte) mode_hicolecmchar::cx#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#2] -- register_copy + //SEG945 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#0] -- register_copy + //SEG946 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#1] -- register_copy + //SEG947 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte) mode_hicolecmchar::cx#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#2] -- register_copy jmp b3 - //SEG947 mode_hicolecmchar::@3 + //SEG948 mode_hicolecmchar::@3 b3: - //SEG948 [504] (byte~) mode_hicolecmchar::$25 ← (byte) mode_hicolecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG949 [504] (byte~) mode_hicolecmchar::$25 ← (byte) mode_hicolecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cy sta _25 - //SEG949 [505] (byte~) mode_hicolecmchar::$26 ← (byte~) mode_hicolecmchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG950 [505] (byte~) mode_hicolecmchar::$26 ← (byte~) mode_hicolecmchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _25 asl asl asl asl sta _26 - //SEG950 [506] (byte~) mode_hicolecmchar::$27 ← (byte) mode_hicolecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG951 [506] (byte~) mode_hicolecmchar::$27 ← (byte) mode_hicolecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cx sta _27 - //SEG951 [507] (byte) mode_hicolecmchar::v#0 ← (byte~) mode_hicolecmchar::$26 | (byte~) mode_hicolecmchar::$27 -- vbuz1=vbuz2_bor_vbuz3 + //SEG952 [507] (byte) mode_hicolecmchar::v#0 ← (byte~) mode_hicolecmchar::$26 | (byte~) mode_hicolecmchar::$27 -- vbuz1=vbuz2_bor_vbuz3 lda _26 ora _27 sta v - //SEG952 [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuz2 + //SEG953 [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuz2 lda v ldy #0 sta (col),y - //SEG953 [509] (byte*) mode_hicolecmchar::col#1 ← ++ (byte*) mode_hicolecmchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG954 [509] (byte*) mode_hicolecmchar::col#1 ← ++ (byte*) mode_hicolecmchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG954 [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuz2 + //SEG955 [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuz2 lda v ldy #0 sta (ch),y - //SEG955 [511] (byte*) mode_hicolecmchar::ch#1 ← ++ (byte*) mode_hicolecmchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG956 [511] (byte*) mode_hicolecmchar::ch#1 ← ++ (byte*) mode_hicolecmchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG956 [512] (byte) mode_hicolecmchar::cx#1 ← ++ (byte) mode_hicolecmchar::cx#2 -- vbuz1=_inc_vbuz1 + //SEG957 [512] (byte) mode_hicolecmchar::cx#1 ← ++ (byte) mode_hicolecmchar::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG957 [513] if((byte) mode_hicolecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolecmchar::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG958 [513] if((byte) mode_hicolecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolecmchar::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b5 - //SEG958 mode_hicolecmchar::@5 + //SEG959 mode_hicolecmchar::@5 b5: - //SEG959 [514] (byte) mode_hicolecmchar::cy#1 ← ++ (byte) mode_hicolecmchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG960 [514] (byte) mode_hicolecmchar::cy#1 ← ++ (byte) mode_hicolecmchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG960 [515] if((byte) mode_hicolecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG961 [515] if((byte) mode_hicolecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG961 [516] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@6 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@6] + //SEG962 [516] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@6 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@6] b6_from_b5: jmp b6 - //SEG962 mode_hicolecmchar::@6 + //SEG963 mode_hicolecmchar::@6 b6: - //SEG963 [517] call mode_ctrl - //SEG964 [155] phi from mode_hicolecmchar::@6 to mode_ctrl [phi:mode_hicolecmchar::@6->mode_ctrl] + //SEG964 [517] call mode_ctrl + //SEG965 [155] phi from mode_hicolecmchar::@6 to mode_ctrl [phi:mode_hicolecmchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG965 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG966 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl jmp breturn - //SEG966 mode_hicolecmchar::@return + //SEG967 mode_hicolecmchar::@return breturn: - //SEG967 [518] return + //SEG968 [518] return rts } -//SEG968 mode_hicolstdchar +//SEG969 mode_hicolstdchar // High Color Standard Character Mode (LINEAR/CHUNK/COLDIS/ECM/MCM/BMM = 0, HICOL = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -15655,175 +15656,175 @@ mode_hicolstdchar: { .label ch = $59 .label cx = $56 .label cy = $55 - //SEG969 [519] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolstdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG970 [519] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolstdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG970 [520] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG971 [520] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG971 [521] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG972 [521] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG972 [522] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG973 [522] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG973 [523] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG974 [523] *((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 - //SEG974 [524] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolstdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG975 [524] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolstdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG975 [525] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG976 [525] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG976 [526] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG977 [526] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG977 [527] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolstdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolstdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG978 [527] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolstdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolstdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG978 [528] phi from mode_hicolstdchar to mode_hicolstdchar::@1 [phi:mode_hicolstdchar->mode_hicolstdchar::@1] + //SEG979 [528] phi from mode_hicolstdchar to mode_hicolstdchar::@1 [phi:mode_hicolstdchar->mode_hicolstdchar::@1] b1_from_mode_hicolstdchar: - //SEG979 [528] phi (byte) mode_hicolstdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar->mode_hicolstdchar::@1#0] -- vbuz1=vbuc1 + //SEG980 [528] phi (byte) mode_hicolstdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar->mode_hicolstdchar::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG980 [528] phi from mode_hicolstdchar::@1 to mode_hicolstdchar::@1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1] + //SEG981 [528] phi from mode_hicolstdchar::@1 to mode_hicolstdchar::@1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1] b1_from_b1: - //SEG981 [528] phi (byte) mode_hicolstdchar::i#2 = (byte) mode_hicolstdchar::i#1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1#0] -- register_copy + //SEG982 [528] phi (byte) mode_hicolstdchar::i#2 = (byte) mode_hicolstdchar::i#1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1#0] -- register_copy jmp b1 - //SEG982 mode_hicolstdchar::@1 + //SEG983 mode_hicolstdchar::@1 b1: - //SEG983 [529] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolstdchar::i#2) ← (byte) mode_hicolstdchar::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG984 [529] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolstdchar::i#2) ← (byte) mode_hicolstdchar::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta DTV_PALETTE,y - //SEG984 [530] (byte) mode_hicolstdchar::i#1 ← ++ (byte) mode_hicolstdchar::i#2 -- vbuz1=_inc_vbuz1 + //SEG985 [530] (byte) mode_hicolstdchar::i#1 ← ++ (byte) mode_hicolstdchar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG985 [531] if((byte) mode_hicolstdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolstdchar::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG986 [531] if((byte) mode_hicolstdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolstdchar::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b4 - //SEG986 mode_hicolstdchar::@4 + //SEG987 mode_hicolstdchar::@4 b4: - //SEG987 [532] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG988 [532] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG988 [533] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG989 [533] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG989 [534] phi from mode_hicolstdchar::@4 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2] + //SEG990 [534] phi from mode_hicolstdchar::@4 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2] b2_from_b4: - //SEG990 [534] phi (byte*) mode_hicolstdchar::ch#3 = (const byte*) mode_hicolstdchar::SCREEN#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#0] -- pbuz1=pbuc1 + //SEG991 [534] phi (byte*) mode_hicolstdchar::ch#3 = (const byte*) mode_hicolstdchar::SCREEN#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG991 [534] phi (byte*) mode_hicolstdchar::col#3 = (const byte*) mode_hicolstdchar::COLORS#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#1] -- pbuz1=pbuc1 + //SEG992 [534] phi (byte*) mode_hicolstdchar::col#3 = (const byte*) mode_hicolstdchar::COLORS#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG992 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#2] -- vbuz1=vbuc1 + //SEG993 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG993 [534] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2] + //SEG994 [534] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2] b2_from_b5: - //SEG994 [534] phi (byte*) mode_hicolstdchar::ch#3 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#0] -- register_copy - //SEG995 [534] phi (byte*) mode_hicolstdchar::col#3 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#1] -- register_copy - //SEG996 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte) mode_hicolstdchar::cy#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#2] -- register_copy + //SEG995 [534] phi (byte*) mode_hicolstdchar::ch#3 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#0] -- register_copy + //SEG996 [534] phi (byte*) mode_hicolstdchar::col#3 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#1] -- register_copy + //SEG997 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte) mode_hicolstdchar::cy#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#2] -- register_copy jmp b2 - //SEG997 mode_hicolstdchar::@2 + //SEG998 mode_hicolstdchar::@2 b2: - //SEG998 [535] phi from mode_hicolstdchar::@2 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3] + //SEG999 [535] phi from mode_hicolstdchar::@2 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3] b3_from_b2: - //SEG999 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#0] -- register_copy - //SEG1000 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#1] -- register_copy - //SEG1001 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#2] -- vbuz1=vbuc1 + //SEG1000 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#0] -- register_copy + //SEG1001 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#1] -- register_copy + //SEG1002 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#2] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG1002 [535] phi from mode_hicolstdchar::@3 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3] + //SEG1003 [535] phi from mode_hicolstdchar::@3 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3] b3_from_b3: - //SEG1003 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#0] -- register_copy - //SEG1004 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#1] -- register_copy - //SEG1005 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte) mode_hicolstdchar::cx#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#2] -- register_copy + //SEG1004 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#0] -- register_copy + //SEG1005 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#1] -- register_copy + //SEG1006 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte) mode_hicolstdchar::cx#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#2] -- register_copy jmp b3 - //SEG1006 mode_hicolstdchar::@3 + //SEG1007 mode_hicolstdchar::@3 b3: - //SEG1007 [536] (byte~) mode_hicolstdchar::$24 ← (byte) mode_hicolstdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1008 [536] (byte~) mode_hicolstdchar::$24 ← (byte) mode_hicolstdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cy sta _24 - //SEG1008 [537] (byte~) mode_hicolstdchar::$25 ← (byte~) mode_hicolstdchar::$24 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG1009 [537] (byte~) mode_hicolstdchar::$25 ← (byte~) mode_hicolstdchar::$24 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _24 asl asl asl asl sta _25 - //SEG1009 [538] (byte~) mode_hicolstdchar::$26 ← (byte) mode_hicolstdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1010 [538] (byte~) mode_hicolstdchar::$26 ← (byte) mode_hicolstdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cx sta _26 - //SEG1010 [539] (byte) mode_hicolstdchar::v#0 ← (byte~) mode_hicolstdchar::$25 | (byte~) mode_hicolstdchar::$26 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1011 [539] (byte) mode_hicolstdchar::v#0 ← (byte~) mode_hicolstdchar::$25 | (byte~) mode_hicolstdchar::$26 -- vbuz1=vbuz2_bor_vbuz3 lda _25 ora _26 sta v - //SEG1011 [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuz2 + //SEG1012 [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuz2 lda v ldy #0 sta (col),y - //SEG1012 [541] (byte*) mode_hicolstdchar::col#1 ← ++ (byte*) mode_hicolstdchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1013 [541] (byte*) mode_hicolstdchar::col#1 ← ++ (byte*) mode_hicolstdchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1013 [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuz2 + //SEG1014 [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuz2 lda v ldy #0 sta (ch),y - //SEG1014 [543] (byte*) mode_hicolstdchar::ch#1 ← ++ (byte*) mode_hicolstdchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1015 [543] (byte*) mode_hicolstdchar::ch#1 ← ++ (byte*) mode_hicolstdchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1015 [544] (byte) mode_hicolstdchar::cx#1 ← ++ (byte) mode_hicolstdchar::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1016 [544] (byte) mode_hicolstdchar::cx#1 ← ++ (byte) mode_hicolstdchar::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1016 [545] if((byte) mode_hicolstdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolstdchar::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1017 [545] if((byte) mode_hicolstdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolstdchar::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b5 - //SEG1017 mode_hicolstdchar::@5 + //SEG1018 mode_hicolstdchar::@5 b5: - //SEG1018 [546] (byte) mode_hicolstdchar::cy#1 ← ++ (byte) mode_hicolstdchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1019 [546] (byte) mode_hicolstdchar::cy#1 ← ++ (byte) mode_hicolstdchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1019 [547] if((byte) mode_hicolstdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolstdchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1020 [547] if((byte) mode_hicolstdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolstdchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG1020 [548] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@6 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@6] + //SEG1021 [548] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@6 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@6] b6_from_b5: jmp b6 - //SEG1021 mode_hicolstdchar::@6 + //SEG1022 mode_hicolstdchar::@6 b6: - //SEG1022 [549] call mode_ctrl - //SEG1023 [155] phi from mode_hicolstdchar::@6 to mode_ctrl [phi:mode_hicolstdchar::@6->mode_ctrl] + //SEG1023 [549] call mode_ctrl + //SEG1024 [155] phi from mode_hicolstdchar::@6 to mode_ctrl [phi:mode_hicolstdchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG1024 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1025 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl jmp breturn - //SEG1025 mode_hicolstdchar::@return + //SEG1026 mode_hicolstdchar::@return breturn: - //SEG1026 [550] return + //SEG1027 [550] return rts } -//SEG1027 mode_stdbitmap +//SEG1028 mode_stdbitmap // Standard Bitmap Mode (LINEAR/HICOL/CHUNK/COLDIS/MCM/ECM = 0, BMM = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -15845,215 +15846,215 @@ mode_stdbitmap: { .label cx = $5d .label cy = $5c .label l = $60 - //SEG1028 [551] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdbitmap::BITMAP#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1029 [551] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdbitmap::BITMAP#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&BITMAP)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1029 [552] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1030 [552] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1030 [553] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1031 [553] *((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 - //SEG1031 [554] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdbitmap::BITMAP#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1032 [554] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdbitmap::BITMAP#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^BITMAP/$4000 sta CIA2_PORT_A - //SEG1032 [555] *((const byte*) VIC_CONTROL#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 -- _deref_pbuc1=vbuc2 + //SEG1033 [555] *((const byte*) VIC_CONTROL#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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1033 [556] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1034 [556] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1034 [557] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdbitmap::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdbitmap::BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1035 [557] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdbitmap::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdbitmap::BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY - //SEG1035 [558] phi from mode_stdbitmap to mode_stdbitmap::@1 [phi:mode_stdbitmap->mode_stdbitmap::@1] + //SEG1036 [558] phi from mode_stdbitmap to mode_stdbitmap::@1 [phi:mode_stdbitmap->mode_stdbitmap::@1] b1_from_mode_stdbitmap: - //SEG1036 [558] phi (byte) mode_stdbitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap->mode_stdbitmap::@1#0] -- vbuz1=vbuc1 + //SEG1037 [558] phi (byte) mode_stdbitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap->mode_stdbitmap::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG1037 [558] phi from mode_stdbitmap::@1 to mode_stdbitmap::@1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1] + //SEG1038 [558] phi from mode_stdbitmap::@1 to mode_stdbitmap::@1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1] b1_from_b1: - //SEG1038 [558] phi (byte) mode_stdbitmap::i#2 = (byte) mode_stdbitmap::i#1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1#0] -- register_copy + //SEG1039 [558] phi (byte) mode_stdbitmap::i#2 = (byte) mode_stdbitmap::i#1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1#0] -- register_copy jmp b1 - //SEG1039 mode_stdbitmap::@1 + //SEG1040 mode_stdbitmap::@1 b1: - //SEG1040 [559] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdbitmap::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdbitmap::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG1041 [559] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdbitmap::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdbitmap::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG1041 [560] (byte) mode_stdbitmap::i#1 ← ++ (byte) mode_stdbitmap::i#2 -- vbuz1=_inc_vbuz1 + //SEG1042 [560] (byte) mode_stdbitmap::i#1 ← ++ (byte) mode_stdbitmap::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG1042 [561] if((byte) mode_stdbitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdbitmap::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1043 [561] if((byte) mode_stdbitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdbitmap::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b5 - //SEG1043 mode_stdbitmap::@5 + //SEG1044 mode_stdbitmap::@5 b5: - //SEG1044 [562] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1045 [562] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG1045 [563] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1046 [563] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1046 [564] phi from mode_stdbitmap::@5 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2] + //SEG1047 [564] phi from mode_stdbitmap::@5 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2] b2_from_b5: - //SEG1047 [564] phi (byte*) mode_stdbitmap::ch#3 = (const byte*) mode_stdbitmap::SCREEN#0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#0] -- pbuz1=pbuc1 + //SEG1048 [564] phi (byte*) mode_stdbitmap::ch#3 = (const byte*) mode_stdbitmap::SCREEN#0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1048 [564] phi (byte) mode_stdbitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#1] -- vbuz1=vbuc1 + //SEG1049 [564] phi (byte) mode_stdbitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG1049 [564] phi from mode_stdbitmap::@6 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2] + //SEG1050 [564] phi from mode_stdbitmap::@6 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2] b2_from_b6: - //SEG1050 [564] phi (byte*) mode_stdbitmap::ch#3 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#0] -- register_copy - //SEG1051 [564] phi (byte) mode_stdbitmap::cy#4 = (byte) mode_stdbitmap::cy#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#1] -- register_copy + //SEG1051 [564] phi (byte*) mode_stdbitmap::ch#3 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#0] -- register_copy + //SEG1052 [564] phi (byte) mode_stdbitmap::cy#4 = (byte) mode_stdbitmap::cy#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#1] -- register_copy jmp b2 - //SEG1052 mode_stdbitmap::@2 + //SEG1053 mode_stdbitmap::@2 b2: - //SEG1053 [565] phi from mode_stdbitmap::@2 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3] + //SEG1054 [565] phi from mode_stdbitmap::@2 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3] b3_from_b2: - //SEG1054 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#0] -- register_copy - //SEG1055 [565] phi (byte) mode_stdbitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#1] -- vbuz1=vbuc1 + //SEG1055 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#0] -- register_copy + //SEG1056 [565] phi (byte) mode_stdbitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#1] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG1056 [565] phi from mode_stdbitmap::@3 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3] + //SEG1057 [565] phi from mode_stdbitmap::@3 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3] b3_from_b3: - //SEG1057 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#0] -- register_copy - //SEG1058 [565] phi (byte) mode_stdbitmap::cx#2 = (byte) mode_stdbitmap::cx#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#1] -- register_copy + //SEG1058 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#0] -- register_copy + //SEG1059 [565] phi (byte) mode_stdbitmap::cx#2 = (byte) mode_stdbitmap::cx#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#1] -- register_copy jmp b3 - //SEG1059 mode_stdbitmap::@3 + //SEG1060 mode_stdbitmap::@3 b3: - //SEG1060 [566] (byte~) mode_stdbitmap::$19 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG1061 [566] (byte~) mode_stdbitmap::$19 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 -- vbuz1=vbuz2_plus_vbuz3 lda cx clc adc cy sta _19 - //SEG1061 [567] (byte) mode_stdbitmap::col#0 ← (byte~) mode_stdbitmap::$19 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1062 [567] (byte) mode_stdbitmap::col#0 ← (byte~) mode_stdbitmap::$19 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and _19 sta col - //SEG1062 [568] (byte) mode_stdbitmap::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) mode_stdbitmap::col#0 -- vbuz1=vbuc1_minus_vbuz2 + //SEG1063 [568] (byte) mode_stdbitmap::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) mode_stdbitmap::col#0 -- vbuz1=vbuc1_minus_vbuz2 lda #$f sec sbc col sta col2 - //SEG1063 [569] (byte~) mode_stdbitmap::$22 ← (byte) mode_stdbitmap::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG1064 [569] (byte~) mode_stdbitmap::$22 ← (byte) mode_stdbitmap::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda col asl asl asl asl sta _22 - //SEG1064 [570] (byte~) mode_stdbitmap::$23 ← (byte~) mode_stdbitmap::$22 | (byte) mode_stdbitmap::col2#0 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1065 [570] (byte~) mode_stdbitmap::$23 ← (byte~) mode_stdbitmap::$22 | (byte) mode_stdbitmap::col2#0 -- vbuz1=vbuz2_bor_vbuz3 lda _22 ora col2 sta _23 - //SEG1065 [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$23 -- _deref_pbuz1=vbuz2 + //SEG1066 [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$23 -- _deref_pbuz1=vbuz2 lda _23 ldy #0 sta (ch),y - //SEG1066 [572] (byte*) mode_stdbitmap::ch#1 ← ++ (byte*) mode_stdbitmap::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1067 [572] (byte*) mode_stdbitmap::ch#1 ← ++ (byte*) mode_stdbitmap::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1067 [573] (byte) mode_stdbitmap::cx#1 ← ++ (byte) mode_stdbitmap::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1068 [573] (byte) mode_stdbitmap::cx#1 ← ++ (byte) mode_stdbitmap::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1068 [574] if((byte) mode_stdbitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdbitmap::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1069 [574] if((byte) mode_stdbitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdbitmap::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b6 - //SEG1069 mode_stdbitmap::@6 + //SEG1070 mode_stdbitmap::@6 b6: - //SEG1070 [575] (byte) mode_stdbitmap::cy#1 ← ++ (byte) mode_stdbitmap::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1071 [575] (byte) mode_stdbitmap::cy#1 ← ++ (byte) mode_stdbitmap::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1071 [576] if((byte) mode_stdbitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdbitmap::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1072 [576] if((byte) mode_stdbitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdbitmap::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b6 - //SEG1072 [577] phi from mode_stdbitmap::@6 to mode_stdbitmap::@7 [phi:mode_stdbitmap::@6->mode_stdbitmap::@7] + //SEG1073 [577] phi from mode_stdbitmap::@6 to mode_stdbitmap::@7 [phi:mode_stdbitmap::@6->mode_stdbitmap::@7] b7_from_b6: jmp b7 - //SEG1073 mode_stdbitmap::@7 + //SEG1074 mode_stdbitmap::@7 b7: - //SEG1074 [578] call bitmap_init - //SEG1075 [732] phi from mode_stdbitmap::@7 to bitmap_init [phi:mode_stdbitmap::@7->bitmap_init] + //SEG1075 [578] call bitmap_init + //SEG1076 [732] phi from mode_stdbitmap::@7 to bitmap_init [phi:mode_stdbitmap::@7->bitmap_init] bitmap_init_from_b7: jsr bitmap_init - //SEG1076 [579] phi from mode_stdbitmap::@7 to mode_stdbitmap::@9 [phi:mode_stdbitmap::@7->mode_stdbitmap::@9] + //SEG1077 [579] phi from mode_stdbitmap::@7 to mode_stdbitmap::@9 [phi:mode_stdbitmap::@7->mode_stdbitmap::@9] b9_from_b7: jmp b9 - //SEG1077 mode_stdbitmap::@9 + //SEG1078 mode_stdbitmap::@9 b9: - //SEG1078 [580] call bitmap_clear + //SEG1079 [580] call bitmap_clear jsr bitmap_clear - //SEG1079 [581] phi from mode_stdbitmap::@9 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4] + //SEG1080 [581] phi from mode_stdbitmap::@9 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4] b4_from_b9: - //SEG1080 [581] phi (byte) mode_stdbitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4#0] -- vbuz1=vbuc1 + //SEG1081 [581] phi (byte) mode_stdbitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4#0] -- vbuz1=vbuc1 lda #0 sta l jmp b4 - //SEG1081 [581] phi from mode_stdbitmap::@11 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4] + //SEG1082 [581] phi from mode_stdbitmap::@11 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4] b4_from_b11: - //SEG1082 [581] phi (byte) mode_stdbitmap::l#2 = (byte) mode_stdbitmap::l#1 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4#0] -- register_copy + //SEG1083 [581] phi (byte) mode_stdbitmap::l#2 = (byte) mode_stdbitmap::l#1 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4#0] -- register_copy jmp b4 - //SEG1083 mode_stdbitmap::@4 + //SEG1084 mode_stdbitmap::@4 b4: - //SEG1084 [582] (byte) bitmap_line::x0#0 ← *((const byte[]) mode_stdbitmap::lines_x#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1085 [582] (byte) bitmap_line::x0#0 ← *((const byte[]) mode_stdbitmap::lines_x#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG1085 [583] (byte) bitmap_line::x1#0 ← *((const byte[]) mode_stdbitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1086 [583] (byte) bitmap_line::x1#0 ← *((const byte[]) mode_stdbitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x+1,y sta bitmap_line.x1 - //SEG1086 [584] (byte) bitmap_line::y0#0 ← *((const byte[]) mode_stdbitmap::lines_y#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1087 [584] (byte) bitmap_line::y0#0 ← *((const byte[]) mode_stdbitmap::lines_y#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y,y sta bitmap_line.y0 - //SEG1087 [585] (byte) bitmap_line::y1#0 ← *((const byte[]) mode_stdbitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1088 [585] (byte) bitmap_line::y1#0 ← *((const byte[]) mode_stdbitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y+1,y sta bitmap_line.y1 - //SEG1088 [586] call bitmap_line + //SEG1089 [586] call bitmap_line jsr bitmap_line jmp b11 - //SEG1089 mode_stdbitmap::@11 + //SEG1090 mode_stdbitmap::@11 b11: - //SEG1090 [587] (byte) mode_stdbitmap::l#1 ← ++ (byte) mode_stdbitmap::l#2 -- vbuz1=_inc_vbuz1 + //SEG1091 [587] (byte) mode_stdbitmap::l#1 ← ++ (byte) mode_stdbitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG1091 [588] if((byte) mode_stdbitmap::l#1<(const byte) mode_stdbitmap::lines_cnt#0) goto mode_stdbitmap::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG1092 [588] if((byte) mode_stdbitmap::l#1<(const byte) mode_stdbitmap::lines_cnt#0) goto mode_stdbitmap::@4 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b4_from_b11 - //SEG1092 [589] phi from mode_stdbitmap::@11 to mode_stdbitmap::@8 [phi:mode_stdbitmap::@11->mode_stdbitmap::@8] + //SEG1093 [589] phi from mode_stdbitmap::@11 to mode_stdbitmap::@8 [phi:mode_stdbitmap::@11->mode_stdbitmap::@8] b8_from_b11: jmp b8 - //SEG1093 mode_stdbitmap::@8 + //SEG1094 mode_stdbitmap::@8 b8: - //SEG1094 [590] call mode_ctrl - //SEG1095 [155] phi from mode_stdbitmap::@8 to mode_ctrl [phi:mode_stdbitmap::@8->mode_ctrl] + //SEG1095 [590] call mode_ctrl + //SEG1096 [155] phi from mode_stdbitmap::@8 to mode_ctrl [phi:mode_stdbitmap::@8->mode_ctrl] mode_ctrl_from_b8: - //SEG1096 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@8->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1097 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@8->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl jmp breturn - //SEG1097 mode_stdbitmap::@return + //SEG1098 mode_stdbitmap::@return breturn: - //SEG1098 [591] return + //SEG1099 [591] 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 } -//SEG1099 bitmap_line +//SEG1100 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = $ff @@ -16066,305 +16067,305 @@ bitmap_line: { .label y0 = $fa .label y1 = $fb .label yd_10 = $101 - //SEG1100 [592] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG1101 [592] 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 - //SEG1101 bitmap_line::@15 + //SEG1102 bitmap_line::@15 b15: - //SEG1102 [593] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1103 [593] (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 - //SEG1103 [594] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuz2_then_la1 + //SEG1104 [594] 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 - //SEG1104 bitmap_line::@16 + //SEG1105 bitmap_line::@16 b16: - //SEG1105 [595] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1106 [595] (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 - //SEG1106 [596] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1107 [596] 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 - //SEG1107 bitmap_line::@17 + //SEG1108 bitmap_line::@17 b17: - //SEG1108 [597] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1109 [597] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxi.y - //SEG1109 [598] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1110 [598] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_ydxi.x - //SEG1110 [599] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1111 [599] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y1 - //SEG1111 [600] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 + //SEG1112 [600] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 lda yd_1 sta bitmap_line_ydxi.yd - //SEG1112 [601] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1113 [601] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_ydxi.xd - //SEG1113 [602] call bitmap_line_ydxi - //SEG1114 [676] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1114 [602] call bitmap_line_ydxi + //SEG1115 [676] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] bitmap_line_ydxi_from_b17: - //SEG1115 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG1116 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG1117 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG1118 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG1119 [676] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG1116 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1117 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1118 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1119 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1120 [676] 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 - //SEG1120 bitmap_line::@return + //SEG1121 bitmap_line::@return breturn: - //SEG1121 [603] return + //SEG1122 [603] return rts - //SEG1122 bitmap_line::@3 + //SEG1123 bitmap_line::@3 b3: - //SEG1123 [604] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1124 [604] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1124 [605] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1125 [605] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_xdyi.y - //SEG1125 [606] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1126 [606] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x1 - //SEG1126 [607] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1127 [607] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_xdyi.xd - //SEG1127 [608] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 + //SEG1128 [608] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 lda yd_1 sta bitmap_line_xdyi.yd - //SEG1128 [609] call bitmap_line_xdyi - //SEG1129 [654] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1129 [609] call bitmap_line_xdyi + //SEG1130 [654] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] bitmap_line_xdyi_from_b3: - //SEG1130 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG1131 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG1132 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG1133 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG1134 [654] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG1131 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1132 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1133 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1134 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1135 [654] 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 - //SEG1135 bitmap_line::@2 + //SEG1136 bitmap_line::@2 b2: - //SEG1136 [610] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1137 [610] (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 - //SEG1137 [611] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1138 [611] 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 - //SEG1138 bitmap_line::@20 + //SEG1139 bitmap_line::@20 b20: - //SEG1139 [612] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1140 [612] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1140 [613] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1141 [613] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_ydxd.x - //SEG1141 [614] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1142 [614] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxd.y1 - //SEG1142 [615] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 + //SEG1143 [615] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 lda yd sta bitmap_line_ydxd.yd - //SEG1143 [616] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1144 [616] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_ydxd.xd - //SEG1144 [617] call bitmap_line_ydxd - //SEG1145 [706] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1145 [617] call bitmap_line_ydxd + //SEG1146 [706] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] bitmap_line_ydxd_from_b20: - //SEG1146 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG1147 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG1148 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG1149 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG1150 [706] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG1147 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1148 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1149 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1150 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1151 [706] 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 - //SEG1151 bitmap_line::@6 + //SEG1152 bitmap_line::@6 b6: - //SEG1152 [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1153 [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1153 [619] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1154 [619] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_xdyd.y - //SEG1154 [620] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1155 [620] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1155 [621] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1156 [621] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_xdyd.xd - //SEG1156 [622] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 + //SEG1157 [622] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 lda yd sta bitmap_line_xdyd.yd - //SEG1157 [623] call bitmap_line_xdyd - //SEG1158 [691] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1158 [623] call bitmap_line_xdyd + //SEG1159 [691] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] bitmap_line_xdyd_from_b6: - //SEG1159 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG1160 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG1161 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG1162 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG1163 [691] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG1160 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1161 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1162 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1163 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1164 [691] 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 - //SEG1164 bitmap_line::@1 + //SEG1165 bitmap_line::@1 b1: - //SEG1165 [624] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1166 [624] (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 - //SEG1166 [625] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuz2_then_la1 + //SEG1167 [625] 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 - //SEG1167 bitmap_line::@23 + //SEG1168 bitmap_line::@23 b23: - //SEG1168 [626] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1169 [626] (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 - //SEG1169 [627] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1170 [627] 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 - //SEG1170 bitmap_line::@24 + //SEG1171 bitmap_line::@24 b24: - //SEG1171 [628] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1172 [628] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxd.y - //SEG1172 [629] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1173 [629] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_ydxd.x - //SEG1173 [630] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1174 [630] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y1 - //SEG1174 [631] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 + //SEG1175 [631] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 lda yd_3 sta bitmap_line_ydxd.yd - //SEG1175 [632] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1176 [632] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_ydxd.xd - //SEG1176 [633] call bitmap_line_ydxd - //SEG1177 [706] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1177 [633] call bitmap_line_ydxd + //SEG1178 [706] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] bitmap_line_ydxd_from_b24: - //SEG1178 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG1179 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG1180 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG1181 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG1182 [706] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG1179 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1180 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1181 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1182 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1183 [706] 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 - //SEG1183 bitmap_line::@10 + //SEG1184 bitmap_line::@10 b10: - //SEG1184 [634] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1185 [634] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1185 [635] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1186 [635] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_xdyd.y - //SEG1186 [636] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1187 [636] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x1 - //SEG1187 [637] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1188 [637] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_xdyd.xd - //SEG1188 [638] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 + //SEG1189 [638] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 lda yd_3 sta bitmap_line_xdyd.yd - //SEG1189 [639] call bitmap_line_xdyd - //SEG1190 [691] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1190 [639] call bitmap_line_xdyd + //SEG1191 [691] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] bitmap_line_xdyd_from_b10: - //SEG1191 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG1192 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG1193 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG1194 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG1195 [691] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG1192 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1193 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1194 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1195 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1196 [691] 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 - //SEG1196 bitmap_line::@9 + //SEG1197 bitmap_line::@9 b9: - //SEG1197 [640] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1198 [640] (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 - //SEG1198 [641] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1199 [641] 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 - //SEG1199 bitmap_line::@27 + //SEG1200 bitmap_line::@27 b27: - //SEG1200 [642] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1201 [642] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1201 [643] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1202 [643] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_ydxi.x - //SEG1202 [644] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1203 [644] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxi.y1 - //SEG1203 [645] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 + //SEG1204 [645] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 lda yd_10 sta bitmap_line_ydxi.yd - //SEG1204 [646] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1205 [646] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_ydxi.xd - //SEG1205 [647] call bitmap_line_ydxi - //SEG1206 [676] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1206 [647] call bitmap_line_ydxi + //SEG1207 [676] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] bitmap_line_ydxi_from_b27: - //SEG1207 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG1208 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG1209 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG1210 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG1211 [676] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG1208 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1209 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1210 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1211 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1212 [676] 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 - //SEG1212 bitmap_line::@13 + //SEG1213 bitmap_line::@13 b13: - //SEG1213 [648] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1214 [648] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1214 [649] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1215 [649] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_xdyi.y - //SEG1215 [650] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1216 [650] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1216 [651] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1217 [651] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_xdyi.xd - //SEG1217 [652] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 + //SEG1218 [652] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 lda yd_10 sta bitmap_line_xdyi.yd - //SEG1218 [653] call bitmap_line_xdyi - //SEG1219 [654] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1219 [653] call bitmap_line_xdyi + //SEG1220 [654] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] bitmap_line_xdyi_from_b13: - //SEG1220 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG1221 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG1222 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG1223 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG1224 [654] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG1221 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1222 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1223 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1224 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1225 [654] 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 } -//SEG1225 bitmap_line_xdyi +//SEG1226 bitmap_line_xdyi bitmap_line_xdyi: { .label _6 = $102 .label x = $64 @@ -16373,78 +16374,78 @@ bitmap_line_xdyi: { .label xd = $62 .label yd = $61 .label e = $66 - //SEG1226 [655] (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 + //SEG1227 [655] (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 - //SEG1227 [656] 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] + //SEG1228 [656] 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: - //SEG1228 [656] 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 - //SEG1229 [656] 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 - //SEG1230 [656] 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 + //SEG1229 [656] 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 + //SEG1230 [656] 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 + //SEG1231 [656] 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 - //SEG1231 bitmap_line_xdyi::@1 + //SEG1232 bitmap_line_xdyi::@1 b1: - //SEG1232 [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 + //SEG1233 [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1233 [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 + //SEG1234 [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1234 [659] call bitmap_plot - //SEG1235 [669] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1235 [659] call bitmap_plot + //SEG1236 [669] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1236 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG1237 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG1237 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1238 [669] 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 - //SEG1238 bitmap_line_xdyi::@5 + //SEG1239 bitmap_line_xdyi::@5 b5: - //SEG1239 [660] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1240 [660] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1240 [661] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1241 [661] (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 - //SEG1241 [662] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1242 [662] 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 - //SEG1242 bitmap_line_xdyi::@3 + //SEG1243 bitmap_line_xdyi::@3 b3: - //SEG1243 [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1244 [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1244 [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1245 [664] (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 - //SEG1245 [665] 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] + //SEG1246 [665] 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: - //SEG1246 [665] 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 - //SEG1247 [665] 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 + //SEG1247 [665] 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 + //SEG1248 [665] 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 - //SEG1248 bitmap_line_xdyi::@2 + //SEG1249 bitmap_line_xdyi::@2 b2: - //SEG1249 [666] (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 + //SEG1250 [666] (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 - //SEG1250 [667] 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 + //SEG1251 [667] 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 - //SEG1251 bitmap_line_xdyi::@return + //SEG1252 bitmap_line_xdyi::@return breturn: - //SEG1252 [668] return + //SEG1253 [668] return rts } -//SEG1253 bitmap_plot +//SEG1254 bitmap_plot bitmap_plot: { .label _0 = $107 .label _1 = $109 @@ -16452,19 +16453,19 @@ bitmap_plot: { .label plotter_y = $105 .label x = $67 .label y = $68 - //SEG1254 [670] (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 + //SEG1255 [670] (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 - //SEG1255 [671] (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 + //SEG1256 [671] (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 - //SEG1256 [672] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG1257 [672] (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 @@ -16472,23 +16473,23 @@ bitmap_plot: { lda plotter_x+1 adc plotter_y+1 sta _0+1 - //SEG1257 [673] (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 + //SEG1258 [673] (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 - //SEG1258 [674] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 + //SEG1259 [674] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 lda _1 ldy #0 sta (_0),y jmp breturn - //SEG1259 bitmap_plot::@return + //SEG1260 bitmap_plot::@return breturn: - //SEG1260 [675] return + //SEG1261 [675] return rts } -//SEG1261 bitmap_line_ydxi +//SEG1262 bitmap_line_ydxi bitmap_line_ydxi: { .label _6 = $10a .label y = $6d @@ -16497,78 +16498,78 @@ bitmap_line_ydxi: { .label yd = $6a .label xd = $69 .label e = $6e - //SEG1262 [677] (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 + //SEG1263 [677] (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 - //SEG1263 [678] 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] + //SEG1264 [678] 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: - //SEG1264 [678] 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 - //SEG1265 [678] 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 - //SEG1266 [678] 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 + //SEG1265 [678] 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 + //SEG1266 [678] 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 + //SEG1267 [678] 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 - //SEG1267 bitmap_line_ydxi::@1 + //SEG1268 bitmap_line_ydxi::@1 b1: - //SEG1268 [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 + //SEG1269 [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1269 [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 + //SEG1270 [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1270 [681] call bitmap_plot - //SEG1271 [669] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1271 [681] call bitmap_plot + //SEG1272 [669] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1272 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG1273 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG1273 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1274 [669] 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 - //SEG1274 bitmap_line_ydxi::@5 + //SEG1275 bitmap_line_ydxi::@5 b5: - //SEG1275 [682] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1276 [682] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1276 [683] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1277 [683] (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 - //SEG1277 [684] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1278 [684] 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 - //SEG1278 bitmap_line_ydxi::@3 + //SEG1279 bitmap_line_ydxi::@3 b3: - //SEG1279 [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1280 [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1280 [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1281 [686] (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 - //SEG1281 [687] 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] + //SEG1282 [687] 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: - //SEG1282 [687] 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 - //SEG1283 [687] 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 + //SEG1283 [687] 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 + //SEG1284 [687] 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 - //SEG1284 bitmap_line_ydxi::@2 + //SEG1285 bitmap_line_ydxi::@2 b2: - //SEG1285 [688] (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 + //SEG1286 [688] (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 - //SEG1286 [689] 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 + //SEG1287 [689] 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 - //SEG1287 bitmap_line_ydxi::@return + //SEG1288 bitmap_line_ydxi::@return breturn: - //SEG1288 [690] return + //SEG1289 [690] return rts } -//SEG1289 bitmap_line_xdyd +//SEG1290 bitmap_line_xdyd bitmap_line_xdyd: { .label _6 = $10b .label x = $72 @@ -16577,78 +16578,78 @@ bitmap_line_xdyd: { .label xd = $70 .label yd = $6f .label e = $74 - //SEG1290 [692] (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 + //SEG1291 [692] (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 - //SEG1291 [693] 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] + //SEG1292 [693] 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: - //SEG1292 [693] 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 - //SEG1293 [693] 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 - //SEG1294 [693] 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 + //SEG1293 [693] 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 + //SEG1294 [693] 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 + //SEG1295 [693] 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 - //SEG1295 bitmap_line_xdyd::@1 + //SEG1296 bitmap_line_xdyd::@1 b1: - //SEG1296 [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 + //SEG1297 [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1297 [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 + //SEG1298 [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1298 [696] call bitmap_plot - //SEG1299 [669] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1299 [696] call bitmap_plot + //SEG1300 [669] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1300 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG1301 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG1301 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1302 [669] 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 - //SEG1302 bitmap_line_xdyd::@5 + //SEG1303 bitmap_line_xdyd::@5 b5: - //SEG1303 [697] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1304 [697] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1304 [698] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1305 [698] (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 - //SEG1305 [699] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1306 [699] 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 - //SEG1306 bitmap_line_xdyd::@3 + //SEG1307 bitmap_line_xdyd::@3 b3: - //SEG1307 [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1308 [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1308 [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1309 [701] (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 - //SEG1309 [702] 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] + //SEG1310 [702] 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: - //SEG1310 [702] 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 - //SEG1311 [702] 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 + //SEG1311 [702] 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 + //SEG1312 [702] 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 - //SEG1312 bitmap_line_xdyd::@2 + //SEG1313 bitmap_line_xdyd::@2 b2: - //SEG1313 [703] (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 + //SEG1314 [703] (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 - //SEG1314 [704] 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 + //SEG1315 [704] 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 - //SEG1315 bitmap_line_xdyd::@return + //SEG1316 bitmap_line_xdyd::@return breturn: - //SEG1316 [705] return + //SEG1317 [705] return rts } -//SEG1317 bitmap_line_ydxd +//SEG1318 bitmap_line_ydxd bitmap_line_ydxd: { .label _6 = $10c .label y = $79 @@ -16657,153 +16658,153 @@ bitmap_line_ydxd: { .label yd = $76 .label xd = $75 .label e = $7a - //SEG1318 [707] (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 + //SEG1319 [707] (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 - //SEG1319 [708] 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] + //SEG1320 [708] 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: - //SEG1320 [708] 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 - //SEG1321 [708] 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 - //SEG1322 [708] 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 + //SEG1321 [708] 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 + //SEG1322 [708] 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 + //SEG1323 [708] 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 - //SEG1323 bitmap_line_ydxd::@1 + //SEG1324 bitmap_line_ydxd::@1 b1: - //SEG1324 [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 + //SEG1325 [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1325 [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 + //SEG1326 [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1326 [711] call bitmap_plot - //SEG1327 [669] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1327 [711] call bitmap_plot + //SEG1328 [669] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1328 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG1329 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG1329 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1330 [669] 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 - //SEG1330 bitmap_line_ydxd::@5 + //SEG1331 bitmap_line_ydxd::@5 b5: - //SEG1331 [712] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1332 [712] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1332 [713] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1333 [713] (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 - //SEG1333 [714] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1334 [714] 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 - //SEG1334 bitmap_line_ydxd::@3 + //SEG1335 bitmap_line_ydxd::@3 b3: - //SEG1335 [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 + //SEG1336 [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec x - //SEG1336 [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1337 [716] (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 - //SEG1337 [717] 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] + //SEG1338 [717] 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: - //SEG1338 [717] 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 - //SEG1339 [717] 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 + //SEG1339 [717] 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 + //SEG1340 [717] 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 - //SEG1340 bitmap_line_ydxd::@2 + //SEG1341 bitmap_line_ydxd::@2 b2: - //SEG1341 [718] (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 + //SEG1342 [718] (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 - //SEG1342 [719] 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 + //SEG1343 [719] 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 - //SEG1343 bitmap_line_ydxd::@return + //SEG1344 bitmap_line_ydxd::@return breturn: - //SEG1344 [720] return + //SEG1345 [720] return rts } -//SEG1345 bitmap_clear +//SEG1346 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = $7c .label x = $7e .label y = $7b .label _3 = $10d - //SEG1346 [721] (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 + //SEG1347 [721] (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 - //SEG1347 [722] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG1348 [722] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG1348 [723] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1349 [723] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG1349 [723] 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 + //SEG1350 [723] 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 - //SEG1350 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG1351 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1351 [723] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1352 [723] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG1352 [723] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG1353 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG1353 [723] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1354 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1354 bitmap_clear::@1 + //SEG1355 bitmap_clear::@1 b1: - //SEG1355 [724] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1356 [724] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG1356 [724] 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 + //SEG1357 [724] 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 - //SEG1357 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG1358 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1358 [724] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1359 [724] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG1359 [724] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG1360 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG1360 [724] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1361 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1361 bitmap_clear::@2 + //SEG1362 bitmap_clear::@2 b2: - //SEG1362 [725] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1363 [725] *((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 - //SEG1363 [726] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1364 [726] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1364 [727] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG1365 [727] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG1365 [728] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1366 [728] 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 - //SEG1366 bitmap_clear::@3 + //SEG1367 bitmap_clear::@3 b3: - //SEG1367 [729] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1368 [729] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG1368 [730] 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 + //SEG1369 [730] 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 - //SEG1369 bitmap_clear::@return + //SEG1370 bitmap_clear::@return breturn: - //SEG1370 [731] return + //SEG1371 [731] return rts } -//SEG1371 bitmap_init +//SEG1372 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _0 = $10f @@ -16816,110 +16817,110 @@ bitmap_init: { .label x = $7f .label y = $81 .label yoffs = $82 - //SEG1372 [733] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1373 [733] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG1373 [733] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + //SEG1374 [733] 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 - //SEG1374 [733] 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 + //SEG1375 [733] 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 - //SEG1375 [733] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1376 [733] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG1376 [733] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG1377 [733] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG1377 [733] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1378 [733] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG1378 bitmap_init::@1 + //SEG1379 bitmap_init::@1 b1: - //SEG1379 [734] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 + //SEG1380 [734] (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 - //SEG1380 [735] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1381 [735] *((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 - //SEG1381 [736] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG1382 [736] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy x lda #>mode_stdbitmap.BITMAP sta bitmap_plot_xhi,y - //SEG1382 [737] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1383 [737] *((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 - //SEG1383 [738] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG1384 [738] (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 - //SEG1384 [739] 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 + //SEG1385 [739] 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 - //SEG1385 [740] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1386 [740] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG1386 [740] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + //SEG1387 [740] 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 - //SEG1387 bitmap_init::@2 + //SEG1388 bitmap_init::@2 b2: - //SEG1388 [741] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG1389 [741] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG1389 [742] 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 + //SEG1390 [742] 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 - //SEG1390 [743] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1391 [743] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG1391 [743] 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 + //SEG1392 [743] 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 - //SEG1392 [743] 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 + //SEG1393 [743] 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 - //SEG1393 [743] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1394 [743] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG1394 [743] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG1395 [743] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG1395 [743] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1396 [743] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG1396 bitmap_init::@3 + //SEG1397 bitmap_init::@3 b3: - //SEG1397 [744] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG1398 [744] (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 - //SEG1398 [745] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG1399 [745] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG1399 [746] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1400 [746] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora _7 sta _8 - //SEG1400 [747] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1401 [747] *((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 - //SEG1401 [748] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG1402 [748] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG1402 [749] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1403 [749] *((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 - //SEG1403 [750] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG1404 [750] (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 - //SEG1404 [751] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG1405 [751] 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 - //SEG1405 bitmap_init::@7 + //SEG1406 bitmap_init::@7 b7: - //SEG1406 [752] (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 + //SEG1407 [752] (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 @@ -16927,35 +16928,35 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG1407 [753] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG1408 [753] 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: - //SEG1408 [753] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG1409 [753] 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 - //SEG1409 bitmap_init::@4 + //SEG1410 bitmap_init::@4 b4: - //SEG1410 [754] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG1411 [754] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1411 [755] 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 + //SEG1412 [755] 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 - //SEG1412 bitmap_init::@return + //SEG1413 bitmap_init::@return breturn: - //SEG1413 [756] return + //SEG1414 [756] return rts - //SEG1414 [757] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1415 [757] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG1415 bitmap_init::@10 + //SEG1416 bitmap_init::@10 b10: - //SEG1416 [740] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1417 [740] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG1417 [740] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG1418 [740] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG1418 mode_mcchar +//SEG1419 mode_mcchar // Multicolor Character Mode (LINEAR/HICOL/CHUNK/COLDIS/BMM/ECM = 0, MCM = 1) // Resolution: 160x200 (320x200) // Normal VIC Adressing: @@ -16984,190 +16985,190 @@ mode_mcchar: { .label ch = $89 .label cx = $86 .label cy = $85 - //SEG1419 [758] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_mcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1420 [758] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_mcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1420 [759] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1421 [759] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1421 [760] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1422 [760] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1422 [761] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1423 [761] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1423 [762] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1424 [762] *((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 - //SEG1424 [763] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_mcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1425 [763] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_mcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1425 [764] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1426 [764] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1426 [765] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG1427 [765] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL|VIC_MCM sta VIC_CONTROL2 - //SEG1427 [766] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_mcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_mcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1428 [766] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_mcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_mcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1428 [767] phi from mode_mcchar to mode_mcchar::@1 [phi:mode_mcchar->mode_mcchar::@1] + //SEG1429 [767] phi from mode_mcchar to mode_mcchar::@1 [phi:mode_mcchar->mode_mcchar::@1] b1_from_mode_mcchar: - //SEG1429 [767] phi (byte) mode_mcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar->mode_mcchar::@1#0] -- vbuz1=vbuc1 + //SEG1430 [767] phi (byte) mode_mcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar->mode_mcchar::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG1430 [767] phi from mode_mcchar::@1 to mode_mcchar::@1 [phi:mode_mcchar::@1->mode_mcchar::@1] + //SEG1431 [767] phi from mode_mcchar::@1 to mode_mcchar::@1 [phi:mode_mcchar::@1->mode_mcchar::@1] b1_from_b1: - //SEG1431 [767] phi (byte) mode_mcchar::i#2 = (byte) mode_mcchar::i#1 [phi:mode_mcchar::@1->mode_mcchar::@1#0] -- register_copy + //SEG1432 [767] phi (byte) mode_mcchar::i#2 = (byte) mode_mcchar::i#1 [phi:mode_mcchar::@1->mode_mcchar::@1#0] -- register_copy jmp b1 - //SEG1432 mode_mcchar::@1 + //SEG1433 mode_mcchar::@1 b1: - //SEG1433 [768] *((const byte*) DTV_PALETTE#0 + (byte) mode_mcchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_mcchar::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG1434 [768] *((const byte*) DTV_PALETTE#0 + (byte) mode_mcchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_mcchar::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG1434 [769] (byte) mode_mcchar::i#1 ← ++ (byte) mode_mcchar::i#2 -- vbuz1=_inc_vbuz1 + //SEG1435 [769] (byte) mode_mcchar::i#1 ← ++ (byte) mode_mcchar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG1435 [770] if((byte) mode_mcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_mcchar::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1436 [770] if((byte) mode_mcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_mcchar::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b4 - //SEG1436 mode_mcchar::@4 + //SEG1437 mode_mcchar::@4 b4: - //SEG1437 [771] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1438 [771] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG1438 [772] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1439 [772] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1439 [773] *((const byte*) BGCOL2#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG1440 [773] *((const byte*) BGCOL2#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL2 - //SEG1440 [774] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG1441 [774] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL3 - //SEG1441 [775] phi from mode_mcchar::@4 to mode_mcchar::@2 [phi:mode_mcchar::@4->mode_mcchar::@2] + //SEG1442 [775] phi from mode_mcchar::@4 to mode_mcchar::@2 [phi:mode_mcchar::@4->mode_mcchar::@2] b2_from_b4: - //SEG1442 [775] phi (byte*) mode_mcchar::ch#3 = (const byte*) mode_mcchar::SCREEN#0 [phi:mode_mcchar::@4->mode_mcchar::@2#0] -- pbuz1=pbuc1 + //SEG1443 [775] phi (byte*) mode_mcchar::ch#3 = (const byte*) mode_mcchar::SCREEN#0 [phi:mode_mcchar::@4->mode_mcchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1443 [775] phi (byte*) mode_mcchar::col#3 = (const byte*) mode_mcchar::COLORS#0 [phi:mode_mcchar::@4->mode_mcchar::@2#1] -- pbuz1=pbuc1 + //SEG1444 [775] phi (byte*) mode_mcchar::col#3 = (const byte*) mode_mcchar::COLORS#0 [phi:mode_mcchar::@4->mode_mcchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1444 [775] phi (byte) mode_mcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@4->mode_mcchar::@2#2] -- vbuz1=vbuc1 + //SEG1445 [775] phi (byte) mode_mcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@4->mode_mcchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG1445 [775] phi from mode_mcchar::@5 to mode_mcchar::@2 [phi:mode_mcchar::@5->mode_mcchar::@2] + //SEG1446 [775] phi from mode_mcchar::@5 to mode_mcchar::@2 [phi:mode_mcchar::@5->mode_mcchar::@2] b2_from_b5: - //SEG1446 [775] phi (byte*) mode_mcchar::ch#3 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@5->mode_mcchar::@2#0] -- register_copy - //SEG1447 [775] phi (byte*) mode_mcchar::col#3 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@5->mode_mcchar::@2#1] -- register_copy - //SEG1448 [775] phi (byte) mode_mcchar::cy#4 = (byte) mode_mcchar::cy#1 [phi:mode_mcchar::@5->mode_mcchar::@2#2] -- register_copy + //SEG1447 [775] phi (byte*) mode_mcchar::ch#3 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@5->mode_mcchar::@2#0] -- register_copy + //SEG1448 [775] phi (byte*) mode_mcchar::col#3 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@5->mode_mcchar::@2#1] -- register_copy + //SEG1449 [775] phi (byte) mode_mcchar::cy#4 = (byte) mode_mcchar::cy#1 [phi:mode_mcchar::@5->mode_mcchar::@2#2] -- register_copy jmp b2 - //SEG1449 mode_mcchar::@2 + //SEG1450 mode_mcchar::@2 b2: - //SEG1450 [776] phi from mode_mcchar::@2 to mode_mcchar::@3 [phi:mode_mcchar::@2->mode_mcchar::@3] + //SEG1451 [776] phi from mode_mcchar::@2 to mode_mcchar::@3 [phi:mode_mcchar::@2->mode_mcchar::@3] b3_from_b2: - //SEG1451 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#3 [phi:mode_mcchar::@2->mode_mcchar::@3#0] -- register_copy - //SEG1452 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#3 [phi:mode_mcchar::@2->mode_mcchar::@3#1] -- register_copy - //SEG1453 [776] phi (byte) mode_mcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@2->mode_mcchar::@3#2] -- vbuz1=vbuc1 + //SEG1452 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#3 [phi:mode_mcchar::@2->mode_mcchar::@3#0] -- register_copy + //SEG1453 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#3 [phi:mode_mcchar::@2->mode_mcchar::@3#1] -- register_copy + //SEG1454 [776] phi (byte) mode_mcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@2->mode_mcchar::@3#2] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG1454 [776] phi from mode_mcchar::@3 to mode_mcchar::@3 [phi:mode_mcchar::@3->mode_mcchar::@3] + //SEG1455 [776] phi from mode_mcchar::@3 to mode_mcchar::@3 [phi:mode_mcchar::@3->mode_mcchar::@3] b3_from_b3: - //SEG1455 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@3->mode_mcchar::@3#0] -- register_copy - //SEG1456 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@3->mode_mcchar::@3#1] -- register_copy - //SEG1457 [776] phi (byte) mode_mcchar::cx#2 = (byte) mode_mcchar::cx#1 [phi:mode_mcchar::@3->mode_mcchar::@3#2] -- register_copy + //SEG1456 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@3->mode_mcchar::@3#0] -- register_copy + //SEG1457 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@3->mode_mcchar::@3#1] -- register_copy + //SEG1458 [776] phi (byte) mode_mcchar::cx#2 = (byte) mode_mcchar::cx#1 [phi:mode_mcchar::@3->mode_mcchar::@3#2] -- register_copy jmp b3 - //SEG1458 mode_mcchar::@3 + //SEG1459 mode_mcchar::@3 b3: - //SEG1459 [777] (byte~) mode_mcchar::$25 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG1460 [777] (byte~) mode_mcchar::$25 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 -- vbuz1=vbuz2_plus_vbuz3 lda cx clc adc cy sta _25 - //SEG1460 [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1461 [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and _25 sta _26 - //SEG1461 [779] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$26 -- _deref_pbuz1=vbuz2 + //SEG1462 [779] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$26 -- _deref_pbuz1=vbuz2 lda _26 ldy #0 sta (col),y - //SEG1462 [780] (byte*) mode_mcchar::col#1 ← ++ (byte*) mode_mcchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1463 [780] (byte*) mode_mcchar::col#1 ← ++ (byte*) mode_mcchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1463 [781] (byte~) mode_mcchar::$27 ← (byte) mode_mcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1464 [781] (byte~) mode_mcchar::$27 ← (byte) mode_mcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cy sta _27 - //SEG1464 [782] (byte~) mode_mcchar::$28 ← (byte~) mode_mcchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG1465 [782] (byte~) mode_mcchar::$28 ← (byte~) mode_mcchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _27 asl asl asl asl sta _28 - //SEG1465 [783] (byte~) mode_mcchar::$29 ← (byte) mode_mcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1466 [783] (byte~) mode_mcchar::$29 ← (byte) mode_mcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cx sta _29 - //SEG1466 [784] (byte~) mode_mcchar::$30 ← (byte~) mode_mcchar::$28 | (byte~) mode_mcchar::$29 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1467 [784] (byte~) mode_mcchar::$30 ← (byte~) mode_mcchar::$28 | (byte~) mode_mcchar::$29 -- vbuz1=vbuz2_bor_vbuz3 lda _28 ora _29 sta _30 - //SEG1467 [785] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$30 -- _deref_pbuz1=vbuz2 + //SEG1468 [785] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$30 -- _deref_pbuz1=vbuz2 lda _30 ldy #0 sta (ch),y - //SEG1468 [786] (byte*) mode_mcchar::ch#1 ← ++ (byte*) mode_mcchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1469 [786] (byte*) mode_mcchar::ch#1 ← ++ (byte*) mode_mcchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1469 [787] (byte) mode_mcchar::cx#1 ← ++ (byte) mode_mcchar::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1470 [787] (byte) mode_mcchar::cx#1 ← ++ (byte) mode_mcchar::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1470 [788] if((byte) mode_mcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_mcchar::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1471 [788] if((byte) mode_mcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_mcchar::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b5 - //SEG1471 mode_mcchar::@5 + //SEG1472 mode_mcchar::@5 b5: - //SEG1472 [789] (byte) mode_mcchar::cy#1 ← ++ (byte) mode_mcchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1473 [789] (byte) mode_mcchar::cy#1 ← ++ (byte) mode_mcchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1473 [790] if((byte) mode_mcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_mcchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1474 [790] if((byte) mode_mcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_mcchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG1474 [791] phi from mode_mcchar::@5 to mode_mcchar::@6 [phi:mode_mcchar::@5->mode_mcchar::@6] + //SEG1475 [791] phi from mode_mcchar::@5 to mode_mcchar::@6 [phi:mode_mcchar::@5->mode_mcchar::@6] b6_from_b5: jmp b6 - //SEG1475 mode_mcchar::@6 + //SEG1476 mode_mcchar::@6 b6: - //SEG1476 [792] call mode_ctrl - //SEG1477 [155] phi from mode_mcchar::@6 to mode_ctrl [phi:mode_mcchar::@6->mode_ctrl] + //SEG1477 [792] call mode_ctrl + //SEG1478 [155] phi from mode_mcchar::@6 to mode_ctrl [phi:mode_mcchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG1478 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1479 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl jmp breturn - //SEG1479 mode_mcchar::@return + //SEG1480 mode_mcchar::@return breturn: - //SEG1480 [793] return + //SEG1481 [793] return rts } -//SEG1481 mode_ecmchar +//SEG1482 mode_ecmchar // Extended Background Color Character Mode (LINEAR/HICOL/CHUNK/COLDIS/MCM/BMM = 0, ECM = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -17195,193 +17196,193 @@ mode_ecmchar: { .label ch = $90 .label cx = $8d .label cy = $8c - //SEG1482 [794] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_ecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1483 [794] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_ecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1483 [795] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1484 [795] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1484 [796] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1485 [796] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1485 [797] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1486 [797] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1486 [798] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1487 [798] *((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 - //SEG1487 [799] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_ecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1488 [799] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_ecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1488 [800] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1489 [800] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|VIC_ECM|3 sta VIC_CONTROL - //SEG1489 [801] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1490 [801] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1490 [802] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_ecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_ecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1491 [802] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_ecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_ecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1491 [803] phi from mode_ecmchar to mode_ecmchar::@1 [phi:mode_ecmchar->mode_ecmchar::@1] + //SEG1492 [803] phi from mode_ecmchar to mode_ecmchar::@1 [phi:mode_ecmchar->mode_ecmchar::@1] b1_from_mode_ecmchar: - //SEG1492 [803] phi (byte) mode_ecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar->mode_ecmchar::@1#0] -- vbuz1=vbuc1 + //SEG1493 [803] phi (byte) mode_ecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar->mode_ecmchar::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG1493 [803] phi from mode_ecmchar::@1 to mode_ecmchar::@1 [phi:mode_ecmchar::@1->mode_ecmchar::@1] + //SEG1494 [803] phi from mode_ecmchar::@1 to mode_ecmchar::@1 [phi:mode_ecmchar::@1->mode_ecmchar::@1] b1_from_b1: - //SEG1494 [803] phi (byte) mode_ecmchar::i#2 = (byte) mode_ecmchar::i#1 [phi:mode_ecmchar::@1->mode_ecmchar::@1#0] -- register_copy + //SEG1495 [803] phi (byte) mode_ecmchar::i#2 = (byte) mode_ecmchar::i#1 [phi:mode_ecmchar::@1->mode_ecmchar::@1#0] -- register_copy jmp b1 - //SEG1495 mode_ecmchar::@1 + //SEG1496 mode_ecmchar::@1 b1: - //SEG1496 [804] *((const byte*) DTV_PALETTE#0 + (byte) mode_ecmchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_ecmchar::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG1497 [804] *((const byte*) DTV_PALETTE#0 + (byte) mode_ecmchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_ecmchar::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG1497 [805] (byte) mode_ecmchar::i#1 ← ++ (byte) mode_ecmchar::i#2 -- vbuz1=_inc_vbuz1 + //SEG1498 [805] (byte) mode_ecmchar::i#1 ← ++ (byte) mode_ecmchar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG1498 [806] if((byte) mode_ecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_ecmchar::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1499 [806] if((byte) mode_ecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_ecmchar::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b4 - //SEG1499 mode_ecmchar::@4 + //SEG1500 mode_ecmchar::@4 b4: - //SEG1500 [807] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1501 [807] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG1501 [808] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1502 [808] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL1 - //SEG1502 [809] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG1503 [809] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL2 - //SEG1503 [810] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG1504 [810] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL3 - //SEG1504 [811] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG1505 [811] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta BGCOL4 - //SEG1505 [812] phi from mode_ecmchar::@4 to mode_ecmchar::@2 [phi:mode_ecmchar::@4->mode_ecmchar::@2] + //SEG1506 [812] phi from mode_ecmchar::@4 to mode_ecmchar::@2 [phi:mode_ecmchar::@4->mode_ecmchar::@2] b2_from_b4: - //SEG1506 [812] phi (byte*) mode_ecmchar::ch#3 = (const byte*) mode_ecmchar::SCREEN#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#0] -- pbuz1=pbuc1 + //SEG1507 [812] phi (byte*) mode_ecmchar::ch#3 = (const byte*) mode_ecmchar::SCREEN#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1507 [812] phi (byte*) mode_ecmchar::col#3 = (const byte*) mode_ecmchar::COLORS#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#1] -- pbuz1=pbuc1 + //SEG1508 [812] phi (byte*) mode_ecmchar::col#3 = (const byte*) mode_ecmchar::COLORS#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1508 [812] phi (byte) mode_ecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#2] -- vbuz1=vbuc1 + //SEG1509 [812] phi (byte) mode_ecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG1509 [812] phi from mode_ecmchar::@5 to mode_ecmchar::@2 [phi:mode_ecmchar::@5->mode_ecmchar::@2] + //SEG1510 [812] phi from mode_ecmchar::@5 to mode_ecmchar::@2 [phi:mode_ecmchar::@5->mode_ecmchar::@2] b2_from_b5: - //SEG1510 [812] phi (byte*) mode_ecmchar::ch#3 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#0] -- register_copy - //SEG1511 [812] phi (byte*) mode_ecmchar::col#3 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#1] -- register_copy - //SEG1512 [812] phi (byte) mode_ecmchar::cy#4 = (byte) mode_ecmchar::cy#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#2] -- register_copy + //SEG1511 [812] phi (byte*) mode_ecmchar::ch#3 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#0] -- register_copy + //SEG1512 [812] phi (byte*) mode_ecmchar::col#3 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#1] -- register_copy + //SEG1513 [812] phi (byte) mode_ecmchar::cy#4 = (byte) mode_ecmchar::cy#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#2] -- register_copy jmp b2 - //SEG1513 mode_ecmchar::@2 + //SEG1514 mode_ecmchar::@2 b2: - //SEG1514 [813] phi from mode_ecmchar::@2 to mode_ecmchar::@3 [phi:mode_ecmchar::@2->mode_ecmchar::@3] + //SEG1515 [813] phi from mode_ecmchar::@2 to mode_ecmchar::@3 [phi:mode_ecmchar::@2->mode_ecmchar::@3] b3_from_b2: - //SEG1515 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#0] -- register_copy - //SEG1516 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#1] -- register_copy - //SEG1517 [813] phi (byte) mode_ecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@2->mode_ecmchar::@3#2] -- vbuz1=vbuc1 + //SEG1516 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#0] -- register_copy + //SEG1517 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#1] -- register_copy + //SEG1518 [813] phi (byte) mode_ecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@2->mode_ecmchar::@3#2] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG1518 [813] phi from mode_ecmchar::@3 to mode_ecmchar::@3 [phi:mode_ecmchar::@3->mode_ecmchar::@3] + //SEG1519 [813] phi from mode_ecmchar::@3 to mode_ecmchar::@3 [phi:mode_ecmchar::@3->mode_ecmchar::@3] b3_from_b3: - //SEG1519 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#0] -- register_copy - //SEG1520 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#1] -- register_copy - //SEG1521 [813] phi (byte) mode_ecmchar::cx#2 = (byte) mode_ecmchar::cx#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#2] -- register_copy + //SEG1520 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#0] -- register_copy + //SEG1521 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#1] -- register_copy + //SEG1522 [813] phi (byte) mode_ecmchar::cx#2 = (byte) mode_ecmchar::cx#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#2] -- register_copy jmp b3 - //SEG1522 mode_ecmchar::@3 + //SEG1523 mode_ecmchar::@3 b3: - //SEG1523 [814] (byte~) mode_ecmchar::$25 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG1524 [814] (byte~) mode_ecmchar::$25 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 -- vbuz1=vbuz2_plus_vbuz3 lda cx clc adc cy sta _25 - //SEG1524 [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1525 [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and _25 sta _26 - //SEG1525 [816] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$26 -- _deref_pbuz1=vbuz2 + //SEG1526 [816] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$26 -- _deref_pbuz1=vbuz2 lda _26 ldy #0 sta (col),y - //SEG1526 [817] (byte*) mode_ecmchar::col#1 ← ++ (byte*) mode_ecmchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1527 [817] (byte*) mode_ecmchar::col#1 ← ++ (byte*) mode_ecmchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1527 [818] (byte~) mode_ecmchar::$27 ← (byte) mode_ecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1528 [818] (byte~) mode_ecmchar::$27 ← (byte) mode_ecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cy sta _27 - //SEG1528 [819] (byte~) mode_ecmchar::$28 ← (byte~) mode_ecmchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG1529 [819] (byte~) mode_ecmchar::$28 ← (byte~) mode_ecmchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _27 asl asl asl asl sta _28 - //SEG1529 [820] (byte~) mode_ecmchar::$29 ← (byte) mode_ecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1530 [820] (byte~) mode_ecmchar::$29 ← (byte) mode_ecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cx sta _29 - //SEG1530 [821] (byte~) mode_ecmchar::$30 ← (byte~) mode_ecmchar::$28 | (byte~) mode_ecmchar::$29 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1531 [821] (byte~) mode_ecmchar::$30 ← (byte~) mode_ecmchar::$28 | (byte~) mode_ecmchar::$29 -- vbuz1=vbuz2_bor_vbuz3 lda _28 ora _29 sta _30 - //SEG1531 [822] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$30 -- _deref_pbuz1=vbuz2 + //SEG1532 [822] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$30 -- _deref_pbuz1=vbuz2 lda _30 ldy #0 sta (ch),y - //SEG1532 [823] (byte*) mode_ecmchar::ch#1 ← ++ (byte*) mode_ecmchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1533 [823] (byte*) mode_ecmchar::ch#1 ← ++ (byte*) mode_ecmchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1533 [824] (byte) mode_ecmchar::cx#1 ← ++ (byte) mode_ecmchar::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1534 [824] (byte) mode_ecmchar::cx#1 ← ++ (byte) mode_ecmchar::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1534 [825] if((byte) mode_ecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_ecmchar::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1535 [825] if((byte) mode_ecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_ecmchar::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b5 - //SEG1535 mode_ecmchar::@5 + //SEG1536 mode_ecmchar::@5 b5: - //SEG1536 [826] (byte) mode_ecmchar::cy#1 ← ++ (byte) mode_ecmchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1537 [826] (byte) mode_ecmchar::cy#1 ← ++ (byte) mode_ecmchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1537 [827] if((byte) mode_ecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_ecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1538 [827] if((byte) mode_ecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_ecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG1538 [828] phi from mode_ecmchar::@5 to mode_ecmchar::@6 [phi:mode_ecmchar::@5->mode_ecmchar::@6] + //SEG1539 [828] phi from mode_ecmchar::@5 to mode_ecmchar::@6 [phi:mode_ecmchar::@5->mode_ecmchar::@6] b6_from_b5: jmp b6 - //SEG1539 mode_ecmchar::@6 + //SEG1540 mode_ecmchar::@6 b6: - //SEG1540 [829] call mode_ctrl - //SEG1541 [155] phi from mode_ecmchar::@6 to mode_ctrl [phi:mode_ecmchar::@6->mode_ctrl] + //SEG1541 [829] call mode_ctrl + //SEG1542 [155] phi from mode_ecmchar::@6 to mode_ctrl [phi:mode_ecmchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG1542 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1543 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl jmp breturn - //SEG1543 mode_ecmchar::@return + //SEG1544 mode_ecmchar::@return breturn: - //SEG1544 [830] return + //SEG1545 [830] return rts } -//SEG1545 mode_stdchar +//SEG1546 mode_stdchar // Standard Character Mode (LINEAR/HICOL/CHUNK/COLDIS/ECM/MCM/BMM = 0) // Resolution: 320x200 // Normal VIC Adressing: @@ -17405,295 +17406,295 @@ mode_stdchar: { .label ch = $97 .label cx = $94 .label cy = $93 - //SEG1546 [831] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1547 [831] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1547 [832] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1548 [832] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1548 [833] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1549 [833] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1549 [834] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1550 [834] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1550 [835] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1551 [835] *((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 - //SEG1551 [836] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1552 [836] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1552 [837] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1553 [837] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1553 [838] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1554 [838] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1554 [839] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1555 [839] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1555 [840] phi from mode_stdchar to mode_stdchar::@1 [phi:mode_stdchar->mode_stdchar::@1] + //SEG1556 [840] phi from mode_stdchar to mode_stdchar::@1 [phi:mode_stdchar->mode_stdchar::@1] b1_from_mode_stdchar: - //SEG1556 [840] phi (byte) mode_stdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar->mode_stdchar::@1#0] -- vbuz1=vbuc1 + //SEG1557 [840] phi (byte) mode_stdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar->mode_stdchar::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG1557 [840] phi from mode_stdchar::@1 to mode_stdchar::@1 [phi:mode_stdchar::@1->mode_stdchar::@1] + //SEG1558 [840] phi from mode_stdchar::@1 to mode_stdchar::@1 [phi:mode_stdchar::@1->mode_stdchar::@1] b1_from_b1: - //SEG1558 [840] phi (byte) mode_stdchar::i#2 = (byte) mode_stdchar::i#1 [phi:mode_stdchar::@1->mode_stdchar::@1#0] -- register_copy + //SEG1559 [840] phi (byte) mode_stdchar::i#2 = (byte) mode_stdchar::i#1 [phi:mode_stdchar::@1->mode_stdchar::@1#0] -- register_copy jmp b1 - //SEG1559 mode_stdchar::@1 + //SEG1560 mode_stdchar::@1 b1: - //SEG1560 [841] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdchar::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG1561 [841] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdchar::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda DTV_PALETTE_DEFAULT,y sta DTV_PALETTE,y - //SEG1561 [842] (byte) mode_stdchar::i#1 ← ++ (byte) mode_stdchar::i#2 -- vbuz1=_inc_vbuz1 + //SEG1562 [842] (byte) mode_stdchar::i#1 ← ++ (byte) mode_stdchar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG1562 [843] if((byte) mode_stdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdchar::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1563 [843] if((byte) mode_stdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdchar::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b1 jmp b4 - //SEG1563 mode_stdchar::@4 + //SEG1564 mode_stdchar::@4 b4: - //SEG1564 [844] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1565 [844] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG1565 [845] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1566 [845] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG1566 [846] phi from mode_stdchar::@4 to mode_stdchar::@2 [phi:mode_stdchar::@4->mode_stdchar::@2] + //SEG1567 [846] phi from mode_stdchar::@4 to mode_stdchar::@2 [phi:mode_stdchar::@4->mode_stdchar::@2] b2_from_b4: - //SEG1567 [846] phi (byte*) mode_stdchar::ch#3 = (const byte*) mode_stdchar::SCREEN#0 [phi:mode_stdchar::@4->mode_stdchar::@2#0] -- pbuz1=pbuc1 + //SEG1568 [846] phi (byte*) mode_stdchar::ch#3 = (const byte*) mode_stdchar::SCREEN#0 [phi:mode_stdchar::@4->mode_stdchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1568 [846] phi (byte*) mode_stdchar::col#3 = (const byte*) mode_stdchar::COLORS#0 [phi:mode_stdchar::@4->mode_stdchar::@2#1] -- pbuz1=pbuc1 + //SEG1569 [846] phi (byte*) mode_stdchar::col#3 = (const byte*) mode_stdchar::COLORS#0 [phi:mode_stdchar::@4->mode_stdchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1569 [846] phi (byte) mode_stdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@4->mode_stdchar::@2#2] -- vbuz1=vbuc1 + //SEG1570 [846] phi (byte) mode_stdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@4->mode_stdchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG1570 [846] phi from mode_stdchar::@5 to mode_stdchar::@2 [phi:mode_stdchar::@5->mode_stdchar::@2] + //SEG1571 [846] phi from mode_stdchar::@5 to mode_stdchar::@2 [phi:mode_stdchar::@5->mode_stdchar::@2] b2_from_b5: - //SEG1571 [846] phi (byte*) mode_stdchar::ch#3 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@5->mode_stdchar::@2#0] -- register_copy - //SEG1572 [846] phi (byte*) mode_stdchar::col#3 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@5->mode_stdchar::@2#1] -- register_copy - //SEG1573 [846] phi (byte) mode_stdchar::cy#4 = (byte) mode_stdchar::cy#1 [phi:mode_stdchar::@5->mode_stdchar::@2#2] -- register_copy + //SEG1572 [846] phi (byte*) mode_stdchar::ch#3 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@5->mode_stdchar::@2#0] -- register_copy + //SEG1573 [846] phi (byte*) mode_stdchar::col#3 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@5->mode_stdchar::@2#1] -- register_copy + //SEG1574 [846] phi (byte) mode_stdchar::cy#4 = (byte) mode_stdchar::cy#1 [phi:mode_stdchar::@5->mode_stdchar::@2#2] -- register_copy jmp b2 - //SEG1574 mode_stdchar::@2 + //SEG1575 mode_stdchar::@2 b2: - //SEG1575 [847] phi from mode_stdchar::@2 to mode_stdchar::@3 [phi:mode_stdchar::@2->mode_stdchar::@3] + //SEG1576 [847] phi from mode_stdchar::@2 to mode_stdchar::@3 [phi:mode_stdchar::@2->mode_stdchar::@3] b3_from_b2: - //SEG1576 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#3 [phi:mode_stdchar::@2->mode_stdchar::@3#0] -- register_copy - //SEG1577 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#3 [phi:mode_stdchar::@2->mode_stdchar::@3#1] -- register_copy - //SEG1578 [847] phi (byte) mode_stdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@2->mode_stdchar::@3#2] -- vbuz1=vbuc1 + //SEG1577 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#3 [phi:mode_stdchar::@2->mode_stdchar::@3#0] -- register_copy + //SEG1578 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#3 [phi:mode_stdchar::@2->mode_stdchar::@3#1] -- register_copy + //SEG1579 [847] phi (byte) mode_stdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@2->mode_stdchar::@3#2] -- vbuz1=vbuc1 lda #0 sta cx jmp b3 - //SEG1579 [847] phi from mode_stdchar::@3 to mode_stdchar::@3 [phi:mode_stdchar::@3->mode_stdchar::@3] + //SEG1580 [847] phi from mode_stdchar::@3 to mode_stdchar::@3 [phi:mode_stdchar::@3->mode_stdchar::@3] b3_from_b3: - //SEG1580 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@3->mode_stdchar::@3#0] -- register_copy - //SEG1581 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@3->mode_stdchar::@3#1] -- register_copy - //SEG1582 [847] phi (byte) mode_stdchar::cx#2 = (byte) mode_stdchar::cx#1 [phi:mode_stdchar::@3->mode_stdchar::@3#2] -- register_copy + //SEG1581 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@3->mode_stdchar::@3#0] -- register_copy + //SEG1582 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@3->mode_stdchar::@3#1] -- register_copy + //SEG1583 [847] phi (byte) mode_stdchar::cx#2 = (byte) mode_stdchar::cx#1 [phi:mode_stdchar::@3->mode_stdchar::@3#2] -- register_copy jmp b3 - //SEG1583 mode_stdchar::@3 + //SEG1584 mode_stdchar::@3 b3: - //SEG1584 [848] (byte~) mode_stdchar::$24 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG1585 [848] (byte~) mode_stdchar::$24 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 -- vbuz1=vbuz2_plus_vbuz3 lda cx clc adc cy sta _24 - //SEG1585 [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1586 [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and _24 sta _25 - //SEG1586 [850] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$25 -- _deref_pbuz1=vbuz2 + //SEG1587 [850] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$25 -- _deref_pbuz1=vbuz2 lda _25 ldy #0 sta (col),y - //SEG1587 [851] (byte*) mode_stdchar::col#1 ← ++ (byte*) mode_stdchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1588 [851] (byte*) mode_stdchar::col#1 ← ++ (byte*) mode_stdchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1588 [852] (byte~) mode_stdchar::$26 ← (byte) mode_stdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1589 [852] (byte~) mode_stdchar::$26 ← (byte) mode_stdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cy sta _26 - //SEG1589 [853] (byte~) mode_stdchar::$27 ← (byte~) mode_stdchar::$26 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG1590 [853] (byte~) mode_stdchar::$27 ← (byte~) mode_stdchar::$26 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _26 asl asl asl asl sta _27 - //SEG1590 [854] (byte~) mode_stdchar::$28 ← (byte) mode_stdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1591 [854] (byte~) mode_stdchar::$28 ← (byte) mode_stdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cx sta _28 - //SEG1591 [855] (byte~) mode_stdchar::$29 ← (byte~) mode_stdchar::$27 | (byte~) mode_stdchar::$28 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1592 [855] (byte~) mode_stdchar::$29 ← (byte~) mode_stdchar::$27 | (byte~) mode_stdchar::$28 -- vbuz1=vbuz2_bor_vbuz3 lda _27 ora _28 sta _29 - //SEG1592 [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 -- _deref_pbuz1=vbuz2 + //SEG1593 [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 -- _deref_pbuz1=vbuz2 lda _29 ldy #0 sta (ch),y - //SEG1593 [857] (byte*) mode_stdchar::ch#1 ← ++ (byte*) mode_stdchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1594 [857] (byte*) mode_stdchar::ch#1 ← ++ (byte*) mode_stdchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1594 [858] (byte) mode_stdchar::cx#1 ← ++ (byte) mode_stdchar::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1595 [858] (byte) mode_stdchar::cx#1 ← ++ (byte) mode_stdchar::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1595 [859] if((byte) mode_stdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdchar::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1596 [859] if((byte) mode_stdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdchar::@3 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b3_from_b3 jmp b5 - //SEG1596 mode_stdchar::@5 + //SEG1597 mode_stdchar::@5 b5: - //SEG1597 [860] (byte) mode_stdchar::cy#1 ← ++ (byte) mode_stdchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1598 [860] (byte) mode_stdchar::cy#1 ← ++ (byte) mode_stdchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1598 [861] if((byte) mode_stdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1599 [861] if((byte) mode_stdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG1599 [862] phi from mode_stdchar::@5 to mode_stdchar::@6 [phi:mode_stdchar::@5->mode_stdchar::@6] + //SEG1600 [862] phi from mode_stdchar::@5 to mode_stdchar::@6 [phi:mode_stdchar::@5->mode_stdchar::@6] b6_from_b5: jmp b6 - //SEG1600 mode_stdchar::@6 + //SEG1601 mode_stdchar::@6 b6: - //SEG1601 [863] call mode_ctrl - //SEG1602 [155] phi from mode_stdchar::@6 to mode_ctrl [phi:mode_stdchar::@6->mode_ctrl] + //SEG1602 [863] call mode_ctrl + //SEG1603 [155] phi from mode_stdchar::@6 to mode_ctrl [phi:mode_stdchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG1603 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1604 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl jmp breturn - //SEG1604 mode_stdchar::@return + //SEG1605 mode_stdchar::@return breturn: - //SEG1605 [864] return + //SEG1606 [864] return rts } -//SEG1606 print_str_lines +//SEG1607 print_str_lines // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. print_str_lines: { .label ch = $127 .label str = $99 - //SEG1607 [866] phi from print_str_lines to print_str_lines::@1 [phi:print_str_lines->print_str_lines::@1] + //SEG1608 [866] phi from print_str_lines to print_str_lines::@1 [phi:print_str_lines->print_str_lines::@1] b1_from_print_str_lines: - //SEG1608 [866] phi (byte*) print_line_cursor#17 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#0] -- pbuz1=pbuc1 + //SEG1609 [866] phi (byte*) print_line_cursor#17 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#0] -- pbuz1=pbuc1 lda #menu.SCREEN sta print_line_cursor+1 - //SEG1609 [866] phi (byte*) print_char_cursor#19 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#1] -- pbuz1=pbuc1 + //SEG1610 [866] phi (byte*) print_char_cursor#19 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#1] -- pbuz1=pbuc1 lda #menu.SCREEN sta print_char_cursor+1 - //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 + //SEG1611 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 lda #MENU_TEXT sta str+1 jmp b1 - //SEG1611 print_str_lines::@1 + //SEG1612 print_str_lines::@1 b1: - //SEG1612 [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG1613 [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b4_from_b1 jmp breturn - //SEG1613 print_str_lines::@return + //SEG1614 print_str_lines::@return breturn: - //SEG1614 [868] return + //SEG1615 [868] return rts - //SEG1615 [869] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] + //SEG1616 [869] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] b4_from_b1: b4_from_b5: - //SEG1616 [869] phi (byte*) print_char_cursor#17 = (byte*) print_char_cursor#19 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy - //SEG1617 [869] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#2 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy + //SEG1617 [869] phi (byte*) print_char_cursor#17 = (byte*) print_char_cursor#19 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy + //SEG1618 [869] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#2 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy jmp b4 - //SEG1618 print_str_lines::@4 + //SEG1619 print_str_lines::@4 b4: - //SEG1619 [870] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) -- vbuz1=_deref_pbuz2 + //SEG1620 [870] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) -- vbuz1=_deref_pbuz2 ldy #0 lda (str),y sta ch - //SEG1620 [871] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#3 -- pbuz1=_inc_pbuz1 + //SEG1621 [871] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG1621 [872] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG1622 [872] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuz1_eq_vbuc1_then_la1 lda ch cmp #'@' beq b5_from_b4 jmp b8 - //SEG1622 print_str_lines::@8 + //SEG1623 print_str_lines::@8 b8: - //SEG1623 [873] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuz2 + //SEG1624 [873] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG1624 [874] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#17 -- pbuz1=_inc_pbuz1 + //SEG1625 [874] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#17 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG1625 [875] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] + //SEG1626 [875] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] b5_from_b4: b5_from_b8: - //SEG1626 [875] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#17 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy + //SEG1627 [875] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#17 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy jmp b5 - //SEG1627 print_str_lines::@5 + //SEG1628 print_str_lines::@5 b5: - //SEG1628 [876] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG1629 [876] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #'@' bne b4_from_b5 - //SEG1629 [877] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] + //SEG1630 [877] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] b9_from_b5: jmp b9 - //SEG1630 print_str_lines::@9 + //SEG1631 print_str_lines::@9 b9: - //SEG1631 [878] call print_ln - //SEG1632 [880] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] + //SEG1632 [878] call print_ln + //SEG1633 [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#103 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + //SEG1634 [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 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#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 + //SEG1636 [866] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@9->print_str_lines::@1#0] -- register_copy + //SEG1637 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#103 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG1638 [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 } -//SEG1638 print_ln +//SEG1639 print_ln // Print a newline print_ln: { - //SEG1639 [881] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG1640 [881] 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: - //SEG1640 [881] phi (byte*) print_line_cursor#18 = (byte*) print_line_cursor#17 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG1641 [881] phi (byte*) print_line_cursor#18 = (byte*) print_line_cursor#17 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG1641 print_ln::@1 + //SEG1642 print_ln::@1 b1: - //SEG1642 [882] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1643 [882] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -17701,7 +17702,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG1643 [883] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG1644 [883] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -17711,39 +17712,39 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG1644 print_ln::@return + //SEG1645 print_ln::@return breturn: - //SEG1645 [884] return + //SEG1646 [884] return rts } -//SEG1646 print_cls +//SEG1647 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $9f - //SEG1647 [886] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG1648 [886] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG1648 [886] phi (byte*) print_cls::sc#2 = (const byte*) menu::SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG1649 [886] phi (byte*) print_cls::sc#2 = (const byte*) menu::SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #menu.SCREEN sta sc+1 jmp b1 - //SEG1649 [886] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG1650 [886] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG1650 [886] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG1651 [886] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG1651 print_cls::@1 + //SEG1652 print_cls::@1 b1: - //SEG1652 [887] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG1653 [887] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG1653 [888] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG1654 [888] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG1654 [889] if((byte*) print_cls::sc#1!=(const byte*) menu::SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG1655 [889] if((byte*) print_cls::sc#1!=(const byte*) menu::SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>menu.SCREEN+$3e8 bne b1_from_b1 @@ -17751,18 +17752,18 @@ print_cls: { cmp #@54] +//SEG4 [1] phi from @begin to @54 [phi:@begin->@54] b54_from_bbegin: jmp b54 -//SEG4 @54 +//SEG5 @54 b54: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @54 to @end [phi:@54->@end] +//SEG7 [3] phi from @54 to @end [phi:@54->@end] bend_from_b54: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG13 [8] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] + //SEG14 [8] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] b2_from_main: b2_from_b2: jmp b2 - //SEG14 main::@2 + //SEG15 main::@2 b2: - //SEG15 [9] call menu + //SEG16 [9] call menu jsr menu jmp b2_from_b2 } -//SEG16 menu +//SEG17 menu menu: { .label SCREEN = $8000 .label CHARSET = $9800 .label c = 2 - //SEG17 [10] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG18 [11] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG19 [12] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG20 [13] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG21 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((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 - //SEG22 [15] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG23 [16] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG24 [17] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG25 [18] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG26 [19] phi from menu to menu::@1 [phi:menu->menu::@1] + //SEG27 [19] phi from menu to menu::@1 [phi:menu->menu::@1] b1_from_menu: - //SEG27 [19] phi (byte) menu::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:menu->menu::@1#0] -- vbuxx=vbuc1 + //SEG28 [19] phi (byte) menu::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:menu->menu::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG28 [19] phi from menu::@1 to menu::@1 [phi:menu::@1->menu::@1] + //SEG29 [19] phi from menu::@1 to menu::@1 [phi:menu::@1->menu::@1] b1_from_b1: - //SEG29 [19] phi (byte) menu::i#2 = (byte) menu::i#1 [phi:menu::@1->menu::@1#0] -- register_copy + //SEG30 [19] phi (byte) menu::i#2 = (byte) menu::i#1 [phi:menu::@1->menu::@1#0] -- register_copy jmp b1 - //SEG30 menu::@1 + //SEG31 menu::@1 b1: - //SEG31 [20] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG32 [20] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG32 [21] (byte) menu::i#1 ← ++ (byte) menu::i#2 -- vbuxx=_inc_vbuxx + //SEG33 [21] (byte) menu::i#1 ← ++ (byte) menu::i#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [22] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [22] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 - //SEG34 [23] phi from menu::@1 to menu::@2 [phi:menu::@1->menu::@2] + //SEG35 [23] phi from menu::@1 to menu::@2 [phi:menu::@1->menu::@2] b2_from_b1: - //SEG35 [23] phi (byte*) menu::c#2 = (const byte*) COLS#0 [phi:menu::@1->menu::@2#0] -- pbuz1=pbuc1 + //SEG36 [23] phi (byte*) menu::c#2 = (const byte*) COLS#0 [phi:menu::@1->menu::@2#0] -- pbuz1=pbuc1 lda #COLS sta c+1 jmp b2 - //SEG36 [23] phi from menu::@2 to menu::@2 [phi:menu::@2->menu::@2] + //SEG37 [23] phi from menu::@2 to menu::@2 [phi:menu::@2->menu::@2] b2_from_b2: - //SEG37 [23] phi (byte*) menu::c#2 = (byte*) menu::c#1 [phi:menu::@2->menu::@2#0] -- register_copy + //SEG38 [23] phi (byte*) menu::c#2 = (byte*) menu::c#1 [phi:menu::@2->menu::@2#0] -- register_copy jmp b2 - //SEG38 menu::@2 + //SEG39 menu::@2 b2: - //SEG39 [24] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN#0 -- _deref_pbuz1=vbuc1 + //SEG40 [24] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN#0 -- _deref_pbuz1=vbuc1 lda #LIGHT_GREEN ldy #0 sta (c),y - //SEG40 [25] (byte*) menu::c#1 ← ++ (byte*) menu::c#2 -- pbuz1=_inc_pbuz1 + //SEG41 [25] (byte*) menu::c#1 ← ++ (byte*) menu::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG41 [26] if((byte*) menu::c#1!=(const byte*) COLS#0+(word/signed word/dword/signed dword) 1000) goto menu::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG42 [26] if((byte*) menu::c#1!=(const byte*) COLS#0+(word/signed word/dword/signed dword) 1000) goto menu::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>COLS+$3e8 bne b2_from_b2 @@ -19606,367 +19606,367 @@ menu: { cmp #print_set_screen] + //SEG46 [29] call print_set_screen + //SEG47 [891] phi from menu::@19 to print_set_screen [phi:menu::@19->print_set_screen] print_set_screen_from_b19: jsr print_set_screen - //SEG47 [30] phi from menu::@19 to menu::@47 [phi:menu::@19->menu::@47] + //SEG48 [30] phi from menu::@19 to menu::@47 [phi:menu::@19->menu::@47] b47_from_b19: jmp b47 - //SEG48 menu::@47 + //SEG49 menu::@47 b47: - //SEG49 [31] call print_cls - //SEG50 [885] phi from menu::@47 to print_cls [phi:menu::@47->print_cls] + //SEG50 [31] call print_cls + //SEG51 [885] phi from menu::@47 to print_cls [phi:menu::@47->print_cls] print_cls_from_b47: jsr print_cls - //SEG51 [32] phi from menu::@47 to menu::@48 [phi:menu::@47->menu::@48] + //SEG52 [32] phi from menu::@47 to menu::@48 [phi:menu::@47->menu::@48] b48_from_b47: jmp b48 - //SEG52 menu::@48 + //SEG53 menu::@48 b48: - //SEG53 [33] call print_str_lines - //SEG54 [865] phi from menu::@48 to print_str_lines [phi:menu::@48->print_str_lines] + //SEG54 [33] call print_str_lines + //SEG55 [865] phi from menu::@48 to print_str_lines [phi:menu::@48->print_str_lines] print_str_lines_from_b48: jsr print_str_lines - //SEG55 [34] phi from menu::@48 menu::@71 to menu::@4 [phi:menu::@48/menu::@71->menu::@4] + //SEG56 [34] phi from menu::@48 menu::@71 to menu::@4 [phi:menu::@48/menu::@71->menu::@4] b4_from_b48: b4_from_b71: jmp b4 - //SEG56 menu::@4 + //SEG57 menu::@4 b4: - //SEG57 [35] call keyboard_key_pressed - //SEG58 [211] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] + //SEG58 [35] call keyboard_key_pressed + //SEG59 [211] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] keyboard_key_pressed_from_b4: - //SEG59 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_1#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG60 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_1#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_1 jsr keyboard_key_pressed - //SEG60 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG61 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 jmp b50 - //SEG61 menu::@50 + //SEG62 menu::@50 b50: - //SEG62 [37] (byte~) menu::$29 ← (byte) keyboard_key_pressed::return#2 - //SEG63 [38] if((byte~) menu::$29==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuaa_eq_0_then_la1 + //SEG63 [37] (byte~) menu::$29 ← (byte) keyboard_key_pressed::return#2 + //SEG64 [38] if((byte~) menu::$29==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuaa_eq_0_then_la1 cmp #0 beq b6_from_b50 - //SEG64 [39] phi from menu::@50 to menu::@22 [phi:menu::@50->menu::@22] + //SEG65 [39] phi from menu::@50 to menu::@22 [phi:menu::@50->menu::@22] b22_from_b50: jmp b22 - //SEG65 menu::@22 + //SEG66 menu::@22 b22: - //SEG66 [40] call mode_stdchar + //SEG67 [40] call mode_stdchar jsr mode_stdchar jmp breturn - //SEG67 menu::@return + //SEG68 menu::@return breturn: - //SEG68 [41] return + //SEG69 [41] return rts - //SEG69 [42] phi from menu::@50 to menu::@6 [phi:menu::@50->menu::@6] + //SEG70 [42] phi from menu::@50 to menu::@6 [phi:menu::@50->menu::@6] b6_from_b50: jmp b6 - //SEG70 menu::@6 + //SEG71 menu::@6 b6: - //SEG71 [43] call keyboard_key_pressed - //SEG72 [211] phi from menu::@6 to keyboard_key_pressed [phi:menu::@6->keyboard_key_pressed] + //SEG72 [43] call keyboard_key_pressed + //SEG73 [211] phi from menu::@6 to keyboard_key_pressed [phi:menu::@6->keyboard_key_pressed] keyboard_key_pressed_from_b6: - //SEG73 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_2#0 [phi:menu::@6->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG74 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_2#0 [phi:menu::@6->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_2 jsr keyboard_key_pressed - //SEG74 [44] (byte) keyboard_key_pressed::return#24 ← (byte) keyboard_key_pressed::return#0 + //SEG75 [44] (byte) keyboard_key_pressed::return#24 ← (byte) keyboard_key_pressed::return#0 jmp b51 - //SEG75 menu::@51 + //SEG76 menu::@51 b51: - //SEG76 [45] (byte~) menu::$33 ← (byte) keyboard_key_pressed::return#24 - //SEG77 [46] if((byte~) menu::$33==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@7 -- vbuaa_eq_0_then_la1 + //SEG77 [45] (byte~) menu::$33 ← (byte) keyboard_key_pressed::return#24 + //SEG78 [46] if((byte~) menu::$33==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7_from_b51 - //SEG78 [47] phi from menu::@51 to menu::@24 [phi:menu::@51->menu::@24] + //SEG79 [47] phi from menu::@51 to menu::@24 [phi:menu::@51->menu::@24] b24_from_b51: jmp b24 - //SEG79 menu::@24 + //SEG80 menu::@24 b24: - //SEG80 [48] call mode_ecmchar + //SEG81 [48] call mode_ecmchar jsr mode_ecmchar jmp breturn - //SEG81 [49] phi from menu::@51 to menu::@7 [phi:menu::@51->menu::@7] + //SEG82 [49] phi from menu::@51 to menu::@7 [phi:menu::@51->menu::@7] b7_from_b51: jmp b7 - //SEG82 menu::@7 + //SEG83 menu::@7 b7: - //SEG83 [50] call keyboard_key_pressed - //SEG84 [211] phi from menu::@7 to keyboard_key_pressed [phi:menu::@7->keyboard_key_pressed] + //SEG84 [50] call keyboard_key_pressed + //SEG85 [211] phi from menu::@7 to keyboard_key_pressed [phi:menu::@7->keyboard_key_pressed] keyboard_key_pressed_from_b7: - //SEG85 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_3#0 [phi:menu::@7->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG86 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_3#0 [phi:menu::@7->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_3 jsr keyboard_key_pressed - //SEG86 [51] (byte) keyboard_key_pressed::return#25 ← (byte) keyboard_key_pressed::return#0 + //SEG87 [51] (byte) keyboard_key_pressed::return#25 ← (byte) keyboard_key_pressed::return#0 jmp b53 - //SEG87 menu::@53 + //SEG88 menu::@53 b53: - //SEG88 [52] (byte~) menu::$37 ← (byte) keyboard_key_pressed::return#25 - //SEG89 [53] if((byte~) menu::$37==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@8 -- vbuaa_eq_0_then_la1 + //SEG89 [52] (byte~) menu::$37 ← (byte) keyboard_key_pressed::return#25 + //SEG90 [53] if((byte~) menu::$37==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@8 -- vbuaa_eq_0_then_la1 cmp #0 beq b8_from_b53 - //SEG90 [54] phi from menu::@53 to menu::@26 [phi:menu::@53->menu::@26] + //SEG91 [54] phi from menu::@53 to menu::@26 [phi:menu::@53->menu::@26] b26_from_b53: jmp b26 - //SEG91 menu::@26 + //SEG92 menu::@26 b26: - //SEG92 [55] call mode_mcchar + //SEG93 [55] call mode_mcchar jsr mode_mcchar jmp breturn - //SEG93 [56] phi from menu::@53 to menu::@8 [phi:menu::@53->menu::@8] + //SEG94 [56] phi from menu::@53 to menu::@8 [phi:menu::@53->menu::@8] b8_from_b53: jmp b8 - //SEG94 menu::@8 + //SEG95 menu::@8 b8: - //SEG95 [57] call keyboard_key_pressed - //SEG96 [211] phi from menu::@8 to keyboard_key_pressed [phi:menu::@8->keyboard_key_pressed] + //SEG96 [57] call keyboard_key_pressed + //SEG97 [211] phi from menu::@8 to keyboard_key_pressed [phi:menu::@8->keyboard_key_pressed] keyboard_key_pressed_from_b8: - //SEG97 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_4#0 [phi:menu::@8->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG98 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_4#0 [phi:menu::@8->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_4 jsr keyboard_key_pressed - //SEG98 [58] (byte) keyboard_key_pressed::return#26 ← (byte) keyboard_key_pressed::return#0 + //SEG99 [58] (byte) keyboard_key_pressed::return#26 ← (byte) keyboard_key_pressed::return#0 jmp b55 - //SEG99 menu::@55 + //SEG100 menu::@55 b55: - //SEG100 [59] (byte~) menu::$41 ← (byte) keyboard_key_pressed::return#26 - //SEG101 [60] if((byte~) menu::$41==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@9 -- vbuaa_eq_0_then_la1 + //SEG101 [59] (byte~) menu::$41 ← (byte) keyboard_key_pressed::return#26 + //SEG102 [60] if((byte~) menu::$41==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9_from_b55 - //SEG102 [61] phi from menu::@55 to menu::@28 [phi:menu::@55->menu::@28] + //SEG103 [61] phi from menu::@55 to menu::@28 [phi:menu::@55->menu::@28] b28_from_b55: jmp b28 - //SEG103 menu::@28 + //SEG104 menu::@28 b28: - //SEG104 [62] call mode_stdbitmap + //SEG105 [62] call mode_stdbitmap jsr mode_stdbitmap jmp breturn - //SEG105 [63] phi from menu::@55 to menu::@9 [phi:menu::@55->menu::@9] + //SEG106 [63] phi from menu::@55 to menu::@9 [phi:menu::@55->menu::@9] b9_from_b55: jmp b9 - //SEG106 menu::@9 + //SEG107 menu::@9 b9: - //SEG107 [64] call keyboard_key_pressed - //SEG108 [211] phi from menu::@9 to keyboard_key_pressed [phi:menu::@9->keyboard_key_pressed] + //SEG108 [64] call keyboard_key_pressed + //SEG109 [211] phi from menu::@9 to keyboard_key_pressed [phi:menu::@9->keyboard_key_pressed] keyboard_key_pressed_from_b9: - //SEG109 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_6#0 [phi:menu::@9->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG110 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_6#0 [phi:menu::@9->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_6 jsr keyboard_key_pressed - //SEG110 [65] (byte) keyboard_key_pressed::return#27 ← (byte) keyboard_key_pressed::return#0 + //SEG111 [65] (byte) keyboard_key_pressed::return#27 ← (byte) keyboard_key_pressed::return#0 jmp b57 - //SEG111 menu::@57 + //SEG112 menu::@57 b57: - //SEG112 [66] (byte~) menu::$45 ← (byte) keyboard_key_pressed::return#27 - //SEG113 [67] if((byte~) menu::$45==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@10 -- vbuaa_eq_0_then_la1 + //SEG113 [66] (byte~) menu::$45 ← (byte) keyboard_key_pressed::return#27 + //SEG114 [67] if((byte~) menu::$45==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b57 - //SEG114 [68] phi from menu::@57 to menu::@30 [phi:menu::@57->menu::@30] + //SEG115 [68] phi from menu::@57 to menu::@30 [phi:menu::@57->menu::@30] b30_from_b57: jmp b30 - //SEG115 menu::@30 + //SEG116 menu::@30 b30: - //SEG116 [69] call mode_hicolstdchar + //SEG117 [69] call mode_hicolstdchar jsr mode_hicolstdchar jmp breturn - //SEG117 [70] phi from menu::@57 to menu::@10 [phi:menu::@57->menu::@10] + //SEG118 [70] phi from menu::@57 to menu::@10 [phi:menu::@57->menu::@10] b10_from_b57: jmp b10 - //SEG118 menu::@10 + //SEG119 menu::@10 b10: - //SEG119 [71] call keyboard_key_pressed - //SEG120 [211] phi from menu::@10 to keyboard_key_pressed [phi:menu::@10->keyboard_key_pressed] + //SEG120 [71] call keyboard_key_pressed + //SEG121 [211] phi from menu::@10 to keyboard_key_pressed [phi:menu::@10->keyboard_key_pressed] keyboard_key_pressed_from_b10: - //SEG121 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_7#0 [phi:menu::@10->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG122 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_7#0 [phi:menu::@10->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_7 jsr keyboard_key_pressed - //SEG122 [72] (byte) keyboard_key_pressed::return#28 ← (byte) keyboard_key_pressed::return#0 + //SEG123 [72] (byte) keyboard_key_pressed::return#28 ← (byte) keyboard_key_pressed::return#0 jmp b59 - //SEG123 menu::@59 + //SEG124 menu::@59 b59: - //SEG124 [73] (byte~) menu::$49 ← (byte) keyboard_key_pressed::return#28 - //SEG125 [74] if((byte~) menu::$49==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@11 -- vbuaa_eq_0_then_la1 + //SEG125 [73] (byte~) menu::$49 ← (byte) keyboard_key_pressed::return#28 + //SEG126 [74] if((byte~) menu::$49==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b59 - //SEG126 [75] phi from menu::@59 to menu::@32 [phi:menu::@59->menu::@32] + //SEG127 [75] phi from menu::@59 to menu::@32 [phi:menu::@59->menu::@32] b32_from_b59: jmp b32 - //SEG127 menu::@32 + //SEG128 menu::@32 b32: - //SEG128 [76] call mode_hicolecmchar + //SEG129 [76] call mode_hicolecmchar jsr mode_hicolecmchar jmp breturn - //SEG129 [77] phi from menu::@59 to menu::@11 [phi:menu::@59->menu::@11] + //SEG130 [77] phi from menu::@59 to menu::@11 [phi:menu::@59->menu::@11] b11_from_b59: jmp b11 - //SEG130 menu::@11 + //SEG131 menu::@11 b11: - //SEG131 [78] call keyboard_key_pressed - //SEG132 [211] phi from menu::@11 to keyboard_key_pressed [phi:menu::@11->keyboard_key_pressed] + //SEG132 [78] call keyboard_key_pressed + //SEG133 [211] phi from menu::@11 to keyboard_key_pressed [phi:menu::@11->keyboard_key_pressed] keyboard_key_pressed_from_b11: - //SEG133 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_8#0 [phi:menu::@11->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG134 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_8#0 [phi:menu::@11->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_8 jsr keyboard_key_pressed - //SEG134 [79] (byte) keyboard_key_pressed::return#29 ← (byte) keyboard_key_pressed::return#0 + //SEG135 [79] (byte) keyboard_key_pressed::return#29 ← (byte) keyboard_key_pressed::return#0 jmp b61 - //SEG135 menu::@61 + //SEG136 menu::@61 b61: - //SEG136 [80] (byte~) menu::$53 ← (byte) keyboard_key_pressed::return#29 - //SEG137 [81] if((byte~) menu::$53==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@12 -- vbuaa_eq_0_then_la1 + //SEG137 [80] (byte~) menu::$53 ← (byte) keyboard_key_pressed::return#29 + //SEG138 [81] if((byte~) menu::$53==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@12 -- vbuaa_eq_0_then_la1 cmp #0 beq b12_from_b61 - //SEG138 [82] phi from menu::@61 to menu::@34 [phi:menu::@61->menu::@34] + //SEG139 [82] phi from menu::@61 to menu::@34 [phi:menu::@61->menu::@34] b34_from_b61: jmp b34 - //SEG139 menu::@34 + //SEG140 menu::@34 b34: - //SEG140 [83] call mode_hicolmcchar + //SEG141 [83] call mode_hicolmcchar jsr mode_hicolmcchar jmp breturn - //SEG141 [84] phi from menu::@61 to menu::@12 [phi:menu::@61->menu::@12] + //SEG142 [84] phi from menu::@61 to menu::@12 [phi:menu::@61->menu::@12] b12_from_b61: jmp b12 - //SEG142 menu::@12 + //SEG143 menu::@12 b12: - //SEG143 [85] call keyboard_key_pressed - //SEG144 [211] phi from menu::@12 to keyboard_key_pressed [phi:menu::@12->keyboard_key_pressed] + //SEG144 [85] call keyboard_key_pressed + //SEG145 [211] phi from menu::@12 to keyboard_key_pressed [phi:menu::@12->keyboard_key_pressed] keyboard_key_pressed_from_b12: - //SEG145 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_A#0 [phi:menu::@12->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG146 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_A#0 [phi:menu::@12->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_A jsr keyboard_key_pressed - //SEG146 [86] (byte) keyboard_key_pressed::return#30 ← (byte) keyboard_key_pressed::return#0 + //SEG147 [86] (byte) keyboard_key_pressed::return#30 ← (byte) keyboard_key_pressed::return#0 jmp b63 - //SEG147 menu::@63 + //SEG148 menu::@63 b63: - //SEG148 [87] (byte~) menu::$57 ← (byte) keyboard_key_pressed::return#30 - //SEG149 [88] if((byte~) menu::$57==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@13 -- vbuaa_eq_0_then_la1 + //SEG149 [87] (byte~) menu::$57 ← (byte) keyboard_key_pressed::return#30 + //SEG150 [88] if((byte~) menu::$57==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@13 -- vbuaa_eq_0_then_la1 cmp #0 beq b13_from_b63 - //SEG150 [89] phi from menu::@63 to menu::@36 [phi:menu::@63->menu::@36] + //SEG151 [89] phi from menu::@63 to menu::@36 [phi:menu::@63->menu::@36] b36_from_b63: jmp b36 - //SEG151 menu::@36 + //SEG152 menu::@36 b36: - //SEG152 [90] call mode_sixsfred2 + //SEG153 [90] call mode_sixsfred2 jsr mode_sixsfred2 jmp breturn - //SEG153 [91] phi from menu::@63 to menu::@13 [phi:menu::@63->menu::@13] + //SEG154 [91] phi from menu::@63 to menu::@13 [phi:menu::@63->menu::@13] b13_from_b63: jmp b13 - //SEG154 menu::@13 + //SEG155 menu::@13 b13: - //SEG155 [92] call keyboard_key_pressed - //SEG156 [211] phi from menu::@13 to keyboard_key_pressed [phi:menu::@13->keyboard_key_pressed] + //SEG156 [92] call keyboard_key_pressed + //SEG157 [211] phi from menu::@13 to keyboard_key_pressed [phi:menu::@13->keyboard_key_pressed] keyboard_key_pressed_from_b13: - //SEG157 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:menu::@13->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG158 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:menu::@13->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_B jsr keyboard_key_pressed - //SEG158 [93] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 + //SEG159 [93] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 jmp b65 - //SEG159 menu::@65 + //SEG160 menu::@65 b65: - //SEG160 [94] (byte~) menu::$61 ← (byte) keyboard_key_pressed::return#10 - //SEG161 [95] if((byte~) menu::$61==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@14 -- vbuaa_eq_0_then_la1 + //SEG161 [94] (byte~) menu::$61 ← (byte) keyboard_key_pressed::return#10 + //SEG162 [95] if((byte~) menu::$61==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@14 -- vbuaa_eq_0_then_la1 cmp #0 beq b14_from_b65 - //SEG162 [96] phi from menu::@65 to menu::@38 [phi:menu::@65->menu::@38] + //SEG163 [96] phi from menu::@65 to menu::@38 [phi:menu::@65->menu::@38] b38_from_b65: jmp b38 - //SEG163 menu::@38 + //SEG164 menu::@38 b38: - //SEG164 [97] call mode_twoplanebitmap + //SEG165 [97] call mode_twoplanebitmap jsr mode_twoplanebitmap jmp breturn - //SEG165 [98] phi from menu::@65 to menu::@14 [phi:menu::@65->menu::@14] + //SEG166 [98] phi from menu::@65 to menu::@14 [phi:menu::@65->menu::@14] b14_from_b65: jmp b14 - //SEG166 menu::@14 + //SEG167 menu::@14 b14: - //SEG167 [99] call keyboard_key_pressed - //SEG168 [211] phi from menu::@14 to keyboard_key_pressed [phi:menu::@14->keyboard_key_pressed] + //SEG168 [99] call keyboard_key_pressed + //SEG169 [211] phi from menu::@14 to keyboard_key_pressed [phi:menu::@14->keyboard_key_pressed] keyboard_key_pressed_from_b14: - //SEG169 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:menu::@14->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG170 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:menu::@14->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_C jsr keyboard_key_pressed - //SEG170 [100] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 + //SEG171 [100] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 jmp b67 - //SEG171 menu::@67 + //SEG172 menu::@67 b67: - //SEG172 [101] (byte~) menu::$65 ← (byte) keyboard_key_pressed::return#11 - //SEG173 [102] if((byte~) menu::$65==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@15 -- vbuaa_eq_0_then_la1 + //SEG173 [101] (byte~) menu::$65 ← (byte) keyboard_key_pressed::return#11 + //SEG174 [102] if((byte~) menu::$65==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@15 -- vbuaa_eq_0_then_la1 cmp #0 beq b15_from_b67 - //SEG174 [103] phi from menu::@67 to menu::@40 [phi:menu::@67->menu::@40] + //SEG175 [103] phi from menu::@67 to menu::@40 [phi:menu::@67->menu::@40] b40_from_b67: jmp b40 - //SEG175 menu::@40 + //SEG176 menu::@40 b40: - //SEG176 [104] call mode_sixsfred + //SEG177 [104] call mode_sixsfred jsr mode_sixsfred jmp breturn - //SEG177 [105] phi from menu::@67 to menu::@15 [phi:menu::@67->menu::@15] + //SEG178 [105] phi from menu::@67 to menu::@15 [phi:menu::@67->menu::@15] b15_from_b67: jmp b15 - //SEG178 menu::@15 + //SEG179 menu::@15 b15: - //SEG179 [106] call keyboard_key_pressed - //SEG180 [211] phi from menu::@15 to keyboard_key_pressed [phi:menu::@15->keyboard_key_pressed] + //SEG180 [106] call keyboard_key_pressed + //SEG181 [211] phi from menu::@15 to keyboard_key_pressed [phi:menu::@15->keyboard_key_pressed] keyboard_key_pressed_from_b15: - //SEG181 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_D#0 [phi:menu::@15->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG182 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_D#0 [phi:menu::@15->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_D jsr keyboard_key_pressed - //SEG182 [107] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 + //SEG183 [107] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 jmp b69 - //SEG183 menu::@69 + //SEG184 menu::@69 b69: - //SEG184 [108] (byte~) menu::$69 ← (byte) keyboard_key_pressed::return#12 - //SEG185 [109] if((byte~) menu::$69==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@16 -- vbuaa_eq_0_then_la1 + //SEG185 [108] (byte~) menu::$69 ← (byte) keyboard_key_pressed::return#12 + //SEG186 [109] if((byte~) menu::$69==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@16 -- vbuaa_eq_0_then_la1 cmp #0 beq b16_from_b69 - //SEG186 [110] phi from menu::@69 to menu::@42 [phi:menu::@69->menu::@42] + //SEG187 [110] phi from menu::@69 to menu::@42 [phi:menu::@69->menu::@42] b42_from_b69: jmp b42 - //SEG187 menu::@42 + //SEG188 menu::@42 b42: - //SEG188 [111] call mode_8bpppixelcell + //SEG189 [111] call mode_8bpppixelcell jsr mode_8bpppixelcell jmp breturn - //SEG189 [112] phi from menu::@69 to menu::@16 [phi:menu::@69->menu::@16] + //SEG190 [112] phi from menu::@69 to menu::@16 [phi:menu::@69->menu::@16] b16_from_b69: jmp b16 - //SEG190 menu::@16 + //SEG191 menu::@16 b16: - //SEG191 [113] call keyboard_key_pressed - //SEG192 [211] phi from menu::@16 to keyboard_key_pressed [phi:menu::@16->keyboard_key_pressed] + //SEG192 [113] call keyboard_key_pressed + //SEG193 [211] phi from menu::@16 to keyboard_key_pressed [phi:menu::@16->keyboard_key_pressed] keyboard_key_pressed_from_b16: - //SEG193 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_E#0 [phi:menu::@16->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG194 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_E#0 [phi:menu::@16->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_E jsr keyboard_key_pressed - //SEG194 [114] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 + //SEG195 [114] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 jmp b71 - //SEG195 menu::@71 + //SEG196 menu::@71 b71: - //SEG196 [115] (byte~) menu::$73 ← (byte) keyboard_key_pressed::return#13 - //SEG197 [116] if((byte~) menu::$73==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuaa_eq_0_then_la1 + //SEG197 [115] (byte~) menu::$73 ← (byte) keyboard_key_pressed::return#13 + //SEG198 [116] if((byte~) menu::$73==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b71 - //SEG198 [117] phi from menu::@71 to menu::@44 [phi:menu::@71->menu::@44] + //SEG199 [117] phi from menu::@71 to menu::@44 [phi:menu::@71->menu::@44] b44_from_b71: jmp b44 - //SEG199 menu::@44 + //SEG200 menu::@44 b44: - //SEG200 [118] call mode_8bppchunkybmm + //SEG201 [118] call mode_8bppchunkybmm jsr mode_8bppchunkybmm jmp breturn } -//SEG201 mode_8bppchunkybmm +//SEG202 mode_8bppchunkybmm // Chunky 8bpp Bitmap Mode (BMM = 0, ECM/MCM/HICOL/LINEAR/CHUNK/COLDIS = 1) // Resolution: 320x200 // Linear Adressing @@ -19980,106 +19980,106 @@ mode_8bppchunkybmm: { .label gfxb = 5 .label x = 2 .label y = 4 - //SEG202 [119] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG203 [119] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF sta DTV_CONTROL - //SEG203 [120] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG204 [120] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG204 [121] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG205 [121] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG205 [122] *((const byte*) DTV_PLANEB_START_LO#0) ← <<(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG206 [122] *((const byte*) DTV_PLANEB_START_LO#0) ← <<(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #PLANEB&$ffff sta DTV_PLANEB_START_LO - //SEG206 [123] *((const byte*) DTV_PLANEB_START_MI#0) ← ><(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG207 [123] *((const byte*) DTV_PLANEB_START_MI#0) ← ><(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_MI - //SEG207 [124] *((const byte*) DTV_PLANEB_START_HI#0) ← <>(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG208 [124] *((const byte*) DTV_PLANEB_START_HI#0) ← <>(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #PLANEB>>$10 sta DTV_PLANEB_START_HI - //SEG208 [125] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG209 [125] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta DTV_PLANEB_STEP - //SEG209 [126] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG210 [126] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG210 [127] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG211 [127] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG211 [128] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG212 [128] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG212 [129] phi from mode_8bppchunkybmm to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1] + //SEG213 [129] phi from mode_8bppchunkybmm to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1] b1_from_mode_8bppchunkybmm: - //SEG213 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1#0] -- vbuxx=vbuc1 + //SEG214 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG214 [129] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1] + //SEG215 [129] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1] b1_from_b1: - //SEG215 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte) mode_8bppchunkybmm::i#1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1#0] -- register_copy + //SEG216 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte) mode_8bppchunkybmm::i#1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1#0] -- register_copy jmp b1 - //SEG216 mode_8bppchunkybmm::@1 + //SEG217 mode_8bppchunkybmm::@1 b1: - //SEG217 [130] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bppchunkybmm::i#2) ← (byte) mode_8bppchunkybmm::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG218 [130] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bppchunkybmm::i#2) ← (byte) mode_8bppchunkybmm::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG218 [131] (byte) mode_8bppchunkybmm::i#1 ← ++ (byte) mode_8bppchunkybmm::i#2 -- vbuxx=_inc_vbuxx + //SEG219 [131] (byte) mode_8bppchunkybmm::i#1 ← ++ (byte) mode_8bppchunkybmm::i#2 -- vbuxx=_inc_vbuxx inx - //SEG219 [132] if((byte) mode_8bppchunkybmm::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bppchunkybmm::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG220 [132] if((byte) mode_8bppchunkybmm::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bppchunkybmm::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 - //SEG220 [133] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@5 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@5] + //SEG221 [133] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@5 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@5] b5_from_b1: jmp b5 - //SEG221 mode_8bppchunkybmm::@5 + //SEG222 mode_8bppchunkybmm::@5 b5: - //SEG222 [134] call dtvSetCpuBankSegment1 - //SEG223 [223] phi from mode_8bppchunkybmm::@5 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1] + //SEG223 [134] call dtvSetCpuBankSegment1 + //SEG224 [223] phi from mode_8bppchunkybmm::@5 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b5: - //SEG224 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG225 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #PLANEB/$4000 jsr dtvSetCpuBankSegment1 - //SEG225 [135] phi from mode_8bppchunkybmm::@5 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2] + //SEG226 [135] phi from mode_8bppchunkybmm::@5 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2] b2_from_b5: - //SEG226 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = ++((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#0] -- vbuxx=vbuc1 + //SEG227 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = ++((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#0] -- vbuxx=vbuc1 ldx #PLANEB/$4000+1 - //SEG227 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#1] -- vbuz1=vbuc1 + //SEG228 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG228 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#2] -- pbuz1=pbuc1 + //SEG229 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b2 - //SEG229 [135] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2] + //SEG230 [135] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2] b2_from_b7: - //SEG230 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#0] -- register_copy - //SEG231 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte) mode_8bppchunkybmm::y#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#1] -- register_copy - //SEG232 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#2] -- register_copy + //SEG231 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#0] -- register_copy + //SEG232 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte) mode_8bppchunkybmm::y#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#1] -- register_copy + //SEG233 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#2] -- register_copy jmp b2 - //SEG233 mode_8bppchunkybmm::@2 + //SEG234 mode_8bppchunkybmm::@2 b2: - //SEG234 [136] phi from mode_8bppchunkybmm::@2 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3] + //SEG235 [136] phi from mode_8bppchunkybmm::@2 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3] b3_from_b2: - //SEG235 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#7 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#0] -- register_copy - //SEG236 [136] phi (word) mode_8bppchunkybmm::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#1] -- vwuz1=vbuc1 + //SEG236 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#7 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#0] -- register_copy + //SEG237 [136] phi (word) mode_8bppchunkybmm::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#1] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 - //SEG237 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#5 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#2] -- register_copy + //SEG238 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#5 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#2] -- register_copy jmp b3 - //SEG238 [136] phi from mode_8bppchunkybmm::@4 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3] + //SEG239 [136] phi from mode_8bppchunkybmm::@4 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3] b3_from_b4: - //SEG239 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#0] -- register_copy - //SEG240 [136] phi (word) mode_8bppchunkybmm::x#2 = (word) mode_8bppchunkybmm::x#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#1] -- register_copy - //SEG241 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#2] -- register_copy + //SEG240 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#0] -- register_copy + //SEG241 [136] phi (word) mode_8bppchunkybmm::x#2 = (word) mode_8bppchunkybmm::x#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#1] -- register_copy + //SEG242 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#2] -- register_copy jmp b3 - //SEG242 mode_8bppchunkybmm::@3 + //SEG243 mode_8bppchunkybmm::@3 b3: - //SEG243 [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word/dword/signed dword) 32768) goto mode_8bppchunkybmm::@4 -- pbuz1_neq_vwuc1_then_la1 + //SEG244 [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word/dword/signed dword) 32768) goto mode_8bppchunkybmm::@4 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b4_from_b3 @@ -20087,37 +20087,37 @@ mode_8bppchunkybmm: { cmp #<$8000 bne b4_from_b3 jmp b6 - //SEG244 mode_8bppchunkybmm::@6 + //SEG245 mode_8bppchunkybmm::@6 b6: - //SEG245 [138] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuaa=vbuxx + //SEG246 [138] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuaa=vbuxx txa - //SEG246 [139] call dtvSetCpuBankSegment1 - //SEG247 [223] phi from mode_8bppchunkybmm::@6 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1] + //SEG247 [139] call dtvSetCpuBankSegment1 + //SEG248 [223] phi from mode_8bppchunkybmm::@6 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b6: - //SEG248 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1#0] -- register_copy + //SEG249 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b10 - //SEG249 mode_8bppchunkybmm::@10 + //SEG250 mode_8bppchunkybmm::@10 b10: - //SEG250 [140] (byte) mode_8bppchunkybmm::gfxbCpuBank#2 ← ++ (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx + //SEG251 [140] (byte) mode_8bppchunkybmm::gfxbCpuBank#2 ← ++ (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx inx - //SEG251 [141] phi from mode_8bppchunkybmm::@10 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4] + //SEG252 [141] phi from mode_8bppchunkybmm::@10 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4] b4_from_b10: - //SEG252 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#2 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#0] -- register_copy - //SEG253 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#1] -- pbuz1=pbuc1 + //SEG253 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#2 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#0] -- register_copy + //SEG254 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b4 - //SEG254 [141] phi from mode_8bppchunkybmm::@3 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4] + //SEG255 [141] phi from mode_8bppchunkybmm::@3 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4] b4_from_b3: - //SEG255 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#0] -- register_copy - //SEG256 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = (byte*) mode_8bppchunkybmm::gfxb#3 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#1] -- register_copy + //SEG256 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#0] -- register_copy + //SEG257 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = (byte*) mode_8bppchunkybmm::gfxb#3 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#1] -- register_copy jmp b4 - //SEG257 mode_8bppchunkybmm::@4 + //SEG258 mode_8bppchunkybmm::@4 b4: - //SEG258 [142] (word~) mode_8bppchunkybmm::$23 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG259 [142] (word~) mode_8bppchunkybmm::$23 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -20125,22 +20125,22 @@ mode_8bppchunkybmm: { lda #0 adc x+1 sta _23+1 - //SEG259 [143] (byte) mode_8bppchunkybmm::c#0 ← ((byte)) (word~) mode_8bppchunkybmm::$23 -- vbuaa=_byte_vwuz1 + //SEG260 [143] (byte) mode_8bppchunkybmm::c#0 ← ((byte)) (word~) mode_8bppchunkybmm::$23 -- vbuaa=_byte_vwuz1 lda _23 - //SEG260 [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 -- _deref_pbuz1=vbuaa + //SEG261 [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG261 [145] (byte*) mode_8bppchunkybmm::gfxb#1 ← ++ (byte*) mode_8bppchunkybmm::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG262 [145] (byte*) mode_8bppchunkybmm::gfxb#1 ← ++ (byte*) mode_8bppchunkybmm::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG262 [146] (word) mode_8bppchunkybmm::x#1 ← ++ (word) mode_8bppchunkybmm::x#2 -- vwuz1=_inc_vwuz1 + //SEG263 [146] (word) mode_8bppchunkybmm::x#1 ← ++ (word) mode_8bppchunkybmm::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG263 [147] if((word) mode_8bppchunkybmm::x#1!=(word/signed word/dword/signed dword) 320) goto mode_8bppchunkybmm::@3 -- vwuz1_neq_vwuc1_then_la1 + //SEG264 [147] if((word) mode_8bppchunkybmm::x#1!=(word/signed word/dword/signed dword) 320) goto mode_8bppchunkybmm::@3 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b3_from_b4 @@ -20148,375 +20148,375 @@ mode_8bppchunkybmm: { cmp #<$140 bne b3_from_b4 jmp b7 - //SEG264 mode_8bppchunkybmm::@7 + //SEG265 mode_8bppchunkybmm::@7 b7: - //SEG265 [148] (byte) mode_8bppchunkybmm::y#1 ← ++ (byte) mode_8bppchunkybmm::y#6 -- vbuz1=_inc_vbuz1 + //SEG266 [148] (byte) mode_8bppchunkybmm::y#1 ← ++ (byte) mode_8bppchunkybmm::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG266 [149] if((byte) mode_8bppchunkybmm::y#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_8bppchunkybmm::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG267 [149] if((byte) mode_8bppchunkybmm::y#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_8bppchunkybmm::@2 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$c8 bne b2_from_b7 - //SEG267 [150] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@8] + //SEG268 [150] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@8] b8_from_b7: jmp b8 - //SEG268 mode_8bppchunkybmm::@8 + //SEG269 mode_8bppchunkybmm::@8 b8: - //SEG269 [151] call dtvSetCpuBankSegment1 - //SEG270 [223] phi from mode_8bppchunkybmm::@8 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1] + //SEG270 [151] call dtvSetCpuBankSegment1 + //SEG271 [223] phi from mode_8bppchunkybmm::@8 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //SEG271 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG272 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG272 [152] phi from mode_8bppchunkybmm::@8 to mode_8bppchunkybmm::@11 [phi:mode_8bppchunkybmm::@8->mode_8bppchunkybmm::@11] + //SEG273 [152] phi from mode_8bppchunkybmm::@8 to mode_8bppchunkybmm::@11 [phi:mode_8bppchunkybmm::@8->mode_8bppchunkybmm::@11] b11_from_b8: jmp b11 - //SEG273 mode_8bppchunkybmm::@11 + //SEG274 mode_8bppchunkybmm::@11 b11: - //SEG274 [153] call mode_ctrl - //SEG275 [155] phi from mode_8bppchunkybmm::@11 to mode_ctrl [phi:mode_8bppchunkybmm::@11->mode_ctrl] + //SEG275 [153] call mode_ctrl + //SEG276 [155] phi from mode_8bppchunkybmm::@11 to mode_ctrl [phi:mode_8bppchunkybmm::@11->mode_ctrl] mode_ctrl_from_b11: - //SEG276 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 [phi:mode_8bppchunkybmm::@11->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG277 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 [phi:mode_8bppchunkybmm::@11->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF sta dtv_control jsr mode_ctrl jmp breturn - //SEG277 mode_8bppchunkybmm::@return + //SEG278 mode_8bppchunkybmm::@return breturn: - //SEG278 [154] return + //SEG279 [154] return rts } -//SEG279 mode_ctrl +//SEG280 mode_ctrl // Allow the user to control the DTV graphics using different keys mode_ctrl: { - //SEG280 [156] phi from mode_ctrl mode_ctrl::@30 to mode_ctrl::@1 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1] + //SEG281 [156] phi from mode_ctrl mode_ctrl::@30 to mode_ctrl::@1 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1] b1_from_mode_ctrl: b1_from_b30: - //SEG281 [156] phi (byte) dtv_control#114 = (byte) dtv_control#145 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1#0] -- register_copy + //SEG282 [156] phi (byte) dtv_control#114 = (byte) dtv_control#145 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1#0] -- register_copy jmp b1 - //SEG282 [156] phi from mode_ctrl::@14 to mode_ctrl::@1 [phi:mode_ctrl::@14->mode_ctrl::@1] + //SEG283 [156] phi from mode_ctrl::@14 to mode_ctrl::@1 [phi:mode_ctrl::@14->mode_ctrl::@1] b1_from_b14: jmp b1 - //SEG283 mode_ctrl::@1 + //SEG284 mode_ctrl::@1 b1: jmp b4 - //SEG284 mode_ctrl::@4 + //SEG285 mode_ctrl::@4 b4: - //SEG285 [157] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG286 [157] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG286 [158] phi from mode_ctrl::@4 to mode_ctrl::@6 [phi:mode_ctrl::@4->mode_ctrl::@6] + //SEG287 [158] phi from mode_ctrl::@4 to mode_ctrl::@6 [phi:mode_ctrl::@4->mode_ctrl::@6] b6_from_b4: jmp b6 - //SEG287 mode_ctrl::@6 + //SEG288 mode_ctrl::@6 b6: - //SEG288 [159] call keyboard_key_pressed - //SEG289 [211] phi from mode_ctrl::@6 to keyboard_key_pressed [phi:mode_ctrl::@6->keyboard_key_pressed] + //SEG289 [159] call keyboard_key_pressed + //SEG290 [211] phi from mode_ctrl::@6 to keyboard_key_pressed [phi:mode_ctrl::@6->keyboard_key_pressed] keyboard_key_pressed_from_b6: - //SEG290 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_SPACE#0 [phi:mode_ctrl::@6->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG291 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_SPACE#0 [phi:mode_ctrl::@6->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_SPACE jsr keyboard_key_pressed - //SEG291 [160] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 + //SEG292 [160] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 jmp b32 - //SEG292 mode_ctrl::@32 + //SEG293 mode_ctrl::@32 b32: - //SEG293 [161] (byte~) mode_ctrl::$1 ← (byte) keyboard_key_pressed::return#14 - //SEG294 [162] if((byte~) mode_ctrl::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@7 -- vbuaa_eq_0_then_la1 + //SEG294 [161] (byte~) mode_ctrl::$1 ← (byte) keyboard_key_pressed::return#14 + //SEG295 [162] if((byte~) mode_ctrl::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 jmp breturn - //SEG295 mode_ctrl::@return + //SEG296 mode_ctrl::@return breturn: - //SEG296 [163] return + //SEG297 [163] return rts - //SEG297 mode_ctrl::@7 + //SEG298 mode_ctrl::@7 b7: - //SEG298 [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuxx=vbuz1 + //SEG299 [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuxx=vbuz1 ldx dtv_control - //SEG299 [165] call keyboard_key_pressed - //SEG300 [211] phi from mode_ctrl::@7 to keyboard_key_pressed [phi:mode_ctrl::@7->keyboard_key_pressed] + //SEG300 [165] call keyboard_key_pressed + //SEG301 [211] phi from mode_ctrl::@7 to keyboard_key_pressed [phi:mode_ctrl::@7->keyboard_key_pressed] keyboard_key_pressed_from_b7: - //SEG301 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_L#0 [phi:mode_ctrl::@7->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG302 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_L#0 [phi:mode_ctrl::@7->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_L jsr keyboard_key_pressed - //SEG302 [166] (byte) keyboard_key_pressed::return#15 ← (byte) keyboard_key_pressed::return#0 + //SEG303 [166] (byte) keyboard_key_pressed::return#15 ← (byte) keyboard_key_pressed::return#0 jmp b33 - //SEG303 mode_ctrl::@33 + //SEG304 mode_ctrl::@33 b33: - //SEG304 [167] (byte~) mode_ctrl::$4 ← (byte) keyboard_key_pressed::return#15 - //SEG305 [168] if((byte~) mode_ctrl::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@8 -- vbuaa_eq_0_then_la1 + //SEG305 [167] (byte~) mode_ctrl::$4 ← (byte) keyboard_key_pressed::return#15 + //SEG306 [168] if((byte~) mode_ctrl::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@8 -- vbuaa_eq_0_then_la1 cmp #0 beq b8_from_b33 jmp b23 - //SEG306 mode_ctrl::@23 + //SEG307 mode_ctrl::@23 b23: - //SEG307 [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG308 [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_LINEAR tax - //SEG308 [170] phi from mode_ctrl::@23 mode_ctrl::@33 to mode_ctrl::@8 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8] + //SEG309 [170] phi from mode_ctrl::@23 mode_ctrl::@33 to mode_ctrl::@8 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8] b8_from_b23: b8_from_b33: - //SEG309 [170] phi (byte) mode_ctrl::ctrl#17 = (byte) mode_ctrl::ctrl#1 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8#0] -- register_copy + //SEG310 [170] phi (byte) mode_ctrl::ctrl#17 = (byte) mode_ctrl::ctrl#1 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8#0] -- register_copy jmp b8 - //SEG310 mode_ctrl::@8 + //SEG311 mode_ctrl::@8 b8: - //SEG311 [171] call keyboard_key_pressed - //SEG312 [211] phi from mode_ctrl::@8 to keyboard_key_pressed [phi:mode_ctrl::@8->keyboard_key_pressed] + //SEG312 [171] call keyboard_key_pressed + //SEG313 [211] phi from mode_ctrl::@8 to keyboard_key_pressed [phi:mode_ctrl::@8->keyboard_key_pressed] keyboard_key_pressed_from_b8: - //SEG313 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_H#0 [phi:mode_ctrl::@8->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG314 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_H#0 [phi:mode_ctrl::@8->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_H jsr keyboard_key_pressed - //SEG314 [172] (byte) keyboard_key_pressed::return#16 ← (byte) keyboard_key_pressed::return#0 + //SEG315 [172] (byte) keyboard_key_pressed::return#16 ← (byte) keyboard_key_pressed::return#0 jmp b34 - //SEG315 mode_ctrl::@34 + //SEG316 mode_ctrl::@34 b34: - //SEG316 [173] (byte~) mode_ctrl::$8 ← (byte) keyboard_key_pressed::return#16 - //SEG317 [174] if((byte~) mode_ctrl::$8==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@9 -- vbuaa_eq_0_then_la1 + //SEG317 [173] (byte~) mode_ctrl::$8 ← (byte) keyboard_key_pressed::return#16 + //SEG318 [174] if((byte~) mode_ctrl::$8==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9_from_b34 jmp b24 - //SEG318 mode_ctrl::@24 + //SEG319 mode_ctrl::@24 b24: - //SEG319 [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG320 [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_HIGHCOLOR tax - //SEG320 [176] phi from mode_ctrl::@24 mode_ctrl::@34 to mode_ctrl::@9 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9] + //SEG321 [176] phi from mode_ctrl::@24 mode_ctrl::@34 to mode_ctrl::@9 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9] b9_from_b24: b9_from_b34: - //SEG321 [176] phi (byte) mode_ctrl::ctrl#10 = (byte) mode_ctrl::ctrl#2 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9#0] -- register_copy + //SEG322 [176] phi (byte) mode_ctrl::ctrl#10 = (byte) mode_ctrl::ctrl#2 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9#0] -- register_copy jmp b9 - //SEG322 mode_ctrl::@9 + //SEG323 mode_ctrl::@9 b9: - //SEG323 [177] call keyboard_key_pressed - //SEG324 [211] phi from mode_ctrl::@9 to keyboard_key_pressed [phi:mode_ctrl::@9->keyboard_key_pressed] + //SEG324 [177] call keyboard_key_pressed + //SEG325 [211] phi from mode_ctrl::@9 to keyboard_key_pressed [phi:mode_ctrl::@9->keyboard_key_pressed] keyboard_key_pressed_from_b9: - //SEG325 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_O#0 [phi:mode_ctrl::@9->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG326 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_O#0 [phi:mode_ctrl::@9->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_O jsr keyboard_key_pressed - //SEG326 [178] (byte) keyboard_key_pressed::return#17 ← (byte) keyboard_key_pressed::return#0 + //SEG327 [178] (byte) keyboard_key_pressed::return#17 ← (byte) keyboard_key_pressed::return#0 jmp b35 - //SEG327 mode_ctrl::@35 + //SEG328 mode_ctrl::@35 b35: - //SEG328 [179] (byte~) mode_ctrl::$12 ← (byte) keyboard_key_pressed::return#17 - //SEG329 [180] if((byte~) mode_ctrl::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@10 -- vbuaa_eq_0_then_la1 + //SEG329 [179] (byte~) mode_ctrl::$12 ← (byte) keyboard_key_pressed::return#17 + //SEG330 [180] if((byte~) mode_ctrl::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b35 jmp b25 - //SEG330 mode_ctrl::@25 + //SEG331 mode_ctrl::@25 b25: - //SEG331 [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG332 [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_OVERSCAN tax - //SEG332 [182] phi from mode_ctrl::@25 mode_ctrl::@35 to mode_ctrl::@10 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10] + //SEG333 [182] phi from mode_ctrl::@25 mode_ctrl::@35 to mode_ctrl::@10 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10] b10_from_b25: b10_from_b35: - //SEG333 [182] phi (byte) mode_ctrl::ctrl#11 = (byte) mode_ctrl::ctrl#3 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10#0] -- register_copy + //SEG334 [182] phi (byte) mode_ctrl::ctrl#11 = (byte) mode_ctrl::ctrl#3 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10#0] -- register_copy jmp b10 - //SEG334 mode_ctrl::@10 + //SEG335 mode_ctrl::@10 b10: - //SEG335 [183] call keyboard_key_pressed - //SEG336 [211] phi from mode_ctrl::@10 to keyboard_key_pressed [phi:mode_ctrl::@10->keyboard_key_pressed] + //SEG336 [183] call keyboard_key_pressed + //SEG337 [211] phi from mode_ctrl::@10 to keyboard_key_pressed [phi:mode_ctrl::@10->keyboard_key_pressed] keyboard_key_pressed_from_b10: - //SEG337 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:mode_ctrl::@10->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG338 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:mode_ctrl::@10->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_B jsr keyboard_key_pressed - //SEG338 [184] (byte) keyboard_key_pressed::return#18 ← (byte) keyboard_key_pressed::return#0 + //SEG339 [184] (byte) keyboard_key_pressed::return#18 ← (byte) keyboard_key_pressed::return#0 jmp b36 - //SEG339 mode_ctrl::@36 + //SEG340 mode_ctrl::@36 b36: - //SEG340 [185] (byte~) mode_ctrl::$16 ← (byte) keyboard_key_pressed::return#18 - //SEG341 [186] if((byte~) mode_ctrl::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@11 -- vbuaa_eq_0_then_la1 + //SEG341 [185] (byte~) mode_ctrl::$16 ← (byte) keyboard_key_pressed::return#18 + //SEG342 [186] if((byte~) mode_ctrl::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b36 jmp b26 - //SEG342 mode_ctrl::@26 + //SEG343 mode_ctrl::@26 b26: - //SEG343 [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG344 [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_BORDER_OFF tax - //SEG344 [188] phi from mode_ctrl::@26 mode_ctrl::@36 to mode_ctrl::@11 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11] + //SEG345 [188] phi from mode_ctrl::@26 mode_ctrl::@36 to mode_ctrl::@11 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11] b11_from_b26: b11_from_b36: - //SEG345 [188] phi (byte) mode_ctrl::ctrl#12 = (byte) mode_ctrl::ctrl#4 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11#0] -- register_copy + //SEG346 [188] phi (byte) mode_ctrl::ctrl#12 = (byte) mode_ctrl::ctrl#4 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11#0] -- register_copy jmp b11 - //SEG346 mode_ctrl::@11 + //SEG347 mode_ctrl::@11 b11: - //SEG347 [189] call keyboard_key_pressed - //SEG348 [211] phi from mode_ctrl::@11 to keyboard_key_pressed [phi:mode_ctrl::@11->keyboard_key_pressed] + //SEG348 [189] call keyboard_key_pressed + //SEG349 [211] phi from mode_ctrl::@11 to keyboard_key_pressed [phi:mode_ctrl::@11->keyboard_key_pressed] keyboard_key_pressed_from_b11: - //SEG349 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_U#0 [phi:mode_ctrl::@11->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG350 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_U#0 [phi:mode_ctrl::@11->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_U jsr keyboard_key_pressed - //SEG350 [190] (byte) keyboard_key_pressed::return#19 ← (byte) keyboard_key_pressed::return#0 + //SEG351 [190] (byte) keyboard_key_pressed::return#19 ← (byte) keyboard_key_pressed::return#0 jmp b37 - //SEG351 mode_ctrl::@37 + //SEG352 mode_ctrl::@37 b37: - //SEG352 [191] (byte~) mode_ctrl::$20 ← (byte) keyboard_key_pressed::return#19 - //SEG353 [192] if((byte~) mode_ctrl::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@12 -- vbuaa_eq_0_then_la1 + //SEG353 [191] (byte~) mode_ctrl::$20 ← (byte) keyboard_key_pressed::return#19 + //SEG354 [192] if((byte~) mode_ctrl::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@12 -- vbuaa_eq_0_then_la1 cmp #0 beq b12_from_b37 jmp b27 - //SEG354 mode_ctrl::@27 + //SEG355 mode_ctrl::@27 b27: - //SEG355 [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG356 [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_CHUNKY tax - //SEG356 [194] phi from mode_ctrl::@27 mode_ctrl::@37 to mode_ctrl::@12 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12] + //SEG357 [194] phi from mode_ctrl::@27 mode_ctrl::@37 to mode_ctrl::@12 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12] b12_from_b27: b12_from_b37: - //SEG357 [194] phi (byte) mode_ctrl::ctrl#13 = (byte) mode_ctrl::ctrl#5 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12#0] -- register_copy + //SEG358 [194] phi (byte) mode_ctrl::ctrl#13 = (byte) mode_ctrl::ctrl#5 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12#0] -- register_copy jmp b12 - //SEG358 mode_ctrl::@12 + //SEG359 mode_ctrl::@12 b12: - //SEG359 [195] call keyboard_key_pressed - //SEG360 [211] phi from mode_ctrl::@12 to keyboard_key_pressed [phi:mode_ctrl::@12->keyboard_key_pressed] + //SEG360 [195] call keyboard_key_pressed + //SEG361 [211] phi from mode_ctrl::@12 to keyboard_key_pressed [phi:mode_ctrl::@12->keyboard_key_pressed] keyboard_key_pressed_from_b12: - //SEG361 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:mode_ctrl::@12->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG362 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:mode_ctrl::@12->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_C jsr keyboard_key_pressed - //SEG362 [196] (byte) keyboard_key_pressed::return#20 ← (byte) keyboard_key_pressed::return#0 + //SEG363 [196] (byte) keyboard_key_pressed::return#20 ← (byte) keyboard_key_pressed::return#0 jmp b38 - //SEG363 mode_ctrl::@38 + //SEG364 mode_ctrl::@38 b38: - //SEG364 [197] (byte~) mode_ctrl::$24 ← (byte) keyboard_key_pressed::return#20 - //SEG365 [198] if((byte~) mode_ctrl::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@13 -- vbuaa_eq_0_then_la1 + //SEG365 [197] (byte~) mode_ctrl::$24 ← (byte) keyboard_key_pressed::return#20 + //SEG366 [198] if((byte~) mode_ctrl::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@13 -- vbuaa_eq_0_then_la1 cmp #0 beq b13_from_b38 jmp b28 - //SEG366 mode_ctrl::@28 + //SEG367 mode_ctrl::@28 b28: - //SEG367 [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG368 [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_COLORRAM_OFF tax - //SEG368 [200] phi from mode_ctrl::@28 mode_ctrl::@38 to mode_ctrl::@13 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13] + //SEG369 [200] phi from mode_ctrl::@28 mode_ctrl::@38 to mode_ctrl::@13 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13] b13_from_b28: b13_from_b38: - //SEG369 [200] phi (byte) mode_ctrl::ctrl#22 = (byte) mode_ctrl::ctrl#6 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13#0] -- register_copy + //SEG370 [200] phi (byte) mode_ctrl::ctrl#22 = (byte) mode_ctrl::ctrl#6 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13#0] -- register_copy jmp b13 - //SEG370 mode_ctrl::@13 + //SEG371 mode_ctrl::@13 b13: - //SEG371 [201] call keyboard_key_pressed - //SEG372 [211] phi from mode_ctrl::@13 to keyboard_key_pressed [phi:mode_ctrl::@13->keyboard_key_pressed] + //SEG372 [201] call keyboard_key_pressed + //SEG373 [211] phi from mode_ctrl::@13 to keyboard_key_pressed [phi:mode_ctrl::@13->keyboard_key_pressed] keyboard_key_pressed_from_b13: - //SEG373 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_0#0 [phi:mode_ctrl::@13->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG374 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_0#0 [phi:mode_ctrl::@13->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_0 jsr keyboard_key_pressed - //SEG374 [202] (byte) keyboard_key_pressed::return#21 ← (byte) keyboard_key_pressed::return#0 + //SEG375 [202] (byte) keyboard_key_pressed::return#21 ← (byte) keyboard_key_pressed::return#0 jmp b39 - //SEG375 mode_ctrl::@39 + //SEG376 mode_ctrl::@39 b39: - //SEG376 [203] (byte~) mode_ctrl::$28 ← (byte) keyboard_key_pressed::return#21 - //SEG377 [204] if((byte~) mode_ctrl::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@46 -- vbuaa_eq_0_then_la1 + //SEG377 [203] (byte~) mode_ctrl::$28 ← (byte) keyboard_key_pressed::return#21 + //SEG378 [204] if((byte~) mode_ctrl::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@46 -- vbuaa_eq_0_then_la1 cmp #0 beq b46_from_b39 - //SEG378 [205] phi from mode_ctrl::@39 to mode_ctrl::@14 [phi:mode_ctrl::@39->mode_ctrl::@14] + //SEG379 [205] phi from mode_ctrl::@39 to mode_ctrl::@14 [phi:mode_ctrl::@39->mode_ctrl::@14] b14_from_b39: - //SEG379 [205] phi (byte) mode_ctrl::ctrl#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ctrl::@39->mode_ctrl::@14#0] -- vbuxx=vbuc1 + //SEG380 [205] phi (byte) mode_ctrl::ctrl#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ctrl::@39->mode_ctrl::@14#0] -- vbuxx=vbuc1 ldx #0 jmp b14 - //SEG380 mode_ctrl::@14 + //SEG381 mode_ctrl::@14 b14: - //SEG381 [206] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuxx_eq_vbuz1_then_la1 + //SEG382 [206] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuxx_eq_vbuz1_then_la1 cpx dtv_control beq b1_from_b14 jmp b30 - //SEG382 mode_ctrl::@30 + //SEG383 mode_ctrl::@30 b30: - //SEG383 [207] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuz1=vbuxx + //SEG384 [207] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuz1=vbuxx stx dtv_control - //SEG384 [208] *((const byte*) DTV_CONTROL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx + //SEG385 [208] *((const byte*) DTV_CONTROL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx stx DTV_CONTROL - //SEG385 [209] *((const byte*) BORDERCOL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx + //SEG386 [209] *((const byte*) BORDERCOL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx stx BORDERCOL jmp b1_from_b30 - //SEG386 [210] phi from mode_ctrl::@39 to mode_ctrl::@46 [phi:mode_ctrl::@39->mode_ctrl::@46] + //SEG387 [210] phi from mode_ctrl::@39 to mode_ctrl::@46 [phi:mode_ctrl::@39->mode_ctrl::@46] b46_from_b39: jmp b46 - //SEG387 mode_ctrl::@46 + //SEG388 mode_ctrl::@46 b46: - //SEG388 [205] phi from mode_ctrl::@46 to mode_ctrl::@14 [phi:mode_ctrl::@46->mode_ctrl::@14] + //SEG389 [205] phi from mode_ctrl::@46 to mode_ctrl::@14 [phi:mode_ctrl::@46->mode_ctrl::@14] b14_from_b46: - //SEG389 [205] phi (byte) mode_ctrl::ctrl#14 = (byte) mode_ctrl::ctrl#22 [phi:mode_ctrl::@46->mode_ctrl::@14#0] -- register_copy + //SEG390 [205] phi (byte) mode_ctrl::ctrl#14 = (byte) mode_ctrl::ctrl#22 [phi:mode_ctrl::@46->mode_ctrl::@14#0] -- register_copy jmp b14 } -//SEG390 keyboard_key_pressed +//SEG391 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed keyboard_key_pressed: { .label colidx = 7 - //SEG391 [212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuyy_band_vbuc1 + //SEG392 [212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuyy_band_vbuc1 tya and #7 sta colidx - //SEG392 [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_ror_3 + //SEG393 [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_ror_3 tya lsr lsr lsr - //SEG393 [214] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa + //SEG394 [214] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa tay - //SEG394 [215] call keyboard_matrix_read + //SEG395 [215] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG395 [216] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG396 [216] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b2 - //SEG396 keyboard_key_pressed::@2 + //SEG397 keyboard_key_pressed::@2 b2: - //SEG397 [217] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG398 [218] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 + //SEG398 [217] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG399 [218] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 ldy colidx and keyboard_matrix_col_bitmask,y jmp breturn - //SEG399 keyboard_key_pressed::@return + //SEG400 keyboard_key_pressed::@return breturn: - //SEG400 [219] return + //SEG401 [219] return rts } -//SEG401 keyboard_matrix_read +//SEG402 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG402 [220] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuyy + //SEG403 [220] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuyy lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG403 [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG404 [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG404 keyboard_matrix_read::@return + //SEG405 keyboard_matrix_read::@return breturn: - //SEG405 [222] return + //SEG406 [222] return rts } -//SEG406 dtvSetCpuBankSegment1 +//SEG407 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG407 [224] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuaa + //SEG408 [224] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG408 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG409 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG409 dtvSetCpuBankSegment1::@return + //SEG410 dtvSetCpuBankSegment1::@return breturn: - //SEG410 [226] return + //SEG411 [226] return rts } -//SEG411 mode_8bpppixelcell +//SEG412 mode_8bpppixelcell // 8bpp Pixel Cell Mode (BMM/COLDIS = 0, ECM/MCM/HICOL/LINEAR/CHUNK = 1) // Pixel Cell Adressing // CharData[8]: (PlaneA[21:0]) @@ -20540,295 +20540,295 @@ mode_8bpppixelcell: { .label col = 9 .label cr = 7 .label ch = 4 - //SEG412 [227] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG413 [227] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY sta DTV_CONTROL - //SEG413 [228] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG414 [228] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG414 [229] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG415 [229] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG415 [230] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG416 [230] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG417 [231] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG417 [232] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG418 [232] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG418 [233] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG419 [233] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG419 [234] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG420 [234] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG420 [235] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG421 [235] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG421 [236] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG422 [236] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG423 [237] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG423 [238] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG424 [238] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG424 [239] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG425 [239] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_STEP - //SEG425 [240] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG426 [240] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG426 [241] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG427 [241] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG427 [242] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG428 [242] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG428 [243] phi from mode_8bpppixelcell to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1] + //SEG429 [243] phi from mode_8bpppixelcell to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1] b1_from_mode_8bpppixelcell: - //SEG429 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1#0] -- vbuxx=vbuc1 + //SEG430 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG430 [243] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1] + //SEG431 [243] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1] b1_from_b1: - //SEG431 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte) mode_8bpppixelcell::i#1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1#0] -- register_copy + //SEG432 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte) mode_8bpppixelcell::i#1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1#0] -- register_copy jmp b1 - //SEG432 mode_8bpppixelcell::@1 + //SEG433 mode_8bpppixelcell::@1 b1: - //SEG433 [244] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bpppixelcell::i#2) ← (byte) mode_8bpppixelcell::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG434 [244] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bpppixelcell::i#2) ← (byte) mode_8bpppixelcell::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG434 [245] (byte) mode_8bpppixelcell::i#1 ← ++ (byte) mode_8bpppixelcell::i#2 -- vbuxx=_inc_vbuxx + //SEG435 [245] (byte) mode_8bpppixelcell::i#1 ← ++ (byte) mode_8bpppixelcell::i#2 -- vbuxx=_inc_vbuxx inx - //SEG435 [246] if((byte) mode_8bpppixelcell::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bpppixelcell::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG436 [246] if((byte) mode_8bpppixelcell::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bpppixelcell::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 - //SEG436 [247] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2] + //SEG437 [247] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2] b2_from_b1: - //SEG437 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (const byte*) mode_8bpppixelcell::PLANEA#0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#0] -- pbuz1=pbuc1 + //SEG438 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (const byte*) mode_8bpppixelcell::PLANEA#0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG438 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#1] -- vbuz1=vbuc1 + //SEG439 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b2 - //SEG439 [247] phi from mode_8bpppixelcell::@9 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2] + //SEG440 [247] phi from mode_8bpppixelcell::@9 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2] b2_from_b9: - //SEG440 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#0] -- register_copy - //SEG441 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte) mode_8bpppixelcell::ay#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#1] -- register_copy + //SEG441 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#0] -- register_copy + //SEG442 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte) mode_8bpppixelcell::ay#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#1] -- register_copy jmp b2 - //SEG442 mode_8bpppixelcell::@2 + //SEG443 mode_8bpppixelcell::@2 b2: - //SEG443 [248] phi from mode_8bpppixelcell::@2 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3] + //SEG444 [248] phi from mode_8bpppixelcell::@2 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3] b3_from_b2: - //SEG444 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#0] -- register_copy - //SEG445 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#1] -- vbuxx=vbuc1 + //SEG445 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#0] -- register_copy + //SEG446 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG446 [248] phi from mode_8bpppixelcell::@3 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3] + //SEG447 [248] phi from mode_8bpppixelcell::@3 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3] b3_from_b3: - //SEG447 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#0] -- register_copy - //SEG448 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte) mode_8bpppixelcell::ax#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#1] -- register_copy + //SEG448 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#0] -- register_copy + //SEG449 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte) mode_8bpppixelcell::ax#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#1] -- register_copy jmp b3 - //SEG449 mode_8bpppixelcell::@3 + //SEG450 mode_8bpppixelcell::@3 b3: - //SEG450 [249] (byte~) mode_8bpppixelcell::$13 ← (byte) mode_8bpppixelcell::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG451 [249] (byte~) mode_8bpppixelcell::$13 ← (byte) mode_8bpppixelcell::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and ay - //SEG451 [250] (byte~) mode_8bpppixelcell::$14 ← (byte~) mode_8bpppixelcell::$13 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG452 [250] (byte~) mode_8bpppixelcell::$14 ← (byte~) mode_8bpppixelcell::$13 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _14 - //SEG452 [251] (byte~) mode_8bpppixelcell::$15 ← (byte) mode_8bpppixelcell::ax#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG453 [251] (byte~) mode_8bpppixelcell::$15 ← (byte) mode_8bpppixelcell::ax#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG453 [252] (byte~) mode_8bpppixelcell::$16 ← (byte~) mode_8bpppixelcell::$14 | (byte~) mode_8bpppixelcell::$15 -- vbuaa=vbuz1_bor_vbuaa + //SEG454 [252] (byte~) mode_8bpppixelcell::$16 ← (byte~) mode_8bpppixelcell::$14 | (byte~) mode_8bpppixelcell::$15 -- vbuaa=vbuz1_bor_vbuaa ora _14 - //SEG454 [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$16 -- _deref_pbuz1=vbuaa + //SEG455 [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$16 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxa),y - //SEG455 [254] (byte*) mode_8bpppixelcell::gfxa#1 ← ++ (byte*) mode_8bpppixelcell::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG456 [254] (byte*) mode_8bpppixelcell::gfxa#1 ← ++ (byte*) mode_8bpppixelcell::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG456 [255] (byte) mode_8bpppixelcell::ax#1 ← ++ (byte) mode_8bpppixelcell::ax#2 -- vbuxx=_inc_vbuxx + //SEG457 [255] (byte) mode_8bpppixelcell::ax#1 ← ++ (byte) mode_8bpppixelcell::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG457 [256] if((byte) mode_8bpppixelcell::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_8bpppixelcell::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG458 [256] if((byte) mode_8bpppixelcell::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_8bpppixelcell::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b9 - //SEG458 mode_8bpppixelcell::@9 + //SEG459 mode_8bpppixelcell::@9 b9: - //SEG459 [257] (byte) mode_8bpppixelcell::ay#1 ← ++ (byte) mode_8bpppixelcell::ay#4 -- vbuz1=_inc_vbuz1 + //SEG460 [257] (byte) mode_8bpppixelcell::ay#1 ← ++ (byte) mode_8bpppixelcell::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG460 [258] if((byte) mode_8bpppixelcell::ay#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_8bpppixelcell::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG461 [258] if((byte) mode_8bpppixelcell::ay#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_8bpppixelcell::@2 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$19 bne b2_from_b9 jmp b10 - //SEG461 mode_8bpppixelcell::@10 + //SEG462 mode_8bpppixelcell::@10 b10: - //SEG462 [259] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG463 [259] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG463 [260] phi from mode_8bpppixelcell::@10 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4] + //SEG464 [260] phi from mode_8bpppixelcell::@10 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4] b4_from_b10: - //SEG464 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#0] -- vbuz1=vbuc1 + //SEG465 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#0] -- vbuz1=vbuc1 lda #0 sta ch - //SEG465 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#1] -- vbuz1=vbuc1 + //SEG466 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#1] -- vbuz1=vbuc1 lda #0 sta col - //SEG466 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (const byte*) mode_8bpppixelcell::PLANEB#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#2] -- pbuz1=pbuc1 + //SEG467 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (const byte*) mode_8bpppixelcell::PLANEB#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#2] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 - //SEG467 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) 53248 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1 + //SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) 53248 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1 lda #<$d000 sta chargen lda #>$d000 sta chargen+1 jmp b4 - //SEG468 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4] + //SEG469 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4] b4_from_b13: - //SEG469 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte) mode_8bpppixelcell::ch#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#0] -- register_copy - //SEG470 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#1] -- register_copy - //SEG471 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#2] -- register_copy - //SEG472 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#3] -- register_copy + //SEG470 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte) mode_8bpppixelcell::ch#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#0] -- register_copy + //SEG471 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#1] -- register_copy + //SEG472 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#2] -- register_copy + //SEG473 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#3] -- register_copy jmp b4 - //SEG473 mode_8bpppixelcell::@4 + //SEG474 mode_8bpppixelcell::@4 b4: - //SEG474 [261] phi from mode_8bpppixelcell::@4 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5] + //SEG475 [261] phi from mode_8bpppixelcell::@4 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5] b5_from_b4: - //SEG475 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#0] -- vbuz1=vbuc1 + //SEG476 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#0] -- vbuz1=vbuc1 lda #0 sta cr - //SEG476 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#1] -- register_copy - //SEG477 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#2] -- register_copy - //SEG478 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#4 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#3] -- register_copy + //SEG477 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#1] -- register_copy + //SEG478 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#2] -- register_copy + //SEG479 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#4 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#3] -- register_copy jmp b5 - //SEG479 [261] phi from mode_8bpppixelcell::@12 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5] + //SEG480 [261] phi from mode_8bpppixelcell::@12 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5] b5_from_b12: - //SEG480 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte) mode_8bpppixelcell::cr#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#0] -- register_copy - //SEG481 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#1] -- register_copy - //SEG482 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#2] -- register_copy - //SEG483 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#3] -- register_copy + //SEG481 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte) mode_8bpppixelcell::cr#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#0] -- register_copy + //SEG482 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#1] -- register_copy + //SEG483 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#2] -- register_copy + //SEG484 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#3] -- register_copy jmp b5 - //SEG484 mode_8bpppixelcell::@5 + //SEG485 mode_8bpppixelcell::@5 b5: - //SEG485 [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG486 [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG486 [263] (byte*) mode_8bpppixelcell::chargen#1 ← ++ (byte*) mode_8bpppixelcell::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG487 [263] (byte*) mode_8bpppixelcell::chargen#1 ← ++ (byte*) mode_8bpppixelcell::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG487 [264] phi from mode_8bpppixelcell::@5 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6] + //SEG488 [264] phi from mode_8bpppixelcell::@5 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6] b6_from_b5: - //SEG488 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#0] -- vbuxx=vbuc1 + //SEG489 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG489 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#1] -- register_copy - //SEG490 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#2] -- register_copy - //SEG491 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#3] -- register_copy + //SEG490 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#1] -- register_copy + //SEG491 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#2] -- register_copy + //SEG492 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#3] -- register_copy jmp b6 - //SEG492 [264] phi from mode_8bpppixelcell::@7 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6] + //SEG493 [264] phi from mode_8bpppixelcell::@7 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6] b6_from_b7: - //SEG493 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte) mode_8bpppixelcell::cp#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#0] -- register_copy - //SEG494 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#1] -- register_copy - //SEG495 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#2] -- register_copy - //SEG496 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#3] -- register_copy + //SEG494 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte) mode_8bpppixelcell::cp#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#0] -- register_copy + //SEG495 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#1] -- register_copy + //SEG496 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#2] -- register_copy + //SEG497 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#3] -- register_copy jmp b6 - //SEG497 mode_8bpppixelcell::@6 + //SEG498 mode_8bpppixelcell::@6 b6: - //SEG498 [265] (byte~) mode_8bpppixelcell::$19 ← (byte) mode_8bpppixelcell::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG499 [265] (byte~) mode_8bpppixelcell::$19 ← (byte) mode_8bpppixelcell::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG499 [266] if((byte~) mode_8bpppixelcell::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@7 -- vbuaa_eq_0_then_la1 + //SEG500 [266] if((byte~) mode_8bpppixelcell::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7_from_b6 jmp b11 - //SEG500 mode_8bpppixelcell::@11 + //SEG501 mode_8bpppixelcell::@11 b11: - //SEG501 [267] (byte~) mode_8bpppixelcell::c#3 ← (byte) mode_8bpppixelcell::col#2 -- vbuaa=vbuz1 + //SEG502 [267] (byte~) mode_8bpppixelcell::c#3 ← (byte) mode_8bpppixelcell::col#2 -- vbuaa=vbuz1 lda col - //SEG502 [268] phi from mode_8bpppixelcell::@11 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7] + //SEG503 [268] phi from mode_8bpppixelcell::@11 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7] b7_from_b11: - //SEG503 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte~) mode_8bpppixelcell::c#3 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7#0] -- register_copy + //SEG504 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte~) mode_8bpppixelcell::c#3 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7#0] -- register_copy jmp b7 - //SEG504 [268] phi from mode_8bpppixelcell::@6 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7] + //SEG505 [268] phi from mode_8bpppixelcell::@6 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7] b7_from_b6: - //SEG505 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7#0] -- vbuaa=vbuc1 + //SEG506 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7#0] -- vbuaa=vbuc1 lda #0 jmp b7 - //SEG506 mode_8bpppixelcell::@7 + //SEG507 mode_8bpppixelcell::@7 b7: - //SEG507 [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 -- _deref_pbuz1=vbuaa + //SEG508 [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG508 [270] (byte*) mode_8bpppixelcell::gfxb#1 ← ++ (byte*) mode_8bpppixelcell::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG509 [270] (byte*) mode_8bpppixelcell::gfxb#1 ← ++ (byte*) mode_8bpppixelcell::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG509 [271] (byte) mode_8bpppixelcell::bits#1 ← (byte) mode_8bpppixelcell::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG510 [271] (byte) mode_8bpppixelcell::bits#1 ← (byte) mode_8bpppixelcell::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG510 [272] (byte) mode_8bpppixelcell::col#1 ← ++ (byte) mode_8bpppixelcell::col#2 -- vbuz1=_inc_vbuz1 + //SEG511 [272] (byte) mode_8bpppixelcell::col#1 ← ++ (byte) mode_8bpppixelcell::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG511 [273] (byte) mode_8bpppixelcell::cp#1 ← ++ (byte) mode_8bpppixelcell::cp#2 -- vbuxx=_inc_vbuxx + //SEG512 [273] (byte) mode_8bpppixelcell::cp#1 ← ++ (byte) mode_8bpppixelcell::cp#2 -- vbuxx=_inc_vbuxx inx - //SEG512 [274] if((byte) mode_8bpppixelcell::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG513 [274] if((byte) mode_8bpppixelcell::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6_from_b7 jmp b12 - //SEG513 mode_8bpppixelcell::@12 + //SEG514 mode_8bpppixelcell::@12 b12: - //SEG514 [275] (byte) mode_8bpppixelcell::cr#1 ← ++ (byte) mode_8bpppixelcell::cr#6 -- vbuz1=_inc_vbuz1 + //SEG515 [275] (byte) mode_8bpppixelcell::cr#1 ← ++ (byte) mode_8bpppixelcell::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG515 [276] if((byte) mode_8bpppixelcell::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG516 [276] if((byte) mode_8bpppixelcell::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@5 -- vbuz1_neq_vbuc1_then_la1 lda cr cmp #8 bne b5_from_b12 jmp b13 - //SEG516 mode_8bpppixelcell::@13 + //SEG517 mode_8bpppixelcell::@13 b13: - //SEG517 [277] (byte) mode_8bpppixelcell::ch#1 ← ++ (byte) mode_8bpppixelcell::ch#8 -- vbuz1=_inc_vbuz1 + //SEG518 [277] (byte) mode_8bpppixelcell::ch#1 ← ++ (byte) mode_8bpppixelcell::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG518 [278] if((byte) mode_8bpppixelcell::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@4 -- vbuz1_neq_0_then_la1 + //SEG519 [278] if((byte) mode_8bpppixelcell::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@4 -- vbuz1_neq_0_then_la1 lda ch cmp #0 bne b4_from_b13 jmp b14 - //SEG519 mode_8bpppixelcell::@14 + //SEG520 mode_8bpppixelcell::@14 b14: - //SEG520 [279] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG521 [279] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG521 [280] call mode_ctrl - //SEG522 [155] phi from mode_8bpppixelcell::@14 to mode_ctrl [phi:mode_8bpppixelcell::@14->mode_ctrl] + //SEG522 [280] call mode_ctrl + //SEG523 [155] phi from mode_8bpppixelcell::@14 to mode_ctrl [phi:mode_8bpppixelcell::@14->mode_ctrl] mode_ctrl_from_b14: - //SEG523 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 [phi:mode_8bpppixelcell::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG524 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 [phi:mode_8bpppixelcell::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY sta dtv_control jsr mode_ctrl jmp breturn - //SEG524 mode_8bpppixelcell::@return + //SEG525 mode_8bpppixelcell::@return breturn: - //SEG525 [281] return + //SEG526 [281] return rts } -//SEG526 mode_sixsfred +//SEG527 mode_sixsfred // Sixs Fred Mode - 8bpp Packed Bitmap - Generated from the two DTV linear graphics plane counters // Two Plane MultiColor Bitmap - 8bpp Packed Bitmap (CHUNK/COLDIS = 0, ECM/BMM/MCM/HICOL/LINEAR = 1) // Resolution: 160x200 @@ -20845,275 +20845,275 @@ mode_sixsfred: { .label ay = 4 .label gfxb = 2 .label by = 4 - //SEG527 [282] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG528 [282] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR sta DTV_CONTROL - //SEG528 [283] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG529 [283] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG529 [284] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG530 [284] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG530 [285] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG531 [285] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG532 [286] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG532 [287] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG533 [287] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG533 [288] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG534 [288] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG534 [289] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG535 [289] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG535 [290] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG536 [290] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG536 [291] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG537 [291] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG538 [292] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG538 [293] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG539 [293] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG539 [294] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG540 [294] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG540 [295] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG541 [295] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG541 [296] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG542 [296] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG542 [297] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG543 [297] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG544 [298] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG544 [299] phi from mode_sixsfred to mode_sixsfred::@1 [phi:mode_sixsfred->mode_sixsfred::@1] + //SEG545 [299] phi from mode_sixsfred to mode_sixsfred::@1 [phi:mode_sixsfred->mode_sixsfred::@1] b1_from_mode_sixsfred: - //SEG545 [299] phi (byte) mode_sixsfred::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred->mode_sixsfred::@1#0] -- vbuxx=vbuc1 + //SEG546 [299] phi (byte) mode_sixsfred::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred->mode_sixsfred::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG546 [299] phi from mode_sixsfred::@1 to mode_sixsfred::@1 [phi:mode_sixsfred::@1->mode_sixsfred::@1] + //SEG547 [299] phi from mode_sixsfred::@1 to mode_sixsfred::@1 [phi:mode_sixsfred::@1->mode_sixsfred::@1] b1_from_b1: - //SEG547 [299] phi (byte) mode_sixsfred::i#2 = (byte) mode_sixsfred::i#1 [phi:mode_sixsfred::@1->mode_sixsfred::@1#0] -- register_copy + //SEG548 [299] phi (byte) mode_sixsfred::i#2 = (byte) mode_sixsfred::i#1 [phi:mode_sixsfred::@1->mode_sixsfred::@1#0] -- register_copy jmp b1 - //SEG548 mode_sixsfred::@1 + //SEG549 mode_sixsfred::@1 b1: - //SEG549 [300] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred::i#2) ← (byte) mode_sixsfred::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG550 [300] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred::i#2) ← (byte) mode_sixsfred::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG550 [301] (byte) mode_sixsfred::i#1 ← ++ (byte) mode_sixsfred::i#2 -- vbuxx=_inc_vbuxx + //SEG551 [301] (byte) mode_sixsfred::i#1 ← ++ (byte) mode_sixsfred::i#2 -- vbuxx=_inc_vbuxx inx - //SEG551 [302] if((byte) mode_sixsfred::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG552 [302] if((byte) mode_sixsfred::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b8 - //SEG552 mode_sixsfred::@8 + //SEG553 mode_sixsfred::@8 b8: - //SEG553 [303] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG554 [303] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG554 [304] phi from mode_sixsfred::@8 to mode_sixsfred::@2 [phi:mode_sixsfred::@8->mode_sixsfred::@2] + //SEG555 [304] phi from mode_sixsfred::@8 to mode_sixsfred::@2 [phi:mode_sixsfred::@8->mode_sixsfred::@2] b2_from_b8: - //SEG555 [304] phi (byte*) mode_sixsfred::col#3 = (const byte*) mode_sixsfred::COLORS#0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#0] -- pbuz1=pbuc1 + //SEG556 [304] phi (byte*) mode_sixsfred::col#3 = (const byte*) mode_sixsfred::COLORS#0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG556 [304] phi (byte) mode_sixsfred::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#1] -- vbuz1=vbuc1 + //SEG557 [304] phi (byte) mode_sixsfred::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG557 [304] phi from mode_sixsfred::@9 to mode_sixsfred::@2 [phi:mode_sixsfred::@9->mode_sixsfred::@2] + //SEG558 [304] phi from mode_sixsfred::@9 to mode_sixsfred::@2 [phi:mode_sixsfred::@9->mode_sixsfred::@2] b2_from_b9: - //SEG558 [304] phi (byte*) mode_sixsfred::col#3 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#0] -- register_copy - //SEG559 [304] phi (byte) mode_sixsfred::cy#4 = (byte) mode_sixsfred::cy#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#1] -- register_copy + //SEG559 [304] phi (byte*) mode_sixsfred::col#3 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#0] -- register_copy + //SEG560 [304] phi (byte) mode_sixsfred::cy#4 = (byte) mode_sixsfred::cy#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#1] -- register_copy jmp b2 - //SEG560 mode_sixsfred::@2 + //SEG561 mode_sixsfred::@2 b2: - //SEG561 [305] phi from mode_sixsfred::@2 to mode_sixsfred::@3 [phi:mode_sixsfred::@2->mode_sixsfred::@3] + //SEG562 [305] phi from mode_sixsfred::@2 to mode_sixsfred::@3 [phi:mode_sixsfred::@2->mode_sixsfred::@3] b3_from_b2: - //SEG562 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#3 [phi:mode_sixsfred::@2->mode_sixsfred::@3#0] -- register_copy - //SEG563 [305] phi (byte) mode_sixsfred::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@2->mode_sixsfred::@3#1] -- vbuxx=vbuc1 + //SEG563 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#3 [phi:mode_sixsfred::@2->mode_sixsfred::@3#0] -- register_copy + //SEG564 [305] phi (byte) mode_sixsfred::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@2->mode_sixsfred::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG564 [305] phi from mode_sixsfred::@3 to mode_sixsfred::@3 [phi:mode_sixsfred::@3->mode_sixsfred::@3] + //SEG565 [305] phi from mode_sixsfred::@3 to mode_sixsfred::@3 [phi:mode_sixsfred::@3->mode_sixsfred::@3] b3_from_b3: - //SEG565 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#0] -- register_copy - //SEG566 [305] phi (byte) mode_sixsfred::cx#2 = (byte) mode_sixsfred::cx#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#1] -- register_copy + //SEG566 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#0] -- register_copy + //SEG567 [305] phi (byte) mode_sixsfred::cx#2 = (byte) mode_sixsfred::cx#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#1] -- register_copy jmp b3 - //SEG567 mode_sixsfred::@3 + //SEG568 mode_sixsfred::@3 b3: - //SEG568 [306] (byte~) mode_sixsfred::$16 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG569 [306] (byte~) mode_sixsfred::$16 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG569 [307] (byte~) mode_sixsfred::$17 ← (byte~) mode_sixsfred::$16 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG570 [307] (byte~) mode_sixsfred::$17 ← (byte~) mode_sixsfred::$16 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG570 [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$17 -- _deref_pbuz1=vbuaa + //SEG571 [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$17 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG571 [309] (byte*) mode_sixsfred::col#1 ← ++ (byte*) mode_sixsfred::col#2 -- pbuz1=_inc_pbuz1 + //SEG572 [309] (byte*) mode_sixsfred::col#1 ← ++ (byte*) mode_sixsfred::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG572 [310] (byte) mode_sixsfred::cx#1 ← ++ (byte) mode_sixsfred::cx#2 -- vbuxx=_inc_vbuxx + //SEG573 [310] (byte) mode_sixsfred::cx#1 ← ++ (byte) mode_sixsfred::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG573 [311] if((byte) mode_sixsfred::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG574 [311] if((byte) mode_sixsfred::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b9 - //SEG574 mode_sixsfred::@9 + //SEG575 mode_sixsfred::@9 b9: - //SEG575 [312] (byte) mode_sixsfred::cy#1 ← ++ (byte) mode_sixsfred::cy#4 -- vbuz1=_inc_vbuz1 + //SEG576 [312] (byte) mode_sixsfred::cy#1 ← ++ (byte) mode_sixsfred::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG576 [313] if((byte) mode_sixsfred::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG577 [313] if((byte) mode_sixsfred::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b9 - //SEG577 [314] phi from mode_sixsfred::@9 to mode_sixsfred::@4 [phi:mode_sixsfred::@9->mode_sixsfred::@4] + //SEG578 [314] phi from mode_sixsfred::@9 to mode_sixsfred::@4 [phi:mode_sixsfred::@9->mode_sixsfred::@4] b4_from_b9: - //SEG578 [314] phi (byte*) mode_sixsfred::gfxa#3 = (const byte*) mode_sixsfred::PLANEA#0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#0] -- pbuz1=pbuc1 + //SEG579 [314] phi (byte*) mode_sixsfred::gfxa#3 = (const byte*) mode_sixsfred::PLANEA#0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG579 [314] phi (byte) mode_sixsfred::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#1] -- vbuz1=vbuc1 + //SEG580 [314] phi (byte) mode_sixsfred::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b4 - //SEG580 [314] phi from mode_sixsfred::@11 to mode_sixsfred::@4 [phi:mode_sixsfred::@11->mode_sixsfred::@4] + //SEG581 [314] phi from mode_sixsfred::@11 to mode_sixsfred::@4 [phi:mode_sixsfred::@11->mode_sixsfred::@4] b4_from_b11: - //SEG581 [314] phi (byte*) mode_sixsfred::gfxa#3 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#0] -- register_copy - //SEG582 [314] phi (byte) mode_sixsfred::ay#4 = (byte) mode_sixsfred::ay#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#1] -- register_copy + //SEG582 [314] phi (byte*) mode_sixsfred::gfxa#3 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#0] -- register_copy + //SEG583 [314] phi (byte) mode_sixsfred::ay#4 = (byte) mode_sixsfred::ay#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#1] -- register_copy jmp b4 - //SEG583 mode_sixsfred::@4 + //SEG584 mode_sixsfred::@4 b4: - //SEG584 [315] phi from mode_sixsfred::@4 to mode_sixsfred::@5 [phi:mode_sixsfred::@4->mode_sixsfred::@5] + //SEG585 [315] phi from mode_sixsfred::@4 to mode_sixsfred::@5 [phi:mode_sixsfred::@4->mode_sixsfred::@5] b5_from_b4: - //SEG585 [315] phi (byte) mode_sixsfred::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@4->mode_sixsfred::@5#0] -- vbuxx=vbuc1 + //SEG586 [315] phi (byte) mode_sixsfred::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@4->mode_sixsfred::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG586 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#3 [phi:mode_sixsfred::@4->mode_sixsfred::@5#1] -- register_copy + //SEG587 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#3 [phi:mode_sixsfred::@4->mode_sixsfred::@5#1] -- register_copy jmp b5 - //SEG587 [315] phi from mode_sixsfred::@5 to mode_sixsfred::@5 [phi:mode_sixsfred::@5->mode_sixsfred::@5] + //SEG588 [315] phi from mode_sixsfred::@5 to mode_sixsfred::@5 [phi:mode_sixsfred::@5->mode_sixsfred::@5] b5_from_b5: - //SEG588 [315] phi (byte) mode_sixsfred::ax#2 = (byte) mode_sixsfred::ax#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#0] -- register_copy - //SEG589 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#1] -- register_copy + //SEG589 [315] phi (byte) mode_sixsfred::ax#2 = (byte) mode_sixsfred::ax#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#0] -- register_copy + //SEG590 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#1] -- register_copy jmp b5 - //SEG590 mode_sixsfred::@5 + //SEG591 mode_sixsfred::@5 b5: - //SEG591 [316] (byte~) mode_sixsfred::$20 ← (byte) mode_sixsfred::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 + //SEG592 [316] (byte~) mode_sixsfred::$20 ← (byte) mode_sixsfred::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 lda ay lsr - //SEG592 [317] (byte) mode_sixsfred::row#0 ← (byte~) mode_sixsfred::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 + //SEG593 [317] (byte) mode_sixsfred::row#0 ← (byte~) mode_sixsfred::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 and #3 - //SEG593 [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte[]) mode_sixsfred::row_bitmask#0 + (byte) mode_sixsfred::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + //SEG594 [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte[]) mode_sixsfred::row_bitmask#0 + (byte) mode_sixsfred::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa tay lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG594 [319] (byte*) mode_sixsfred::gfxa#1 ← ++ (byte*) mode_sixsfred::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG595 [319] (byte*) mode_sixsfred::gfxa#1 ← ++ (byte*) mode_sixsfred::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG595 [320] (byte) mode_sixsfred::ax#1 ← ++ (byte) mode_sixsfred::ax#2 -- vbuxx=_inc_vbuxx + //SEG596 [320] (byte) mode_sixsfred::ax#1 ← ++ (byte) mode_sixsfred::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG596 [321] if((byte) mode_sixsfred::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG597 [321] if((byte) mode_sixsfred::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b5_from_b5 jmp b11 - //SEG597 mode_sixsfred::@11 + //SEG598 mode_sixsfred::@11 b11: - //SEG598 [322] (byte) mode_sixsfred::ay#1 ← ++ (byte) mode_sixsfred::ay#4 -- vbuz1=_inc_vbuz1 + //SEG599 [322] (byte) mode_sixsfred::ay#1 ← ++ (byte) mode_sixsfred::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG599 [323] if((byte) mode_sixsfred::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG600 [323] if((byte) mode_sixsfred::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4_from_b11 - //SEG600 [324] phi from mode_sixsfred::@11 to mode_sixsfred::@6 [phi:mode_sixsfred::@11->mode_sixsfred::@6] + //SEG601 [324] phi from mode_sixsfred::@11 to mode_sixsfred::@6 [phi:mode_sixsfred::@11->mode_sixsfred::@6] b6_from_b11: - //SEG601 [324] phi (byte) mode_sixsfred::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#0] -- vbuz1=vbuc1 + //SEG602 [324] phi (byte) mode_sixsfred::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG602 [324] phi (byte*) mode_sixsfred::gfxb#3 = (const byte*) mode_sixsfred::PLANEB#0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#1] -- pbuz1=pbuc1 + //SEG603 [324] phi (byte*) mode_sixsfred::gfxb#3 = (const byte*) mode_sixsfred::PLANEB#0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 jmp b6 - //SEG603 [324] phi from mode_sixsfred::@13 to mode_sixsfred::@6 [phi:mode_sixsfred::@13->mode_sixsfred::@6] + //SEG604 [324] phi from mode_sixsfred::@13 to mode_sixsfred::@6 [phi:mode_sixsfred::@13->mode_sixsfred::@6] b6_from_b13: - //SEG604 [324] phi (byte) mode_sixsfred::by#4 = (byte) mode_sixsfred::by#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#0] -- register_copy - //SEG605 [324] phi (byte*) mode_sixsfred::gfxb#3 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#1] -- register_copy + //SEG605 [324] phi (byte) mode_sixsfred::by#4 = (byte) mode_sixsfred::by#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#0] -- register_copy + //SEG606 [324] phi (byte*) mode_sixsfred::gfxb#3 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#1] -- register_copy jmp b6 - //SEG606 mode_sixsfred::@6 + //SEG607 mode_sixsfred::@6 b6: - //SEG607 [325] phi from mode_sixsfred::@6 to mode_sixsfred::@7 [phi:mode_sixsfred::@6->mode_sixsfred::@7] + //SEG608 [325] phi from mode_sixsfred::@6 to mode_sixsfred::@7 [phi:mode_sixsfred::@6->mode_sixsfred::@7] b7_from_b6: - //SEG608 [325] phi (byte) mode_sixsfred::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@6->mode_sixsfred::@7#0] -- vbuxx=vbuc1 + //SEG609 [325] phi (byte) mode_sixsfred::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@6->mode_sixsfred::@7#0] -- vbuxx=vbuc1 ldx #0 - //SEG609 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#3 [phi:mode_sixsfred::@6->mode_sixsfred::@7#1] -- register_copy + //SEG610 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#3 [phi:mode_sixsfred::@6->mode_sixsfred::@7#1] -- register_copy jmp b7 - //SEG610 [325] phi from mode_sixsfred::@7 to mode_sixsfred::@7 [phi:mode_sixsfred::@7->mode_sixsfred::@7] + //SEG611 [325] phi from mode_sixsfred::@7 to mode_sixsfred::@7 [phi:mode_sixsfred::@7->mode_sixsfred::@7] b7_from_b7: - //SEG611 [325] phi (byte) mode_sixsfred::bx#2 = (byte) mode_sixsfred::bx#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#0] -- register_copy - //SEG612 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#1] -- register_copy + //SEG612 [325] phi (byte) mode_sixsfred::bx#2 = (byte) mode_sixsfred::bx#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#0] -- register_copy + //SEG613 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#1] -- register_copy jmp b7 - //SEG613 mode_sixsfred::@7 + //SEG614 mode_sixsfred::@7 b7: - //SEG614 [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 + //SEG615 [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 lda #$1b ldy #0 sta (gfxb),y - //SEG615 [327] (byte*) mode_sixsfred::gfxb#1 ← ++ (byte*) mode_sixsfred::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG616 [327] (byte*) mode_sixsfred::gfxb#1 ← ++ (byte*) mode_sixsfred::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG616 [328] (byte) mode_sixsfred::bx#1 ← ++ (byte) mode_sixsfred::bx#2 -- vbuxx=_inc_vbuxx + //SEG617 [328] (byte) mode_sixsfred::bx#1 ← ++ (byte) mode_sixsfred::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG617 [329] if((byte) mode_sixsfred::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG618 [329] if((byte) mode_sixsfred::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b7_from_b7 jmp b13 - //SEG618 mode_sixsfred::@13 + //SEG619 mode_sixsfred::@13 b13: - //SEG619 [330] (byte) mode_sixsfred::by#1 ← ++ (byte) mode_sixsfred::by#4 -- vbuz1=_inc_vbuz1 + //SEG620 [330] (byte) mode_sixsfred::by#1 ← ++ (byte) mode_sixsfred::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG620 [331] if((byte) mode_sixsfred::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG621 [331] if((byte) mode_sixsfred::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@6 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b6_from_b13 - //SEG621 [332] phi from mode_sixsfred::@13 to mode_sixsfred::@14 [phi:mode_sixsfred::@13->mode_sixsfred::@14] + //SEG622 [332] phi from mode_sixsfred::@13 to mode_sixsfred::@14 [phi:mode_sixsfred::@13->mode_sixsfred::@14] b14_from_b13: jmp b14 - //SEG622 mode_sixsfred::@14 + //SEG623 mode_sixsfred::@14 b14: - //SEG623 [333] call mode_ctrl - //SEG624 [155] phi from mode_sixsfred::@14 to mode_ctrl [phi:mode_sixsfred::@14->mode_ctrl] + //SEG624 [333] call mode_ctrl + //SEG625 [155] phi from mode_sixsfred::@14 to mode_ctrl [phi:mode_sixsfred::@14->mode_ctrl] mode_ctrl_from_b14: - //SEG625 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_sixsfred::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG626 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_sixsfred::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR sta dtv_control jsr mode_ctrl jmp breturn - //SEG626 mode_sixsfred::@return + //SEG627 mode_sixsfred::@return breturn: - //SEG627 [334] return + //SEG628 [334] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG628 mode_twoplanebitmap +//SEG629 mode_twoplanebitmap // Two Plane Bitmap - generated from the two DTV linear graphics plane counters // Two Plane Bitmap Mode (CHUNK/COLDIS/MCM = 0, ECM/BMM/HICOL/LINEAR = 1) // Resolution: 320x200 @@ -21134,310 +21134,310 @@ mode_twoplanebitmap: { .label ay = 4 .label gfxb = 2 .label by = 4 - //SEG629 [335] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG630 [335] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR sta DTV_CONTROL - //SEG630 [336] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG631 [336] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG631 [337] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG632 [337] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG632 [338] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG633 [338] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG634 [339] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG634 [340] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG635 [340] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG635 [341] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG636 [341] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG636 [342] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG637 [342] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG637 [343] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG638 [343] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG638 [344] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG639 [344] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG640 [345] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG640 [346] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG641 [346] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG641 [347] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG642 [347] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG642 [348] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG643 [348] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG643 [349] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG644 [349] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG644 [350] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG645 [350] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG646 [351] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG646 [352] phi from mode_twoplanebitmap to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1] + //SEG647 [352] phi from mode_twoplanebitmap to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1] b1_from_mode_twoplanebitmap: - //SEG647 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1#0] -- vbuxx=vbuc1 + //SEG648 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG648 [352] phi from mode_twoplanebitmap::@1 to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1] + //SEG649 [352] phi from mode_twoplanebitmap::@1 to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1] b1_from_b1: - //SEG649 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte) mode_twoplanebitmap::i#1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1#0] -- register_copy + //SEG650 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte) mode_twoplanebitmap::i#1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1#0] -- register_copy jmp b1 - //SEG650 mode_twoplanebitmap::@1 + //SEG651 mode_twoplanebitmap::@1 b1: - //SEG651 [353] *((const byte*) DTV_PALETTE#0 + (byte) mode_twoplanebitmap::i#2) ← (byte) mode_twoplanebitmap::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG652 [353] *((const byte*) DTV_PALETTE#0 + (byte) mode_twoplanebitmap::i#2) ← (byte) mode_twoplanebitmap::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG652 [354] (byte) mode_twoplanebitmap::i#1 ← ++ (byte) mode_twoplanebitmap::i#2 -- vbuxx=_inc_vbuxx + //SEG653 [354] (byte) mode_twoplanebitmap::i#1 ← ++ (byte) mode_twoplanebitmap::i#2 -- vbuxx=_inc_vbuxx inx - //SEG653 [355] if((byte) mode_twoplanebitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_twoplanebitmap::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG654 [355] if((byte) mode_twoplanebitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_twoplanebitmap::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b10 - //SEG654 mode_twoplanebitmap::@10 + //SEG655 mode_twoplanebitmap::@10 b10: - //SEG655 [356] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG656 [356] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG656 [357] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 112 -- _deref_pbuc1=vbuc2 + //SEG657 [357] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 112 -- _deref_pbuc1=vbuc2 lda #$70 sta BGCOL1 - //SEG657 [358] *((const byte*) BGCOL2#0) ← (byte/word/signed word/dword/signed dword) 212 -- _deref_pbuc1=vbuc2 + //SEG658 [358] *((const byte*) BGCOL2#0) ← (byte/word/signed word/dword/signed dword) 212 -- _deref_pbuc1=vbuc2 lda #$d4 sta BGCOL2 - //SEG658 [359] phi from mode_twoplanebitmap::@10 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2] + //SEG659 [359] phi from mode_twoplanebitmap::@10 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2] b2_from_b10: - //SEG659 [359] phi (byte*) mode_twoplanebitmap::col#3 = (const byte*) mode_twoplanebitmap::COLORS#0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#0] -- pbuz1=pbuc1 + //SEG660 [359] phi (byte*) mode_twoplanebitmap::col#3 = (const byte*) mode_twoplanebitmap::COLORS#0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG660 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#1] -- vbuz1=vbuc1 + //SEG661 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG661 [359] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2] + //SEG662 [359] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2] b2_from_b11: - //SEG662 [359] phi (byte*) mode_twoplanebitmap::col#3 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#0] -- register_copy - //SEG663 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte) mode_twoplanebitmap::cy#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#1] -- register_copy + //SEG663 [359] phi (byte*) mode_twoplanebitmap::col#3 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#0] -- register_copy + //SEG664 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte) mode_twoplanebitmap::cy#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#1] -- register_copy jmp b2 - //SEG664 mode_twoplanebitmap::@2 + //SEG665 mode_twoplanebitmap::@2 b2: - //SEG665 [360] phi from mode_twoplanebitmap::@2 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3] + //SEG666 [360] phi from mode_twoplanebitmap::@2 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3] b3_from_b2: - //SEG666 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#0] -- register_copy - //SEG667 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#1] -- vbuxx=vbuc1 + //SEG667 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#0] -- register_copy + //SEG668 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG668 [360] phi from mode_twoplanebitmap::@3 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3] + //SEG669 [360] phi from mode_twoplanebitmap::@3 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3] b3_from_b3: - //SEG669 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#0] -- register_copy - //SEG670 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte) mode_twoplanebitmap::cx#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#1] -- register_copy + //SEG670 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#0] -- register_copy + //SEG671 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte) mode_twoplanebitmap::cx#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#1] -- register_copy jmp b3 - //SEG671 mode_twoplanebitmap::@3 + //SEG672 mode_twoplanebitmap::@3 b3: - //SEG672 [361] (byte~) mode_twoplanebitmap::$15 ← (byte) mode_twoplanebitmap::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG673 [361] (byte~) mode_twoplanebitmap::$15 ← (byte) mode_twoplanebitmap::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG673 [362] (byte~) mode_twoplanebitmap::$16 ← (byte~) mode_twoplanebitmap::$15 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG674 [362] (byte~) mode_twoplanebitmap::$16 ← (byte~) mode_twoplanebitmap::$15 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _16 - //SEG674 [363] (byte~) mode_twoplanebitmap::$17 ← (byte) mode_twoplanebitmap::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG675 [363] (byte~) mode_twoplanebitmap::$17 ← (byte) mode_twoplanebitmap::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG675 [364] (byte~) mode_twoplanebitmap::$18 ← (byte~) mode_twoplanebitmap::$16 | (byte~) mode_twoplanebitmap::$17 -- vbuaa=vbuz1_bor_vbuaa + //SEG676 [364] (byte~) mode_twoplanebitmap::$18 ← (byte~) mode_twoplanebitmap::$16 | (byte~) mode_twoplanebitmap::$17 -- vbuaa=vbuz1_bor_vbuaa ora _16 - //SEG676 [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$18 -- _deref_pbuz1=vbuaa + //SEG677 [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$18 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG677 [366] (byte*) mode_twoplanebitmap::col#1 ← ++ (byte*) mode_twoplanebitmap::col#2 -- pbuz1=_inc_pbuz1 + //SEG678 [366] (byte*) mode_twoplanebitmap::col#1 ← ++ (byte*) mode_twoplanebitmap::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG678 [367] (byte) mode_twoplanebitmap::cx#1 ← ++ (byte) mode_twoplanebitmap::cx#2 -- vbuxx=_inc_vbuxx + //SEG679 [367] (byte) mode_twoplanebitmap::cx#1 ← ++ (byte) mode_twoplanebitmap::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG679 [368] if((byte) mode_twoplanebitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG680 [368] if((byte) mode_twoplanebitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b11 - //SEG680 mode_twoplanebitmap::@11 + //SEG681 mode_twoplanebitmap::@11 b11: - //SEG681 [369] (byte) mode_twoplanebitmap::cy#1 ← ++ (byte) mode_twoplanebitmap::cy#4 -- vbuz1=_inc_vbuz1 + //SEG682 [369] (byte) mode_twoplanebitmap::cy#1 ← ++ (byte) mode_twoplanebitmap::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG682 [370] if((byte) mode_twoplanebitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_twoplanebitmap::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG683 [370] if((byte) mode_twoplanebitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_twoplanebitmap::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b11 - //SEG683 [371] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4] + //SEG684 [371] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4] b4_from_b11: - //SEG684 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (const byte*) mode_twoplanebitmap::PLANEA#0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#0] -- pbuz1=pbuc1 + //SEG685 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (const byte*) mode_twoplanebitmap::PLANEA#0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG685 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#1] -- vbuz1=vbuc1 + //SEG686 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b4 - //SEG686 [371] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4] + //SEG687 [371] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4] b4_from_b15: - //SEG687 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#0] -- register_copy - //SEG688 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte) mode_twoplanebitmap::ay#1 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#1] -- register_copy + //SEG688 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#0] -- register_copy + //SEG689 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte) mode_twoplanebitmap::ay#1 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#1] -- register_copy jmp b4 - //SEG689 mode_twoplanebitmap::@4 + //SEG690 mode_twoplanebitmap::@4 b4: - //SEG690 [372] phi from mode_twoplanebitmap::@4 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5] + //SEG691 [372] phi from mode_twoplanebitmap::@4 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5] b5_from_b4: - //SEG691 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#0] -- vbuxx=vbuc1 + //SEG692 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG692 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#6 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#1] -- register_copy + //SEG693 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#6 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#1] -- register_copy jmp b5 - //SEG693 [372] phi from mode_twoplanebitmap::@7 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5] + //SEG694 [372] phi from mode_twoplanebitmap::@7 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5] b5_from_b7: - //SEG694 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte) mode_twoplanebitmap::ax#1 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#0] -- register_copy - //SEG695 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#1] -- register_copy + //SEG695 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte) mode_twoplanebitmap::ax#1 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#0] -- register_copy + //SEG696 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#1] -- register_copy jmp b5 - //SEG696 mode_twoplanebitmap::@5 + //SEG697 mode_twoplanebitmap::@5 b5: - //SEG697 [373] (byte~) mode_twoplanebitmap::$21 ← (byte) mode_twoplanebitmap::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_band_vbuc1 + //SEG698 [373] (byte~) mode_twoplanebitmap::$21 ← (byte) mode_twoplanebitmap::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_band_vbuc1 lda #4 and ay - //SEG698 [374] if((byte~) mode_twoplanebitmap::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_twoplanebitmap::@6 -- vbuaa_eq_0_then_la1 + //SEG699 [374] if((byte~) mode_twoplanebitmap::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_twoplanebitmap::@6 -- vbuaa_eq_0_then_la1 cmp #0 beq b6 jmp b13 - //SEG699 mode_twoplanebitmap::@13 + //SEG700 mode_twoplanebitmap::@13 b13: - //SEG700 [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 + //SEG701 [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 lda #$ff ldy #0 sta (gfxa),y - //SEG701 [376] (byte*) mode_twoplanebitmap::gfxa#2 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG702 [376] (byte*) mode_twoplanebitmap::gfxa#2 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG702 [377] phi from mode_twoplanebitmap::@13 mode_twoplanebitmap::@6 to mode_twoplanebitmap::@7 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7] + //SEG703 [377] phi from mode_twoplanebitmap::@13 mode_twoplanebitmap::@6 to mode_twoplanebitmap::@7 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7] b7_from_b13: b7_from_b6: - //SEG703 [377] phi (byte*) mode_twoplanebitmap::gfxa#7 = (byte*) mode_twoplanebitmap::gfxa#2 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7#0] -- register_copy + //SEG704 [377] phi (byte*) mode_twoplanebitmap::gfxa#7 = (byte*) mode_twoplanebitmap::gfxa#2 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7#0] -- register_copy jmp b7 - //SEG704 mode_twoplanebitmap::@7 + //SEG705 mode_twoplanebitmap::@7 b7: - //SEG705 [378] (byte) mode_twoplanebitmap::ax#1 ← ++ (byte) mode_twoplanebitmap::ax#2 -- vbuxx=_inc_vbuxx + //SEG706 [378] (byte) mode_twoplanebitmap::ax#1 ← ++ (byte) mode_twoplanebitmap::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG706 [379] if((byte) mode_twoplanebitmap::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG707 [379] if((byte) mode_twoplanebitmap::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b5_from_b7 jmp b15 - //SEG707 mode_twoplanebitmap::@15 + //SEG708 mode_twoplanebitmap::@15 b15: - //SEG708 [380] (byte) mode_twoplanebitmap::ay#1 ← ++ (byte) mode_twoplanebitmap::ay#4 -- vbuz1=_inc_vbuz1 + //SEG709 [380] (byte) mode_twoplanebitmap::ay#1 ← ++ (byte) mode_twoplanebitmap::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG709 [381] if((byte) mode_twoplanebitmap::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG710 [381] if((byte) mode_twoplanebitmap::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4_from_b15 - //SEG710 [382] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8] + //SEG711 [382] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8] b8_from_b15: - //SEG711 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#0] -- vbuz1=vbuc1 + //SEG712 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG712 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (const byte*) mode_twoplanebitmap::PLANEB#0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#1] -- pbuz1=pbuc1 + //SEG713 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (const byte*) mode_twoplanebitmap::PLANEB#0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 jmp b8 - //SEG713 [382] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8] + //SEG714 [382] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8] b8_from_b17: - //SEG714 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte) mode_twoplanebitmap::by#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#0] -- register_copy - //SEG715 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#1] -- register_copy + //SEG715 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte) mode_twoplanebitmap::by#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#0] -- register_copy + //SEG716 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#1] -- register_copy jmp b8 - //SEG716 mode_twoplanebitmap::@8 + //SEG717 mode_twoplanebitmap::@8 b8: - //SEG717 [383] phi from mode_twoplanebitmap::@8 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9] + //SEG718 [383] phi from mode_twoplanebitmap::@8 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9] b9_from_b8: - //SEG718 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#0] -- vbuxx=vbuc1 + //SEG719 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#0] -- vbuxx=vbuc1 ldx #0 - //SEG719 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#3 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#1] -- register_copy + //SEG720 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#3 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#1] -- register_copy jmp b9 - //SEG720 [383] phi from mode_twoplanebitmap::@9 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9] + //SEG721 [383] phi from mode_twoplanebitmap::@9 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9] b9_from_b9: - //SEG721 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte) mode_twoplanebitmap::bx#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#0] -- register_copy - //SEG722 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#1] -- register_copy + //SEG722 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte) mode_twoplanebitmap::bx#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#0] -- register_copy + //SEG723 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#1] -- register_copy jmp b9 - //SEG723 mode_twoplanebitmap::@9 + //SEG724 mode_twoplanebitmap::@9 b9: - //SEG724 [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG725 [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 lda #$f ldy #0 sta (gfxb),y - //SEG725 [385] (byte*) mode_twoplanebitmap::gfxb#1 ← ++ (byte*) mode_twoplanebitmap::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG726 [385] (byte*) mode_twoplanebitmap::gfxb#1 ← ++ (byte*) mode_twoplanebitmap::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG726 [386] (byte) mode_twoplanebitmap::bx#1 ← ++ (byte) mode_twoplanebitmap::bx#2 -- vbuxx=_inc_vbuxx + //SEG727 [386] (byte) mode_twoplanebitmap::bx#1 ← ++ (byte) mode_twoplanebitmap::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG727 [387] if((byte) mode_twoplanebitmap::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG728 [387] if((byte) mode_twoplanebitmap::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b9_from_b9 jmp b17 - //SEG728 mode_twoplanebitmap::@17 + //SEG729 mode_twoplanebitmap::@17 b17: - //SEG729 [388] (byte) mode_twoplanebitmap::by#1 ← ++ (byte) mode_twoplanebitmap::by#4 -- vbuz1=_inc_vbuz1 + //SEG730 [388] (byte) mode_twoplanebitmap::by#1 ← ++ (byte) mode_twoplanebitmap::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG730 [389] if((byte) mode_twoplanebitmap::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG731 [389] if((byte) mode_twoplanebitmap::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@8 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b8_from_b17 - //SEG731 [390] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@18 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@18] + //SEG732 [390] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@18 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@18] b18_from_b17: jmp b18 - //SEG732 mode_twoplanebitmap::@18 + //SEG733 mode_twoplanebitmap::@18 b18: - //SEG733 [391] call mode_ctrl - //SEG734 [155] phi from mode_twoplanebitmap::@18 to mode_ctrl [phi:mode_twoplanebitmap::@18->mode_ctrl] + //SEG734 [391] call mode_ctrl + //SEG735 [155] phi from mode_twoplanebitmap::@18 to mode_ctrl [phi:mode_twoplanebitmap::@18->mode_ctrl] mode_ctrl_from_b18: - //SEG735 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_twoplanebitmap::@18->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG736 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_twoplanebitmap::@18->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR sta dtv_control jsr mode_ctrl jmp breturn - //SEG736 mode_twoplanebitmap::@return + //SEG737 mode_twoplanebitmap::@return breturn: - //SEG737 [392] return + //SEG738 [392] return rts - //SEG738 mode_twoplanebitmap::@6 + //SEG739 mode_twoplanebitmap::@6 b6: - //SEG739 [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG740 [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (gfxa),y - //SEG740 [394] (byte*) mode_twoplanebitmap::gfxa#1 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG741 [394] (byte*) mode_twoplanebitmap::gfxa#1 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: jmp b7_from_b6 } -//SEG741 mode_sixsfred2 +//SEG742 mode_sixsfred2 // Sixs Fred Mode 2 - 8bpp Packed Bitmap - Generated from the two DTV linear graphics plane counters // Two Plane MultiColor Bitmap - 8bpp Packed Bitmap (CHUNK/COLDIS/HICOL = 0, ECM/BMM/MCM/LINEAR = 1) // Resolution: 160x200 @@ -21455,283 +21455,283 @@ mode_sixsfred2: { .label ay = 4 .label gfxb = 2 .label by = 4 - //SEG742 [395] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG743 [395] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_LINEAR sta DTV_CONTROL - //SEG743 [396] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG744 [396] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG744 [397] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG745 [397] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG745 [398] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG746 [398] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG747 [399] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG747 [400] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG748 [400] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG748 [401] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG749 [401] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG749 [402] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG750 [402] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG750 [403] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG751 [403] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - //SEG751 [404] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG752 [404] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG753 [405] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG753 [406] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG754 [406] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG754 [407] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG755 [407] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG755 [408] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG756 [408] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG756 [409] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG757 [409] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_HI - //SEG757 [410] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG758 [410] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG759 [411] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG759 [412] phi from mode_sixsfred2 to mode_sixsfred2::@1 [phi:mode_sixsfred2->mode_sixsfred2::@1] + //SEG760 [412] phi from mode_sixsfred2 to mode_sixsfred2::@1 [phi:mode_sixsfred2->mode_sixsfred2::@1] b1_from_mode_sixsfred2: - //SEG760 [412] phi (byte) mode_sixsfred2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2->mode_sixsfred2::@1#0] -- vbuxx=vbuc1 + //SEG761 [412] phi (byte) mode_sixsfred2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2->mode_sixsfred2::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG761 [412] phi from mode_sixsfred2::@1 to mode_sixsfred2::@1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1] + //SEG762 [412] phi from mode_sixsfred2::@1 to mode_sixsfred2::@1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1] b1_from_b1: - //SEG762 [412] phi (byte) mode_sixsfred2::i#2 = (byte) mode_sixsfred2::i#1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1#0] -- register_copy + //SEG763 [412] phi (byte) mode_sixsfred2::i#2 = (byte) mode_sixsfred2::i#1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1#0] -- register_copy jmp b1 - //SEG763 mode_sixsfred2::@1 + //SEG764 mode_sixsfred2::@1 b1: - //SEG764 [413] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred2::i#2) ← (byte) mode_sixsfred2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG765 [413] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred2::i#2) ← (byte) mode_sixsfred2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG765 [414] (byte) mode_sixsfred2::i#1 ← ++ (byte) mode_sixsfred2::i#2 -- vbuxx=_inc_vbuxx + //SEG766 [414] (byte) mode_sixsfred2::i#1 ← ++ (byte) mode_sixsfred2::i#2 -- vbuxx=_inc_vbuxx inx - //SEG766 [415] if((byte) mode_sixsfred2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred2::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG767 [415] if((byte) mode_sixsfred2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred2::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b8 - //SEG767 mode_sixsfred2::@8 + //SEG768 mode_sixsfred2::@8 b8: - //SEG768 [416] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG769 [416] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG769 [417] phi from mode_sixsfred2::@8 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2] + //SEG770 [417] phi from mode_sixsfred2::@8 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2] b2_from_b8: - //SEG770 [417] phi (byte*) mode_sixsfred2::col#3 = (const byte*) mode_sixsfred2::COLORS#0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#0] -- pbuz1=pbuc1 + //SEG771 [417] phi (byte*) mode_sixsfred2::col#3 = (const byte*) mode_sixsfred2::COLORS#0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG771 [417] phi (byte) mode_sixsfred2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#1] -- vbuz1=vbuc1 + //SEG772 [417] phi (byte) mode_sixsfred2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG772 [417] phi from mode_sixsfred2::@9 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2] + //SEG773 [417] phi from mode_sixsfred2::@9 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2] b2_from_b9: - //SEG773 [417] phi (byte*) mode_sixsfred2::col#3 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#0] -- register_copy - //SEG774 [417] phi (byte) mode_sixsfred2::cy#4 = (byte) mode_sixsfred2::cy#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#1] -- register_copy + //SEG774 [417] phi (byte*) mode_sixsfred2::col#3 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#0] -- register_copy + //SEG775 [417] phi (byte) mode_sixsfred2::cy#4 = (byte) mode_sixsfred2::cy#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#1] -- register_copy jmp b2 - //SEG775 mode_sixsfred2::@2 + //SEG776 mode_sixsfred2::@2 b2: - //SEG776 [418] phi from mode_sixsfred2::@2 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3] + //SEG777 [418] phi from mode_sixsfred2::@2 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3] b3_from_b2: - //SEG777 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#0] -- register_copy - //SEG778 [418] phi (byte) mode_sixsfred2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#1] -- vbuxx=vbuc1 + //SEG778 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#0] -- register_copy + //SEG779 [418] phi (byte) mode_sixsfred2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG779 [418] phi from mode_sixsfred2::@3 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3] + //SEG780 [418] phi from mode_sixsfred2::@3 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3] b3_from_b3: - //SEG780 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#0] -- register_copy - //SEG781 [418] phi (byte) mode_sixsfred2::cx#2 = (byte) mode_sixsfred2::cx#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#1] -- register_copy + //SEG781 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#0] -- register_copy + //SEG782 [418] phi (byte) mode_sixsfred2::cx#2 = (byte) mode_sixsfred2::cx#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#1] -- register_copy jmp b3 - //SEG782 mode_sixsfred2::@3 + //SEG783 mode_sixsfred2::@3 b3: - //SEG783 [419] (byte~) mode_sixsfred2::$14 ← (byte) mode_sixsfred2::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_band_vbuc1 + //SEG784 [419] (byte~) mode_sixsfred2::$14 ← (byte) mode_sixsfred2::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_band_vbuc1 txa and #3 - //SEG784 [420] (byte~) mode_sixsfred2::$15 ← (byte~) mode_sixsfred2::$14 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG785 [420] (byte~) mode_sixsfred2::$15 ← (byte~) mode_sixsfred2::$14 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _15 - //SEG785 [421] (byte~) mode_sixsfred2::$16 ← (byte) mode_sixsfred2::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_band_vbuc1 + //SEG786 [421] (byte~) mode_sixsfred2::$16 ← (byte) mode_sixsfred2::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_band_vbuc1 lda #3 and cy - //SEG786 [422] (byte~) mode_sixsfred2::$17 ← (byte~) mode_sixsfred2::$15 | (byte~) mode_sixsfred2::$16 -- vbuaa=vbuz1_bor_vbuaa + //SEG787 [422] (byte~) mode_sixsfred2::$17 ← (byte~) mode_sixsfred2::$15 | (byte~) mode_sixsfred2::$16 -- vbuaa=vbuz1_bor_vbuaa ora _15 - //SEG787 [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$17 -- _deref_pbuz1=vbuaa + //SEG788 [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$17 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG788 [424] (byte*) mode_sixsfred2::col#1 ← ++ (byte*) mode_sixsfred2::col#2 -- pbuz1=_inc_pbuz1 + //SEG789 [424] (byte*) mode_sixsfred2::col#1 ← ++ (byte*) mode_sixsfred2::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG789 [425] (byte) mode_sixsfred2::cx#1 ← ++ (byte) mode_sixsfred2::cx#2 -- vbuxx=_inc_vbuxx + //SEG790 [425] (byte) mode_sixsfred2::cx#1 ← ++ (byte) mode_sixsfred2::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG790 [426] if((byte) mode_sixsfred2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG791 [426] if((byte) mode_sixsfred2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b9 - //SEG791 mode_sixsfred2::@9 + //SEG792 mode_sixsfred2::@9 b9: - //SEG792 [427] (byte) mode_sixsfred2::cy#1 ← ++ (byte) mode_sixsfred2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG793 [427] (byte) mode_sixsfred2::cy#1 ← ++ (byte) mode_sixsfred2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG793 [428] if((byte) mode_sixsfred2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred2::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG794 [428] if((byte) mode_sixsfred2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred2::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b9 - //SEG794 [429] phi from mode_sixsfred2::@9 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4] + //SEG795 [429] phi from mode_sixsfred2::@9 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4] b4_from_b9: - //SEG795 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (const byte*) mode_sixsfred2::PLANEA#0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#0] -- pbuz1=pbuc1 + //SEG796 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (const byte*) mode_sixsfred2::PLANEA#0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG796 [429] phi (byte) mode_sixsfred2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#1] -- vbuz1=vbuc1 + //SEG797 [429] phi (byte) mode_sixsfred2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b4 - //SEG797 [429] phi from mode_sixsfred2::@11 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4] + //SEG798 [429] phi from mode_sixsfred2::@11 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4] b4_from_b11: - //SEG798 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#0] -- register_copy - //SEG799 [429] phi (byte) mode_sixsfred2::ay#4 = (byte) mode_sixsfred2::ay#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#1] -- register_copy + //SEG799 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#0] -- register_copy + //SEG800 [429] phi (byte) mode_sixsfred2::ay#4 = (byte) mode_sixsfred2::ay#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#1] -- register_copy jmp b4 - //SEG800 mode_sixsfred2::@4 + //SEG801 mode_sixsfred2::@4 b4: - //SEG801 [430] phi from mode_sixsfred2::@4 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5] + //SEG802 [430] phi from mode_sixsfred2::@4 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5] b5_from_b4: - //SEG802 [430] phi (byte) mode_sixsfred2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#0] -- vbuxx=vbuc1 + //SEG803 [430] phi (byte) mode_sixsfred2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG803 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#3 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#1] -- register_copy + //SEG804 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#3 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#1] -- register_copy jmp b5 - //SEG804 [430] phi from mode_sixsfred2::@5 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5] + //SEG805 [430] phi from mode_sixsfred2::@5 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5] b5_from_b5: - //SEG805 [430] phi (byte) mode_sixsfred2::ax#2 = (byte) mode_sixsfred2::ax#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#0] -- register_copy - //SEG806 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#1] -- register_copy + //SEG806 [430] phi (byte) mode_sixsfred2::ax#2 = (byte) mode_sixsfred2::ax#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#0] -- register_copy + //SEG807 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#1] -- register_copy jmp b5 - //SEG807 mode_sixsfred2::@5 + //SEG808 mode_sixsfred2::@5 b5: - //SEG808 [431] (byte~) mode_sixsfred2::$20 ← (byte) mode_sixsfred2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 + //SEG809 [431] (byte~) mode_sixsfred2::$20 ← (byte) mode_sixsfred2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 lda ay lsr - //SEG809 [432] (byte) mode_sixsfred2::row#0 ← (byte~) mode_sixsfred2::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 + //SEG810 [432] (byte) mode_sixsfred2::row#0 ← (byte~) mode_sixsfred2::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 and #3 - //SEG810 [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte[]) mode_sixsfred2::row_bitmask#0 + (byte) mode_sixsfred2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + //SEG811 [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte[]) mode_sixsfred2::row_bitmask#0 + (byte) mode_sixsfred2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa tay lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG811 [434] (byte*) mode_sixsfred2::gfxa#1 ← ++ (byte*) mode_sixsfred2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG812 [434] (byte*) mode_sixsfred2::gfxa#1 ← ++ (byte*) mode_sixsfred2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG812 [435] (byte) mode_sixsfred2::ax#1 ← ++ (byte) mode_sixsfred2::ax#2 -- vbuxx=_inc_vbuxx + //SEG813 [435] (byte) mode_sixsfred2::ax#1 ← ++ (byte) mode_sixsfred2::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG813 [436] if((byte) mode_sixsfred2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG814 [436] if((byte) mode_sixsfred2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b5_from_b5 jmp b11 - //SEG814 mode_sixsfred2::@11 + //SEG815 mode_sixsfred2::@11 b11: - //SEG815 [437] (byte) mode_sixsfred2::ay#1 ← ++ (byte) mode_sixsfred2::ay#4 -- vbuz1=_inc_vbuz1 + //SEG816 [437] (byte) mode_sixsfred2::ay#1 ← ++ (byte) mode_sixsfred2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG816 [438] if((byte) mode_sixsfred2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG817 [438] if((byte) mode_sixsfred2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4_from_b11 - //SEG817 [439] phi from mode_sixsfred2::@11 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6] + //SEG818 [439] phi from mode_sixsfred2::@11 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6] b6_from_b11: - //SEG818 [439] phi (byte) mode_sixsfred2::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#0] -- vbuz1=vbuc1 + //SEG819 [439] phi (byte) mode_sixsfred2::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG819 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (const byte*) mode_sixsfred2::PLANEB#0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#1] -- pbuz1=pbuc1 + //SEG820 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (const byte*) mode_sixsfred2::PLANEB#0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 jmp b6 - //SEG820 [439] phi from mode_sixsfred2::@13 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6] + //SEG821 [439] phi from mode_sixsfred2::@13 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6] b6_from_b13: - //SEG821 [439] phi (byte) mode_sixsfred2::by#4 = (byte) mode_sixsfred2::by#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#0] -- register_copy - //SEG822 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#1] -- register_copy + //SEG822 [439] phi (byte) mode_sixsfred2::by#4 = (byte) mode_sixsfred2::by#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#0] -- register_copy + //SEG823 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#1] -- register_copy jmp b6 - //SEG823 mode_sixsfred2::@6 + //SEG824 mode_sixsfred2::@6 b6: - //SEG824 [440] phi from mode_sixsfred2::@6 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7] + //SEG825 [440] phi from mode_sixsfred2::@6 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7] b7_from_b6: - //SEG825 [440] phi (byte) mode_sixsfred2::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#0] -- vbuxx=vbuc1 + //SEG826 [440] phi (byte) mode_sixsfred2::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#0] -- vbuxx=vbuc1 ldx #0 - //SEG826 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#3 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#1] -- register_copy + //SEG827 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#3 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#1] -- register_copy jmp b7 - //SEG827 [440] phi from mode_sixsfred2::@7 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7] + //SEG828 [440] phi from mode_sixsfred2::@7 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7] b7_from_b7: - //SEG828 [440] phi (byte) mode_sixsfred2::bx#2 = (byte) mode_sixsfred2::bx#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#0] -- register_copy - //SEG829 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#1] -- register_copy + //SEG829 [440] phi (byte) mode_sixsfred2::bx#2 = (byte) mode_sixsfred2::bx#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#0] -- register_copy + //SEG830 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#1] -- register_copy jmp b7 - //SEG830 mode_sixsfred2::@7 + //SEG831 mode_sixsfred2::@7 b7: - //SEG831 [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 + //SEG832 [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 lda #$1b ldy #0 sta (gfxb),y - //SEG832 [442] (byte*) mode_sixsfred2::gfxb#1 ← ++ (byte*) mode_sixsfred2::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG833 [442] (byte*) mode_sixsfred2::gfxb#1 ← ++ (byte*) mode_sixsfred2::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG833 [443] (byte) mode_sixsfred2::bx#1 ← ++ (byte) mode_sixsfred2::bx#2 -- vbuxx=_inc_vbuxx + //SEG834 [443] (byte) mode_sixsfred2::bx#1 ← ++ (byte) mode_sixsfred2::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG834 [444] if((byte) mode_sixsfred2::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG835 [444] if((byte) mode_sixsfred2::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b7_from_b7 jmp b13 - //SEG835 mode_sixsfred2::@13 + //SEG836 mode_sixsfred2::@13 b13: - //SEG836 [445] (byte) mode_sixsfred2::by#1 ← ++ (byte) mode_sixsfred2::by#4 -- vbuz1=_inc_vbuz1 + //SEG837 [445] (byte) mode_sixsfred2::by#1 ← ++ (byte) mode_sixsfred2::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG837 [446] if((byte) mode_sixsfred2::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG838 [446] if((byte) mode_sixsfred2::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@6 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b6_from_b13 - //SEG838 [447] phi from mode_sixsfred2::@13 to mode_sixsfred2::@14 [phi:mode_sixsfred2::@13->mode_sixsfred2::@14] + //SEG839 [447] phi from mode_sixsfred2::@13 to mode_sixsfred2::@14 [phi:mode_sixsfred2::@13->mode_sixsfred2::@14] b14_from_b13: jmp b14 - //SEG839 mode_sixsfred2::@14 + //SEG840 mode_sixsfred2::@14 b14: - //SEG840 [448] call mode_ctrl - //SEG841 [155] phi from mode_sixsfred2::@14 to mode_ctrl [phi:mode_sixsfred2::@14->mode_ctrl] + //SEG841 [448] call mode_ctrl + //SEG842 [155] phi from mode_sixsfred2::@14 to mode_ctrl [phi:mode_sixsfred2::@14->mode_ctrl] mode_ctrl_from_b14: - //SEG842 [155] phi (byte) dtv_control#145 = (const byte) DTV_LINEAR#0 [phi:mode_sixsfred2::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG843 [155] phi (byte) dtv_control#145 = (const byte) DTV_LINEAR#0 [phi:mode_sixsfred2::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_LINEAR sta dtv_control jsr mode_ctrl jmp breturn - //SEG843 mode_sixsfred2::@return + //SEG844 mode_sixsfred2::@return breturn: - //SEG844 [449] return + //SEG845 [449] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG845 mode_hicolmcchar +//SEG846 mode_hicolmcchar // High Color Multicolor Character Mode (LINEAR/CHUNK/COLDIS/BMM/ECM = 0, MCM/HICOL = 1) // Resolution: 160x200 (320x200) // Normal VIC Adressing: @@ -21753,169 +21753,169 @@ mode_hicolmcchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG846 [450] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolmcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG847 [450] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolmcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG847 [451] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG848 [451] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG848 [452] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG849 [452] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG849 [453] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG850 [453] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG850 [454] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG851 [454] *((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 - //SEG851 [455] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolmcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG852 [455] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolmcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG852 [456] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG853 [456] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG853 [457] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG854 [457] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL|VIC_MCM sta VIC_CONTROL2 - //SEG854 [458] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolmcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolmcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG855 [458] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolmcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolmcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG855 [459] phi from mode_hicolmcchar to mode_hicolmcchar::@1 [phi:mode_hicolmcchar->mode_hicolmcchar::@1] + //SEG856 [459] phi from mode_hicolmcchar to mode_hicolmcchar::@1 [phi:mode_hicolmcchar->mode_hicolmcchar::@1] b1_from_mode_hicolmcchar: - //SEG856 [459] phi (byte) mode_hicolmcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar->mode_hicolmcchar::@1#0] -- vbuxx=vbuc1 + //SEG857 [459] phi (byte) mode_hicolmcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar->mode_hicolmcchar::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG857 [459] phi from mode_hicolmcchar::@1 to mode_hicolmcchar::@1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1] + //SEG858 [459] phi from mode_hicolmcchar::@1 to mode_hicolmcchar::@1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1] b1_from_b1: - //SEG858 [459] phi (byte) mode_hicolmcchar::i#2 = (byte) mode_hicolmcchar::i#1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1#0] -- register_copy + //SEG859 [459] phi (byte) mode_hicolmcchar::i#2 = (byte) mode_hicolmcchar::i#1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1#0] -- register_copy jmp b1 - //SEG859 mode_hicolmcchar::@1 + //SEG860 mode_hicolmcchar::@1 b1: - //SEG860 [460] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolmcchar::i#2) ← (byte) mode_hicolmcchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG861 [460] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolmcchar::i#2) ← (byte) mode_hicolmcchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG861 [461] (byte) mode_hicolmcchar::i#1 ← ++ (byte) mode_hicolmcchar::i#2 -- vbuxx=_inc_vbuxx + //SEG862 [461] (byte) mode_hicolmcchar::i#1 ← ++ (byte) mode_hicolmcchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG862 [462] if((byte) mode_hicolmcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolmcchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG863 [462] if((byte) mode_hicolmcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolmcchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b4 - //SEG863 mode_hicolmcchar::@4 + //SEG864 mode_hicolmcchar::@4 b4: - //SEG864 [463] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG865 [463] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG865 [464] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 + //SEG866 [464] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 lda #$50 sta BGCOL1 - //SEG866 [465] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 + //SEG867 [465] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 lda #$54 sta BGCOL2 - //SEG867 [466] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 + //SEG868 [466] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 lda #$58 sta BGCOL3 - //SEG868 [467] phi from mode_hicolmcchar::@4 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2] + //SEG869 [467] phi from mode_hicolmcchar::@4 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2] b2_from_b4: - //SEG869 [467] phi (byte*) mode_hicolmcchar::ch#3 = (const byte*) mode_hicolmcchar::SCREEN#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#0] -- pbuz1=pbuc1 + //SEG870 [467] phi (byte*) mode_hicolmcchar::ch#3 = (const byte*) mode_hicolmcchar::SCREEN#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG870 [467] phi (byte*) mode_hicolmcchar::col#3 = (const byte*) mode_hicolmcchar::COLORS#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#1] -- pbuz1=pbuc1 + //SEG871 [467] phi (byte*) mode_hicolmcchar::col#3 = (const byte*) mode_hicolmcchar::COLORS#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG871 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#2] -- vbuz1=vbuc1 + //SEG872 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG872 [467] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2] + //SEG873 [467] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2] b2_from_b5: - //SEG873 [467] phi (byte*) mode_hicolmcchar::ch#3 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#0] -- register_copy - //SEG874 [467] phi (byte*) mode_hicolmcchar::col#3 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#1] -- register_copy - //SEG875 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte) mode_hicolmcchar::cy#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#2] -- register_copy + //SEG874 [467] phi (byte*) mode_hicolmcchar::ch#3 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#0] -- register_copy + //SEG875 [467] phi (byte*) mode_hicolmcchar::col#3 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#1] -- register_copy + //SEG876 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte) mode_hicolmcchar::cy#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#2] -- register_copy jmp b2 - //SEG876 mode_hicolmcchar::@2 + //SEG877 mode_hicolmcchar::@2 b2: - //SEG877 [468] phi from mode_hicolmcchar::@2 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3] + //SEG878 [468] phi from mode_hicolmcchar::@2 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3] b3_from_b2: - //SEG878 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#0] -- register_copy - //SEG879 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#1] -- register_copy - //SEG880 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#2] -- vbuxx=vbuc1 + //SEG879 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#0] -- register_copy + //SEG880 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#1] -- register_copy + //SEG881 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#2] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG881 [468] phi from mode_hicolmcchar::@3 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3] + //SEG882 [468] phi from mode_hicolmcchar::@3 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3] b3_from_b3: - //SEG882 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#0] -- register_copy - //SEG883 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#1] -- register_copy - //SEG884 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte) mode_hicolmcchar::cx#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#2] -- register_copy + //SEG883 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#0] -- register_copy + //SEG884 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#1] -- register_copy + //SEG885 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte) mode_hicolmcchar::cx#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#2] -- register_copy jmp b3 - //SEG885 mode_hicolmcchar::@3 + //SEG886 mode_hicolmcchar::@3 b3: - //SEG886 [469] (byte~) mode_hicolmcchar::$25 ← (byte) mode_hicolmcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG887 [469] (byte~) mode_hicolmcchar::$25 ← (byte) mode_hicolmcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG887 [470] (byte~) mode_hicolmcchar::$26 ← (byte~) mode_hicolmcchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG888 [470] (byte~) mode_hicolmcchar::$26 ← (byte~) mode_hicolmcchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _26 - //SEG888 [471] (byte~) mode_hicolmcchar::$27 ← (byte) mode_hicolmcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG889 [471] (byte~) mode_hicolmcchar::$27 ← (byte) mode_hicolmcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG889 [472] (byte) mode_hicolmcchar::v#0 ← (byte~) mode_hicolmcchar::$26 | (byte~) mode_hicolmcchar::$27 -- vbuaa=vbuz1_bor_vbuaa + //SEG890 [472] (byte) mode_hicolmcchar::v#0 ← (byte~) mode_hicolmcchar::$26 | (byte~) mode_hicolmcchar::$27 -- vbuaa=vbuz1_bor_vbuaa ora _26 - //SEG890 [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuaa + //SEG891 [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG891 [474] (byte*) mode_hicolmcchar::col#1 ← ++ (byte*) mode_hicolmcchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG892 [474] (byte*) mode_hicolmcchar::col#1 ← ++ (byte*) mode_hicolmcchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG892 [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuaa + //SEG893 [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG893 [476] (byte*) mode_hicolmcchar::ch#1 ← ++ (byte*) mode_hicolmcchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG894 [476] (byte*) mode_hicolmcchar::ch#1 ← ++ (byte*) mode_hicolmcchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG894 [477] (byte) mode_hicolmcchar::cx#1 ← ++ (byte) mode_hicolmcchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG895 [477] (byte) mode_hicolmcchar::cx#1 ← ++ (byte) mode_hicolmcchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG895 [478] if((byte) mode_hicolmcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolmcchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG896 [478] if((byte) mode_hicolmcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolmcchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b5 - //SEG896 mode_hicolmcchar::@5 + //SEG897 mode_hicolmcchar::@5 b5: - //SEG897 [479] (byte) mode_hicolmcchar::cy#1 ← ++ (byte) mode_hicolmcchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG898 [479] (byte) mode_hicolmcchar::cy#1 ← ++ (byte) mode_hicolmcchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG898 [480] if((byte) mode_hicolmcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolmcchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG899 [480] if((byte) mode_hicolmcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolmcchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG899 [481] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@6 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@6] + //SEG900 [481] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@6 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@6] b6_from_b5: jmp b6 - //SEG900 mode_hicolmcchar::@6 + //SEG901 mode_hicolmcchar::@6 b6: - //SEG901 [482] call mode_ctrl - //SEG902 [155] phi from mode_hicolmcchar::@6 to mode_ctrl [phi:mode_hicolmcchar::@6->mode_ctrl] + //SEG902 [482] call mode_ctrl + //SEG903 [155] phi from mode_hicolmcchar::@6 to mode_ctrl [phi:mode_hicolmcchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG903 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG904 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl jmp breturn - //SEG904 mode_hicolmcchar::@return + //SEG905 mode_hicolmcchar::@return breturn: - //SEG905 [483] return + //SEG906 [483] return rts } -//SEG906 mode_hicolecmchar +//SEG907 mode_hicolecmchar // High Color Extended Background Color Character Mode (LINEAR/CHUNK/COLDIS/MCM/BMM = 0, ECM/HICOL = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -21936,172 +21936,172 @@ mode_hicolecmchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG907 [484] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG908 [484] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG908 [485] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG909 [485] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG909 [486] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG910 [486] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG910 [487] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG911 [487] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG911 [488] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG912 [488] *((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 - //SEG912 [489] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG913 [489] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG913 [490] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG914 [490] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|VIC_ECM|3 sta VIC_CONTROL - //SEG914 [491] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG915 [491] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG915 [492] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG916 [492] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG916 [493] phi from mode_hicolecmchar to mode_hicolecmchar::@1 [phi:mode_hicolecmchar->mode_hicolecmchar::@1] + //SEG917 [493] phi from mode_hicolecmchar to mode_hicolecmchar::@1 [phi:mode_hicolecmchar->mode_hicolecmchar::@1] b1_from_mode_hicolecmchar: - //SEG917 [493] phi (byte) mode_hicolecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar->mode_hicolecmchar::@1#0] -- vbuxx=vbuc1 + //SEG918 [493] phi (byte) mode_hicolecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar->mode_hicolecmchar::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG918 [493] phi from mode_hicolecmchar::@1 to mode_hicolecmchar::@1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1] + //SEG919 [493] phi from mode_hicolecmchar::@1 to mode_hicolecmchar::@1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1] b1_from_b1: - //SEG919 [493] phi (byte) mode_hicolecmchar::i#2 = (byte) mode_hicolecmchar::i#1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1#0] -- register_copy + //SEG920 [493] phi (byte) mode_hicolecmchar::i#2 = (byte) mode_hicolecmchar::i#1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1#0] -- register_copy jmp b1 - //SEG920 mode_hicolecmchar::@1 + //SEG921 mode_hicolecmchar::@1 b1: - //SEG921 [494] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolecmchar::i#2) ← (byte) mode_hicolecmchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG922 [494] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolecmchar::i#2) ← (byte) mode_hicolecmchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG922 [495] (byte) mode_hicolecmchar::i#1 ← ++ (byte) mode_hicolecmchar::i#2 -- vbuxx=_inc_vbuxx + //SEG923 [495] (byte) mode_hicolecmchar::i#1 ← ++ (byte) mode_hicolecmchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG923 [496] if((byte) mode_hicolecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolecmchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG924 [496] if((byte) mode_hicolecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolecmchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b4 - //SEG924 mode_hicolecmchar::@4 + //SEG925 mode_hicolecmchar::@4 b4: - //SEG925 [497] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG926 [497] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG926 [498] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 + //SEG927 [498] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 lda #$50 sta BGCOL1 - //SEG927 [499] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 + //SEG928 [499] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 lda #$54 sta BGCOL2 - //SEG928 [500] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 + //SEG929 [500] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 lda #$58 sta BGCOL3 - //SEG929 [501] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 92 -- _deref_pbuc1=vbuc2 + //SEG930 [501] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 92 -- _deref_pbuc1=vbuc2 lda #$5c sta BGCOL4 - //SEG930 [502] phi from mode_hicolecmchar::@4 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2] + //SEG931 [502] phi from mode_hicolecmchar::@4 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2] b2_from_b4: - //SEG931 [502] phi (byte*) mode_hicolecmchar::ch#3 = (const byte*) mode_hicolecmchar::SCREEN#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#0] -- pbuz1=pbuc1 + //SEG932 [502] phi (byte*) mode_hicolecmchar::ch#3 = (const byte*) mode_hicolecmchar::SCREEN#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG932 [502] phi (byte*) mode_hicolecmchar::col#3 = (const byte*) mode_hicolecmchar::COLORS#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#1] -- pbuz1=pbuc1 + //SEG933 [502] phi (byte*) mode_hicolecmchar::col#3 = (const byte*) mode_hicolecmchar::COLORS#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG933 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#2] -- vbuz1=vbuc1 + //SEG934 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG934 [502] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2] + //SEG935 [502] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2] b2_from_b5: - //SEG935 [502] phi (byte*) mode_hicolecmchar::ch#3 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#0] -- register_copy - //SEG936 [502] phi (byte*) mode_hicolecmchar::col#3 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#1] -- register_copy - //SEG937 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte) mode_hicolecmchar::cy#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#2] -- register_copy + //SEG936 [502] phi (byte*) mode_hicolecmchar::ch#3 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#0] -- register_copy + //SEG937 [502] phi (byte*) mode_hicolecmchar::col#3 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#1] -- register_copy + //SEG938 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte) mode_hicolecmchar::cy#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#2] -- register_copy jmp b2 - //SEG938 mode_hicolecmchar::@2 + //SEG939 mode_hicolecmchar::@2 b2: - //SEG939 [503] phi from mode_hicolecmchar::@2 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3] + //SEG940 [503] phi from mode_hicolecmchar::@2 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3] b3_from_b2: - //SEG940 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#0] -- register_copy - //SEG941 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#1] -- register_copy - //SEG942 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#2] -- vbuxx=vbuc1 + //SEG941 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#0] -- register_copy + //SEG942 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#1] -- register_copy + //SEG943 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#2] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG943 [503] phi from mode_hicolecmchar::@3 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3] + //SEG944 [503] phi from mode_hicolecmchar::@3 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3] b3_from_b3: - //SEG944 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#0] -- register_copy - //SEG945 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#1] -- register_copy - //SEG946 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte) mode_hicolecmchar::cx#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#2] -- register_copy + //SEG945 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#0] -- register_copy + //SEG946 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#1] -- register_copy + //SEG947 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte) mode_hicolecmchar::cx#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#2] -- register_copy jmp b3 - //SEG947 mode_hicolecmchar::@3 + //SEG948 mode_hicolecmchar::@3 b3: - //SEG948 [504] (byte~) mode_hicolecmchar::$25 ← (byte) mode_hicolecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG949 [504] (byte~) mode_hicolecmchar::$25 ← (byte) mode_hicolecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG949 [505] (byte~) mode_hicolecmchar::$26 ← (byte~) mode_hicolecmchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG950 [505] (byte~) mode_hicolecmchar::$26 ← (byte~) mode_hicolecmchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _26 - //SEG950 [506] (byte~) mode_hicolecmchar::$27 ← (byte) mode_hicolecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG951 [506] (byte~) mode_hicolecmchar::$27 ← (byte) mode_hicolecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG951 [507] (byte) mode_hicolecmchar::v#0 ← (byte~) mode_hicolecmchar::$26 | (byte~) mode_hicolecmchar::$27 -- vbuaa=vbuz1_bor_vbuaa + //SEG952 [507] (byte) mode_hicolecmchar::v#0 ← (byte~) mode_hicolecmchar::$26 | (byte~) mode_hicolecmchar::$27 -- vbuaa=vbuz1_bor_vbuaa ora _26 - //SEG952 [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuaa + //SEG953 [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG953 [509] (byte*) mode_hicolecmchar::col#1 ← ++ (byte*) mode_hicolecmchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG954 [509] (byte*) mode_hicolecmchar::col#1 ← ++ (byte*) mode_hicolecmchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG954 [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuaa + //SEG955 [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG955 [511] (byte*) mode_hicolecmchar::ch#1 ← ++ (byte*) mode_hicolecmchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG956 [511] (byte*) mode_hicolecmchar::ch#1 ← ++ (byte*) mode_hicolecmchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG956 [512] (byte) mode_hicolecmchar::cx#1 ← ++ (byte) mode_hicolecmchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG957 [512] (byte) mode_hicolecmchar::cx#1 ← ++ (byte) mode_hicolecmchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG957 [513] if((byte) mode_hicolecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolecmchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG958 [513] if((byte) mode_hicolecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolecmchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b5 - //SEG958 mode_hicolecmchar::@5 + //SEG959 mode_hicolecmchar::@5 b5: - //SEG959 [514] (byte) mode_hicolecmchar::cy#1 ← ++ (byte) mode_hicolecmchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG960 [514] (byte) mode_hicolecmchar::cy#1 ← ++ (byte) mode_hicolecmchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG960 [515] if((byte) mode_hicolecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG961 [515] if((byte) mode_hicolecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG961 [516] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@6 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@6] + //SEG962 [516] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@6 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@6] b6_from_b5: jmp b6 - //SEG962 mode_hicolecmchar::@6 + //SEG963 mode_hicolecmchar::@6 b6: - //SEG963 [517] call mode_ctrl - //SEG964 [155] phi from mode_hicolecmchar::@6 to mode_ctrl [phi:mode_hicolecmchar::@6->mode_ctrl] + //SEG964 [517] call mode_ctrl + //SEG965 [155] phi from mode_hicolecmchar::@6 to mode_ctrl [phi:mode_hicolecmchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG965 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG966 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl jmp breturn - //SEG966 mode_hicolecmchar::@return + //SEG967 mode_hicolecmchar::@return breturn: - //SEG967 [518] return + //SEG968 [518] return rts } -//SEG968 mode_hicolstdchar +//SEG969 mode_hicolstdchar // High Color Standard Character Mode (LINEAR/CHUNK/COLDIS/ECM/MCM/BMM = 0, HICOL = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -22118,163 +22118,163 @@ mode_hicolstdchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG969 [519] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolstdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG970 [519] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolstdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG970 [520] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG971 [520] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG971 [521] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG972 [521] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG972 [522] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG973 [522] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG973 [523] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG974 [523] *((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 - //SEG974 [524] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolstdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG975 [524] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolstdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG975 [525] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG976 [525] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG976 [526] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG977 [526] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG977 [527] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolstdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolstdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG978 [527] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolstdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolstdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG978 [528] phi from mode_hicolstdchar to mode_hicolstdchar::@1 [phi:mode_hicolstdchar->mode_hicolstdchar::@1] + //SEG979 [528] phi from mode_hicolstdchar to mode_hicolstdchar::@1 [phi:mode_hicolstdchar->mode_hicolstdchar::@1] b1_from_mode_hicolstdchar: - //SEG979 [528] phi (byte) mode_hicolstdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar->mode_hicolstdchar::@1#0] -- vbuxx=vbuc1 + //SEG980 [528] phi (byte) mode_hicolstdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar->mode_hicolstdchar::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG980 [528] phi from mode_hicolstdchar::@1 to mode_hicolstdchar::@1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1] + //SEG981 [528] phi from mode_hicolstdchar::@1 to mode_hicolstdchar::@1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1] b1_from_b1: - //SEG981 [528] phi (byte) mode_hicolstdchar::i#2 = (byte) mode_hicolstdchar::i#1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1#0] -- register_copy + //SEG982 [528] phi (byte) mode_hicolstdchar::i#2 = (byte) mode_hicolstdchar::i#1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1#0] -- register_copy jmp b1 - //SEG982 mode_hicolstdchar::@1 + //SEG983 mode_hicolstdchar::@1 b1: - //SEG983 [529] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolstdchar::i#2) ← (byte) mode_hicolstdchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG984 [529] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolstdchar::i#2) ← (byte) mode_hicolstdchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG984 [530] (byte) mode_hicolstdchar::i#1 ← ++ (byte) mode_hicolstdchar::i#2 -- vbuxx=_inc_vbuxx + //SEG985 [530] (byte) mode_hicolstdchar::i#1 ← ++ (byte) mode_hicolstdchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG985 [531] if((byte) mode_hicolstdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolstdchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG986 [531] if((byte) mode_hicolstdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolstdchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b4 - //SEG986 mode_hicolstdchar::@4 + //SEG987 mode_hicolstdchar::@4 b4: - //SEG987 [532] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG988 [532] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG988 [533] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG989 [533] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG989 [534] phi from mode_hicolstdchar::@4 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2] + //SEG990 [534] phi from mode_hicolstdchar::@4 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2] b2_from_b4: - //SEG990 [534] phi (byte*) mode_hicolstdchar::ch#3 = (const byte*) mode_hicolstdchar::SCREEN#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#0] -- pbuz1=pbuc1 + //SEG991 [534] phi (byte*) mode_hicolstdchar::ch#3 = (const byte*) mode_hicolstdchar::SCREEN#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG991 [534] phi (byte*) mode_hicolstdchar::col#3 = (const byte*) mode_hicolstdchar::COLORS#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#1] -- pbuz1=pbuc1 + //SEG992 [534] phi (byte*) mode_hicolstdchar::col#3 = (const byte*) mode_hicolstdchar::COLORS#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG992 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#2] -- vbuz1=vbuc1 + //SEG993 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG993 [534] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2] + //SEG994 [534] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2] b2_from_b5: - //SEG994 [534] phi (byte*) mode_hicolstdchar::ch#3 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#0] -- register_copy - //SEG995 [534] phi (byte*) mode_hicolstdchar::col#3 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#1] -- register_copy - //SEG996 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte) mode_hicolstdchar::cy#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#2] -- register_copy + //SEG995 [534] phi (byte*) mode_hicolstdchar::ch#3 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#0] -- register_copy + //SEG996 [534] phi (byte*) mode_hicolstdchar::col#3 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#1] -- register_copy + //SEG997 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte) mode_hicolstdchar::cy#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#2] -- register_copy jmp b2 - //SEG997 mode_hicolstdchar::@2 + //SEG998 mode_hicolstdchar::@2 b2: - //SEG998 [535] phi from mode_hicolstdchar::@2 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3] + //SEG999 [535] phi from mode_hicolstdchar::@2 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3] b3_from_b2: - //SEG999 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#0] -- register_copy - //SEG1000 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#1] -- register_copy - //SEG1001 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#2] -- vbuxx=vbuc1 + //SEG1000 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#0] -- register_copy + //SEG1001 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#1] -- register_copy + //SEG1002 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#2] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG1002 [535] phi from mode_hicolstdchar::@3 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3] + //SEG1003 [535] phi from mode_hicolstdchar::@3 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3] b3_from_b3: - //SEG1003 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#0] -- register_copy - //SEG1004 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#1] -- register_copy - //SEG1005 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte) mode_hicolstdchar::cx#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#2] -- register_copy + //SEG1004 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#0] -- register_copy + //SEG1005 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#1] -- register_copy + //SEG1006 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte) mode_hicolstdchar::cx#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#2] -- register_copy jmp b3 - //SEG1006 mode_hicolstdchar::@3 + //SEG1007 mode_hicolstdchar::@3 b3: - //SEG1007 [536] (byte~) mode_hicolstdchar::$24 ← (byte) mode_hicolstdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1008 [536] (byte~) mode_hicolstdchar::$24 ← (byte) mode_hicolstdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1008 [537] (byte~) mode_hicolstdchar::$25 ← (byte~) mode_hicolstdchar::$24 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1009 [537] (byte~) mode_hicolstdchar::$25 ← (byte~) mode_hicolstdchar::$24 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _25 - //SEG1009 [538] (byte~) mode_hicolstdchar::$26 ← (byte) mode_hicolstdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1010 [538] (byte~) mode_hicolstdchar::$26 ← (byte) mode_hicolstdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1010 [539] (byte) mode_hicolstdchar::v#0 ← (byte~) mode_hicolstdchar::$25 | (byte~) mode_hicolstdchar::$26 -- vbuaa=vbuz1_bor_vbuaa + //SEG1011 [539] (byte) mode_hicolstdchar::v#0 ← (byte~) mode_hicolstdchar::$25 | (byte~) mode_hicolstdchar::$26 -- vbuaa=vbuz1_bor_vbuaa ora _25 - //SEG1011 [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuaa + //SEG1012 [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG1012 [541] (byte*) mode_hicolstdchar::col#1 ← ++ (byte*) mode_hicolstdchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1013 [541] (byte*) mode_hicolstdchar::col#1 ← ++ (byte*) mode_hicolstdchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1013 [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuaa + //SEG1014 [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1014 [543] (byte*) mode_hicolstdchar::ch#1 ← ++ (byte*) mode_hicolstdchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1015 [543] (byte*) mode_hicolstdchar::ch#1 ← ++ (byte*) mode_hicolstdchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1015 [544] (byte) mode_hicolstdchar::cx#1 ← ++ (byte) mode_hicolstdchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG1016 [544] (byte) mode_hicolstdchar::cx#1 ← ++ (byte) mode_hicolstdchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1016 [545] if((byte) mode_hicolstdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolstdchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1017 [545] if((byte) mode_hicolstdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolstdchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b5 - //SEG1017 mode_hicolstdchar::@5 + //SEG1018 mode_hicolstdchar::@5 b5: - //SEG1018 [546] (byte) mode_hicolstdchar::cy#1 ← ++ (byte) mode_hicolstdchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1019 [546] (byte) mode_hicolstdchar::cy#1 ← ++ (byte) mode_hicolstdchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1019 [547] if((byte) mode_hicolstdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolstdchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1020 [547] if((byte) mode_hicolstdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolstdchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG1020 [548] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@6 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@6] + //SEG1021 [548] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@6 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@6] b6_from_b5: jmp b6 - //SEG1021 mode_hicolstdchar::@6 + //SEG1022 mode_hicolstdchar::@6 b6: - //SEG1022 [549] call mode_ctrl - //SEG1023 [155] phi from mode_hicolstdchar::@6 to mode_ctrl [phi:mode_hicolstdchar::@6->mode_ctrl] + //SEG1023 [549] call mode_ctrl + //SEG1024 [155] phi from mode_hicolstdchar::@6 to mode_ctrl [phi:mode_hicolstdchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG1024 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1025 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl jmp breturn - //SEG1025 mode_hicolstdchar::@return + //SEG1026 mode_hicolstdchar::@return breturn: - //SEG1026 [550] return + //SEG1027 [550] return rts } -//SEG1027 mode_stdbitmap +//SEG1028 mode_stdbitmap // Standard Bitmap Mode (LINEAR/HICOL/CHUNK/COLDIS/MCM/ECM = 0, BMM = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -22290,204 +22290,204 @@ mode_stdbitmap: { .label ch = 2 .label cy = 4 .label l = 4 - //SEG1028 [551] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdbitmap::BITMAP#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1029 [551] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdbitmap::BITMAP#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&BITMAP)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1029 [552] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1030 [552] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1030 [553] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1031 [553] *((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 - //SEG1031 [554] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdbitmap::BITMAP#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1032 [554] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdbitmap::BITMAP#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^BITMAP/$4000 sta CIA2_PORT_A - //SEG1032 [555] *((const byte*) VIC_CONTROL#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 -- _deref_pbuc1=vbuc2 + //SEG1033 [555] *((const byte*) VIC_CONTROL#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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1033 [556] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1034 [556] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1034 [557] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdbitmap::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdbitmap::BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1035 [557] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdbitmap::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdbitmap::BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY - //SEG1035 [558] phi from mode_stdbitmap to mode_stdbitmap::@1 [phi:mode_stdbitmap->mode_stdbitmap::@1] + //SEG1036 [558] phi from mode_stdbitmap to mode_stdbitmap::@1 [phi:mode_stdbitmap->mode_stdbitmap::@1] b1_from_mode_stdbitmap: - //SEG1036 [558] phi (byte) mode_stdbitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap->mode_stdbitmap::@1#0] -- vbuxx=vbuc1 + //SEG1037 [558] phi (byte) mode_stdbitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap->mode_stdbitmap::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1037 [558] phi from mode_stdbitmap::@1 to mode_stdbitmap::@1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1] + //SEG1038 [558] phi from mode_stdbitmap::@1 to mode_stdbitmap::@1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1] b1_from_b1: - //SEG1038 [558] phi (byte) mode_stdbitmap::i#2 = (byte) mode_stdbitmap::i#1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1#0] -- register_copy + //SEG1039 [558] phi (byte) mode_stdbitmap::i#2 = (byte) mode_stdbitmap::i#1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1#0] -- register_copy jmp b1 - //SEG1039 mode_stdbitmap::@1 + //SEG1040 mode_stdbitmap::@1 b1: - //SEG1040 [559] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdbitmap::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdbitmap::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG1041 [559] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdbitmap::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdbitmap::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG1041 [560] (byte) mode_stdbitmap::i#1 ← ++ (byte) mode_stdbitmap::i#2 -- vbuxx=_inc_vbuxx + //SEG1042 [560] (byte) mode_stdbitmap::i#1 ← ++ (byte) mode_stdbitmap::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1042 [561] if((byte) mode_stdbitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdbitmap::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1043 [561] if((byte) mode_stdbitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdbitmap::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b5 - //SEG1043 mode_stdbitmap::@5 + //SEG1044 mode_stdbitmap::@5 b5: - //SEG1044 [562] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1045 [562] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG1045 [563] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1046 [563] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1046 [564] phi from mode_stdbitmap::@5 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2] + //SEG1047 [564] phi from mode_stdbitmap::@5 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2] b2_from_b5: - //SEG1047 [564] phi (byte*) mode_stdbitmap::ch#3 = (const byte*) mode_stdbitmap::SCREEN#0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#0] -- pbuz1=pbuc1 + //SEG1048 [564] phi (byte*) mode_stdbitmap::ch#3 = (const byte*) mode_stdbitmap::SCREEN#0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1048 [564] phi (byte) mode_stdbitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#1] -- vbuz1=vbuc1 + //SEG1049 [564] phi (byte) mode_stdbitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG1049 [564] phi from mode_stdbitmap::@6 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2] + //SEG1050 [564] phi from mode_stdbitmap::@6 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2] b2_from_b6: - //SEG1050 [564] phi (byte*) mode_stdbitmap::ch#3 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#0] -- register_copy - //SEG1051 [564] phi (byte) mode_stdbitmap::cy#4 = (byte) mode_stdbitmap::cy#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#1] -- register_copy + //SEG1051 [564] phi (byte*) mode_stdbitmap::ch#3 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#0] -- register_copy + //SEG1052 [564] phi (byte) mode_stdbitmap::cy#4 = (byte) mode_stdbitmap::cy#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#1] -- register_copy jmp b2 - //SEG1052 mode_stdbitmap::@2 + //SEG1053 mode_stdbitmap::@2 b2: - //SEG1053 [565] phi from mode_stdbitmap::@2 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3] + //SEG1054 [565] phi from mode_stdbitmap::@2 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3] b3_from_b2: - //SEG1054 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#0] -- register_copy - //SEG1055 [565] phi (byte) mode_stdbitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#1] -- vbuxx=vbuc1 + //SEG1055 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#0] -- register_copy + //SEG1056 [565] phi (byte) mode_stdbitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG1056 [565] phi from mode_stdbitmap::@3 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3] + //SEG1057 [565] phi from mode_stdbitmap::@3 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3] b3_from_b3: - //SEG1057 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#0] -- register_copy - //SEG1058 [565] phi (byte) mode_stdbitmap::cx#2 = (byte) mode_stdbitmap::cx#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#1] -- register_copy + //SEG1058 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#0] -- register_copy + //SEG1059 [565] phi (byte) mode_stdbitmap::cx#2 = (byte) mode_stdbitmap::cx#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#1] -- register_copy jmp b3 - //SEG1059 mode_stdbitmap::@3 + //SEG1060 mode_stdbitmap::@3 b3: - //SEG1060 [566] (byte~) mode_stdbitmap::$19 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1061 [566] (byte~) mode_stdbitmap::$19 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1061 [567] (byte) mode_stdbitmap::col#0 ← (byte~) mode_stdbitmap::$19 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuaa_band_vbuc1 + //SEG1062 [567] (byte) mode_stdbitmap::col#0 ← (byte~) mode_stdbitmap::$19 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuaa_band_vbuc1 and #$f tay - //SEG1062 [568] (byte) mode_stdbitmap::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) mode_stdbitmap::col#0 -- vbuz1=vbuc1_minus_vbuyy + //SEG1063 [568] (byte) mode_stdbitmap::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) mode_stdbitmap::col#0 -- vbuz1=vbuc1_minus_vbuyy tya eor #$ff clc adc #$f+1 sta col2 - //SEG1063 [569] (byte~) mode_stdbitmap::$22 ← (byte) mode_stdbitmap::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_rol_4 + //SEG1064 [569] (byte~) mode_stdbitmap::$22 ← (byte) mode_stdbitmap::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_rol_4 tya asl asl asl asl - //SEG1064 [570] (byte~) mode_stdbitmap::$23 ← (byte~) mode_stdbitmap::$22 | (byte) mode_stdbitmap::col2#0 -- vbuaa=vbuaa_bor_vbuz1 + //SEG1065 [570] (byte~) mode_stdbitmap::$23 ← (byte~) mode_stdbitmap::$22 | (byte) mode_stdbitmap::col2#0 -- vbuaa=vbuaa_bor_vbuz1 ora col2 - //SEG1065 [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$23 -- _deref_pbuz1=vbuaa + //SEG1066 [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$23 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1066 [572] (byte*) mode_stdbitmap::ch#1 ← ++ (byte*) mode_stdbitmap::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1067 [572] (byte*) mode_stdbitmap::ch#1 ← ++ (byte*) mode_stdbitmap::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1067 [573] (byte) mode_stdbitmap::cx#1 ← ++ (byte) mode_stdbitmap::cx#2 -- vbuxx=_inc_vbuxx + //SEG1068 [573] (byte) mode_stdbitmap::cx#1 ← ++ (byte) mode_stdbitmap::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1068 [574] if((byte) mode_stdbitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdbitmap::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1069 [574] if((byte) mode_stdbitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdbitmap::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b6 - //SEG1069 mode_stdbitmap::@6 + //SEG1070 mode_stdbitmap::@6 b6: - //SEG1070 [575] (byte) mode_stdbitmap::cy#1 ← ++ (byte) mode_stdbitmap::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1071 [575] (byte) mode_stdbitmap::cy#1 ← ++ (byte) mode_stdbitmap::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1071 [576] if((byte) mode_stdbitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdbitmap::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1072 [576] if((byte) mode_stdbitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdbitmap::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b6 - //SEG1072 [577] phi from mode_stdbitmap::@6 to mode_stdbitmap::@7 [phi:mode_stdbitmap::@6->mode_stdbitmap::@7] + //SEG1073 [577] phi from mode_stdbitmap::@6 to mode_stdbitmap::@7 [phi:mode_stdbitmap::@6->mode_stdbitmap::@7] b7_from_b6: jmp b7 - //SEG1073 mode_stdbitmap::@7 + //SEG1074 mode_stdbitmap::@7 b7: - //SEG1074 [578] call bitmap_init - //SEG1075 [732] phi from mode_stdbitmap::@7 to bitmap_init [phi:mode_stdbitmap::@7->bitmap_init] + //SEG1075 [578] call bitmap_init + //SEG1076 [732] phi from mode_stdbitmap::@7 to bitmap_init [phi:mode_stdbitmap::@7->bitmap_init] bitmap_init_from_b7: jsr bitmap_init - //SEG1076 [579] phi from mode_stdbitmap::@7 to mode_stdbitmap::@9 [phi:mode_stdbitmap::@7->mode_stdbitmap::@9] + //SEG1077 [579] phi from mode_stdbitmap::@7 to mode_stdbitmap::@9 [phi:mode_stdbitmap::@7->mode_stdbitmap::@9] b9_from_b7: jmp b9 - //SEG1077 mode_stdbitmap::@9 + //SEG1078 mode_stdbitmap::@9 b9: - //SEG1078 [580] call bitmap_clear + //SEG1079 [580] call bitmap_clear jsr bitmap_clear - //SEG1079 [581] phi from mode_stdbitmap::@9 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4] + //SEG1080 [581] phi from mode_stdbitmap::@9 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4] b4_from_b9: - //SEG1080 [581] phi (byte) mode_stdbitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4#0] -- vbuz1=vbuc1 + //SEG1081 [581] phi (byte) mode_stdbitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4#0] -- vbuz1=vbuc1 lda #0 sta l jmp b4 - //SEG1081 [581] phi from mode_stdbitmap::@11 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4] + //SEG1082 [581] phi from mode_stdbitmap::@11 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4] b4_from_b11: - //SEG1082 [581] phi (byte) mode_stdbitmap::l#2 = (byte) mode_stdbitmap::l#1 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4#0] -- register_copy + //SEG1083 [581] phi (byte) mode_stdbitmap::l#2 = (byte) mode_stdbitmap::l#1 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4#0] -- register_copy jmp b4 - //SEG1083 mode_stdbitmap::@4 + //SEG1084 mode_stdbitmap::@4 b4: - //SEG1084 [582] (byte) bitmap_line::x0#0 ← *((const byte[]) mode_stdbitmap::lines_x#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1085 [582] (byte) bitmap_line::x0#0 ← *((const byte[]) mode_stdbitmap::lines_x#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG1085 [583] (byte) bitmap_line::x1#0 ← *((const byte[]) mode_stdbitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1086 [583] (byte) bitmap_line::x1#0 ← *((const byte[]) mode_stdbitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x+1,y sta bitmap_line.x1 - //SEG1086 [584] (byte) bitmap_line::y0#0 ← *((const byte[]) mode_stdbitmap::lines_y#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1087 [584] (byte) bitmap_line::y0#0 ← *((const byte[]) mode_stdbitmap::lines_y#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y,y sta bitmap_line.y0 - //SEG1087 [585] (byte) bitmap_line::y1#0 ← *((const byte[]) mode_stdbitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG1088 [585] (byte) bitmap_line::y1#0 ← *((const byte[]) mode_stdbitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 ldx l ldy lines_y+1,x - //SEG1088 [586] call bitmap_line + //SEG1089 [586] call bitmap_line jsr bitmap_line jmp b11 - //SEG1089 mode_stdbitmap::@11 + //SEG1090 mode_stdbitmap::@11 b11: - //SEG1090 [587] (byte) mode_stdbitmap::l#1 ← ++ (byte) mode_stdbitmap::l#2 -- vbuz1=_inc_vbuz1 + //SEG1091 [587] (byte) mode_stdbitmap::l#1 ← ++ (byte) mode_stdbitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG1091 [588] if((byte) mode_stdbitmap::l#1<(const byte) mode_stdbitmap::lines_cnt#0) goto mode_stdbitmap::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG1092 [588] if((byte) mode_stdbitmap::l#1<(const byte) mode_stdbitmap::lines_cnt#0) goto mode_stdbitmap::@4 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b4_from_b11 - //SEG1092 [589] phi from mode_stdbitmap::@11 to mode_stdbitmap::@8 [phi:mode_stdbitmap::@11->mode_stdbitmap::@8] + //SEG1093 [589] phi from mode_stdbitmap::@11 to mode_stdbitmap::@8 [phi:mode_stdbitmap::@11->mode_stdbitmap::@8] b8_from_b11: jmp b8 - //SEG1093 mode_stdbitmap::@8 + //SEG1094 mode_stdbitmap::@8 b8: - //SEG1094 [590] call mode_ctrl - //SEG1095 [155] phi from mode_stdbitmap::@8 to mode_ctrl [phi:mode_stdbitmap::@8->mode_ctrl] + //SEG1095 [590] call mode_ctrl + //SEG1096 [155] phi from mode_stdbitmap::@8 to mode_ctrl [phi:mode_stdbitmap::@8->mode_ctrl] mode_ctrl_from_b8: - //SEG1096 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@8->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1097 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@8->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl jmp breturn - //SEG1097 mode_stdbitmap::@return + //SEG1098 mode_stdbitmap::@return breturn: - //SEG1098 [591] return + //SEG1099 [591] 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 } -//SEG1099 bitmap_line +//SEG1100 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = 8 @@ -22495,257 +22495,257 @@ bitmap_line: { .label x0 = 9 .label x1 = $c .label y0 = $b - //SEG1100 [592] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG1101 [592] 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 - //SEG1101 bitmap_line::@15 + //SEG1102 bitmap_line::@15 b15: - //SEG1102 [593] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1103 [593] (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 - //SEG1103 [594] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 + //SEG1104 [594] 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 - //SEG1104 bitmap_line::@16 + //SEG1105 bitmap_line::@16 b16: - //SEG1105 [595] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1106 [595] (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 - //SEG1106 [596] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1107 [596] 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 - //SEG1107 bitmap_line::@17 + //SEG1108 bitmap_line::@17 b17: - //SEG1108 [597] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1109 [597] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y - //SEG1109 [598] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1110 [598] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1110 [599] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 - //SEG1111 [600] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG1112 [601] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1113 [602] call bitmap_line_ydxi - //SEG1114 [676] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1111 [599] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + //SEG1112 [600] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1113 [601] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1114 [602] call bitmap_line_ydxi + //SEG1115 [676] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] bitmap_line_ydxi_from_b17: - //SEG1115 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG1116 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG1117 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG1118 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG1119 [676] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG1116 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1117 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1118 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1119 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1120 [676] 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 - //SEG1120 bitmap_line::@return + //SEG1121 bitmap_line::@return breturn: - //SEG1121 [603] return + //SEG1122 [603] return rts - //SEG1122 bitmap_line::@3 + //SEG1123 bitmap_line::@3 b3: - //SEG1123 [604] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1124 [604] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1124 [605] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1125 [605] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyi.y - //SEG1125 [606] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 - //SEG1126 [607] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1127 [608] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG1128 [609] call bitmap_line_xdyi - //SEG1129 [654] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1126 [606] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + //SEG1127 [607] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1128 [608] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1129 [609] call bitmap_line_xdyi + //SEG1130 [654] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] bitmap_line_xdyi_from_b3: - //SEG1130 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG1131 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG1132 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG1133 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG1134 [654] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG1131 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1132 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1133 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1134 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1135 [654] 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 - //SEG1135 bitmap_line::@2 + //SEG1136 bitmap_line::@2 b2: - //SEG1136 [610] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1137 [610] (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 - //SEG1137 [611] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1138 [611] 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 - //SEG1138 bitmap_line::@20 + //SEG1139 bitmap_line::@20 b20: - //SEG1139 [612] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1140 [612] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1140 [613] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1141 [613] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1141 [614] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1142 [614] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y1 - //SEG1142 [615] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG1143 [616] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1144 [617] call bitmap_line_ydxd - //SEG1145 [706] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1143 [615] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1144 [616] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1145 [617] call bitmap_line_ydxd + //SEG1146 [706] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] bitmap_line_ydxd_from_b20: - //SEG1146 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG1147 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG1148 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG1149 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG1150 [706] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG1147 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1148 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1149 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1150 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1151 [706] 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 - //SEG1151 bitmap_line::@6 + //SEG1152 bitmap_line::@6 b6: - //SEG1152 [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1153 [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1153 [619] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1154 [619] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyd.y - //SEG1154 [620] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1155 [620] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1155 [621] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1156 [622] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG1157 [623] call bitmap_line_xdyd - //SEG1158 [691] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1156 [621] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1157 [622] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1158 [623] call bitmap_line_xdyd + //SEG1159 [691] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] bitmap_line_xdyd_from_b6: - //SEG1159 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG1160 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG1161 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG1162 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG1163 [691] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG1160 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1161 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1162 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1163 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1164 [691] 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 - //SEG1164 bitmap_line::@1 + //SEG1165 bitmap_line::@1 b1: - //SEG1165 [624] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1166 [624] (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 - //SEG1166 [625] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 + //SEG1167 [625] 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 - //SEG1167 bitmap_line::@23 + //SEG1168 bitmap_line::@23 b23: - //SEG1168 [626] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1169 [626] (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 - //SEG1169 [627] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1170 [627] 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 - //SEG1170 bitmap_line::@24 + //SEG1171 bitmap_line::@24 b24: - //SEG1171 [628] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1172 [628] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y - //SEG1172 [629] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1173 [629] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1173 [630] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 - //SEG1174 [631] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG1175 [632] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1176 [633] call bitmap_line_ydxd - //SEG1177 [706] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1174 [630] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + //SEG1175 [631] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1176 [632] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1177 [633] call bitmap_line_ydxd + //SEG1178 [706] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] bitmap_line_ydxd_from_b24: - //SEG1178 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG1179 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG1180 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG1181 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG1182 [706] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG1179 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1180 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1181 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1182 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1183 [706] 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 - //SEG1183 bitmap_line::@10 + //SEG1184 bitmap_line::@10 b10: - //SEG1184 [634] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1185 [634] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1185 [635] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - //SEG1186 [636] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 - //SEG1187 [637] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1188 [638] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG1189 [639] call bitmap_line_xdyd - //SEG1190 [691] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1186 [635] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + //SEG1187 [636] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + //SEG1188 [637] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1189 [638] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1190 [639] call bitmap_line_xdyd + //SEG1191 [691] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] bitmap_line_xdyd_from_b10: - //SEG1191 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG1192 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG1193 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG1194 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG1195 [691] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG1192 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1193 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1194 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1195 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1196 [691] 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 - //SEG1196 bitmap_line::@9 + //SEG1197 bitmap_line::@9 b9: - //SEG1197 [640] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1198 [640] (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 - //SEG1198 [641] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1199 [641] 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 - //SEG1199 bitmap_line::@27 + //SEG1200 bitmap_line::@27 b27: - //SEG1200 [642] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1201 [642] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1201 [643] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1202 [643] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1202 [644] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1203 [644] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y1 - //SEG1203 [645] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG1204 [646] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1205 [647] call bitmap_line_ydxi - //SEG1206 [676] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1204 [645] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1205 [646] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1206 [647] call bitmap_line_ydxi + //SEG1207 [676] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] bitmap_line_ydxi_from_b27: - //SEG1207 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG1208 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG1209 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG1210 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG1211 [676] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG1208 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1209 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1210 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1211 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1212 [676] 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 - //SEG1212 bitmap_line::@13 + //SEG1213 bitmap_line::@13 b13: - //SEG1213 [648] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1214 [648] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1214 [649] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - //SEG1215 [650] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1215 [649] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + //SEG1216 [650] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1216 [651] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1217 [652] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG1218 [653] call bitmap_line_xdyi - //SEG1219 [654] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1217 [651] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1218 [652] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1219 [653] call bitmap_line_xdyi + //SEG1220 [654] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] bitmap_line_xdyi_from_b13: - //SEG1220 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG1221 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG1222 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG1223 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG1224 [654] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG1221 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1222 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1223 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1224 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1225 [654] 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 } -//SEG1225 bitmap_line_xdyi +//SEG1226 bitmap_line_xdyi bitmap_line_xdyi: { .label x = $a .label y = $b @@ -22753,89 +22753,89 @@ bitmap_line_xdyi: { .label xd = 8 .label yd = 7 .label e = $c - //SEG1226 [655] (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 + //SEG1227 [655] (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 - //SEG1227 [656] 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] + //SEG1228 [656] 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: - //SEG1228 [656] 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 - //SEG1229 [656] 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 - //SEG1230 [656] 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 + //SEG1229 [656] 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 + //SEG1230 [656] 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 + //SEG1231 [656] 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 - //SEG1231 bitmap_line_xdyi::@1 + //SEG1232 bitmap_line_xdyi::@1 b1: - //SEG1232 [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 + //SEG1233 [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx x - //SEG1233 [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 + //SEG1234 [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1234 [659] call bitmap_plot - //SEG1235 [669] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1235 [659] call bitmap_plot + //SEG1236 [669] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1236 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG1237 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG1237 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1238 [669] 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 - //SEG1238 bitmap_line_xdyi::@5 + //SEG1239 bitmap_line_xdyi::@5 b5: - //SEG1239 [660] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1240 [660] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1240 [661] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1241 [661] (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 - //SEG1241 [662] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1242 [662] 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 - //SEG1242 bitmap_line_xdyi::@3 + //SEG1243 bitmap_line_xdyi::@3 b3: - //SEG1243 [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1244 [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1244 [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1245 [664] (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 - //SEG1245 [665] 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] + //SEG1246 [665] 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: - //SEG1246 [665] 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 - //SEG1247 [665] 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 + //SEG1247 [665] 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 + //SEG1248 [665] 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 - //SEG1248 bitmap_line_xdyi::@2 + //SEG1249 bitmap_line_xdyi::@2 b2: - //SEG1249 [666] (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 + //SEG1250 [666] (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 - //SEG1250 [667] 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 + //SEG1251 [667] 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 - //SEG1251 bitmap_line_xdyi::@return + //SEG1252 bitmap_line_xdyi::@return breturn: - //SEG1252 [668] return + //SEG1253 [668] return rts } -//SEG1253 bitmap_plot +//SEG1254 bitmap_plot bitmap_plot: { .label _0 = 2 .label plotter_x = 2 .label plotter_y = 5 - //SEG1254 [670] (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 + //SEG1255 [670] (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 - //SEG1255 [671] (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 + //SEG1256 [671] (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 - //SEG1256 [672] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG1257 [672] (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 @@ -22843,94 +22843,94 @@ bitmap_plot: { lda _0+1 adc plotter_y+1 sta _0+1 - //SEG1257 [673] (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 + //SEG1258 [673] (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 - //SEG1258 [674] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa + //SEG1259 [674] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (_0),y jmp breturn - //SEG1259 bitmap_plot::@return + //SEG1260 bitmap_plot::@return breturn: - //SEG1260 [675] return + //SEG1261 [675] return rts } -//SEG1261 bitmap_line_ydxi +//SEG1262 bitmap_line_ydxi bitmap_line_ydxi: { .label y = $a .label y1 = $b .label yd = 7 .label xd = 8 .label e = 9 - //SEG1262 [677] (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 + //SEG1263 [677] (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 - //SEG1263 [678] 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] + //SEG1264 [678] 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: - //SEG1264 [678] 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 - //SEG1265 [678] 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 - //SEG1266 [678] 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 + //SEG1265 [678] 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 + //SEG1266 [678] 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 + //SEG1267 [678] 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 - //SEG1267 bitmap_line_ydxi::@1 + //SEG1268 bitmap_line_ydxi::@1 b1: - //SEG1268 [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - //SEG1269 [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 + //SEG1269 [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + //SEG1270 [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1270 [681] call bitmap_plot - //SEG1271 [669] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1271 [681] call bitmap_plot + //SEG1272 [669] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1272 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG1273 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG1273 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1274 [669] 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 - //SEG1274 bitmap_line_ydxi::@5 + //SEG1275 bitmap_line_ydxi::@5 b5: - //SEG1275 [682] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1276 [682] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1276 [683] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1277 [683] (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 - //SEG1277 [684] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1278 [684] 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 - //SEG1278 bitmap_line_ydxi::@3 + //SEG1279 bitmap_line_ydxi::@3 b3: - //SEG1279 [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx + //SEG1280 [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG1280 [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1281 [686] (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 - //SEG1281 [687] 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] + //SEG1282 [687] 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: - //SEG1282 [687] 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 - //SEG1283 [687] 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 + //SEG1283 [687] 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 + //SEG1284 [687] 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 - //SEG1284 bitmap_line_ydxi::@2 + //SEG1285 bitmap_line_ydxi::@2 b2: - //SEG1285 [688] (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 + //SEG1286 [688] (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 - //SEG1286 [689] 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 + //SEG1287 [689] 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 - //SEG1287 bitmap_line_ydxi::@return + //SEG1288 bitmap_line_ydxi::@return breturn: - //SEG1288 [690] return + //SEG1289 [690] return rts } -//SEG1289 bitmap_line_xdyd +//SEG1290 bitmap_line_xdyd bitmap_line_xdyd: { .label x = $a .label y = $b @@ -22938,305 +22938,305 @@ bitmap_line_xdyd: { .label xd = 8 .label yd = 7 .label e = 9 - //SEG1290 [692] (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 + //SEG1291 [692] (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 - //SEG1291 [693] 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] + //SEG1292 [693] 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: - //SEG1292 [693] 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 - //SEG1293 [693] 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 - //SEG1294 [693] 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 + //SEG1293 [693] 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 + //SEG1294 [693] 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 + //SEG1295 [693] 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 - //SEG1295 bitmap_line_xdyd::@1 + //SEG1296 bitmap_line_xdyd::@1 b1: - //SEG1296 [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 + //SEG1297 [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx x - //SEG1297 [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 + //SEG1298 [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy y - //SEG1298 [696] call bitmap_plot - //SEG1299 [669] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1299 [696] call bitmap_plot + //SEG1300 [669] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1300 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG1301 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG1301 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1302 [669] 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 - //SEG1302 bitmap_line_xdyd::@5 + //SEG1303 bitmap_line_xdyd::@5 b5: - //SEG1303 [697] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1304 [697] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1304 [698] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1305 [698] (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 - //SEG1305 [699] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1306 [699] 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 - //SEG1306 bitmap_line_xdyd::@3 + //SEG1307 bitmap_line_xdyd::@3 b3: - //SEG1307 [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1308 [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1308 [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1309 [701] (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 - //SEG1309 [702] 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] + //SEG1310 [702] 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: - //SEG1310 [702] 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 - //SEG1311 [702] 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 + //SEG1311 [702] 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 + //SEG1312 [702] 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 - //SEG1312 bitmap_line_xdyd::@2 + //SEG1313 bitmap_line_xdyd::@2 b2: - //SEG1313 [703] (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 + //SEG1314 [703] (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 - //SEG1314 [704] 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 + //SEG1315 [704] 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 - //SEG1315 bitmap_line_xdyd::@return + //SEG1316 bitmap_line_xdyd::@return breturn: - //SEG1316 [705] return + //SEG1317 [705] return rts } -//SEG1317 bitmap_line_ydxd +//SEG1318 bitmap_line_ydxd bitmap_line_ydxd: { .label y = $a .label y1 = $b .label yd = 7 .label xd = 8 .label e = 9 - //SEG1318 [707] (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 + //SEG1319 [707] (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 - //SEG1319 [708] 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] + //SEG1320 [708] 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: - //SEG1320 [708] 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 - //SEG1321 [708] 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 - //SEG1322 [708] 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 + //SEG1321 [708] 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 + //SEG1322 [708] 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 + //SEG1323 [708] 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 - //SEG1323 bitmap_line_ydxd::@1 + //SEG1324 bitmap_line_ydxd::@1 b1: - //SEG1324 [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - //SEG1325 [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 + //SEG1325 [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + //SEG1326 [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy y - //SEG1326 [711] call bitmap_plot - //SEG1327 [669] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1327 [711] call bitmap_plot + //SEG1328 [669] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1328 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG1329 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG1329 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1330 [669] 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 - //SEG1330 bitmap_line_ydxd::@5 + //SEG1331 bitmap_line_ydxd::@5 b5: - //SEG1331 [712] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1332 [712] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1332 [713] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1333 [713] (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 - //SEG1333 [714] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1334 [714] 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 - //SEG1334 bitmap_line_ydxd::@3 + //SEG1335 bitmap_line_ydxd::@3 b3: - //SEG1335 [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx + //SEG1336 [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx dex - //SEG1336 [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1337 [716] (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 - //SEG1337 [717] 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] + //SEG1338 [717] 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: - //SEG1338 [717] 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 - //SEG1339 [717] 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 + //SEG1339 [717] 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 + //SEG1340 [717] 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 - //SEG1340 bitmap_line_ydxd::@2 + //SEG1341 bitmap_line_ydxd::@2 b2: - //SEG1341 [718] (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 + //SEG1342 [718] (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 - //SEG1342 [719] 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 + //SEG1343 [719] 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 - //SEG1343 bitmap_line_ydxd::@return + //SEG1344 bitmap_line_ydxd::@return breturn: - //SEG1344 [720] return + //SEG1345 [720] return rts } -//SEG1345 bitmap_clear +//SEG1346 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 2 .label y = 4 .label _3 = 2 - //SEG1346 [721] (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 + //SEG1347 [721] (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 - //SEG1347 [722] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG1348 [723] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1348 [722] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG1349 [723] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG1349 [723] 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 + //SEG1350 [723] 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 - //SEG1350 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG1351 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1351 [723] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1352 [723] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG1352 [723] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG1353 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG1353 [723] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1354 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1354 bitmap_clear::@1 + //SEG1355 bitmap_clear::@1 b1: - //SEG1355 [724] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1356 [724] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG1356 [724] 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 + //SEG1357 [724] 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 - //SEG1357 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG1358 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1358 [724] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1359 [724] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG1359 [724] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG1360 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG1360 [724] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1361 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1361 bitmap_clear::@2 + //SEG1362 bitmap_clear::@2 b2: - //SEG1362 [725] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1363 [725] *((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 - //SEG1363 [726] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1364 [726] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1364 [727] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG1365 [727] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG1365 [728] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1366 [728] 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 - //SEG1366 bitmap_clear::@3 + //SEG1367 bitmap_clear::@3 b3: - //SEG1367 [729] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1368 [729] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG1368 [730] 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 + //SEG1369 [730] 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 - //SEG1369 bitmap_clear::@return + //SEG1370 bitmap_clear::@return breturn: - //SEG1370 [731] return + //SEG1371 [731] return rts } -//SEG1371 bitmap_init +//SEG1372 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _6 = 4 .label yoffs = 2 - //SEG1372 [733] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1373 [733] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG1373 [733] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 + //SEG1374 [733] 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 - //SEG1374 [733] 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 + //SEG1375 [733] 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 - //SEG1375 [733] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1376 [733] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG1376 [733] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG1377 [733] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG1377 [733] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1378 [733] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG1378 bitmap_init::@1 + //SEG1379 bitmap_init::@1 b1: - //SEG1379 [734] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG1380 [734] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG1380 [735] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1381 [735] *((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 - //SEG1381 [736] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1382 [736] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>mode_stdbitmap.BITMAP sta bitmap_plot_xhi,x - //SEG1382 [737] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG1383 [737] *((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 - //SEG1383 [738] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG1384 [738] (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 - //SEG1384 [739] 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 + //SEG1385 [739] 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 - //SEG1385 [740] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1386 [740] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG1386 [740] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 + //SEG1387 [740] 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 - //SEG1387 bitmap_init::@2 + //SEG1388 bitmap_init::@2 b2: - //SEG1388 [741] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG1389 [741] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG1389 [742] 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 + //SEG1390 [742] 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 - //SEG1390 [743] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1391 [743] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG1391 [743] 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 + //SEG1392 [743] 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 - //SEG1392 [743] 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 + //SEG1393 [743] 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 - //SEG1393 [743] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1394 [743] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG1394 [743] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG1395 [743] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG1395 [743] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1396 [743] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG1396 bitmap_init::@3 + //SEG1397 bitmap_init::@3 b3: - //SEG1397 [744] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG1398 [744] (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 - //SEG1398 [745] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG1399 [745] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG1399 [746] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG1400 [746] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG1400 [747] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1401 [747] *((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 - //SEG1401 [748] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG1402 [748] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG1402 [749] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1403 [749] *((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 - //SEG1403 [750] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG1404 [750] (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 - //SEG1404 [751] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG1405 [751] 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 - //SEG1405 bitmap_init::@7 + //SEG1406 bitmap_init::@7 b7: - //SEG1406 [752] (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 + //SEG1407 [752] (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 @@ -23244,34 +23244,34 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG1407 [753] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG1408 [753] 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: - //SEG1408 [753] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG1409 [753] 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 - //SEG1409 bitmap_init::@4 + //SEG1410 bitmap_init::@4 b4: - //SEG1410 [754] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG1411 [754] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG1411 [755] 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 + //SEG1412 [755] 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 - //SEG1412 bitmap_init::@return + //SEG1413 bitmap_init::@return breturn: - //SEG1413 [756] return + //SEG1414 [756] return rts - //SEG1414 [757] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1415 [757] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG1415 bitmap_init::@10 + //SEG1416 bitmap_init::@10 b10: - //SEG1416 [740] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1417 [740] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG1417 [740] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG1418 [740] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG1418 mode_mcchar +//SEG1419 mode_mcchar // Multicolor Character Mode (LINEAR/HICOL/CHUNK/COLDIS/BMM/ECM = 0, MCM = 1) // Resolution: 160x200 (320x200) // Normal VIC Adressing: @@ -23293,175 +23293,175 @@ mode_mcchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG1419 [758] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_mcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1420 [758] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_mcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1420 [759] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1421 [759] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1421 [760] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1422 [760] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1422 [761] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1423 [761] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1423 [762] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1424 [762] *((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 - //SEG1424 [763] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_mcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1425 [763] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_mcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1425 [764] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1426 [764] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1426 [765] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG1427 [765] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL|VIC_MCM sta VIC_CONTROL2 - //SEG1427 [766] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_mcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_mcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1428 [766] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_mcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_mcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1428 [767] phi from mode_mcchar to mode_mcchar::@1 [phi:mode_mcchar->mode_mcchar::@1] + //SEG1429 [767] phi from mode_mcchar to mode_mcchar::@1 [phi:mode_mcchar->mode_mcchar::@1] b1_from_mode_mcchar: - //SEG1429 [767] phi (byte) mode_mcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar->mode_mcchar::@1#0] -- vbuxx=vbuc1 + //SEG1430 [767] phi (byte) mode_mcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar->mode_mcchar::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1430 [767] phi from mode_mcchar::@1 to mode_mcchar::@1 [phi:mode_mcchar::@1->mode_mcchar::@1] + //SEG1431 [767] phi from mode_mcchar::@1 to mode_mcchar::@1 [phi:mode_mcchar::@1->mode_mcchar::@1] b1_from_b1: - //SEG1431 [767] phi (byte) mode_mcchar::i#2 = (byte) mode_mcchar::i#1 [phi:mode_mcchar::@1->mode_mcchar::@1#0] -- register_copy + //SEG1432 [767] phi (byte) mode_mcchar::i#2 = (byte) mode_mcchar::i#1 [phi:mode_mcchar::@1->mode_mcchar::@1#0] -- register_copy jmp b1 - //SEG1432 mode_mcchar::@1 + //SEG1433 mode_mcchar::@1 b1: - //SEG1433 [768] *((const byte*) DTV_PALETTE#0 + (byte) mode_mcchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_mcchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG1434 [768] *((const byte*) DTV_PALETTE#0 + (byte) mode_mcchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_mcchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG1434 [769] (byte) mode_mcchar::i#1 ← ++ (byte) mode_mcchar::i#2 -- vbuxx=_inc_vbuxx + //SEG1435 [769] (byte) mode_mcchar::i#1 ← ++ (byte) mode_mcchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1435 [770] if((byte) mode_mcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_mcchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1436 [770] if((byte) mode_mcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_mcchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b4 - //SEG1436 mode_mcchar::@4 + //SEG1437 mode_mcchar::@4 b4: - //SEG1437 [771] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1438 [771] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG1438 [772] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1439 [772] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1439 [773] *((const byte*) BGCOL2#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG1440 [773] *((const byte*) BGCOL2#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL2 - //SEG1440 [774] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG1441 [774] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL3 - //SEG1441 [775] phi from mode_mcchar::@4 to mode_mcchar::@2 [phi:mode_mcchar::@4->mode_mcchar::@2] + //SEG1442 [775] phi from mode_mcchar::@4 to mode_mcchar::@2 [phi:mode_mcchar::@4->mode_mcchar::@2] b2_from_b4: - //SEG1442 [775] phi (byte*) mode_mcchar::ch#3 = (const byte*) mode_mcchar::SCREEN#0 [phi:mode_mcchar::@4->mode_mcchar::@2#0] -- pbuz1=pbuc1 + //SEG1443 [775] phi (byte*) mode_mcchar::ch#3 = (const byte*) mode_mcchar::SCREEN#0 [phi:mode_mcchar::@4->mode_mcchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1443 [775] phi (byte*) mode_mcchar::col#3 = (const byte*) mode_mcchar::COLORS#0 [phi:mode_mcchar::@4->mode_mcchar::@2#1] -- pbuz1=pbuc1 + //SEG1444 [775] phi (byte*) mode_mcchar::col#3 = (const byte*) mode_mcchar::COLORS#0 [phi:mode_mcchar::@4->mode_mcchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1444 [775] phi (byte) mode_mcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@4->mode_mcchar::@2#2] -- vbuz1=vbuc1 + //SEG1445 [775] phi (byte) mode_mcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@4->mode_mcchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG1445 [775] phi from mode_mcchar::@5 to mode_mcchar::@2 [phi:mode_mcchar::@5->mode_mcchar::@2] + //SEG1446 [775] phi from mode_mcchar::@5 to mode_mcchar::@2 [phi:mode_mcchar::@5->mode_mcchar::@2] b2_from_b5: - //SEG1446 [775] phi (byte*) mode_mcchar::ch#3 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@5->mode_mcchar::@2#0] -- register_copy - //SEG1447 [775] phi (byte*) mode_mcchar::col#3 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@5->mode_mcchar::@2#1] -- register_copy - //SEG1448 [775] phi (byte) mode_mcchar::cy#4 = (byte) mode_mcchar::cy#1 [phi:mode_mcchar::@5->mode_mcchar::@2#2] -- register_copy + //SEG1447 [775] phi (byte*) mode_mcchar::ch#3 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@5->mode_mcchar::@2#0] -- register_copy + //SEG1448 [775] phi (byte*) mode_mcchar::col#3 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@5->mode_mcchar::@2#1] -- register_copy + //SEG1449 [775] phi (byte) mode_mcchar::cy#4 = (byte) mode_mcchar::cy#1 [phi:mode_mcchar::@5->mode_mcchar::@2#2] -- register_copy jmp b2 - //SEG1449 mode_mcchar::@2 + //SEG1450 mode_mcchar::@2 b2: - //SEG1450 [776] phi from mode_mcchar::@2 to mode_mcchar::@3 [phi:mode_mcchar::@2->mode_mcchar::@3] + //SEG1451 [776] phi from mode_mcchar::@2 to mode_mcchar::@3 [phi:mode_mcchar::@2->mode_mcchar::@3] b3_from_b2: - //SEG1451 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#3 [phi:mode_mcchar::@2->mode_mcchar::@3#0] -- register_copy - //SEG1452 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#3 [phi:mode_mcchar::@2->mode_mcchar::@3#1] -- register_copy - //SEG1453 [776] phi (byte) mode_mcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@2->mode_mcchar::@3#2] -- vbuxx=vbuc1 + //SEG1452 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#3 [phi:mode_mcchar::@2->mode_mcchar::@3#0] -- register_copy + //SEG1453 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#3 [phi:mode_mcchar::@2->mode_mcchar::@3#1] -- register_copy + //SEG1454 [776] phi (byte) mode_mcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@2->mode_mcchar::@3#2] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG1454 [776] phi from mode_mcchar::@3 to mode_mcchar::@3 [phi:mode_mcchar::@3->mode_mcchar::@3] + //SEG1455 [776] phi from mode_mcchar::@3 to mode_mcchar::@3 [phi:mode_mcchar::@3->mode_mcchar::@3] b3_from_b3: - //SEG1455 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@3->mode_mcchar::@3#0] -- register_copy - //SEG1456 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@3->mode_mcchar::@3#1] -- register_copy - //SEG1457 [776] phi (byte) mode_mcchar::cx#2 = (byte) mode_mcchar::cx#1 [phi:mode_mcchar::@3->mode_mcchar::@3#2] -- register_copy + //SEG1456 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@3->mode_mcchar::@3#0] -- register_copy + //SEG1457 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@3->mode_mcchar::@3#1] -- register_copy + //SEG1458 [776] phi (byte) mode_mcchar::cx#2 = (byte) mode_mcchar::cx#1 [phi:mode_mcchar::@3->mode_mcchar::@3#2] -- register_copy jmp b3 - //SEG1458 mode_mcchar::@3 + //SEG1459 mode_mcchar::@3 b3: - //SEG1459 [777] (byte~) mode_mcchar::$25 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1460 [777] (byte~) mode_mcchar::$25 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1460 [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG1461 [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG1461 [779] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$26 -- _deref_pbuz1=vbuaa + //SEG1462 [779] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$26 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG1462 [780] (byte*) mode_mcchar::col#1 ← ++ (byte*) mode_mcchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1463 [780] (byte*) mode_mcchar::col#1 ← ++ (byte*) mode_mcchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1463 [781] (byte~) mode_mcchar::$27 ← (byte) mode_mcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1464 [781] (byte~) mode_mcchar::$27 ← (byte) mode_mcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1464 [782] (byte~) mode_mcchar::$28 ← (byte~) mode_mcchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1465 [782] (byte~) mode_mcchar::$28 ← (byte~) mode_mcchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _28 - //SEG1465 [783] (byte~) mode_mcchar::$29 ← (byte) mode_mcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1466 [783] (byte~) mode_mcchar::$29 ← (byte) mode_mcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1466 [784] (byte~) mode_mcchar::$30 ← (byte~) mode_mcchar::$28 | (byte~) mode_mcchar::$29 -- vbuaa=vbuz1_bor_vbuaa + //SEG1467 [784] (byte~) mode_mcchar::$30 ← (byte~) mode_mcchar::$28 | (byte~) mode_mcchar::$29 -- vbuaa=vbuz1_bor_vbuaa ora _28 - //SEG1467 [785] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$30 -- _deref_pbuz1=vbuaa + //SEG1468 [785] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$30 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1468 [786] (byte*) mode_mcchar::ch#1 ← ++ (byte*) mode_mcchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1469 [786] (byte*) mode_mcchar::ch#1 ← ++ (byte*) mode_mcchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1469 [787] (byte) mode_mcchar::cx#1 ← ++ (byte) mode_mcchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG1470 [787] (byte) mode_mcchar::cx#1 ← ++ (byte) mode_mcchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1470 [788] if((byte) mode_mcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_mcchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1471 [788] if((byte) mode_mcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_mcchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b5 - //SEG1471 mode_mcchar::@5 + //SEG1472 mode_mcchar::@5 b5: - //SEG1472 [789] (byte) mode_mcchar::cy#1 ← ++ (byte) mode_mcchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1473 [789] (byte) mode_mcchar::cy#1 ← ++ (byte) mode_mcchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1473 [790] if((byte) mode_mcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_mcchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1474 [790] if((byte) mode_mcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_mcchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG1474 [791] phi from mode_mcchar::@5 to mode_mcchar::@6 [phi:mode_mcchar::@5->mode_mcchar::@6] + //SEG1475 [791] phi from mode_mcchar::@5 to mode_mcchar::@6 [phi:mode_mcchar::@5->mode_mcchar::@6] b6_from_b5: jmp b6 - //SEG1475 mode_mcchar::@6 + //SEG1476 mode_mcchar::@6 b6: - //SEG1476 [792] call mode_ctrl - //SEG1477 [155] phi from mode_mcchar::@6 to mode_ctrl [phi:mode_mcchar::@6->mode_ctrl] + //SEG1477 [792] call mode_ctrl + //SEG1478 [155] phi from mode_mcchar::@6 to mode_ctrl [phi:mode_mcchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG1478 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1479 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl jmp breturn - //SEG1479 mode_mcchar::@return + //SEG1480 mode_mcchar::@return breturn: - //SEG1480 [793] return + //SEG1481 [793] return rts } -//SEG1481 mode_ecmchar +//SEG1482 mode_ecmchar // Extended Background Color Character Mode (LINEAR/HICOL/CHUNK/COLDIS/MCM/BMM = 0, ECM = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -23482,178 +23482,178 @@ mode_ecmchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG1482 [794] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_ecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1483 [794] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_ecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1483 [795] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1484 [795] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1484 [796] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1485 [796] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1485 [797] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1486 [797] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1486 [798] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1487 [798] *((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 - //SEG1487 [799] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_ecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1488 [799] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_ecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1488 [800] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1489 [800] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|VIC_ECM|3 sta VIC_CONTROL - //SEG1489 [801] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1490 [801] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1490 [802] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_ecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_ecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1491 [802] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_ecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_ecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1491 [803] phi from mode_ecmchar to mode_ecmchar::@1 [phi:mode_ecmchar->mode_ecmchar::@1] + //SEG1492 [803] phi from mode_ecmchar to mode_ecmchar::@1 [phi:mode_ecmchar->mode_ecmchar::@1] b1_from_mode_ecmchar: - //SEG1492 [803] phi (byte) mode_ecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar->mode_ecmchar::@1#0] -- vbuxx=vbuc1 + //SEG1493 [803] phi (byte) mode_ecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar->mode_ecmchar::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1493 [803] phi from mode_ecmchar::@1 to mode_ecmchar::@1 [phi:mode_ecmchar::@1->mode_ecmchar::@1] + //SEG1494 [803] phi from mode_ecmchar::@1 to mode_ecmchar::@1 [phi:mode_ecmchar::@1->mode_ecmchar::@1] b1_from_b1: - //SEG1494 [803] phi (byte) mode_ecmchar::i#2 = (byte) mode_ecmchar::i#1 [phi:mode_ecmchar::@1->mode_ecmchar::@1#0] -- register_copy + //SEG1495 [803] phi (byte) mode_ecmchar::i#2 = (byte) mode_ecmchar::i#1 [phi:mode_ecmchar::@1->mode_ecmchar::@1#0] -- register_copy jmp b1 - //SEG1495 mode_ecmchar::@1 + //SEG1496 mode_ecmchar::@1 b1: - //SEG1496 [804] *((const byte*) DTV_PALETTE#0 + (byte) mode_ecmchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_ecmchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG1497 [804] *((const byte*) DTV_PALETTE#0 + (byte) mode_ecmchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_ecmchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG1497 [805] (byte) mode_ecmchar::i#1 ← ++ (byte) mode_ecmchar::i#2 -- vbuxx=_inc_vbuxx + //SEG1498 [805] (byte) mode_ecmchar::i#1 ← ++ (byte) mode_ecmchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1498 [806] if((byte) mode_ecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_ecmchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1499 [806] if((byte) mode_ecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_ecmchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b4 - //SEG1499 mode_ecmchar::@4 + //SEG1500 mode_ecmchar::@4 b4: - //SEG1500 [807] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1501 [807] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG1501 [808] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1502 [808] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL1 - //SEG1502 [809] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG1503 [809] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL2 - //SEG1503 [810] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG1504 [810] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL3 - //SEG1504 [811] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG1505 [811] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta BGCOL4 - //SEG1505 [812] phi from mode_ecmchar::@4 to mode_ecmchar::@2 [phi:mode_ecmchar::@4->mode_ecmchar::@2] + //SEG1506 [812] phi from mode_ecmchar::@4 to mode_ecmchar::@2 [phi:mode_ecmchar::@4->mode_ecmchar::@2] b2_from_b4: - //SEG1506 [812] phi (byte*) mode_ecmchar::ch#3 = (const byte*) mode_ecmchar::SCREEN#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#0] -- pbuz1=pbuc1 + //SEG1507 [812] phi (byte*) mode_ecmchar::ch#3 = (const byte*) mode_ecmchar::SCREEN#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1507 [812] phi (byte*) mode_ecmchar::col#3 = (const byte*) mode_ecmchar::COLORS#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#1] -- pbuz1=pbuc1 + //SEG1508 [812] phi (byte*) mode_ecmchar::col#3 = (const byte*) mode_ecmchar::COLORS#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1508 [812] phi (byte) mode_ecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#2] -- vbuz1=vbuc1 + //SEG1509 [812] phi (byte) mode_ecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG1509 [812] phi from mode_ecmchar::@5 to mode_ecmchar::@2 [phi:mode_ecmchar::@5->mode_ecmchar::@2] + //SEG1510 [812] phi from mode_ecmchar::@5 to mode_ecmchar::@2 [phi:mode_ecmchar::@5->mode_ecmchar::@2] b2_from_b5: - //SEG1510 [812] phi (byte*) mode_ecmchar::ch#3 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#0] -- register_copy - //SEG1511 [812] phi (byte*) mode_ecmchar::col#3 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#1] -- register_copy - //SEG1512 [812] phi (byte) mode_ecmchar::cy#4 = (byte) mode_ecmchar::cy#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#2] -- register_copy + //SEG1511 [812] phi (byte*) mode_ecmchar::ch#3 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#0] -- register_copy + //SEG1512 [812] phi (byte*) mode_ecmchar::col#3 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#1] -- register_copy + //SEG1513 [812] phi (byte) mode_ecmchar::cy#4 = (byte) mode_ecmchar::cy#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#2] -- register_copy jmp b2 - //SEG1513 mode_ecmchar::@2 + //SEG1514 mode_ecmchar::@2 b2: - //SEG1514 [813] phi from mode_ecmchar::@2 to mode_ecmchar::@3 [phi:mode_ecmchar::@2->mode_ecmchar::@3] + //SEG1515 [813] phi from mode_ecmchar::@2 to mode_ecmchar::@3 [phi:mode_ecmchar::@2->mode_ecmchar::@3] b3_from_b2: - //SEG1515 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#0] -- register_copy - //SEG1516 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#1] -- register_copy - //SEG1517 [813] phi (byte) mode_ecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@2->mode_ecmchar::@3#2] -- vbuxx=vbuc1 + //SEG1516 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#0] -- register_copy + //SEG1517 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#1] -- register_copy + //SEG1518 [813] phi (byte) mode_ecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@2->mode_ecmchar::@3#2] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG1518 [813] phi from mode_ecmchar::@3 to mode_ecmchar::@3 [phi:mode_ecmchar::@3->mode_ecmchar::@3] + //SEG1519 [813] phi from mode_ecmchar::@3 to mode_ecmchar::@3 [phi:mode_ecmchar::@3->mode_ecmchar::@3] b3_from_b3: - //SEG1519 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#0] -- register_copy - //SEG1520 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#1] -- register_copy - //SEG1521 [813] phi (byte) mode_ecmchar::cx#2 = (byte) mode_ecmchar::cx#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#2] -- register_copy + //SEG1520 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#0] -- register_copy + //SEG1521 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#1] -- register_copy + //SEG1522 [813] phi (byte) mode_ecmchar::cx#2 = (byte) mode_ecmchar::cx#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#2] -- register_copy jmp b3 - //SEG1522 mode_ecmchar::@3 + //SEG1523 mode_ecmchar::@3 b3: - //SEG1523 [814] (byte~) mode_ecmchar::$25 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1524 [814] (byte~) mode_ecmchar::$25 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1524 [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG1525 [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG1525 [816] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$26 -- _deref_pbuz1=vbuaa + //SEG1526 [816] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$26 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG1526 [817] (byte*) mode_ecmchar::col#1 ← ++ (byte*) mode_ecmchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1527 [817] (byte*) mode_ecmchar::col#1 ← ++ (byte*) mode_ecmchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1527 [818] (byte~) mode_ecmchar::$27 ← (byte) mode_ecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1528 [818] (byte~) mode_ecmchar::$27 ← (byte) mode_ecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1528 [819] (byte~) mode_ecmchar::$28 ← (byte~) mode_ecmchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1529 [819] (byte~) mode_ecmchar::$28 ← (byte~) mode_ecmchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _28 - //SEG1529 [820] (byte~) mode_ecmchar::$29 ← (byte) mode_ecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1530 [820] (byte~) mode_ecmchar::$29 ← (byte) mode_ecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1530 [821] (byte~) mode_ecmchar::$30 ← (byte~) mode_ecmchar::$28 | (byte~) mode_ecmchar::$29 -- vbuaa=vbuz1_bor_vbuaa + //SEG1531 [821] (byte~) mode_ecmchar::$30 ← (byte~) mode_ecmchar::$28 | (byte~) mode_ecmchar::$29 -- vbuaa=vbuz1_bor_vbuaa ora _28 - //SEG1531 [822] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$30 -- _deref_pbuz1=vbuaa + //SEG1532 [822] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$30 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1532 [823] (byte*) mode_ecmchar::ch#1 ← ++ (byte*) mode_ecmchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1533 [823] (byte*) mode_ecmchar::ch#1 ← ++ (byte*) mode_ecmchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1533 [824] (byte) mode_ecmchar::cx#1 ← ++ (byte) mode_ecmchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG1534 [824] (byte) mode_ecmchar::cx#1 ← ++ (byte) mode_ecmchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1534 [825] if((byte) mode_ecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_ecmchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1535 [825] if((byte) mode_ecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_ecmchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b5 - //SEG1535 mode_ecmchar::@5 + //SEG1536 mode_ecmchar::@5 b5: - //SEG1536 [826] (byte) mode_ecmchar::cy#1 ← ++ (byte) mode_ecmchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1537 [826] (byte) mode_ecmchar::cy#1 ← ++ (byte) mode_ecmchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1537 [827] if((byte) mode_ecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_ecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1538 [827] if((byte) mode_ecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_ecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG1538 [828] phi from mode_ecmchar::@5 to mode_ecmchar::@6 [phi:mode_ecmchar::@5->mode_ecmchar::@6] + //SEG1539 [828] phi from mode_ecmchar::@5 to mode_ecmchar::@6 [phi:mode_ecmchar::@5->mode_ecmchar::@6] b6_from_b5: jmp b6 - //SEG1539 mode_ecmchar::@6 + //SEG1540 mode_ecmchar::@6 b6: - //SEG1540 [829] call mode_ctrl - //SEG1541 [155] phi from mode_ecmchar::@6 to mode_ctrl [phi:mode_ecmchar::@6->mode_ctrl] + //SEG1541 [829] call mode_ctrl + //SEG1542 [155] phi from mode_ecmchar::@6 to mode_ctrl [phi:mode_ecmchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG1542 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1543 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl jmp breturn - //SEG1543 mode_ecmchar::@return + //SEG1544 mode_ecmchar::@return breturn: - //SEG1544 [830] return + //SEG1545 [830] return rts } -//SEG1545 mode_stdchar +//SEG1546 mode_stdchar // Standard Character Mode (LINEAR/HICOL/CHUNK/COLDIS/ECM/MCM/BMM = 0) // Resolution: 320x200 // Normal VIC Adressing: @@ -23670,275 +23670,275 @@ mode_stdchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG1546 [831] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1547 [831] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1547 [832] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1548 [832] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1548 [833] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1549 [833] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1549 [834] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1550 [834] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1550 [835] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1551 [835] *((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 - //SEG1551 [836] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1552 [836] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1552 [837] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1553 [837] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1553 [838] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1554 [838] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1554 [839] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1555 [839] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1555 [840] phi from mode_stdchar to mode_stdchar::@1 [phi:mode_stdchar->mode_stdchar::@1] + //SEG1556 [840] phi from mode_stdchar to mode_stdchar::@1 [phi:mode_stdchar->mode_stdchar::@1] b1_from_mode_stdchar: - //SEG1556 [840] phi (byte) mode_stdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar->mode_stdchar::@1#0] -- vbuxx=vbuc1 + //SEG1557 [840] phi (byte) mode_stdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar->mode_stdchar::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1557 [840] phi from mode_stdchar::@1 to mode_stdchar::@1 [phi:mode_stdchar::@1->mode_stdchar::@1] + //SEG1558 [840] phi from mode_stdchar::@1 to mode_stdchar::@1 [phi:mode_stdchar::@1->mode_stdchar::@1] b1_from_b1: - //SEG1558 [840] phi (byte) mode_stdchar::i#2 = (byte) mode_stdchar::i#1 [phi:mode_stdchar::@1->mode_stdchar::@1#0] -- register_copy + //SEG1559 [840] phi (byte) mode_stdchar::i#2 = (byte) mode_stdchar::i#1 [phi:mode_stdchar::@1->mode_stdchar::@1#0] -- register_copy jmp b1 - //SEG1559 mode_stdchar::@1 + //SEG1560 mode_stdchar::@1 b1: - //SEG1560 [841] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG1561 [841] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG1561 [842] (byte) mode_stdchar::i#1 ← ++ (byte) mode_stdchar::i#2 -- vbuxx=_inc_vbuxx + //SEG1562 [842] (byte) mode_stdchar::i#1 ← ++ (byte) mode_stdchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1562 [843] if((byte) mode_stdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1563 [843] if((byte) mode_stdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b1 jmp b4 - //SEG1563 mode_stdchar::@4 + //SEG1564 mode_stdchar::@4 b4: - //SEG1564 [844] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1565 [844] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG1565 [845] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1566 [845] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG1566 [846] phi from mode_stdchar::@4 to mode_stdchar::@2 [phi:mode_stdchar::@4->mode_stdchar::@2] + //SEG1567 [846] phi from mode_stdchar::@4 to mode_stdchar::@2 [phi:mode_stdchar::@4->mode_stdchar::@2] b2_from_b4: - //SEG1567 [846] phi (byte*) mode_stdchar::ch#3 = (const byte*) mode_stdchar::SCREEN#0 [phi:mode_stdchar::@4->mode_stdchar::@2#0] -- pbuz1=pbuc1 + //SEG1568 [846] phi (byte*) mode_stdchar::ch#3 = (const byte*) mode_stdchar::SCREEN#0 [phi:mode_stdchar::@4->mode_stdchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1568 [846] phi (byte*) mode_stdchar::col#3 = (const byte*) mode_stdchar::COLORS#0 [phi:mode_stdchar::@4->mode_stdchar::@2#1] -- pbuz1=pbuc1 + //SEG1569 [846] phi (byte*) mode_stdchar::col#3 = (const byte*) mode_stdchar::COLORS#0 [phi:mode_stdchar::@4->mode_stdchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1569 [846] phi (byte) mode_stdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@4->mode_stdchar::@2#2] -- vbuz1=vbuc1 + //SEG1570 [846] phi (byte) mode_stdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@4->mode_stdchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy jmp b2 - //SEG1570 [846] phi from mode_stdchar::@5 to mode_stdchar::@2 [phi:mode_stdchar::@5->mode_stdchar::@2] + //SEG1571 [846] phi from mode_stdchar::@5 to mode_stdchar::@2 [phi:mode_stdchar::@5->mode_stdchar::@2] b2_from_b5: - //SEG1571 [846] phi (byte*) mode_stdchar::ch#3 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@5->mode_stdchar::@2#0] -- register_copy - //SEG1572 [846] phi (byte*) mode_stdchar::col#3 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@5->mode_stdchar::@2#1] -- register_copy - //SEG1573 [846] phi (byte) mode_stdchar::cy#4 = (byte) mode_stdchar::cy#1 [phi:mode_stdchar::@5->mode_stdchar::@2#2] -- register_copy + //SEG1572 [846] phi (byte*) mode_stdchar::ch#3 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@5->mode_stdchar::@2#0] -- register_copy + //SEG1573 [846] phi (byte*) mode_stdchar::col#3 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@5->mode_stdchar::@2#1] -- register_copy + //SEG1574 [846] phi (byte) mode_stdchar::cy#4 = (byte) mode_stdchar::cy#1 [phi:mode_stdchar::@5->mode_stdchar::@2#2] -- register_copy jmp b2 - //SEG1574 mode_stdchar::@2 + //SEG1575 mode_stdchar::@2 b2: - //SEG1575 [847] phi from mode_stdchar::@2 to mode_stdchar::@3 [phi:mode_stdchar::@2->mode_stdchar::@3] + //SEG1576 [847] phi from mode_stdchar::@2 to mode_stdchar::@3 [phi:mode_stdchar::@2->mode_stdchar::@3] b3_from_b2: - //SEG1576 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#3 [phi:mode_stdchar::@2->mode_stdchar::@3#0] -- register_copy - //SEG1577 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#3 [phi:mode_stdchar::@2->mode_stdchar::@3#1] -- register_copy - //SEG1578 [847] phi (byte) mode_stdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@2->mode_stdchar::@3#2] -- vbuxx=vbuc1 + //SEG1577 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#3 [phi:mode_stdchar::@2->mode_stdchar::@3#0] -- register_copy + //SEG1578 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#3 [phi:mode_stdchar::@2->mode_stdchar::@3#1] -- register_copy + //SEG1579 [847] phi (byte) mode_stdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@2->mode_stdchar::@3#2] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG1579 [847] phi from mode_stdchar::@3 to mode_stdchar::@3 [phi:mode_stdchar::@3->mode_stdchar::@3] + //SEG1580 [847] phi from mode_stdchar::@3 to mode_stdchar::@3 [phi:mode_stdchar::@3->mode_stdchar::@3] b3_from_b3: - //SEG1580 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@3->mode_stdchar::@3#0] -- register_copy - //SEG1581 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@3->mode_stdchar::@3#1] -- register_copy - //SEG1582 [847] phi (byte) mode_stdchar::cx#2 = (byte) mode_stdchar::cx#1 [phi:mode_stdchar::@3->mode_stdchar::@3#2] -- register_copy + //SEG1581 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@3->mode_stdchar::@3#0] -- register_copy + //SEG1582 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@3->mode_stdchar::@3#1] -- register_copy + //SEG1583 [847] phi (byte) mode_stdchar::cx#2 = (byte) mode_stdchar::cx#1 [phi:mode_stdchar::@3->mode_stdchar::@3#2] -- register_copy jmp b3 - //SEG1583 mode_stdchar::@3 + //SEG1584 mode_stdchar::@3 b3: - //SEG1584 [848] (byte~) mode_stdchar::$24 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1585 [848] (byte~) mode_stdchar::$24 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1585 [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG1586 [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG1586 [850] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$25 -- _deref_pbuz1=vbuaa + //SEG1587 [850] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$25 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG1587 [851] (byte*) mode_stdchar::col#1 ← ++ (byte*) mode_stdchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1588 [851] (byte*) mode_stdchar::col#1 ← ++ (byte*) mode_stdchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1588 [852] (byte~) mode_stdchar::$26 ← (byte) mode_stdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1589 [852] (byte~) mode_stdchar::$26 ← (byte) mode_stdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1589 [853] (byte~) mode_stdchar::$27 ← (byte~) mode_stdchar::$26 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1590 [853] (byte~) mode_stdchar::$27 ← (byte~) mode_stdchar::$26 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _27 - //SEG1590 [854] (byte~) mode_stdchar::$28 ← (byte) mode_stdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1591 [854] (byte~) mode_stdchar::$28 ← (byte) mode_stdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1591 [855] (byte~) mode_stdchar::$29 ← (byte~) mode_stdchar::$27 | (byte~) mode_stdchar::$28 -- vbuaa=vbuz1_bor_vbuaa + //SEG1592 [855] (byte~) mode_stdchar::$29 ← (byte~) mode_stdchar::$27 | (byte~) mode_stdchar::$28 -- vbuaa=vbuz1_bor_vbuaa ora _27 - //SEG1592 [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 -- _deref_pbuz1=vbuaa + //SEG1593 [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1593 [857] (byte*) mode_stdchar::ch#1 ← ++ (byte*) mode_stdchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1594 [857] (byte*) mode_stdchar::ch#1 ← ++ (byte*) mode_stdchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1594 [858] (byte) mode_stdchar::cx#1 ← ++ (byte) mode_stdchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG1595 [858] (byte) mode_stdchar::cx#1 ← ++ (byte) mode_stdchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1595 [859] if((byte) mode_stdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1596 [859] if((byte) mode_stdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3_from_b3 jmp b5 - //SEG1596 mode_stdchar::@5 + //SEG1597 mode_stdchar::@5 b5: - //SEG1597 [860] (byte) mode_stdchar::cy#1 ← ++ (byte) mode_stdchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1598 [860] (byte) mode_stdchar::cy#1 ← ++ (byte) mode_stdchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1598 [861] if((byte) mode_stdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1599 [861] if((byte) mode_stdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2_from_b5 - //SEG1599 [862] phi from mode_stdchar::@5 to mode_stdchar::@6 [phi:mode_stdchar::@5->mode_stdchar::@6] + //SEG1600 [862] phi from mode_stdchar::@5 to mode_stdchar::@6 [phi:mode_stdchar::@5->mode_stdchar::@6] b6_from_b5: jmp b6 - //SEG1600 mode_stdchar::@6 + //SEG1601 mode_stdchar::@6 b6: - //SEG1601 [863] call mode_ctrl - //SEG1602 [155] phi from mode_stdchar::@6 to mode_ctrl [phi:mode_stdchar::@6->mode_ctrl] + //SEG1602 [863] call mode_ctrl + //SEG1603 [155] phi from mode_stdchar::@6 to mode_ctrl [phi:mode_stdchar::@6->mode_ctrl] mode_ctrl_from_b6: - //SEG1603 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1604 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl jmp breturn - //SEG1604 mode_stdchar::@return + //SEG1605 mode_stdchar::@return breturn: - //SEG1605 [864] return + //SEG1606 [864] return rts } -//SEG1606 print_str_lines +//SEG1607 print_str_lines // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. print_str_lines: { .label str = 2 - //SEG1607 [866] phi from print_str_lines to print_str_lines::@1 [phi:print_str_lines->print_str_lines::@1] + //SEG1608 [866] phi from print_str_lines to print_str_lines::@1 [phi:print_str_lines->print_str_lines::@1] b1_from_print_str_lines: - //SEG1608 [866] phi (byte*) print_line_cursor#17 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#0] -- pbuz1=pbuc1 + //SEG1609 [866] phi (byte*) print_line_cursor#17 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#0] -- pbuz1=pbuc1 lda #menu.SCREEN sta print_line_cursor+1 - //SEG1609 [866] phi (byte*) print_char_cursor#19 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#1] -- pbuz1=pbuc1 + //SEG1610 [866] phi (byte*) print_char_cursor#19 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#1] -- pbuz1=pbuc1 lda #menu.SCREEN sta print_char_cursor+1 - //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 + //SEG1611 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 lda #MENU_TEXT sta str+1 jmp b1 - //SEG1611 print_str_lines::@1 + //SEG1612 print_str_lines::@1 b1: - //SEG1612 [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG1613 [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b4_from_b1 jmp breturn - //SEG1613 print_str_lines::@return + //SEG1614 print_str_lines::@return breturn: - //SEG1614 [868] return + //SEG1615 [868] return rts - //SEG1615 [869] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] + //SEG1616 [869] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] b4_from_b1: b4_from_b5: - //SEG1616 [869] phi (byte*) print_char_cursor#17 = (byte*) print_char_cursor#19 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy - //SEG1617 [869] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#2 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy + //SEG1617 [869] phi (byte*) print_char_cursor#17 = (byte*) print_char_cursor#19 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy + //SEG1618 [869] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#2 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy jmp b4 - //SEG1618 print_str_lines::@4 + //SEG1619 print_str_lines::@4 b4: - //SEG1619 [870] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) -- vbuaa=_deref_pbuz1 + //SEG1620 [870] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) -- vbuaa=_deref_pbuz1 ldy #0 lda (str),y - //SEG1620 [871] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#3 -- pbuz1=_inc_pbuz1 + //SEG1621 [871] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG1621 [872] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuaa_eq_vbuc1_then_la1 + //SEG1622 [872] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuaa_eq_vbuc1_then_la1 cmp #'@' beq b5_from_b4 jmp b8 - //SEG1622 print_str_lines::@8 + //SEG1623 print_str_lines::@8 b8: - //SEG1623 [873] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuaa + //SEG1624 [873] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG1624 [874] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#17 -- pbuz1=_inc_pbuz1 + //SEG1625 [874] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#17 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG1625 [875] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] + //SEG1626 [875] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] b5_from_b4: b5_from_b8: - //SEG1626 [875] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#17 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy + //SEG1627 [875] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#17 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy jmp b5 - //SEG1627 print_str_lines::@5 + //SEG1628 print_str_lines::@5 b5: - //SEG1628 [876] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG1629 [876] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b4_from_b5 - //SEG1629 [877] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] + //SEG1630 [877] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] b9_from_b5: jmp b9 - //SEG1630 print_str_lines::@9 + //SEG1631 print_str_lines::@9 b9: - //SEG1631 [878] call print_ln - //SEG1632 [880] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] + //SEG1632 [878] call print_ln + //SEG1633 [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#103 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + //SEG1634 [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 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#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 + //SEG1636 [866] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@9->print_str_lines::@1#0] -- register_copy + //SEG1637 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#103 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG1638 [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 } -//SEG1638 print_ln +//SEG1639 print_ln // Print a newline print_ln: { - //SEG1639 [881] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG1640 [881] 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: - //SEG1640 [881] phi (byte*) print_line_cursor#18 = (byte*) print_line_cursor#17 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG1641 [881] phi (byte*) print_line_cursor#18 = (byte*) print_line_cursor#17 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG1641 print_ln::@1 + //SEG1642 print_ln::@1 b1: - //SEG1642 [882] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1643 [882] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -23946,7 +23946,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG1643 [883] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG1644 [883] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -23956,39 +23956,39 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG1644 print_ln::@return + //SEG1645 print_ln::@return breturn: - //SEG1645 [884] return + //SEG1646 [884] return rts } -//SEG1646 print_cls +//SEG1647 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG1647 [886] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG1648 [886] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG1648 [886] phi (byte*) print_cls::sc#2 = (const byte*) menu::SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG1649 [886] phi (byte*) print_cls::sc#2 = (const byte*) menu::SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #menu.SCREEN sta sc+1 jmp b1 - //SEG1649 [886] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG1650 [886] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG1650 [886] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG1651 [886] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG1651 print_cls::@1 + //SEG1652 print_cls::@1 b1: - //SEG1652 [887] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG1653 [887] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG1653 [888] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG1654 [888] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG1654 [889] if((byte*) print_cls::sc#1!=(const byte*) menu::SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG1655 [889] if((byte*) print_cls::sc#1!=(const byte*) menu::SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>menu.SCREEN+$3e8 bne b1_from_b1 @@ -23996,18 +23996,18 @@ print_cls: { cmp #@54] -//SEG4 @54 -//SEG5 [2] call main -//SEG6 [3] phi from @54 to @end [phi:@54->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @54 [phi:@begin->@54] +//SEG5 @54 +//SEG6 [2] call main +//SEG7 [3] phi from @54 to @end [phi:@54->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE - //SEG13 [8] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] - //SEG14 main::@2 + //SEG14 [8] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] + //SEG15 main::@2 b2: - //SEG15 [9] call menu + //SEG16 [9] call menu jsr menu jmp b2 } -//SEG16 menu +//SEG17 menu menu: { .label SCREEN = $8000 .label CHARSET = $9800 .label c = 2 - //SEG17 [10] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG18 [10] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG18 [11] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG19 [11] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG19 [12] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG20 [12] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG20 [13] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG21 [13] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_CONTROL - //SEG21 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG22 [14] *((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 - //SEG22 [15] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG23 [15] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG23 [16] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG24 [16] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG24 [17] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG25 [17] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG25 [18] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG26 [18] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG26 [19] phi from menu to menu::@1 [phi:menu->menu::@1] - //SEG27 [19] phi (byte) menu::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:menu->menu::@1#0] -- vbuxx=vbuc1 + //SEG27 [19] phi from menu to menu::@1 [phi:menu->menu::@1] + //SEG28 [19] phi (byte) menu::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:menu->menu::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG28 [19] phi from menu::@1 to menu::@1 [phi:menu::@1->menu::@1] - //SEG29 [19] phi (byte) menu::i#2 = (byte) menu::i#1 [phi:menu::@1->menu::@1#0] -- register_copy - //SEG30 menu::@1 + //SEG29 [19] phi from menu::@1 to menu::@1 [phi:menu::@1->menu::@1] + //SEG30 [19] phi (byte) menu::i#2 = (byte) menu::i#1 [phi:menu::@1->menu::@1#0] -- register_copy + //SEG31 menu::@1 b1: - //SEG31 [20] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG32 [20] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG32 [21] (byte) menu::i#1 ← ++ (byte) menu::i#2 -- vbuxx=_inc_vbuxx + //SEG33 [21] (byte) menu::i#1 ← ++ (byte) menu::i#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [22] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [22] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG34 [23] phi from menu::@1 to menu::@2 [phi:menu::@1->menu::@2] - //SEG35 [23] phi (byte*) menu::c#2 = (const byte*) COLS#0 [phi:menu::@1->menu::@2#0] -- pbuz1=pbuc1 + //SEG35 [23] phi from menu::@1 to menu::@2 [phi:menu::@1->menu::@2] + //SEG36 [23] phi (byte*) menu::c#2 = (const byte*) COLS#0 [phi:menu::@1->menu::@2#0] -- pbuz1=pbuc1 lda #COLS sta c+1 - //SEG36 [23] phi from menu::@2 to menu::@2 [phi:menu::@2->menu::@2] - //SEG37 [23] phi (byte*) menu::c#2 = (byte*) menu::c#1 [phi:menu::@2->menu::@2#0] -- register_copy - //SEG38 menu::@2 + //SEG37 [23] phi from menu::@2 to menu::@2 [phi:menu::@2->menu::@2] + //SEG38 [23] phi (byte*) menu::c#2 = (byte*) menu::c#1 [phi:menu::@2->menu::@2#0] -- register_copy + //SEG39 menu::@2 b2: - //SEG39 [24] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN#0 -- _deref_pbuz1=vbuc1 + //SEG40 [24] *((byte*) menu::c#2) ← (const byte) LIGHT_GREEN#0 -- _deref_pbuz1=vbuc1 lda #LIGHT_GREEN ldy #0 sta (c),y - //SEG40 [25] (byte*) menu::c#1 ← ++ (byte*) menu::c#2 -- pbuz1=_inc_pbuz1 + //SEG41 [25] (byte*) menu::c#1 ← ++ (byte*) menu::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG41 [26] if((byte*) menu::c#1!=(const byte*) COLS#0+(word/signed word/dword/signed dword) 1000) goto menu::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG42 [26] if((byte*) menu::c#1!=(const byte*) COLS#0+(word/signed word/dword/signed dword) 1000) goto menu::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>COLS+$3e8 bne b2 lda c cmp #print_set_screen] + //SEG46 [29] call print_set_screen + //SEG47 [891] phi from menu::@19 to print_set_screen [phi:menu::@19->print_set_screen] jsr print_set_screen - //SEG47 [30] phi from menu::@19 to menu::@47 [phi:menu::@19->menu::@47] - //SEG48 menu::@47 - //SEG49 [31] call print_cls - //SEG50 [885] phi from menu::@47 to print_cls [phi:menu::@47->print_cls] + //SEG48 [30] phi from menu::@19 to menu::@47 [phi:menu::@19->menu::@47] + //SEG49 menu::@47 + //SEG50 [31] call print_cls + //SEG51 [885] phi from menu::@47 to print_cls [phi:menu::@47->print_cls] jsr print_cls - //SEG51 [32] phi from menu::@47 to menu::@48 [phi:menu::@47->menu::@48] - //SEG52 menu::@48 - //SEG53 [33] call print_str_lines - //SEG54 [865] phi from menu::@48 to print_str_lines [phi:menu::@48->print_str_lines] + //SEG52 [32] phi from menu::@47 to menu::@48 [phi:menu::@47->menu::@48] + //SEG53 menu::@48 + //SEG54 [33] call print_str_lines + //SEG55 [865] phi from menu::@48 to print_str_lines [phi:menu::@48->print_str_lines] jsr print_str_lines - //SEG55 [34] phi from menu::@48 menu::@71 to menu::@4 [phi:menu::@48/menu::@71->menu::@4] - //SEG56 menu::@4 + //SEG56 [34] phi from menu::@48 menu::@71 to menu::@4 [phi:menu::@48/menu::@71->menu::@4] + //SEG57 menu::@4 b4: - //SEG57 [35] call keyboard_key_pressed - //SEG58 [211] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] - //SEG59 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_1#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG58 [35] call keyboard_key_pressed + //SEG59 [211] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] + //SEG60 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_1#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_1 jsr keyboard_key_pressed - //SEG60 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 - //SEG61 menu::@50 - //SEG62 [37] (byte~) menu::$29 ← (byte) keyboard_key_pressed::return#2 - //SEG63 [38] if((byte~) menu::$29==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuaa_eq_0_then_la1 + //SEG61 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG62 menu::@50 + //SEG63 [37] (byte~) menu::$29 ← (byte) keyboard_key_pressed::return#2 + //SEG64 [38] if((byte~) menu::$29==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuaa_eq_0_then_la1 cmp #0 beq b6 - //SEG64 [39] phi from menu::@50 to menu::@22 [phi:menu::@50->menu::@22] - //SEG65 menu::@22 - //SEG66 [40] call mode_stdchar + //SEG65 [39] phi from menu::@50 to menu::@22 [phi:menu::@50->menu::@22] + //SEG66 menu::@22 + //SEG67 [40] call mode_stdchar jsr mode_stdchar - //SEG67 menu::@return + //SEG68 menu::@return breturn: - //SEG68 [41] return + //SEG69 [41] return rts - //SEG69 [42] phi from menu::@50 to menu::@6 [phi:menu::@50->menu::@6] - //SEG70 menu::@6 + //SEG70 [42] phi from menu::@50 to menu::@6 [phi:menu::@50->menu::@6] + //SEG71 menu::@6 b6: - //SEG71 [43] call keyboard_key_pressed - //SEG72 [211] phi from menu::@6 to keyboard_key_pressed [phi:menu::@6->keyboard_key_pressed] - //SEG73 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_2#0 [phi:menu::@6->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG72 [43] call keyboard_key_pressed + //SEG73 [211] phi from menu::@6 to keyboard_key_pressed [phi:menu::@6->keyboard_key_pressed] + //SEG74 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_2#0 [phi:menu::@6->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_2 jsr keyboard_key_pressed - //SEG74 [44] (byte) keyboard_key_pressed::return#24 ← (byte) keyboard_key_pressed::return#0 - //SEG75 menu::@51 - //SEG76 [45] (byte~) menu::$33 ← (byte) keyboard_key_pressed::return#24 - //SEG77 [46] if((byte~) menu::$33==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@7 -- vbuaa_eq_0_then_la1 + //SEG75 [44] (byte) keyboard_key_pressed::return#24 ← (byte) keyboard_key_pressed::return#0 + //SEG76 menu::@51 + //SEG77 [45] (byte~) menu::$33 ← (byte) keyboard_key_pressed::return#24 + //SEG78 [46] if((byte~) menu::$33==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG78 [47] phi from menu::@51 to menu::@24 [phi:menu::@51->menu::@24] - //SEG79 menu::@24 - //SEG80 [48] call mode_ecmchar + //SEG79 [47] phi from menu::@51 to menu::@24 [phi:menu::@51->menu::@24] + //SEG80 menu::@24 + //SEG81 [48] call mode_ecmchar jsr mode_ecmchar jmp breturn - //SEG81 [49] phi from menu::@51 to menu::@7 [phi:menu::@51->menu::@7] - //SEG82 menu::@7 + //SEG82 [49] phi from menu::@51 to menu::@7 [phi:menu::@51->menu::@7] + //SEG83 menu::@7 b7: - //SEG83 [50] call keyboard_key_pressed - //SEG84 [211] phi from menu::@7 to keyboard_key_pressed [phi:menu::@7->keyboard_key_pressed] - //SEG85 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_3#0 [phi:menu::@7->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG84 [50] call keyboard_key_pressed + //SEG85 [211] phi from menu::@7 to keyboard_key_pressed [phi:menu::@7->keyboard_key_pressed] + //SEG86 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_3#0 [phi:menu::@7->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_3 jsr keyboard_key_pressed - //SEG86 [51] (byte) keyboard_key_pressed::return#25 ← (byte) keyboard_key_pressed::return#0 - //SEG87 menu::@53 - //SEG88 [52] (byte~) menu::$37 ← (byte) keyboard_key_pressed::return#25 - //SEG89 [53] if((byte~) menu::$37==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@8 -- vbuaa_eq_0_then_la1 + //SEG87 [51] (byte) keyboard_key_pressed::return#25 ← (byte) keyboard_key_pressed::return#0 + //SEG88 menu::@53 + //SEG89 [52] (byte~) menu::$37 ← (byte) keyboard_key_pressed::return#25 + //SEG90 [53] if((byte~) menu::$37==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@8 -- vbuaa_eq_0_then_la1 cmp #0 beq b8 - //SEG90 [54] phi from menu::@53 to menu::@26 [phi:menu::@53->menu::@26] - //SEG91 menu::@26 - //SEG92 [55] call mode_mcchar + //SEG91 [54] phi from menu::@53 to menu::@26 [phi:menu::@53->menu::@26] + //SEG92 menu::@26 + //SEG93 [55] call mode_mcchar jsr mode_mcchar jmp breturn - //SEG93 [56] phi from menu::@53 to menu::@8 [phi:menu::@53->menu::@8] - //SEG94 menu::@8 + //SEG94 [56] phi from menu::@53 to menu::@8 [phi:menu::@53->menu::@8] + //SEG95 menu::@8 b8: - //SEG95 [57] call keyboard_key_pressed - //SEG96 [211] phi from menu::@8 to keyboard_key_pressed [phi:menu::@8->keyboard_key_pressed] - //SEG97 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_4#0 [phi:menu::@8->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG96 [57] call keyboard_key_pressed + //SEG97 [211] phi from menu::@8 to keyboard_key_pressed [phi:menu::@8->keyboard_key_pressed] + //SEG98 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_4#0 [phi:menu::@8->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_4 jsr keyboard_key_pressed - //SEG98 [58] (byte) keyboard_key_pressed::return#26 ← (byte) keyboard_key_pressed::return#0 - //SEG99 menu::@55 - //SEG100 [59] (byte~) menu::$41 ← (byte) keyboard_key_pressed::return#26 - //SEG101 [60] if((byte~) menu::$41==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@9 -- vbuaa_eq_0_then_la1 + //SEG99 [58] (byte) keyboard_key_pressed::return#26 ← (byte) keyboard_key_pressed::return#0 + //SEG100 menu::@55 + //SEG101 [59] (byte~) menu::$41 ← (byte) keyboard_key_pressed::return#26 + //SEG102 [60] if((byte~) menu::$41==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9 - //SEG102 [61] phi from menu::@55 to menu::@28 [phi:menu::@55->menu::@28] - //SEG103 menu::@28 - //SEG104 [62] call mode_stdbitmap + //SEG103 [61] phi from menu::@55 to menu::@28 [phi:menu::@55->menu::@28] + //SEG104 menu::@28 + //SEG105 [62] call mode_stdbitmap jsr mode_stdbitmap jmp breturn - //SEG105 [63] phi from menu::@55 to menu::@9 [phi:menu::@55->menu::@9] - //SEG106 menu::@9 + //SEG106 [63] phi from menu::@55 to menu::@9 [phi:menu::@55->menu::@9] + //SEG107 menu::@9 b9: - //SEG107 [64] call keyboard_key_pressed - //SEG108 [211] phi from menu::@9 to keyboard_key_pressed [phi:menu::@9->keyboard_key_pressed] - //SEG109 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_6#0 [phi:menu::@9->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG108 [64] call keyboard_key_pressed + //SEG109 [211] phi from menu::@9 to keyboard_key_pressed [phi:menu::@9->keyboard_key_pressed] + //SEG110 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_6#0 [phi:menu::@9->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_6 jsr keyboard_key_pressed - //SEG110 [65] (byte) keyboard_key_pressed::return#27 ← (byte) keyboard_key_pressed::return#0 - //SEG111 menu::@57 - //SEG112 [66] (byte~) menu::$45 ← (byte) keyboard_key_pressed::return#27 - //SEG113 [67] if((byte~) menu::$45==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@10 -- vbuaa_eq_0_then_la1 + //SEG111 [65] (byte) keyboard_key_pressed::return#27 ← (byte) keyboard_key_pressed::return#0 + //SEG112 menu::@57 + //SEG113 [66] (byte~) menu::$45 ← (byte) keyboard_key_pressed::return#27 + //SEG114 [67] if((byte~) menu::$45==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG114 [68] phi from menu::@57 to menu::@30 [phi:menu::@57->menu::@30] - //SEG115 menu::@30 - //SEG116 [69] call mode_hicolstdchar + //SEG115 [68] phi from menu::@57 to menu::@30 [phi:menu::@57->menu::@30] + //SEG116 menu::@30 + //SEG117 [69] call mode_hicolstdchar jsr mode_hicolstdchar jmp breturn - //SEG117 [70] phi from menu::@57 to menu::@10 [phi:menu::@57->menu::@10] - //SEG118 menu::@10 + //SEG118 [70] phi from menu::@57 to menu::@10 [phi:menu::@57->menu::@10] + //SEG119 menu::@10 b10: - //SEG119 [71] call keyboard_key_pressed - //SEG120 [211] phi from menu::@10 to keyboard_key_pressed [phi:menu::@10->keyboard_key_pressed] - //SEG121 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_7#0 [phi:menu::@10->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG120 [71] call keyboard_key_pressed + //SEG121 [211] phi from menu::@10 to keyboard_key_pressed [phi:menu::@10->keyboard_key_pressed] + //SEG122 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_7#0 [phi:menu::@10->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_7 jsr keyboard_key_pressed - //SEG122 [72] (byte) keyboard_key_pressed::return#28 ← (byte) keyboard_key_pressed::return#0 - //SEG123 menu::@59 - //SEG124 [73] (byte~) menu::$49 ← (byte) keyboard_key_pressed::return#28 - //SEG125 [74] if((byte~) menu::$49==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@11 -- vbuaa_eq_0_then_la1 + //SEG123 [72] (byte) keyboard_key_pressed::return#28 ← (byte) keyboard_key_pressed::return#0 + //SEG124 menu::@59 + //SEG125 [73] (byte~) menu::$49 ← (byte) keyboard_key_pressed::return#28 + //SEG126 [74] if((byte~) menu::$49==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 - //SEG126 [75] phi from menu::@59 to menu::@32 [phi:menu::@59->menu::@32] - //SEG127 menu::@32 - //SEG128 [76] call mode_hicolecmchar + //SEG127 [75] phi from menu::@59 to menu::@32 [phi:menu::@59->menu::@32] + //SEG128 menu::@32 + //SEG129 [76] call mode_hicolecmchar jsr mode_hicolecmchar jmp breturn - //SEG129 [77] phi from menu::@59 to menu::@11 [phi:menu::@59->menu::@11] - //SEG130 menu::@11 + //SEG130 [77] phi from menu::@59 to menu::@11 [phi:menu::@59->menu::@11] + //SEG131 menu::@11 b11: - //SEG131 [78] call keyboard_key_pressed - //SEG132 [211] phi from menu::@11 to keyboard_key_pressed [phi:menu::@11->keyboard_key_pressed] - //SEG133 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_8#0 [phi:menu::@11->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG132 [78] call keyboard_key_pressed + //SEG133 [211] phi from menu::@11 to keyboard_key_pressed [phi:menu::@11->keyboard_key_pressed] + //SEG134 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_8#0 [phi:menu::@11->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_8 jsr keyboard_key_pressed - //SEG134 [79] (byte) keyboard_key_pressed::return#29 ← (byte) keyboard_key_pressed::return#0 - //SEG135 menu::@61 - //SEG136 [80] (byte~) menu::$53 ← (byte) keyboard_key_pressed::return#29 - //SEG137 [81] if((byte~) menu::$53==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@12 -- vbuaa_eq_0_then_la1 + //SEG135 [79] (byte) keyboard_key_pressed::return#29 ← (byte) keyboard_key_pressed::return#0 + //SEG136 menu::@61 + //SEG137 [80] (byte~) menu::$53 ← (byte) keyboard_key_pressed::return#29 + //SEG138 [81] if((byte~) menu::$53==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@12 -- vbuaa_eq_0_then_la1 cmp #0 beq b12 - //SEG138 [82] phi from menu::@61 to menu::@34 [phi:menu::@61->menu::@34] - //SEG139 menu::@34 - //SEG140 [83] call mode_hicolmcchar + //SEG139 [82] phi from menu::@61 to menu::@34 [phi:menu::@61->menu::@34] + //SEG140 menu::@34 + //SEG141 [83] call mode_hicolmcchar jsr mode_hicolmcchar jmp breturn - //SEG141 [84] phi from menu::@61 to menu::@12 [phi:menu::@61->menu::@12] - //SEG142 menu::@12 + //SEG142 [84] phi from menu::@61 to menu::@12 [phi:menu::@61->menu::@12] + //SEG143 menu::@12 b12: - //SEG143 [85] call keyboard_key_pressed - //SEG144 [211] phi from menu::@12 to keyboard_key_pressed [phi:menu::@12->keyboard_key_pressed] - //SEG145 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_A#0 [phi:menu::@12->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG144 [85] call keyboard_key_pressed + //SEG145 [211] phi from menu::@12 to keyboard_key_pressed [phi:menu::@12->keyboard_key_pressed] + //SEG146 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_A#0 [phi:menu::@12->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_A jsr keyboard_key_pressed - //SEG146 [86] (byte) keyboard_key_pressed::return#30 ← (byte) keyboard_key_pressed::return#0 - //SEG147 menu::@63 - //SEG148 [87] (byte~) menu::$57 ← (byte) keyboard_key_pressed::return#30 - //SEG149 [88] if((byte~) menu::$57==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@13 -- vbuaa_eq_0_then_la1 + //SEG147 [86] (byte) keyboard_key_pressed::return#30 ← (byte) keyboard_key_pressed::return#0 + //SEG148 menu::@63 + //SEG149 [87] (byte~) menu::$57 ← (byte) keyboard_key_pressed::return#30 + //SEG150 [88] if((byte~) menu::$57==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@13 -- vbuaa_eq_0_then_la1 cmp #0 beq b13 - //SEG150 [89] phi from menu::@63 to menu::@36 [phi:menu::@63->menu::@36] - //SEG151 menu::@36 - //SEG152 [90] call mode_sixsfred2 + //SEG151 [89] phi from menu::@63 to menu::@36 [phi:menu::@63->menu::@36] + //SEG152 menu::@36 + //SEG153 [90] call mode_sixsfred2 jsr mode_sixsfred2 jmp breturn - //SEG153 [91] phi from menu::@63 to menu::@13 [phi:menu::@63->menu::@13] - //SEG154 menu::@13 + //SEG154 [91] phi from menu::@63 to menu::@13 [phi:menu::@63->menu::@13] + //SEG155 menu::@13 b13: - //SEG155 [92] call keyboard_key_pressed - //SEG156 [211] phi from menu::@13 to keyboard_key_pressed [phi:menu::@13->keyboard_key_pressed] - //SEG157 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:menu::@13->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG156 [92] call keyboard_key_pressed + //SEG157 [211] phi from menu::@13 to keyboard_key_pressed [phi:menu::@13->keyboard_key_pressed] + //SEG158 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:menu::@13->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_B jsr keyboard_key_pressed - //SEG158 [93] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 - //SEG159 menu::@65 - //SEG160 [94] (byte~) menu::$61 ← (byte) keyboard_key_pressed::return#10 - //SEG161 [95] if((byte~) menu::$61==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@14 -- vbuaa_eq_0_then_la1 + //SEG159 [93] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 + //SEG160 menu::@65 + //SEG161 [94] (byte~) menu::$61 ← (byte) keyboard_key_pressed::return#10 + //SEG162 [95] if((byte~) menu::$61==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@14 -- vbuaa_eq_0_then_la1 cmp #0 beq b14 - //SEG162 [96] phi from menu::@65 to menu::@38 [phi:menu::@65->menu::@38] - //SEG163 menu::@38 - //SEG164 [97] call mode_twoplanebitmap + //SEG163 [96] phi from menu::@65 to menu::@38 [phi:menu::@65->menu::@38] + //SEG164 menu::@38 + //SEG165 [97] call mode_twoplanebitmap jsr mode_twoplanebitmap jmp breturn - //SEG165 [98] phi from menu::@65 to menu::@14 [phi:menu::@65->menu::@14] - //SEG166 menu::@14 + //SEG166 [98] phi from menu::@65 to menu::@14 [phi:menu::@65->menu::@14] + //SEG167 menu::@14 b14: - //SEG167 [99] call keyboard_key_pressed - //SEG168 [211] phi from menu::@14 to keyboard_key_pressed [phi:menu::@14->keyboard_key_pressed] - //SEG169 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:menu::@14->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG168 [99] call keyboard_key_pressed + //SEG169 [211] phi from menu::@14 to keyboard_key_pressed [phi:menu::@14->keyboard_key_pressed] + //SEG170 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:menu::@14->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_C jsr keyboard_key_pressed - //SEG170 [100] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 - //SEG171 menu::@67 - //SEG172 [101] (byte~) menu::$65 ← (byte) keyboard_key_pressed::return#11 - //SEG173 [102] if((byte~) menu::$65==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@15 -- vbuaa_eq_0_then_la1 + //SEG171 [100] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 + //SEG172 menu::@67 + //SEG173 [101] (byte~) menu::$65 ← (byte) keyboard_key_pressed::return#11 + //SEG174 [102] if((byte~) menu::$65==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@15 -- vbuaa_eq_0_then_la1 cmp #0 beq b15 - //SEG174 [103] phi from menu::@67 to menu::@40 [phi:menu::@67->menu::@40] - //SEG175 menu::@40 - //SEG176 [104] call mode_sixsfred + //SEG175 [103] phi from menu::@67 to menu::@40 [phi:menu::@67->menu::@40] + //SEG176 menu::@40 + //SEG177 [104] call mode_sixsfred jsr mode_sixsfred jmp breturn - //SEG177 [105] phi from menu::@67 to menu::@15 [phi:menu::@67->menu::@15] - //SEG178 menu::@15 + //SEG178 [105] phi from menu::@67 to menu::@15 [phi:menu::@67->menu::@15] + //SEG179 menu::@15 b15: - //SEG179 [106] call keyboard_key_pressed - //SEG180 [211] phi from menu::@15 to keyboard_key_pressed [phi:menu::@15->keyboard_key_pressed] - //SEG181 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_D#0 [phi:menu::@15->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG180 [106] call keyboard_key_pressed + //SEG181 [211] phi from menu::@15 to keyboard_key_pressed [phi:menu::@15->keyboard_key_pressed] + //SEG182 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_D#0 [phi:menu::@15->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_D jsr keyboard_key_pressed - //SEG182 [107] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 - //SEG183 menu::@69 - //SEG184 [108] (byte~) menu::$69 ← (byte) keyboard_key_pressed::return#12 - //SEG185 [109] if((byte~) menu::$69==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@16 -- vbuaa_eq_0_then_la1 + //SEG183 [107] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 + //SEG184 menu::@69 + //SEG185 [108] (byte~) menu::$69 ← (byte) keyboard_key_pressed::return#12 + //SEG186 [109] if((byte~) menu::$69==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@16 -- vbuaa_eq_0_then_la1 cmp #0 beq b16 - //SEG186 [110] phi from menu::@69 to menu::@42 [phi:menu::@69->menu::@42] - //SEG187 menu::@42 - //SEG188 [111] call mode_8bpppixelcell + //SEG187 [110] phi from menu::@69 to menu::@42 [phi:menu::@69->menu::@42] + //SEG188 menu::@42 + //SEG189 [111] call mode_8bpppixelcell jsr mode_8bpppixelcell jmp breturn - //SEG189 [112] phi from menu::@69 to menu::@16 [phi:menu::@69->menu::@16] - //SEG190 menu::@16 + //SEG190 [112] phi from menu::@69 to menu::@16 [phi:menu::@69->menu::@16] + //SEG191 menu::@16 b16: - //SEG191 [113] call keyboard_key_pressed - //SEG192 [211] phi from menu::@16 to keyboard_key_pressed [phi:menu::@16->keyboard_key_pressed] - //SEG193 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_E#0 [phi:menu::@16->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG192 [113] call keyboard_key_pressed + //SEG193 [211] phi from menu::@16 to keyboard_key_pressed [phi:menu::@16->keyboard_key_pressed] + //SEG194 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_E#0 [phi:menu::@16->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_E jsr keyboard_key_pressed - //SEG194 [114] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 - //SEG195 menu::@71 - //SEG196 [115] (byte~) menu::$73 ← (byte) keyboard_key_pressed::return#13 - //SEG197 [116] if((byte~) menu::$73==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuaa_eq_0_then_la1 + //SEG195 [114] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 + //SEG196 menu::@71 + //SEG197 [115] (byte~) menu::$73 ← (byte) keyboard_key_pressed::return#13 + //SEG198 [116] if((byte~) menu::$73==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuaa_eq_0_then_la1 cmp #0 bne !b4+ jmp b4 !b4: - //SEG198 [117] phi from menu::@71 to menu::@44 [phi:menu::@71->menu::@44] - //SEG199 menu::@44 - //SEG200 [118] call mode_8bppchunkybmm + //SEG199 [117] phi from menu::@71 to menu::@44 [phi:menu::@71->menu::@44] + //SEG200 menu::@44 + //SEG201 [118] call mode_8bppchunkybmm jsr mode_8bppchunkybmm jmp breturn } -//SEG201 mode_8bppchunkybmm +//SEG202 mode_8bppchunkybmm // Chunky 8bpp Bitmap Mode (BMM = 0, ECM/MCM/HICOL/LINEAR/CHUNK/COLDIS = 1) // Resolution: 320x200 // Linear Adressing @@ -26901,116 +26900,116 @@ mode_8bppchunkybmm: { .label gfxb = 5 .label x = 2 .label y = 4 - //SEG202 [119] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 -- _deref_pbuc1=vbuc2 + //SEG203 [119] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF sta DTV_CONTROL - //SEG203 [120] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG204 [120] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG204 [121] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG205 [121] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG205 [122] *((const byte*) DTV_PLANEB_START_LO#0) ← <<(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG206 [122] *((const byte*) DTV_PLANEB_START_LO#0) ← <<(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #PLANEB&$ffff sta DTV_PLANEB_START_LO - //SEG206 [123] *((const byte*) DTV_PLANEB_START_MI#0) ← ><(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG207 [123] *((const byte*) DTV_PLANEB_START_MI#0) ← ><(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_MI - //SEG207 [124] *((const byte*) DTV_PLANEB_START_HI#0) ← <>(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG208 [124] *((const byte*) DTV_PLANEB_START_HI#0) ← <>(const dword) mode_8bppchunkybmm::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #PLANEB>>$10 sta DTV_PLANEB_START_HI - //SEG208 [125] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG209 [125] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta DTV_PLANEB_STEP - //SEG209 [126] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG210 [126] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG210 [127] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG211 [127] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_HI - //SEG211 [128] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG212 [128] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta BORDERCOL - //SEG212 [129] phi from mode_8bppchunkybmm to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1] - //SEG213 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1#0] -- vbuxx=vbuc1 + //SEG213 [129] phi from mode_8bppchunkybmm to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1] + //SEG214 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm->mode_8bppchunkybmm::@1#0] -- vbuxx=vbuc1 tax - //SEG214 [129] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1] - //SEG215 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte) mode_8bppchunkybmm::i#1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1#0] -- register_copy - //SEG216 mode_8bppchunkybmm::@1 + //SEG215 [129] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1] + //SEG216 [129] phi (byte) mode_8bppchunkybmm::i#2 = (byte) mode_8bppchunkybmm::i#1 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@1#0] -- register_copy + //SEG217 mode_8bppchunkybmm::@1 b1: - //SEG217 [130] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bppchunkybmm::i#2) ← (byte) mode_8bppchunkybmm::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG218 [130] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bppchunkybmm::i#2) ← (byte) mode_8bppchunkybmm::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG218 [131] (byte) mode_8bppchunkybmm::i#1 ← ++ (byte) mode_8bppchunkybmm::i#2 -- vbuxx=_inc_vbuxx + //SEG219 [131] (byte) mode_8bppchunkybmm::i#1 ← ++ (byte) mode_8bppchunkybmm::i#2 -- vbuxx=_inc_vbuxx inx - //SEG219 [132] if((byte) mode_8bppchunkybmm::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bppchunkybmm::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG220 [132] if((byte) mode_8bppchunkybmm::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bppchunkybmm::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG220 [133] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@5 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@5] - //SEG221 mode_8bppchunkybmm::@5 - //SEG222 [134] call dtvSetCpuBankSegment1 - //SEG223 [223] phi from mode_8bppchunkybmm::@5 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1] - //SEG224 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG221 [133] phi from mode_8bppchunkybmm::@1 to mode_8bppchunkybmm::@5 [phi:mode_8bppchunkybmm::@1->mode_8bppchunkybmm::@5] + //SEG222 mode_8bppchunkybmm::@5 + //SEG223 [134] call dtvSetCpuBankSegment1 + //SEG224 [223] phi from mode_8bppchunkybmm::@5 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1] + //SEG225 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #PLANEB/$4000 jsr dtvSetCpuBankSegment1 - //SEG225 [135] phi from mode_8bppchunkybmm::@5 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2] - //SEG226 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = ++((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#0] -- vbuxx=vbuc1 + //SEG226 [135] phi from mode_8bppchunkybmm::@5 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2] + //SEG227 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = ++((byte))(const dword) mode_8bppchunkybmm::PLANEB#0/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#0] -- vbuxx=vbuc1 ldx #PLANEB/$4000+1 - //SEG227 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#1] -- vbuz1=vbuc1 + //SEG228 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG228 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#2] -- pbuz1=pbuc1 + //SEG229 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@5->mode_8bppchunkybmm::@2#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 - //SEG229 [135] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2] - //SEG230 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#0] -- register_copy - //SEG231 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte) mode_8bppchunkybmm::y#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#1] -- register_copy - //SEG232 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#2] -- register_copy - //SEG233 mode_8bppchunkybmm::@2 + //SEG230 [135] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@2 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2] + //SEG231 [135] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#7 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#0] -- register_copy + //SEG232 [135] phi (byte) mode_8bppchunkybmm::y#6 = (byte) mode_8bppchunkybmm::y#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#1] -- register_copy + //SEG233 [135] phi (byte*) mode_8bppchunkybmm::gfxb#5 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@2#2] -- register_copy + //SEG234 mode_8bppchunkybmm::@2 b2: - //SEG234 [136] phi from mode_8bppchunkybmm::@2 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3] - //SEG235 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#7 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#0] -- register_copy - //SEG236 [136] phi (word) mode_8bppchunkybmm::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#1] -- vwuz1=vbuc1 + //SEG235 [136] phi from mode_8bppchunkybmm::@2 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3] + //SEG236 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#7 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#0] -- register_copy + //SEG237 [136] phi (word) mode_8bppchunkybmm::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#1] -- vwuz1=vbuc1 lda #<0 sta x sta x+1 - //SEG237 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#5 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#2] -- register_copy - //SEG238 [136] phi from mode_8bppchunkybmm::@4 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3] - //SEG239 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#0] -- register_copy - //SEG240 [136] phi (word) mode_8bppchunkybmm::x#2 = (word) mode_8bppchunkybmm::x#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#1] -- register_copy - //SEG241 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#2] -- register_copy - //SEG242 mode_8bppchunkybmm::@3 + //SEG238 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#5 [phi:mode_8bppchunkybmm::@2->mode_8bppchunkybmm::@3#2] -- register_copy + //SEG239 [136] phi from mode_8bppchunkybmm::@4 to mode_8bppchunkybmm::@3 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3] + //SEG240 [136] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#4 = (byte) mode_8bppchunkybmm::gfxbCpuBank#8 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#0] -- register_copy + //SEG241 [136] phi (word) mode_8bppchunkybmm::x#2 = (word) mode_8bppchunkybmm::x#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#1] -- register_copy + //SEG242 [136] phi (byte*) mode_8bppchunkybmm::gfxb#3 = (byte*) mode_8bppchunkybmm::gfxb#1 [phi:mode_8bppchunkybmm::@4->mode_8bppchunkybmm::@3#2] -- register_copy + //SEG243 mode_8bppchunkybmm::@3 b3: - //SEG243 [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word/dword/signed dword) 32768) goto mode_8bppchunkybmm::@4 -- pbuz1_neq_vwuc1_then_la1 + //SEG244 [137] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word/dword/signed dword) 32768) goto mode_8bppchunkybmm::@4 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b4 lda gfxb cmp #<$8000 bne b4 - //SEG244 mode_8bppchunkybmm::@6 - //SEG245 [138] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuaa=vbuxx + //SEG245 mode_8bppchunkybmm::@6 + //SEG246 [138] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuaa=vbuxx txa - //SEG246 [139] call dtvSetCpuBankSegment1 - //SEG247 [223] phi from mode_8bppchunkybmm::@6 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1] - //SEG248 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1#0] -- register_copy + //SEG247 [139] call dtvSetCpuBankSegment1 + //SEG248 [223] phi from mode_8bppchunkybmm::@6 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1] + //SEG249 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:mode_8bppchunkybmm::@6->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 - //SEG249 mode_8bppchunkybmm::@10 - //SEG250 [140] (byte) mode_8bppchunkybmm::gfxbCpuBank#2 ← ++ (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx + //SEG250 mode_8bppchunkybmm::@10 + //SEG251 [140] (byte) mode_8bppchunkybmm::gfxbCpuBank#2 ← ++ (byte) mode_8bppchunkybmm::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx inx - //SEG251 [141] phi from mode_8bppchunkybmm::@10 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4] - //SEG252 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#2 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#0] -- register_copy - //SEG253 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#1] -- pbuz1=pbuc1 + //SEG252 [141] phi from mode_8bppchunkybmm::@10 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4] + //SEG253 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#2 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#0] -- register_copy + //SEG254 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@10->mode_8bppchunkybmm::@4#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 - //SEG254 [141] phi from mode_8bppchunkybmm::@3 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4] - //SEG255 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#0] -- register_copy - //SEG256 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = (byte*) mode_8bppchunkybmm::gfxb#3 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#1] -- register_copy - //SEG257 mode_8bppchunkybmm::@4 + //SEG255 [141] phi from mode_8bppchunkybmm::@3 to mode_8bppchunkybmm::@4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4] + //SEG256 [141] phi (byte) mode_8bppchunkybmm::gfxbCpuBank#8 = (byte) mode_8bppchunkybmm::gfxbCpuBank#4 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#0] -- register_copy + //SEG257 [141] phi (byte*) mode_8bppchunkybmm::gfxb#4 = (byte*) mode_8bppchunkybmm::gfxb#3 [phi:mode_8bppchunkybmm::@3->mode_8bppchunkybmm::@4#1] -- register_copy + //SEG258 mode_8bppchunkybmm::@4 b4: - //SEG258 [142] (word~) mode_8bppchunkybmm::$23 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG259 [142] (word~) mode_8bppchunkybmm::$23 ← (word) mode_8bppchunkybmm::x#2 + (byte) mode_8bppchunkybmm::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -27018,303 +27017,303 @@ mode_8bppchunkybmm: { lda #0 adc x+1 sta _23+1 - //SEG259 [143] (byte) mode_8bppchunkybmm::c#0 ← ((byte)) (word~) mode_8bppchunkybmm::$23 -- vbuaa=_byte_vwuz1 + //SEG260 [143] (byte) mode_8bppchunkybmm::c#0 ← ((byte)) (word~) mode_8bppchunkybmm::$23 -- vbuaa=_byte_vwuz1 lda _23 - //SEG260 [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 -- _deref_pbuz1=vbuaa + //SEG261 [144] *((byte*) mode_8bppchunkybmm::gfxb#4) ← (byte) mode_8bppchunkybmm::c#0 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG261 [145] (byte*) mode_8bppchunkybmm::gfxb#1 ← ++ (byte*) mode_8bppchunkybmm::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG262 [145] (byte*) mode_8bppchunkybmm::gfxb#1 ← ++ (byte*) mode_8bppchunkybmm::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG262 [146] (word) mode_8bppchunkybmm::x#1 ← ++ (word) mode_8bppchunkybmm::x#2 -- vwuz1=_inc_vwuz1 + //SEG263 [146] (word) mode_8bppchunkybmm::x#1 ← ++ (word) mode_8bppchunkybmm::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG263 [147] if((word) mode_8bppchunkybmm::x#1!=(word/signed word/dword/signed dword) 320) goto mode_8bppchunkybmm::@3 -- vwuz1_neq_vwuc1_then_la1 + //SEG264 [147] if((word) mode_8bppchunkybmm::x#1!=(word/signed word/dword/signed dword) 320) goto mode_8bppchunkybmm::@3 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b3 lda x cmp #<$140 bne b3 - //SEG264 mode_8bppchunkybmm::@7 - //SEG265 [148] (byte) mode_8bppchunkybmm::y#1 ← ++ (byte) mode_8bppchunkybmm::y#6 -- vbuz1=_inc_vbuz1 + //SEG265 mode_8bppchunkybmm::@7 + //SEG266 [148] (byte) mode_8bppchunkybmm::y#1 ← ++ (byte) mode_8bppchunkybmm::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG266 [149] if((byte) mode_8bppchunkybmm::y#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_8bppchunkybmm::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG267 [149] if((byte) mode_8bppchunkybmm::y#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_8bppchunkybmm::@2 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$c8 bne b2 - //SEG267 [150] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@8] - //SEG268 mode_8bppchunkybmm::@8 - //SEG269 [151] call dtvSetCpuBankSegment1 - //SEG270 [223] phi from mode_8bppchunkybmm::@8 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1] - //SEG271 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG268 [150] phi from mode_8bppchunkybmm::@7 to mode_8bppchunkybmm::@8 [phi:mode_8bppchunkybmm::@7->mode_8bppchunkybmm::@8] + //SEG269 mode_8bppchunkybmm::@8 + //SEG270 [151] call dtvSetCpuBankSegment1 + //SEG271 [223] phi from mode_8bppchunkybmm::@8 to dtvSetCpuBankSegment1 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1] + //SEG272 [223] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:mode_8bppchunkybmm::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG272 [152] phi from mode_8bppchunkybmm::@8 to mode_8bppchunkybmm::@11 [phi:mode_8bppchunkybmm::@8->mode_8bppchunkybmm::@11] - //SEG273 mode_8bppchunkybmm::@11 - //SEG274 [153] call mode_ctrl - //SEG275 [155] phi from mode_8bppchunkybmm::@11 to mode_ctrl [phi:mode_8bppchunkybmm::@11->mode_ctrl] - //SEG276 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 [phi:mode_8bppchunkybmm::@11->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG273 [152] phi from mode_8bppchunkybmm::@8 to mode_8bppchunkybmm::@11 [phi:mode_8bppchunkybmm::@8->mode_8bppchunkybmm::@11] + //SEG274 mode_8bppchunkybmm::@11 + //SEG275 [153] call mode_ctrl + //SEG276 [155] phi from mode_8bppchunkybmm::@11 to mode_ctrl [phi:mode_8bppchunkybmm::@11->mode_ctrl] + //SEG277 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 [phi:mode_8bppchunkybmm::@11->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF sta dtv_control jsr mode_ctrl - //SEG277 mode_8bppchunkybmm::@return - //SEG278 [154] return + //SEG278 mode_8bppchunkybmm::@return + //SEG279 [154] return rts } -//SEG279 mode_ctrl +//SEG280 mode_ctrl // Allow the user to control the DTV graphics using different keys mode_ctrl: { - //SEG280 [156] phi from mode_ctrl mode_ctrl::@30 to mode_ctrl::@1 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1] - //SEG281 [156] phi (byte) dtv_control#114 = (byte) dtv_control#145 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1#0] -- register_copy - //SEG282 [156] phi from mode_ctrl::@14 to mode_ctrl::@1 [phi:mode_ctrl::@14->mode_ctrl::@1] - //SEG283 mode_ctrl::@1 - //SEG284 mode_ctrl::@4 + //SEG281 [156] phi from mode_ctrl mode_ctrl::@30 to mode_ctrl::@1 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1] + //SEG282 [156] phi (byte) dtv_control#114 = (byte) dtv_control#145 [phi:mode_ctrl/mode_ctrl::@30->mode_ctrl::@1#0] -- register_copy + //SEG283 [156] phi from mode_ctrl::@14 to mode_ctrl::@1 [phi:mode_ctrl::@14->mode_ctrl::@1] + //SEG284 mode_ctrl::@1 + //SEG285 mode_ctrl::@4 b4: - //SEG285 [157] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG286 [157] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG286 [158] phi from mode_ctrl::@4 to mode_ctrl::@6 [phi:mode_ctrl::@4->mode_ctrl::@6] - //SEG287 mode_ctrl::@6 - //SEG288 [159] call keyboard_key_pressed - //SEG289 [211] phi from mode_ctrl::@6 to keyboard_key_pressed [phi:mode_ctrl::@6->keyboard_key_pressed] - //SEG290 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_SPACE#0 [phi:mode_ctrl::@6->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG287 [158] phi from mode_ctrl::@4 to mode_ctrl::@6 [phi:mode_ctrl::@4->mode_ctrl::@6] + //SEG288 mode_ctrl::@6 + //SEG289 [159] call keyboard_key_pressed + //SEG290 [211] phi from mode_ctrl::@6 to keyboard_key_pressed [phi:mode_ctrl::@6->keyboard_key_pressed] + //SEG291 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_SPACE#0 [phi:mode_ctrl::@6->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_SPACE jsr keyboard_key_pressed - //SEG291 [160] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 - //SEG292 mode_ctrl::@32 - //SEG293 [161] (byte~) mode_ctrl::$1 ← (byte) keyboard_key_pressed::return#14 - //SEG294 [162] if((byte~) mode_ctrl::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@7 -- vbuaa_eq_0_then_la1 + //SEG292 [160] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 + //SEG293 mode_ctrl::@32 + //SEG294 [161] (byte~) mode_ctrl::$1 ← (byte) keyboard_key_pressed::return#14 + //SEG295 [162] if((byte~) mode_ctrl::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG295 mode_ctrl::@return - //SEG296 [163] return + //SEG296 mode_ctrl::@return + //SEG297 [163] return rts - //SEG297 mode_ctrl::@7 + //SEG298 mode_ctrl::@7 b7: - //SEG298 [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuxx=vbuz1 + //SEG299 [164] (byte) mode_ctrl::ctrl#0 ← (byte) dtv_control#114 -- vbuxx=vbuz1 ldx dtv_control - //SEG299 [165] call keyboard_key_pressed - //SEG300 [211] phi from mode_ctrl::@7 to keyboard_key_pressed [phi:mode_ctrl::@7->keyboard_key_pressed] - //SEG301 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_L#0 [phi:mode_ctrl::@7->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG300 [165] call keyboard_key_pressed + //SEG301 [211] phi from mode_ctrl::@7 to keyboard_key_pressed [phi:mode_ctrl::@7->keyboard_key_pressed] + //SEG302 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_L#0 [phi:mode_ctrl::@7->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_L jsr keyboard_key_pressed - //SEG302 [166] (byte) keyboard_key_pressed::return#15 ← (byte) keyboard_key_pressed::return#0 - //SEG303 mode_ctrl::@33 - //SEG304 [167] (byte~) mode_ctrl::$4 ← (byte) keyboard_key_pressed::return#15 - //SEG305 [168] if((byte~) mode_ctrl::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@8 -- vbuaa_eq_0_then_la1 + //SEG303 [166] (byte) keyboard_key_pressed::return#15 ← (byte) keyboard_key_pressed::return#0 + //SEG304 mode_ctrl::@33 + //SEG305 [167] (byte~) mode_ctrl::$4 ← (byte) keyboard_key_pressed::return#15 + //SEG306 [168] if((byte~) mode_ctrl::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@8 -- vbuaa_eq_0_then_la1 cmp #0 beq b8 - //SEG306 mode_ctrl::@23 - //SEG307 [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG307 mode_ctrl::@23 + //SEG308 [169] (byte) mode_ctrl::ctrl#1 ← (byte) mode_ctrl::ctrl#0 | (const byte) DTV_LINEAR#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_LINEAR tax - //SEG308 [170] phi from mode_ctrl::@23 mode_ctrl::@33 to mode_ctrl::@8 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8] - //SEG309 [170] phi (byte) mode_ctrl::ctrl#17 = (byte) mode_ctrl::ctrl#1 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8#0] -- register_copy - //SEG310 mode_ctrl::@8 + //SEG309 [170] phi from mode_ctrl::@23 mode_ctrl::@33 to mode_ctrl::@8 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8] + //SEG310 [170] phi (byte) mode_ctrl::ctrl#17 = (byte) mode_ctrl::ctrl#1 [phi:mode_ctrl::@23/mode_ctrl::@33->mode_ctrl::@8#0] -- register_copy + //SEG311 mode_ctrl::@8 b8: - //SEG311 [171] call keyboard_key_pressed - //SEG312 [211] phi from mode_ctrl::@8 to keyboard_key_pressed [phi:mode_ctrl::@8->keyboard_key_pressed] - //SEG313 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_H#0 [phi:mode_ctrl::@8->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG312 [171] call keyboard_key_pressed + //SEG313 [211] phi from mode_ctrl::@8 to keyboard_key_pressed [phi:mode_ctrl::@8->keyboard_key_pressed] + //SEG314 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_H#0 [phi:mode_ctrl::@8->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_H jsr keyboard_key_pressed - //SEG314 [172] (byte) keyboard_key_pressed::return#16 ← (byte) keyboard_key_pressed::return#0 - //SEG315 mode_ctrl::@34 - //SEG316 [173] (byte~) mode_ctrl::$8 ← (byte) keyboard_key_pressed::return#16 - //SEG317 [174] if((byte~) mode_ctrl::$8==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@9 -- vbuaa_eq_0_then_la1 + //SEG315 [172] (byte) keyboard_key_pressed::return#16 ← (byte) keyboard_key_pressed::return#0 + //SEG316 mode_ctrl::@34 + //SEG317 [173] (byte~) mode_ctrl::$8 ← (byte) keyboard_key_pressed::return#16 + //SEG318 [174] if((byte~) mode_ctrl::$8==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9 - //SEG318 mode_ctrl::@24 - //SEG319 [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG319 mode_ctrl::@24 + //SEG320 [175] (byte) mode_ctrl::ctrl#2 ← (byte) mode_ctrl::ctrl#17 | (const byte) DTV_HIGHCOLOR#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_HIGHCOLOR tax - //SEG320 [176] phi from mode_ctrl::@24 mode_ctrl::@34 to mode_ctrl::@9 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9] - //SEG321 [176] phi (byte) mode_ctrl::ctrl#10 = (byte) mode_ctrl::ctrl#2 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9#0] -- register_copy - //SEG322 mode_ctrl::@9 + //SEG321 [176] phi from mode_ctrl::@24 mode_ctrl::@34 to mode_ctrl::@9 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9] + //SEG322 [176] phi (byte) mode_ctrl::ctrl#10 = (byte) mode_ctrl::ctrl#2 [phi:mode_ctrl::@24/mode_ctrl::@34->mode_ctrl::@9#0] -- register_copy + //SEG323 mode_ctrl::@9 b9: - //SEG323 [177] call keyboard_key_pressed - //SEG324 [211] phi from mode_ctrl::@9 to keyboard_key_pressed [phi:mode_ctrl::@9->keyboard_key_pressed] - //SEG325 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_O#0 [phi:mode_ctrl::@9->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG324 [177] call keyboard_key_pressed + //SEG325 [211] phi from mode_ctrl::@9 to keyboard_key_pressed [phi:mode_ctrl::@9->keyboard_key_pressed] + //SEG326 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_O#0 [phi:mode_ctrl::@9->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_O jsr keyboard_key_pressed - //SEG326 [178] (byte) keyboard_key_pressed::return#17 ← (byte) keyboard_key_pressed::return#0 - //SEG327 mode_ctrl::@35 - //SEG328 [179] (byte~) mode_ctrl::$12 ← (byte) keyboard_key_pressed::return#17 - //SEG329 [180] if((byte~) mode_ctrl::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@10 -- vbuaa_eq_0_then_la1 + //SEG327 [178] (byte) keyboard_key_pressed::return#17 ← (byte) keyboard_key_pressed::return#0 + //SEG328 mode_ctrl::@35 + //SEG329 [179] (byte~) mode_ctrl::$12 ← (byte) keyboard_key_pressed::return#17 + //SEG330 [180] if((byte~) mode_ctrl::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG330 mode_ctrl::@25 - //SEG331 [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG331 mode_ctrl::@25 + //SEG332 [181] (byte) mode_ctrl::ctrl#3 ← (byte) mode_ctrl::ctrl#10 | (const byte) DTV_OVERSCAN#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_OVERSCAN tax - //SEG332 [182] phi from mode_ctrl::@25 mode_ctrl::@35 to mode_ctrl::@10 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10] - //SEG333 [182] phi (byte) mode_ctrl::ctrl#11 = (byte) mode_ctrl::ctrl#3 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10#0] -- register_copy - //SEG334 mode_ctrl::@10 + //SEG333 [182] phi from mode_ctrl::@25 mode_ctrl::@35 to mode_ctrl::@10 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10] + //SEG334 [182] phi (byte) mode_ctrl::ctrl#11 = (byte) mode_ctrl::ctrl#3 [phi:mode_ctrl::@25/mode_ctrl::@35->mode_ctrl::@10#0] -- register_copy + //SEG335 mode_ctrl::@10 b10: - //SEG335 [183] call keyboard_key_pressed - //SEG336 [211] phi from mode_ctrl::@10 to keyboard_key_pressed [phi:mode_ctrl::@10->keyboard_key_pressed] - //SEG337 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:mode_ctrl::@10->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG336 [183] call keyboard_key_pressed + //SEG337 [211] phi from mode_ctrl::@10 to keyboard_key_pressed [phi:mode_ctrl::@10->keyboard_key_pressed] + //SEG338 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_B#0 [phi:mode_ctrl::@10->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_B jsr keyboard_key_pressed - //SEG338 [184] (byte) keyboard_key_pressed::return#18 ← (byte) keyboard_key_pressed::return#0 - //SEG339 mode_ctrl::@36 - //SEG340 [185] (byte~) mode_ctrl::$16 ← (byte) keyboard_key_pressed::return#18 - //SEG341 [186] if((byte~) mode_ctrl::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@11 -- vbuaa_eq_0_then_la1 + //SEG339 [184] (byte) keyboard_key_pressed::return#18 ← (byte) keyboard_key_pressed::return#0 + //SEG340 mode_ctrl::@36 + //SEG341 [185] (byte~) mode_ctrl::$16 ← (byte) keyboard_key_pressed::return#18 + //SEG342 [186] if((byte~) mode_ctrl::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 - //SEG342 mode_ctrl::@26 - //SEG343 [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG343 mode_ctrl::@26 + //SEG344 [187] (byte) mode_ctrl::ctrl#4 ← (byte) mode_ctrl::ctrl#11 | (const byte) DTV_BORDER_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_BORDER_OFF tax - //SEG344 [188] phi from mode_ctrl::@26 mode_ctrl::@36 to mode_ctrl::@11 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11] - //SEG345 [188] phi (byte) mode_ctrl::ctrl#12 = (byte) mode_ctrl::ctrl#4 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11#0] -- register_copy - //SEG346 mode_ctrl::@11 + //SEG345 [188] phi from mode_ctrl::@26 mode_ctrl::@36 to mode_ctrl::@11 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11] + //SEG346 [188] phi (byte) mode_ctrl::ctrl#12 = (byte) mode_ctrl::ctrl#4 [phi:mode_ctrl::@26/mode_ctrl::@36->mode_ctrl::@11#0] -- register_copy + //SEG347 mode_ctrl::@11 b11: - //SEG347 [189] call keyboard_key_pressed - //SEG348 [211] phi from mode_ctrl::@11 to keyboard_key_pressed [phi:mode_ctrl::@11->keyboard_key_pressed] - //SEG349 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_U#0 [phi:mode_ctrl::@11->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG348 [189] call keyboard_key_pressed + //SEG349 [211] phi from mode_ctrl::@11 to keyboard_key_pressed [phi:mode_ctrl::@11->keyboard_key_pressed] + //SEG350 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_U#0 [phi:mode_ctrl::@11->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_U jsr keyboard_key_pressed - //SEG350 [190] (byte) keyboard_key_pressed::return#19 ← (byte) keyboard_key_pressed::return#0 - //SEG351 mode_ctrl::@37 - //SEG352 [191] (byte~) mode_ctrl::$20 ← (byte) keyboard_key_pressed::return#19 - //SEG353 [192] if((byte~) mode_ctrl::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@12 -- vbuaa_eq_0_then_la1 + //SEG351 [190] (byte) keyboard_key_pressed::return#19 ← (byte) keyboard_key_pressed::return#0 + //SEG352 mode_ctrl::@37 + //SEG353 [191] (byte~) mode_ctrl::$20 ← (byte) keyboard_key_pressed::return#19 + //SEG354 [192] if((byte~) mode_ctrl::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@12 -- vbuaa_eq_0_then_la1 cmp #0 beq b12 - //SEG354 mode_ctrl::@27 - //SEG355 [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG355 mode_ctrl::@27 + //SEG356 [193] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const byte) DTV_CHUNKY#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_CHUNKY tax - //SEG356 [194] phi from mode_ctrl::@27 mode_ctrl::@37 to mode_ctrl::@12 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12] - //SEG357 [194] phi (byte) mode_ctrl::ctrl#13 = (byte) mode_ctrl::ctrl#5 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12#0] -- register_copy - //SEG358 mode_ctrl::@12 + //SEG357 [194] phi from mode_ctrl::@27 mode_ctrl::@37 to mode_ctrl::@12 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12] + //SEG358 [194] phi (byte) mode_ctrl::ctrl#13 = (byte) mode_ctrl::ctrl#5 [phi:mode_ctrl::@27/mode_ctrl::@37->mode_ctrl::@12#0] -- register_copy + //SEG359 mode_ctrl::@12 b12: - //SEG359 [195] call keyboard_key_pressed - //SEG360 [211] phi from mode_ctrl::@12 to keyboard_key_pressed [phi:mode_ctrl::@12->keyboard_key_pressed] - //SEG361 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:mode_ctrl::@12->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG360 [195] call keyboard_key_pressed + //SEG361 [211] phi from mode_ctrl::@12 to keyboard_key_pressed [phi:mode_ctrl::@12->keyboard_key_pressed] + //SEG362 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_C#0 [phi:mode_ctrl::@12->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_C jsr keyboard_key_pressed - //SEG362 [196] (byte) keyboard_key_pressed::return#20 ← (byte) keyboard_key_pressed::return#0 - //SEG363 mode_ctrl::@38 - //SEG364 [197] (byte~) mode_ctrl::$24 ← (byte) keyboard_key_pressed::return#20 - //SEG365 [198] if((byte~) mode_ctrl::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@13 -- vbuaa_eq_0_then_la1 + //SEG363 [196] (byte) keyboard_key_pressed::return#20 ← (byte) keyboard_key_pressed::return#0 + //SEG364 mode_ctrl::@38 + //SEG365 [197] (byte~) mode_ctrl::$24 ← (byte) keyboard_key_pressed::return#20 + //SEG366 [198] if((byte~) mode_ctrl::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@13 -- vbuaa_eq_0_then_la1 cmp #0 beq b13 - //SEG366 mode_ctrl::@28 - //SEG367 [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG367 mode_ctrl::@28 + //SEG368 [199] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #DTV_COLORRAM_OFF tax - //SEG368 [200] phi from mode_ctrl::@28 mode_ctrl::@38 to mode_ctrl::@13 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13] - //SEG369 [200] phi (byte) mode_ctrl::ctrl#22 = (byte) mode_ctrl::ctrl#6 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13#0] -- register_copy - //SEG370 mode_ctrl::@13 + //SEG369 [200] phi from mode_ctrl::@28 mode_ctrl::@38 to mode_ctrl::@13 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13] + //SEG370 [200] phi (byte) mode_ctrl::ctrl#22 = (byte) mode_ctrl::ctrl#6 [phi:mode_ctrl::@28/mode_ctrl::@38->mode_ctrl::@13#0] -- register_copy + //SEG371 mode_ctrl::@13 b13: - //SEG371 [201] call keyboard_key_pressed - //SEG372 [211] phi from mode_ctrl::@13 to keyboard_key_pressed [phi:mode_ctrl::@13->keyboard_key_pressed] - //SEG373 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_0#0 [phi:mode_ctrl::@13->keyboard_key_pressed#0] -- vbuyy=vbuc1 + //SEG372 [201] call keyboard_key_pressed + //SEG373 [211] phi from mode_ctrl::@13 to keyboard_key_pressed [phi:mode_ctrl::@13->keyboard_key_pressed] + //SEG374 [211] phi (byte) keyboard_key_pressed::key#20 = (const byte) KEY_0#0 [phi:mode_ctrl::@13->keyboard_key_pressed#0] -- vbuyy=vbuc1 ldy #KEY_0 jsr keyboard_key_pressed - //SEG374 [202] (byte) keyboard_key_pressed::return#21 ← (byte) keyboard_key_pressed::return#0 - //SEG375 mode_ctrl::@39 - //SEG376 [203] (byte~) mode_ctrl::$28 ← (byte) keyboard_key_pressed::return#21 - //SEG377 [204] if((byte~) mode_ctrl::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@46 -- vbuaa_eq_0_then_la1 + //SEG375 [202] (byte) keyboard_key_pressed::return#21 ← (byte) keyboard_key_pressed::return#0 + //SEG376 mode_ctrl::@39 + //SEG377 [203] (byte~) mode_ctrl::$28 ← (byte) keyboard_key_pressed::return#21 + //SEG378 [204] if((byte~) mode_ctrl::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_ctrl::@46 -- vbuaa_eq_0_then_la1 cmp #0 beq b14 - //SEG378 [205] phi from mode_ctrl::@39 to mode_ctrl::@14 [phi:mode_ctrl::@39->mode_ctrl::@14] - //SEG379 [205] phi (byte) mode_ctrl::ctrl#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ctrl::@39->mode_ctrl::@14#0] -- vbuxx=vbuc1 + //SEG379 [205] phi from mode_ctrl::@39 to mode_ctrl::@14 [phi:mode_ctrl::@39->mode_ctrl::@14] + //SEG380 [205] phi (byte) mode_ctrl::ctrl#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ctrl::@39->mode_ctrl::@14#0] -- vbuxx=vbuc1 ldx #0 - //SEG380 mode_ctrl::@14 + //SEG381 mode_ctrl::@14 b14: - //SEG381 [206] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuxx_eq_vbuz1_then_la1 + //SEG382 [206] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -- vbuxx_eq_vbuz1_then_la1 cpx dtv_control beq b4 - //SEG382 mode_ctrl::@30 - //SEG383 [207] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuz1=vbuxx + //SEG383 mode_ctrl::@30 + //SEG384 [207] (byte) dtv_control#17 ← (byte) mode_ctrl::ctrl#14 -- vbuz1=vbuxx stx dtv_control - //SEG384 [208] *((const byte*) DTV_CONTROL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx + //SEG385 [208] *((const byte*) DTV_CONTROL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx stx DTV_CONTROL - //SEG385 [209] *((const byte*) BORDERCOL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx + //SEG386 [209] *((const byte*) BORDERCOL#0) ← (byte) mode_ctrl::ctrl#14 -- _deref_pbuc1=vbuxx stx BORDERCOL jmp b4 - //SEG386 [210] phi from mode_ctrl::@39 to mode_ctrl::@46 [phi:mode_ctrl::@39->mode_ctrl::@46] - //SEG387 mode_ctrl::@46 - //SEG388 [205] phi from mode_ctrl::@46 to mode_ctrl::@14 [phi:mode_ctrl::@46->mode_ctrl::@14] - //SEG389 [205] phi (byte) mode_ctrl::ctrl#14 = (byte) mode_ctrl::ctrl#22 [phi:mode_ctrl::@46->mode_ctrl::@14#0] -- register_copy + //SEG387 [210] phi from mode_ctrl::@39 to mode_ctrl::@46 [phi:mode_ctrl::@39->mode_ctrl::@46] + //SEG388 mode_ctrl::@46 + //SEG389 [205] phi from mode_ctrl::@46 to mode_ctrl::@14 [phi:mode_ctrl::@46->mode_ctrl::@14] + //SEG390 [205] phi (byte) mode_ctrl::ctrl#14 = (byte) mode_ctrl::ctrl#22 [phi:mode_ctrl::@46->mode_ctrl::@14#0] -- register_copy } -//SEG390 keyboard_key_pressed +//SEG391 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed keyboard_key_pressed: { .label colidx = 7 - //SEG391 [212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuyy_band_vbuc1 + //SEG392 [212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuyy_band_vbuc1 tya and #7 sta colidx - //SEG392 [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_ror_3 + //SEG393 [213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_ror_3 tya lsr lsr lsr - //SEG393 [214] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa + //SEG394 [214] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa tay - //SEG394 [215] call keyboard_matrix_read + //SEG395 [215] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG395 [216] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG396 keyboard_key_pressed::@2 - //SEG397 [217] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG398 [218] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 + //SEG396 [216] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG397 keyboard_key_pressed::@2 + //SEG398 [217] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG399 [218] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 ldy colidx and keyboard_matrix_col_bitmask,y - //SEG399 keyboard_key_pressed::@return - //SEG400 [219] return + //SEG400 keyboard_key_pressed::@return + //SEG401 [219] return rts } -//SEG401 keyboard_matrix_read +//SEG402 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG402 [220] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuyy + //SEG403 [220] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuyy lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG403 [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG404 [221] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG404 keyboard_matrix_read::@return - //SEG405 [222] return + //SEG405 keyboard_matrix_read::@return + //SEG406 [222] return rts } -//SEG406 dtvSetCpuBankSegment1 +//SEG407 dtvSetCpuBankSegment1 // Set the memory pointed to by CPU BANK 1 SEGMENT ($4000-$7fff) // This sets which actual memory is addressed when the CPU reads/writes to $4000-$7fff // The actual memory addressed will be $4000*cpuSegmentIdx dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG407 [224] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuaa + //SEG408 [224] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG408 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG409 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 - //SEG409 dtvSetCpuBankSegment1::@return - //SEG410 [226] return + //SEG410 dtvSetCpuBankSegment1::@return + //SEG411 [226] return rts } -//SEG411 mode_8bpppixelcell +//SEG412 mode_8bpppixelcell // 8bpp Pixel Cell Mode (BMM/COLDIS = 0, ECM/MCM/HICOL/LINEAR/CHUNK = 1) // Pixel Cell Adressing // CharData[8]: (PlaneA[21:0]) @@ -27338,248 +27337,248 @@ mode_8bpppixelcell: { .label col = 9 .label cr = 7 .label ch = 4 - //SEG412 [227] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 -- _deref_pbuc1=vbuc2 + //SEG413 [227] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY sta DTV_CONTROL - //SEG413 [228] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG414 [228] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG414 [229] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG415 [229] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG415 [230] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG416 [230] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG417 [231] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_8bpppixelcell::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG417 [232] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG418 [232] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG418 [233] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG419 [233] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG419 [234] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG420 [234] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG420 [235] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG421 [235] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEA_MODULO_HI - //SEG421 [236] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG422 [236] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG423 [237] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_8bpppixelcell::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG423 [238] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG424 [238] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG424 [239] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG425 [239] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_STEP - //SEG425 [240] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG426 [240] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_LO - //SEG426 [241] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG427 [241] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_HI - //SEG427 [242] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG428 [242] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta BORDERCOL - //SEG428 [243] phi from mode_8bpppixelcell to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1] - //SEG429 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1#0] -- vbuxx=vbuc1 + //SEG429 [243] phi from mode_8bpppixelcell to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1] + //SEG430 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell->mode_8bpppixelcell::@1#0] -- vbuxx=vbuc1 tax - //SEG430 [243] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1] - //SEG431 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte) mode_8bpppixelcell::i#1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1#0] -- register_copy - //SEG432 mode_8bpppixelcell::@1 + //SEG431 [243] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1] + //SEG432 [243] phi (byte) mode_8bpppixelcell::i#2 = (byte) mode_8bpppixelcell::i#1 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@1#0] -- register_copy + //SEG433 mode_8bpppixelcell::@1 b1: - //SEG433 [244] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bpppixelcell::i#2) ← (byte) mode_8bpppixelcell::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG434 [244] *((const byte*) DTV_PALETTE#0 + (byte) mode_8bpppixelcell::i#2) ← (byte) mode_8bpppixelcell::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG434 [245] (byte) mode_8bpppixelcell::i#1 ← ++ (byte) mode_8bpppixelcell::i#2 -- vbuxx=_inc_vbuxx + //SEG435 [245] (byte) mode_8bpppixelcell::i#1 ← ++ (byte) mode_8bpppixelcell::i#2 -- vbuxx=_inc_vbuxx inx - //SEG435 [246] if((byte) mode_8bpppixelcell::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bpppixelcell::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG436 [246] if((byte) mode_8bpppixelcell::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_8bpppixelcell::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG436 [247] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2] - //SEG437 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (const byte*) mode_8bpppixelcell::PLANEA#0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#0] -- pbuz1=pbuc1 + //SEG437 [247] phi from mode_8bpppixelcell::@1 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2] + //SEG438 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (const byte*) mode_8bpppixelcell::PLANEA#0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG438 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#1] -- vbuz1=vbuc1 + //SEG439 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@1->mode_8bpppixelcell::@2#1] -- vbuz1=vbuc1 lda #0 sta ay - //SEG439 [247] phi from mode_8bpppixelcell::@9 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2] - //SEG440 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#0] -- register_copy - //SEG441 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte) mode_8bpppixelcell::ay#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#1] -- register_copy - //SEG442 mode_8bpppixelcell::@2 + //SEG440 [247] phi from mode_8bpppixelcell::@9 to mode_8bpppixelcell::@2 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2] + //SEG441 [247] phi (byte*) mode_8bpppixelcell::gfxa#3 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#0] -- register_copy + //SEG442 [247] phi (byte) mode_8bpppixelcell::ay#4 = (byte) mode_8bpppixelcell::ay#1 [phi:mode_8bpppixelcell::@9->mode_8bpppixelcell::@2#1] -- register_copy + //SEG443 mode_8bpppixelcell::@2 b2: - //SEG443 [248] phi from mode_8bpppixelcell::@2 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3] - //SEG444 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#0] -- register_copy - //SEG445 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#1] -- vbuxx=vbuc1 + //SEG444 [248] phi from mode_8bpppixelcell::@2 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3] + //SEG445 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#3 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#0] -- register_copy + //SEG446 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@2->mode_8bpppixelcell::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG446 [248] phi from mode_8bpppixelcell::@3 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3] - //SEG447 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#0] -- register_copy - //SEG448 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte) mode_8bpppixelcell::ax#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#1] -- register_copy - //SEG449 mode_8bpppixelcell::@3 + //SEG447 [248] phi from mode_8bpppixelcell::@3 to mode_8bpppixelcell::@3 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3] + //SEG448 [248] phi (byte*) mode_8bpppixelcell::gfxa#2 = (byte*) mode_8bpppixelcell::gfxa#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#0] -- register_copy + //SEG449 [248] phi (byte) mode_8bpppixelcell::ax#2 = (byte) mode_8bpppixelcell::ax#1 [phi:mode_8bpppixelcell::@3->mode_8bpppixelcell::@3#1] -- register_copy + //SEG450 mode_8bpppixelcell::@3 b3: - //SEG450 [249] (byte~) mode_8bpppixelcell::$13 ← (byte) mode_8bpppixelcell::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG451 [249] (byte~) mode_8bpppixelcell::$13 ← (byte) mode_8bpppixelcell::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and ay - //SEG451 [250] (byte~) mode_8bpppixelcell::$14 ← (byte~) mode_8bpppixelcell::$13 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG452 [250] (byte~) mode_8bpppixelcell::$14 ← (byte~) mode_8bpppixelcell::$13 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _14 - //SEG452 [251] (byte~) mode_8bpppixelcell::$15 ← (byte) mode_8bpppixelcell::ax#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG453 [251] (byte~) mode_8bpppixelcell::$15 ← (byte) mode_8bpppixelcell::ax#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG453 [252] (byte~) mode_8bpppixelcell::$16 ← (byte~) mode_8bpppixelcell::$14 | (byte~) mode_8bpppixelcell::$15 -- vbuaa=vbuz1_bor_vbuaa + //SEG454 [252] (byte~) mode_8bpppixelcell::$16 ← (byte~) mode_8bpppixelcell::$14 | (byte~) mode_8bpppixelcell::$15 -- vbuaa=vbuz1_bor_vbuaa ora _14 - //SEG454 [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$16 -- _deref_pbuz1=vbuaa + //SEG455 [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$16 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxa),y - //SEG455 [254] (byte*) mode_8bpppixelcell::gfxa#1 ← ++ (byte*) mode_8bpppixelcell::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG456 [254] (byte*) mode_8bpppixelcell::gfxa#1 ← ++ (byte*) mode_8bpppixelcell::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG456 [255] (byte) mode_8bpppixelcell::ax#1 ← ++ (byte) mode_8bpppixelcell::ax#2 -- vbuxx=_inc_vbuxx + //SEG457 [255] (byte) mode_8bpppixelcell::ax#1 ← ++ (byte) mode_8bpppixelcell::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG457 [256] if((byte) mode_8bpppixelcell::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_8bpppixelcell::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG458 [256] if((byte) mode_8bpppixelcell::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_8bpppixelcell::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG458 mode_8bpppixelcell::@9 - //SEG459 [257] (byte) mode_8bpppixelcell::ay#1 ← ++ (byte) mode_8bpppixelcell::ay#4 -- vbuz1=_inc_vbuz1 + //SEG459 mode_8bpppixelcell::@9 + //SEG460 [257] (byte) mode_8bpppixelcell::ay#1 ← ++ (byte) mode_8bpppixelcell::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG460 [258] if((byte) mode_8bpppixelcell::ay#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_8bpppixelcell::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG461 [258] if((byte) mode_8bpppixelcell::ay#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_8bpppixelcell::@2 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$19 bne b2 - //SEG461 mode_8bpppixelcell::@10 - //SEG462 [259] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG462 mode_8bpppixelcell::@10 + //SEG463 [259] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG463 [260] phi from mode_8bpppixelcell::@10 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4] - //SEG464 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#0] -- vbuz1=vbuc1 + //SEG464 [260] phi from mode_8bpppixelcell::@10 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4] + //SEG465 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#0] -- vbuz1=vbuc1 lda #0 sta ch - //SEG465 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#1] -- vbuz1=vbuc1 + //SEG466 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#1] -- vbuz1=vbuc1 sta col - //SEG466 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (const byte*) mode_8bpppixelcell::PLANEB#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#2] -- pbuz1=pbuc1 + //SEG467 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (const byte*) mode_8bpppixelcell::PLANEB#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#2] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 - //SEG467 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) 53248 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1 + //SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) 53248 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1 lda #<$d000 sta chargen lda #>$d000 sta chargen+1 - //SEG468 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4] - //SEG469 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte) mode_8bpppixelcell::ch#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#0] -- register_copy - //SEG470 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#1] -- register_copy - //SEG471 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#2] -- register_copy - //SEG472 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#3] -- register_copy - //SEG473 mode_8bpppixelcell::@4 + //SEG469 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4] + //SEG470 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte) mode_8bpppixelcell::ch#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#0] -- register_copy + //SEG471 [260] phi (byte) mode_8bpppixelcell::col#7 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#1] -- register_copy + //SEG472 [260] phi (byte*) mode_8bpppixelcell::gfxb#7 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#2] -- register_copy + //SEG473 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#3] -- register_copy + //SEG474 mode_8bpppixelcell::@4 b4: - //SEG474 [261] phi from mode_8bpppixelcell::@4 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5] - //SEG475 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#0] -- vbuz1=vbuc1 + //SEG475 [261] phi from mode_8bpppixelcell::@4 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5] + //SEG476 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#0] -- vbuz1=vbuc1 lda #0 sta cr - //SEG476 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#1] -- register_copy - //SEG477 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#2] -- register_copy - //SEG478 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#4 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#3] -- register_copy - //SEG479 [261] phi from mode_8bpppixelcell::@12 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5] - //SEG480 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte) mode_8bpppixelcell::cr#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#0] -- register_copy - //SEG481 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#1] -- register_copy - //SEG482 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#2] -- register_copy - //SEG483 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#3] -- register_copy - //SEG484 mode_8bpppixelcell::@5 + //SEG477 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#1] -- register_copy + //SEG478 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#7 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#2] -- register_copy + //SEG479 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#4 [phi:mode_8bpppixelcell::@4->mode_8bpppixelcell::@5#3] -- register_copy + //SEG480 [261] phi from mode_8bpppixelcell::@12 to mode_8bpppixelcell::@5 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5] + //SEG481 [261] phi (byte) mode_8bpppixelcell::cr#6 = (byte) mode_8bpppixelcell::cr#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#0] -- register_copy + //SEG482 [261] phi (byte) mode_8bpppixelcell::col#5 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#1] -- register_copy + //SEG483 [261] phi (byte*) mode_8bpppixelcell::gfxb#5 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#2] -- register_copy + //SEG484 [261] phi (byte*) mode_8bpppixelcell::chargen#2 = (byte*) mode_8bpppixelcell::chargen#1 [phi:mode_8bpppixelcell::@12->mode_8bpppixelcell::@5#3] -- register_copy + //SEG485 mode_8bpppixelcell::@5 b5: - //SEG485 [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG486 [262] (byte) mode_8bpppixelcell::bits#0 ← *((byte*) mode_8bpppixelcell::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG486 [263] (byte*) mode_8bpppixelcell::chargen#1 ← ++ (byte*) mode_8bpppixelcell::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG487 [263] (byte*) mode_8bpppixelcell::chargen#1 ← ++ (byte*) mode_8bpppixelcell::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG487 [264] phi from mode_8bpppixelcell::@5 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6] - //SEG488 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#0] -- vbuxx=vbuc1 + //SEG488 [264] phi from mode_8bpppixelcell::@5 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6] + //SEG489 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG489 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#1] -- register_copy - //SEG490 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#2] -- register_copy - //SEG491 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#3] -- register_copy - //SEG492 [264] phi from mode_8bpppixelcell::@7 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6] - //SEG493 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte) mode_8bpppixelcell::cp#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#0] -- register_copy - //SEG494 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#1] -- register_copy - //SEG495 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#2] -- register_copy - //SEG496 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#3] -- register_copy - //SEG497 mode_8bpppixelcell::@6 + //SEG490 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#1] -- register_copy + //SEG491 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#5 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#2] -- register_copy + //SEG492 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#0 [phi:mode_8bpppixelcell::@5->mode_8bpppixelcell::@6#3] -- register_copy + //SEG493 [264] phi from mode_8bpppixelcell::@7 to mode_8bpppixelcell::@6 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6] + //SEG494 [264] phi (byte) mode_8bpppixelcell::cp#2 = (byte) mode_8bpppixelcell::cp#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#0] -- register_copy + //SEG495 [264] phi (byte) mode_8bpppixelcell::col#2 = (byte) mode_8bpppixelcell::col#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#1] -- register_copy + //SEG496 [264] phi (byte*) mode_8bpppixelcell::gfxb#2 = (byte*) mode_8bpppixelcell::gfxb#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#2] -- register_copy + //SEG497 [264] phi (byte) mode_8bpppixelcell::bits#2 = (byte) mode_8bpppixelcell::bits#1 [phi:mode_8bpppixelcell::@7->mode_8bpppixelcell::@6#3] -- register_copy + //SEG498 mode_8bpppixelcell::@6 b6: - //SEG498 [265] (byte~) mode_8bpppixelcell::$19 ← (byte) mode_8bpppixelcell::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG499 [265] (byte~) mode_8bpppixelcell::$19 ← (byte) mode_8bpppixelcell::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG499 [266] if((byte~) mode_8bpppixelcell::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@7 -- vbuaa_eq_0_then_la1 + //SEG500 [266] if((byte~) mode_8bpppixelcell::$19==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b8 - //SEG500 mode_8bpppixelcell::@11 - //SEG501 [267] (byte~) mode_8bpppixelcell::c#3 ← (byte) mode_8bpppixelcell::col#2 -- vbuaa=vbuz1 + //SEG501 mode_8bpppixelcell::@11 + //SEG502 [267] (byte~) mode_8bpppixelcell::c#3 ← (byte) mode_8bpppixelcell::col#2 -- vbuaa=vbuz1 lda col - //SEG502 [268] phi from mode_8bpppixelcell::@11 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7] - //SEG503 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte~) mode_8bpppixelcell::c#3 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7#0] -- register_copy + //SEG503 [268] phi from mode_8bpppixelcell::@11 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7] + //SEG504 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte~) mode_8bpppixelcell::c#3 [phi:mode_8bpppixelcell::@11->mode_8bpppixelcell::@7#0] -- register_copy jmp b7 - //SEG504 [268] phi from mode_8bpppixelcell::@6 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7] + //SEG505 [268] phi from mode_8bpppixelcell::@6 to mode_8bpppixelcell::@7 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7] b8: - //SEG505 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7#0] -- vbuaa=vbuc1 + //SEG506 [268] phi (byte) mode_8bpppixelcell::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_8bpppixelcell::@6->mode_8bpppixelcell::@7#0] -- vbuaa=vbuc1 lda #0 - //SEG506 mode_8bpppixelcell::@7 + //SEG507 mode_8bpppixelcell::@7 b7: - //SEG507 [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 -- _deref_pbuz1=vbuaa + //SEG508 [269] *((byte*) mode_8bpppixelcell::gfxb#2) ← (byte) mode_8bpppixelcell::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG508 [270] (byte*) mode_8bpppixelcell::gfxb#1 ← ++ (byte*) mode_8bpppixelcell::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG509 [270] (byte*) mode_8bpppixelcell::gfxb#1 ← ++ (byte*) mode_8bpppixelcell::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG509 [271] (byte) mode_8bpppixelcell::bits#1 ← (byte) mode_8bpppixelcell::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG510 [271] (byte) mode_8bpppixelcell::bits#1 ← (byte) mode_8bpppixelcell::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG510 [272] (byte) mode_8bpppixelcell::col#1 ← ++ (byte) mode_8bpppixelcell::col#2 -- vbuz1=_inc_vbuz1 + //SEG511 [272] (byte) mode_8bpppixelcell::col#1 ← ++ (byte) mode_8bpppixelcell::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG511 [273] (byte) mode_8bpppixelcell::cp#1 ← ++ (byte) mode_8bpppixelcell::cp#2 -- vbuxx=_inc_vbuxx + //SEG512 [273] (byte) mode_8bpppixelcell::cp#1 ← ++ (byte) mode_8bpppixelcell::cp#2 -- vbuxx=_inc_vbuxx inx - //SEG512 [274] if((byte) mode_8bpppixelcell::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG513 [274] if((byte) mode_8bpppixelcell::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6 - //SEG513 mode_8bpppixelcell::@12 - //SEG514 [275] (byte) mode_8bpppixelcell::cr#1 ← ++ (byte) mode_8bpppixelcell::cr#6 -- vbuz1=_inc_vbuz1 + //SEG514 mode_8bpppixelcell::@12 + //SEG515 [275] (byte) mode_8bpppixelcell::cr#1 ← ++ (byte) mode_8bpppixelcell::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG515 [276] if((byte) mode_8bpppixelcell::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG516 [276] if((byte) mode_8bpppixelcell::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto mode_8bpppixelcell::@5 -- vbuz1_neq_vbuc1_then_la1 lda cr cmp #8 bne b5 - //SEG516 mode_8bpppixelcell::@13 - //SEG517 [277] (byte) mode_8bpppixelcell::ch#1 ← ++ (byte) mode_8bpppixelcell::ch#8 -- vbuz1=_inc_vbuz1 + //SEG517 mode_8bpppixelcell::@13 + //SEG518 [277] (byte) mode_8bpppixelcell::ch#1 ← ++ (byte) mode_8bpppixelcell::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG518 [278] if((byte) mode_8bpppixelcell::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@4 -- vbuz1_neq_0_then_la1 + //SEG519 [278] if((byte) mode_8bpppixelcell::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_8bpppixelcell::@4 -- vbuz1_neq_0_then_la1 lda ch cmp #0 bne b4 - //SEG519 mode_8bpppixelcell::@14 - //SEG520 [279] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG520 mode_8bpppixelcell::@14 + //SEG521 [279] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG521 [280] call mode_ctrl - //SEG522 [155] phi from mode_8bpppixelcell::@14 to mode_ctrl [phi:mode_8bpppixelcell::@14->mode_ctrl] - //SEG523 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 [phi:mode_8bpppixelcell::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG522 [280] call mode_ctrl + //SEG523 [155] phi from mode_8bpppixelcell::@14 to mode_ctrl [phi:mode_8bpppixelcell::@14->mode_ctrl] + //SEG524 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 [phi:mode_8bpppixelcell::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY sta dtv_control jsr mode_ctrl - //SEG524 mode_8bpppixelcell::@return - //SEG525 [281] return + //SEG525 mode_8bpppixelcell::@return + //SEG526 [281] return rts } -//SEG526 mode_sixsfred +//SEG527 mode_sixsfred // Sixs Fred Mode - 8bpp Packed Bitmap - Generated from the two DTV linear graphics plane counters // Two Plane MultiColor Bitmap - 8bpp Packed Bitmap (CHUNK/COLDIS = 0, ECM/BMM/MCM/HICOL/LINEAR = 1) // Resolution: 160x200 @@ -27596,231 +27595,231 @@ mode_sixsfred: { .label ay = 4 .label gfxb = 2 .label by = 4 - //SEG527 [282] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG528 [282] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR sta DTV_CONTROL - //SEG528 [283] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG529 [283] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG529 [284] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG530 [284] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG530 [285] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG531 [285] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG532 [286] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_sixsfred::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG532 [287] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG533 [287] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG533 [288] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG534 [288] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG534 [289] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG535 [289] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG535 [290] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG536 [290] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEA_MODULO_HI - //SEG536 [291] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG537 [291] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG538 [292] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_sixsfred::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG538 [293] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG539 [293] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG539 [294] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG540 [294] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG540 [295] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG541 [295] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG541 [296] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG542 [296] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_HI - //SEG542 [297] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG543 [297] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG544 [298] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG544 [299] phi from mode_sixsfred to mode_sixsfred::@1 [phi:mode_sixsfred->mode_sixsfred::@1] - //SEG545 [299] phi (byte) mode_sixsfred::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred->mode_sixsfred::@1#0] -- vbuxx=vbuc1 + //SEG545 [299] phi from mode_sixsfred to mode_sixsfred::@1 [phi:mode_sixsfred->mode_sixsfred::@1] + //SEG546 [299] phi (byte) mode_sixsfred::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred->mode_sixsfred::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG546 [299] phi from mode_sixsfred::@1 to mode_sixsfred::@1 [phi:mode_sixsfred::@1->mode_sixsfred::@1] - //SEG547 [299] phi (byte) mode_sixsfred::i#2 = (byte) mode_sixsfred::i#1 [phi:mode_sixsfred::@1->mode_sixsfred::@1#0] -- register_copy - //SEG548 mode_sixsfred::@1 + //SEG547 [299] phi from mode_sixsfred::@1 to mode_sixsfred::@1 [phi:mode_sixsfred::@1->mode_sixsfred::@1] + //SEG548 [299] phi (byte) mode_sixsfred::i#2 = (byte) mode_sixsfred::i#1 [phi:mode_sixsfred::@1->mode_sixsfred::@1#0] -- register_copy + //SEG549 mode_sixsfred::@1 b1: - //SEG549 [300] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred::i#2) ← (byte) mode_sixsfred::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG550 [300] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred::i#2) ← (byte) mode_sixsfred::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG550 [301] (byte) mode_sixsfred::i#1 ← ++ (byte) mode_sixsfred::i#2 -- vbuxx=_inc_vbuxx + //SEG551 [301] (byte) mode_sixsfred::i#1 ← ++ (byte) mode_sixsfred::i#2 -- vbuxx=_inc_vbuxx inx - //SEG551 [302] if((byte) mode_sixsfred::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG552 [302] if((byte) mode_sixsfred::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG552 mode_sixsfred::@8 - //SEG553 [303] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG553 mode_sixsfred::@8 + //SEG554 [303] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG554 [304] phi from mode_sixsfred::@8 to mode_sixsfred::@2 [phi:mode_sixsfred::@8->mode_sixsfred::@2] - //SEG555 [304] phi (byte*) mode_sixsfred::col#3 = (const byte*) mode_sixsfred::COLORS#0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#0] -- pbuz1=pbuc1 + //SEG555 [304] phi from mode_sixsfred::@8 to mode_sixsfred::@2 [phi:mode_sixsfred::@8->mode_sixsfred::@2] + //SEG556 [304] phi (byte*) mode_sixsfred::col#3 = (const byte*) mode_sixsfred::COLORS#0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG556 [304] phi (byte) mode_sixsfred::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#1] -- vbuz1=vbuc1 + //SEG557 [304] phi (byte) mode_sixsfred::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@8->mode_sixsfred::@2#1] -- vbuz1=vbuc1 lda #0 sta cy - //SEG557 [304] phi from mode_sixsfred::@9 to mode_sixsfred::@2 [phi:mode_sixsfred::@9->mode_sixsfred::@2] - //SEG558 [304] phi (byte*) mode_sixsfred::col#3 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#0] -- register_copy - //SEG559 [304] phi (byte) mode_sixsfred::cy#4 = (byte) mode_sixsfred::cy#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#1] -- register_copy - //SEG560 mode_sixsfred::@2 + //SEG558 [304] phi from mode_sixsfred::@9 to mode_sixsfred::@2 [phi:mode_sixsfred::@9->mode_sixsfred::@2] + //SEG559 [304] phi (byte*) mode_sixsfred::col#3 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#0] -- register_copy + //SEG560 [304] phi (byte) mode_sixsfred::cy#4 = (byte) mode_sixsfred::cy#1 [phi:mode_sixsfred::@9->mode_sixsfred::@2#1] -- register_copy + //SEG561 mode_sixsfred::@2 b2: - //SEG561 [305] phi from mode_sixsfred::@2 to mode_sixsfred::@3 [phi:mode_sixsfred::@2->mode_sixsfred::@3] - //SEG562 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#3 [phi:mode_sixsfred::@2->mode_sixsfred::@3#0] -- register_copy - //SEG563 [305] phi (byte) mode_sixsfred::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@2->mode_sixsfred::@3#1] -- vbuxx=vbuc1 + //SEG562 [305] phi from mode_sixsfred::@2 to mode_sixsfred::@3 [phi:mode_sixsfred::@2->mode_sixsfred::@3] + //SEG563 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#3 [phi:mode_sixsfred::@2->mode_sixsfred::@3#0] -- register_copy + //SEG564 [305] phi (byte) mode_sixsfred::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@2->mode_sixsfred::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG564 [305] phi from mode_sixsfred::@3 to mode_sixsfred::@3 [phi:mode_sixsfred::@3->mode_sixsfred::@3] - //SEG565 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#0] -- register_copy - //SEG566 [305] phi (byte) mode_sixsfred::cx#2 = (byte) mode_sixsfred::cx#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#1] -- register_copy - //SEG567 mode_sixsfred::@3 + //SEG565 [305] phi from mode_sixsfred::@3 to mode_sixsfred::@3 [phi:mode_sixsfred::@3->mode_sixsfred::@3] + //SEG566 [305] phi (byte*) mode_sixsfred::col#2 = (byte*) mode_sixsfred::col#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#0] -- register_copy + //SEG567 [305] phi (byte) mode_sixsfred::cx#2 = (byte) mode_sixsfred::cx#1 [phi:mode_sixsfred::@3->mode_sixsfred::@3#1] -- register_copy + //SEG568 mode_sixsfred::@3 b3: - //SEG568 [306] (byte~) mode_sixsfred::$16 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG569 [306] (byte~) mode_sixsfred::$16 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG569 [307] (byte~) mode_sixsfred::$17 ← (byte~) mode_sixsfred::$16 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG570 [307] (byte~) mode_sixsfred::$17 ← (byte~) mode_sixsfred::$16 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG570 [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$17 -- _deref_pbuz1=vbuaa + //SEG571 [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$17 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG571 [309] (byte*) mode_sixsfred::col#1 ← ++ (byte*) mode_sixsfred::col#2 -- pbuz1=_inc_pbuz1 + //SEG572 [309] (byte*) mode_sixsfred::col#1 ← ++ (byte*) mode_sixsfred::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG572 [310] (byte) mode_sixsfred::cx#1 ← ++ (byte) mode_sixsfred::cx#2 -- vbuxx=_inc_vbuxx + //SEG573 [310] (byte) mode_sixsfred::cx#1 ← ++ (byte) mode_sixsfred::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG573 [311] if((byte) mode_sixsfred::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG574 [311] if((byte) mode_sixsfred::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG574 mode_sixsfred::@9 - //SEG575 [312] (byte) mode_sixsfred::cy#1 ← ++ (byte) mode_sixsfred::cy#4 -- vbuz1=_inc_vbuz1 + //SEG575 mode_sixsfred::@9 + //SEG576 [312] (byte) mode_sixsfred::cy#1 ← ++ (byte) mode_sixsfred::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG576 [313] if((byte) mode_sixsfred::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG577 [313] if((byte) mode_sixsfred::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG577 [314] phi from mode_sixsfred::@9 to mode_sixsfred::@4 [phi:mode_sixsfred::@9->mode_sixsfred::@4] - //SEG578 [314] phi (byte*) mode_sixsfred::gfxa#3 = (const byte*) mode_sixsfred::PLANEA#0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#0] -- pbuz1=pbuc1 + //SEG578 [314] phi from mode_sixsfred::@9 to mode_sixsfred::@4 [phi:mode_sixsfred::@9->mode_sixsfred::@4] + //SEG579 [314] phi (byte*) mode_sixsfred::gfxa#3 = (const byte*) mode_sixsfred::PLANEA#0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG579 [314] phi (byte) mode_sixsfred::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#1] -- vbuz1=vbuc1 + //SEG580 [314] phi (byte) mode_sixsfred::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@9->mode_sixsfred::@4#1] -- vbuz1=vbuc1 lda #0 sta ay - //SEG580 [314] phi from mode_sixsfred::@11 to mode_sixsfred::@4 [phi:mode_sixsfred::@11->mode_sixsfred::@4] - //SEG581 [314] phi (byte*) mode_sixsfred::gfxa#3 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#0] -- register_copy - //SEG582 [314] phi (byte) mode_sixsfred::ay#4 = (byte) mode_sixsfred::ay#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#1] -- register_copy - //SEG583 mode_sixsfred::@4 + //SEG581 [314] phi from mode_sixsfred::@11 to mode_sixsfred::@4 [phi:mode_sixsfred::@11->mode_sixsfred::@4] + //SEG582 [314] phi (byte*) mode_sixsfred::gfxa#3 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#0] -- register_copy + //SEG583 [314] phi (byte) mode_sixsfred::ay#4 = (byte) mode_sixsfred::ay#1 [phi:mode_sixsfred::@11->mode_sixsfred::@4#1] -- register_copy + //SEG584 mode_sixsfred::@4 b4: - //SEG584 [315] phi from mode_sixsfred::@4 to mode_sixsfred::@5 [phi:mode_sixsfred::@4->mode_sixsfred::@5] - //SEG585 [315] phi (byte) mode_sixsfred::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@4->mode_sixsfred::@5#0] -- vbuxx=vbuc1 + //SEG585 [315] phi from mode_sixsfred::@4 to mode_sixsfred::@5 [phi:mode_sixsfred::@4->mode_sixsfred::@5] + //SEG586 [315] phi (byte) mode_sixsfred::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@4->mode_sixsfred::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG586 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#3 [phi:mode_sixsfred::@4->mode_sixsfred::@5#1] -- register_copy - //SEG587 [315] phi from mode_sixsfred::@5 to mode_sixsfred::@5 [phi:mode_sixsfred::@5->mode_sixsfred::@5] - //SEG588 [315] phi (byte) mode_sixsfred::ax#2 = (byte) mode_sixsfred::ax#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#0] -- register_copy - //SEG589 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#1] -- register_copy - //SEG590 mode_sixsfred::@5 + //SEG587 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#3 [phi:mode_sixsfred::@4->mode_sixsfred::@5#1] -- register_copy + //SEG588 [315] phi from mode_sixsfred::@5 to mode_sixsfred::@5 [phi:mode_sixsfred::@5->mode_sixsfred::@5] + //SEG589 [315] phi (byte) mode_sixsfred::ax#2 = (byte) mode_sixsfred::ax#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#0] -- register_copy + //SEG590 [315] phi (byte*) mode_sixsfred::gfxa#2 = (byte*) mode_sixsfred::gfxa#1 [phi:mode_sixsfred::@5->mode_sixsfred::@5#1] -- register_copy + //SEG591 mode_sixsfred::@5 b5: - //SEG591 [316] (byte~) mode_sixsfred::$20 ← (byte) mode_sixsfred::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 + //SEG592 [316] (byte~) mode_sixsfred::$20 ← (byte) mode_sixsfred::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 lda ay lsr - //SEG592 [317] (byte) mode_sixsfred::row#0 ← (byte~) mode_sixsfred::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 + //SEG593 [317] (byte) mode_sixsfred::row#0 ← (byte~) mode_sixsfred::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 and #3 - //SEG593 [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte[]) mode_sixsfred::row_bitmask#0 + (byte) mode_sixsfred::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + //SEG594 [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte[]) mode_sixsfred::row_bitmask#0 + (byte) mode_sixsfred::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa tay lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG594 [319] (byte*) mode_sixsfred::gfxa#1 ← ++ (byte*) mode_sixsfred::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG595 [319] (byte*) mode_sixsfred::gfxa#1 ← ++ (byte*) mode_sixsfred::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG595 [320] (byte) mode_sixsfred::ax#1 ← ++ (byte) mode_sixsfred::ax#2 -- vbuxx=_inc_vbuxx + //SEG596 [320] (byte) mode_sixsfred::ax#1 ← ++ (byte) mode_sixsfred::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG596 [321] if((byte) mode_sixsfred::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG597 [321] if((byte) mode_sixsfred::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b5 - //SEG597 mode_sixsfred::@11 - //SEG598 [322] (byte) mode_sixsfred::ay#1 ← ++ (byte) mode_sixsfred::ay#4 -- vbuz1=_inc_vbuz1 + //SEG598 mode_sixsfred::@11 + //SEG599 [322] (byte) mode_sixsfred::ay#1 ← ++ (byte) mode_sixsfred::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG599 [323] if((byte) mode_sixsfred::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG600 [323] if((byte) mode_sixsfred::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4 - //SEG600 [324] phi from mode_sixsfred::@11 to mode_sixsfred::@6 [phi:mode_sixsfred::@11->mode_sixsfred::@6] - //SEG601 [324] phi (byte) mode_sixsfred::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#0] -- vbuz1=vbuc1 + //SEG601 [324] phi from mode_sixsfred::@11 to mode_sixsfred::@6 [phi:mode_sixsfred::@11->mode_sixsfred::@6] + //SEG602 [324] phi (byte) mode_sixsfred::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG602 [324] phi (byte*) mode_sixsfred::gfxb#3 = (const byte*) mode_sixsfred::PLANEB#0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#1] -- pbuz1=pbuc1 + //SEG603 [324] phi (byte*) mode_sixsfred::gfxb#3 = (const byte*) mode_sixsfred::PLANEB#0 [phi:mode_sixsfred::@11->mode_sixsfred::@6#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 - //SEG603 [324] phi from mode_sixsfred::@13 to mode_sixsfred::@6 [phi:mode_sixsfred::@13->mode_sixsfred::@6] - //SEG604 [324] phi (byte) mode_sixsfred::by#4 = (byte) mode_sixsfred::by#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#0] -- register_copy - //SEG605 [324] phi (byte*) mode_sixsfred::gfxb#3 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#1] -- register_copy - //SEG606 mode_sixsfred::@6 + //SEG604 [324] phi from mode_sixsfred::@13 to mode_sixsfred::@6 [phi:mode_sixsfred::@13->mode_sixsfred::@6] + //SEG605 [324] phi (byte) mode_sixsfred::by#4 = (byte) mode_sixsfred::by#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#0] -- register_copy + //SEG606 [324] phi (byte*) mode_sixsfred::gfxb#3 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@13->mode_sixsfred::@6#1] -- register_copy + //SEG607 mode_sixsfred::@6 b6: - //SEG607 [325] phi from mode_sixsfred::@6 to mode_sixsfred::@7 [phi:mode_sixsfred::@6->mode_sixsfred::@7] - //SEG608 [325] phi (byte) mode_sixsfred::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@6->mode_sixsfred::@7#0] -- vbuxx=vbuc1 + //SEG608 [325] phi from mode_sixsfred::@6 to mode_sixsfred::@7 [phi:mode_sixsfred::@6->mode_sixsfred::@7] + //SEG609 [325] phi (byte) mode_sixsfred::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred::@6->mode_sixsfred::@7#0] -- vbuxx=vbuc1 ldx #0 - //SEG609 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#3 [phi:mode_sixsfred::@6->mode_sixsfred::@7#1] -- register_copy - //SEG610 [325] phi from mode_sixsfred::@7 to mode_sixsfred::@7 [phi:mode_sixsfred::@7->mode_sixsfred::@7] - //SEG611 [325] phi (byte) mode_sixsfred::bx#2 = (byte) mode_sixsfred::bx#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#0] -- register_copy - //SEG612 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#1] -- register_copy - //SEG613 mode_sixsfred::@7 + //SEG610 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#3 [phi:mode_sixsfred::@6->mode_sixsfred::@7#1] -- register_copy + //SEG611 [325] phi from mode_sixsfred::@7 to mode_sixsfred::@7 [phi:mode_sixsfred::@7->mode_sixsfred::@7] + //SEG612 [325] phi (byte) mode_sixsfred::bx#2 = (byte) mode_sixsfred::bx#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#0] -- register_copy + //SEG613 [325] phi (byte*) mode_sixsfred::gfxb#2 = (byte*) mode_sixsfred::gfxb#1 [phi:mode_sixsfred::@7->mode_sixsfred::@7#1] -- register_copy + //SEG614 mode_sixsfred::@7 b7: - //SEG614 [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 + //SEG615 [326] *((byte*) mode_sixsfred::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 lda #$1b ldy #0 sta (gfxb),y - //SEG615 [327] (byte*) mode_sixsfred::gfxb#1 ← ++ (byte*) mode_sixsfred::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG616 [327] (byte*) mode_sixsfred::gfxb#1 ← ++ (byte*) mode_sixsfred::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG616 [328] (byte) mode_sixsfred::bx#1 ← ++ (byte) mode_sixsfred::bx#2 -- vbuxx=_inc_vbuxx + //SEG617 [328] (byte) mode_sixsfred::bx#1 ← ++ (byte) mode_sixsfred::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG617 [329] if((byte) mode_sixsfred::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG618 [329] if((byte) mode_sixsfred::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b7 - //SEG618 mode_sixsfred::@13 - //SEG619 [330] (byte) mode_sixsfred::by#1 ← ++ (byte) mode_sixsfred::by#4 -- vbuz1=_inc_vbuz1 + //SEG619 mode_sixsfred::@13 + //SEG620 [330] (byte) mode_sixsfred::by#1 ← ++ (byte) mode_sixsfred::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG620 [331] if((byte) mode_sixsfred::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG621 [331] if((byte) mode_sixsfred::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred::@6 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b6 - //SEG621 [332] phi from mode_sixsfred::@13 to mode_sixsfred::@14 [phi:mode_sixsfred::@13->mode_sixsfred::@14] - //SEG622 mode_sixsfred::@14 - //SEG623 [333] call mode_ctrl - //SEG624 [155] phi from mode_sixsfred::@14 to mode_ctrl [phi:mode_sixsfred::@14->mode_ctrl] - //SEG625 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_sixsfred::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG622 [332] phi from mode_sixsfred::@13 to mode_sixsfred::@14 [phi:mode_sixsfred::@13->mode_sixsfred::@14] + //SEG623 mode_sixsfred::@14 + //SEG624 [333] call mode_ctrl + //SEG625 [155] phi from mode_sixsfred::@14 to mode_ctrl [phi:mode_sixsfred::@14->mode_ctrl] + //SEG626 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_sixsfred::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR sta dtv_control jsr mode_ctrl - //SEG626 mode_sixsfred::@return - //SEG627 [334] return + //SEG627 mode_sixsfred::@return + //SEG628 [334] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG628 mode_twoplanebitmap +//SEG629 mode_twoplanebitmap // Two Plane Bitmap - generated from the two DTV linear graphics plane counters // Two Plane Bitmap Mode (CHUNK/COLDIS/MCM = 0, ECM/BMM/HICOL/LINEAR = 1) // Resolution: 320x200 @@ -27841,261 +27840,261 @@ mode_twoplanebitmap: { .label ay = 4 .label gfxb = 2 .label by = 4 - //SEG629 [335] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG630 [335] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR|DTV_LINEAR sta DTV_CONTROL - //SEG630 [336] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG631 [336] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG631 [337] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG632 [337] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG632 [338] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG633 [338] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG634 [339] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_twoplanebitmap::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG634 [340] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG635 [340] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG635 [341] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG636 [341] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG636 [342] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG637 [342] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG637 [343] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG638 [343] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEA_MODULO_HI - //SEG638 [344] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG639 [344] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG640 [345] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_twoplanebitmap::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG640 [346] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG641 [346] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG641 [347] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG642 [347] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG642 [348] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG643 [348] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG643 [349] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG644 [349] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_HI - //SEG644 [350] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG645 [350] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG646 [351] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_twoplanebitmap::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG646 [352] phi from mode_twoplanebitmap to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1] - //SEG647 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1#0] -- vbuxx=vbuc1 + //SEG647 [352] phi from mode_twoplanebitmap to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1] + //SEG648 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap->mode_twoplanebitmap::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG648 [352] phi from mode_twoplanebitmap::@1 to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1] - //SEG649 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte) mode_twoplanebitmap::i#1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1#0] -- register_copy - //SEG650 mode_twoplanebitmap::@1 + //SEG649 [352] phi from mode_twoplanebitmap::@1 to mode_twoplanebitmap::@1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1] + //SEG650 [352] phi (byte) mode_twoplanebitmap::i#2 = (byte) mode_twoplanebitmap::i#1 [phi:mode_twoplanebitmap::@1->mode_twoplanebitmap::@1#0] -- register_copy + //SEG651 mode_twoplanebitmap::@1 b1: - //SEG651 [353] *((const byte*) DTV_PALETTE#0 + (byte) mode_twoplanebitmap::i#2) ← (byte) mode_twoplanebitmap::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG652 [353] *((const byte*) DTV_PALETTE#0 + (byte) mode_twoplanebitmap::i#2) ← (byte) mode_twoplanebitmap::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG652 [354] (byte) mode_twoplanebitmap::i#1 ← ++ (byte) mode_twoplanebitmap::i#2 -- vbuxx=_inc_vbuxx + //SEG653 [354] (byte) mode_twoplanebitmap::i#1 ← ++ (byte) mode_twoplanebitmap::i#2 -- vbuxx=_inc_vbuxx inx - //SEG653 [355] if((byte) mode_twoplanebitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_twoplanebitmap::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG654 [355] if((byte) mode_twoplanebitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_twoplanebitmap::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG654 mode_twoplanebitmap::@10 - //SEG655 [356] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG655 mode_twoplanebitmap::@10 + //SEG656 [356] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG656 [357] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 112 -- _deref_pbuc1=vbuc2 + //SEG657 [357] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 112 -- _deref_pbuc1=vbuc2 lda #$70 sta BGCOL1 - //SEG657 [358] *((const byte*) BGCOL2#0) ← (byte/word/signed word/dword/signed dword) 212 -- _deref_pbuc1=vbuc2 + //SEG658 [358] *((const byte*) BGCOL2#0) ← (byte/word/signed word/dword/signed dword) 212 -- _deref_pbuc1=vbuc2 lda #$d4 sta BGCOL2 - //SEG658 [359] phi from mode_twoplanebitmap::@10 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2] - //SEG659 [359] phi (byte*) mode_twoplanebitmap::col#3 = (const byte*) mode_twoplanebitmap::COLORS#0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#0] -- pbuz1=pbuc1 + //SEG659 [359] phi from mode_twoplanebitmap::@10 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2] + //SEG660 [359] phi (byte*) mode_twoplanebitmap::col#3 = (const byte*) mode_twoplanebitmap::COLORS#0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG660 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#1] -- vbuz1=vbuc1 + //SEG661 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@10->mode_twoplanebitmap::@2#1] -- vbuz1=vbuc1 lda #0 sta cy - //SEG661 [359] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2] - //SEG662 [359] phi (byte*) mode_twoplanebitmap::col#3 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#0] -- register_copy - //SEG663 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte) mode_twoplanebitmap::cy#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#1] -- register_copy - //SEG664 mode_twoplanebitmap::@2 + //SEG662 [359] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@2 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2] + //SEG663 [359] phi (byte*) mode_twoplanebitmap::col#3 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#0] -- register_copy + //SEG664 [359] phi (byte) mode_twoplanebitmap::cy#4 = (byte) mode_twoplanebitmap::cy#1 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@2#1] -- register_copy + //SEG665 mode_twoplanebitmap::@2 b2: - //SEG665 [360] phi from mode_twoplanebitmap::@2 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3] - //SEG666 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#0] -- register_copy - //SEG667 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#1] -- vbuxx=vbuc1 + //SEG666 [360] phi from mode_twoplanebitmap::@2 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3] + //SEG667 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#3 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#0] -- register_copy + //SEG668 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@2->mode_twoplanebitmap::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG668 [360] phi from mode_twoplanebitmap::@3 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3] - //SEG669 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#0] -- register_copy - //SEG670 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte) mode_twoplanebitmap::cx#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#1] -- register_copy - //SEG671 mode_twoplanebitmap::@3 + //SEG669 [360] phi from mode_twoplanebitmap::@3 to mode_twoplanebitmap::@3 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3] + //SEG670 [360] phi (byte*) mode_twoplanebitmap::col#2 = (byte*) mode_twoplanebitmap::col#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#0] -- register_copy + //SEG671 [360] phi (byte) mode_twoplanebitmap::cx#2 = (byte) mode_twoplanebitmap::cx#1 [phi:mode_twoplanebitmap::@3->mode_twoplanebitmap::@3#1] -- register_copy + //SEG672 mode_twoplanebitmap::@3 b3: - //SEG672 [361] (byte~) mode_twoplanebitmap::$15 ← (byte) mode_twoplanebitmap::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG673 [361] (byte~) mode_twoplanebitmap::$15 ← (byte) mode_twoplanebitmap::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG673 [362] (byte~) mode_twoplanebitmap::$16 ← (byte~) mode_twoplanebitmap::$15 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG674 [362] (byte~) mode_twoplanebitmap::$16 ← (byte~) mode_twoplanebitmap::$15 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _16 - //SEG674 [363] (byte~) mode_twoplanebitmap::$17 ← (byte) mode_twoplanebitmap::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG675 [363] (byte~) mode_twoplanebitmap::$17 ← (byte) mode_twoplanebitmap::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG675 [364] (byte~) mode_twoplanebitmap::$18 ← (byte~) mode_twoplanebitmap::$16 | (byte~) mode_twoplanebitmap::$17 -- vbuaa=vbuz1_bor_vbuaa + //SEG676 [364] (byte~) mode_twoplanebitmap::$18 ← (byte~) mode_twoplanebitmap::$16 | (byte~) mode_twoplanebitmap::$17 -- vbuaa=vbuz1_bor_vbuaa ora _16 - //SEG676 [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$18 -- _deref_pbuz1=vbuaa + //SEG677 [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$18 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG677 [366] (byte*) mode_twoplanebitmap::col#1 ← ++ (byte*) mode_twoplanebitmap::col#2 -- pbuz1=_inc_pbuz1 + //SEG678 [366] (byte*) mode_twoplanebitmap::col#1 ← ++ (byte*) mode_twoplanebitmap::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG678 [367] (byte) mode_twoplanebitmap::cx#1 ← ++ (byte) mode_twoplanebitmap::cx#2 -- vbuxx=_inc_vbuxx + //SEG679 [367] (byte) mode_twoplanebitmap::cx#1 ← ++ (byte) mode_twoplanebitmap::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG679 [368] if((byte) mode_twoplanebitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG680 [368] if((byte) mode_twoplanebitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG680 mode_twoplanebitmap::@11 - //SEG681 [369] (byte) mode_twoplanebitmap::cy#1 ← ++ (byte) mode_twoplanebitmap::cy#4 -- vbuz1=_inc_vbuz1 + //SEG681 mode_twoplanebitmap::@11 + //SEG682 [369] (byte) mode_twoplanebitmap::cy#1 ← ++ (byte) mode_twoplanebitmap::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG682 [370] if((byte) mode_twoplanebitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_twoplanebitmap::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG683 [370] if((byte) mode_twoplanebitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_twoplanebitmap::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG683 [371] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4] - //SEG684 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (const byte*) mode_twoplanebitmap::PLANEA#0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#0] -- pbuz1=pbuc1 + //SEG684 [371] phi from mode_twoplanebitmap::@11 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4] + //SEG685 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (const byte*) mode_twoplanebitmap::PLANEA#0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG685 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#1] -- vbuz1=vbuc1 + //SEG686 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@11->mode_twoplanebitmap::@4#1] -- vbuz1=vbuc1 lda #0 sta ay - //SEG686 [371] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4] - //SEG687 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#0] -- register_copy - //SEG688 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte) mode_twoplanebitmap::ay#1 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#1] -- register_copy - //SEG689 mode_twoplanebitmap::@4 + //SEG687 [371] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@4 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4] + //SEG688 [371] phi (byte*) mode_twoplanebitmap::gfxa#6 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#0] -- register_copy + //SEG689 [371] phi (byte) mode_twoplanebitmap::ay#4 = (byte) mode_twoplanebitmap::ay#1 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@4#1] -- register_copy + //SEG690 mode_twoplanebitmap::@4 b4: - //SEG690 [372] phi from mode_twoplanebitmap::@4 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5] - //SEG691 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#0] -- vbuxx=vbuc1 + //SEG691 [372] phi from mode_twoplanebitmap::@4 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5] + //SEG692 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG692 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#6 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#1] -- register_copy - //SEG693 [372] phi from mode_twoplanebitmap::@7 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5] - //SEG694 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte) mode_twoplanebitmap::ax#1 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#0] -- register_copy - //SEG695 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#1] -- register_copy - //SEG696 mode_twoplanebitmap::@5 + //SEG693 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#6 [phi:mode_twoplanebitmap::@4->mode_twoplanebitmap::@5#1] -- register_copy + //SEG694 [372] phi from mode_twoplanebitmap::@7 to mode_twoplanebitmap::@5 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5] + //SEG695 [372] phi (byte) mode_twoplanebitmap::ax#2 = (byte) mode_twoplanebitmap::ax#1 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#0] -- register_copy + //SEG696 [372] phi (byte*) mode_twoplanebitmap::gfxa#3 = (byte*) mode_twoplanebitmap::gfxa#7 [phi:mode_twoplanebitmap::@7->mode_twoplanebitmap::@5#1] -- register_copy + //SEG697 mode_twoplanebitmap::@5 b5: - //SEG697 [373] (byte~) mode_twoplanebitmap::$21 ← (byte) mode_twoplanebitmap::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_band_vbuc1 + //SEG698 [373] (byte~) mode_twoplanebitmap::$21 ← (byte) mode_twoplanebitmap::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_band_vbuc1 lda #4 and ay - //SEG698 [374] if((byte~) mode_twoplanebitmap::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_twoplanebitmap::@6 -- vbuaa_eq_0_then_la1 + //SEG699 [374] if((byte~) mode_twoplanebitmap::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode_twoplanebitmap::@6 -- vbuaa_eq_0_then_la1 cmp #0 beq b6 - //SEG699 mode_twoplanebitmap::@13 - //SEG700 [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 + //SEG700 mode_twoplanebitmap::@13 + //SEG701 [375] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 lda #$ff ldy #0 sta (gfxa),y - //SEG701 [376] (byte*) mode_twoplanebitmap::gfxa#2 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG702 [376] (byte*) mode_twoplanebitmap::gfxa#2 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG702 [377] phi from mode_twoplanebitmap::@13 mode_twoplanebitmap::@6 to mode_twoplanebitmap::@7 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7] - //SEG703 [377] phi (byte*) mode_twoplanebitmap::gfxa#7 = (byte*) mode_twoplanebitmap::gfxa#2 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7#0] -- register_copy - //SEG704 mode_twoplanebitmap::@7 + //SEG703 [377] phi from mode_twoplanebitmap::@13 mode_twoplanebitmap::@6 to mode_twoplanebitmap::@7 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7] + //SEG704 [377] phi (byte*) mode_twoplanebitmap::gfxa#7 = (byte*) mode_twoplanebitmap::gfxa#2 [phi:mode_twoplanebitmap::@13/mode_twoplanebitmap::@6->mode_twoplanebitmap::@7#0] -- register_copy + //SEG705 mode_twoplanebitmap::@7 b7: - //SEG705 [378] (byte) mode_twoplanebitmap::ax#1 ← ++ (byte) mode_twoplanebitmap::ax#2 -- vbuxx=_inc_vbuxx + //SEG706 [378] (byte) mode_twoplanebitmap::ax#1 ← ++ (byte) mode_twoplanebitmap::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG706 [379] if((byte) mode_twoplanebitmap::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG707 [379] if((byte) mode_twoplanebitmap::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b5 - //SEG707 mode_twoplanebitmap::@15 - //SEG708 [380] (byte) mode_twoplanebitmap::ay#1 ← ++ (byte) mode_twoplanebitmap::ay#4 -- vbuz1=_inc_vbuz1 + //SEG708 mode_twoplanebitmap::@15 + //SEG709 [380] (byte) mode_twoplanebitmap::ay#1 ← ++ (byte) mode_twoplanebitmap::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG709 [381] if((byte) mode_twoplanebitmap::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG710 [381] if((byte) mode_twoplanebitmap::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4 - //SEG710 [382] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8] - //SEG711 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#0] -- vbuz1=vbuc1 + //SEG711 [382] phi from mode_twoplanebitmap::@15 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8] + //SEG712 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG712 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (const byte*) mode_twoplanebitmap::PLANEB#0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#1] -- pbuz1=pbuc1 + //SEG713 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (const byte*) mode_twoplanebitmap::PLANEB#0 [phi:mode_twoplanebitmap::@15->mode_twoplanebitmap::@8#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 - //SEG713 [382] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8] - //SEG714 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte) mode_twoplanebitmap::by#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#0] -- register_copy - //SEG715 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#1] -- register_copy - //SEG716 mode_twoplanebitmap::@8 + //SEG714 [382] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@8 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8] + //SEG715 [382] phi (byte) mode_twoplanebitmap::by#4 = (byte) mode_twoplanebitmap::by#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#0] -- register_copy + //SEG716 [382] phi (byte*) mode_twoplanebitmap::gfxb#3 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@8#1] -- register_copy + //SEG717 mode_twoplanebitmap::@8 b8: - //SEG717 [383] phi from mode_twoplanebitmap::@8 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9] - //SEG718 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#0] -- vbuxx=vbuc1 + //SEG718 [383] phi from mode_twoplanebitmap::@8 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9] + //SEG719 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#0] -- vbuxx=vbuc1 ldx #0 - //SEG719 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#3 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#1] -- register_copy - //SEG720 [383] phi from mode_twoplanebitmap::@9 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9] - //SEG721 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte) mode_twoplanebitmap::bx#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#0] -- register_copy - //SEG722 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#1] -- register_copy - //SEG723 mode_twoplanebitmap::@9 + //SEG720 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#3 [phi:mode_twoplanebitmap::@8->mode_twoplanebitmap::@9#1] -- register_copy + //SEG721 [383] phi from mode_twoplanebitmap::@9 to mode_twoplanebitmap::@9 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9] + //SEG722 [383] phi (byte) mode_twoplanebitmap::bx#2 = (byte) mode_twoplanebitmap::bx#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#0] -- register_copy + //SEG723 [383] phi (byte*) mode_twoplanebitmap::gfxb#2 = (byte*) mode_twoplanebitmap::gfxb#1 [phi:mode_twoplanebitmap::@9->mode_twoplanebitmap::@9#1] -- register_copy + //SEG724 mode_twoplanebitmap::@9 b9: - //SEG724 [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG725 [384] *((byte*) mode_twoplanebitmap::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 lda #$f ldy #0 sta (gfxb),y - //SEG725 [385] (byte*) mode_twoplanebitmap::gfxb#1 ← ++ (byte*) mode_twoplanebitmap::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG726 [385] (byte*) mode_twoplanebitmap::gfxb#1 ← ++ (byte*) mode_twoplanebitmap::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG726 [386] (byte) mode_twoplanebitmap::bx#1 ← ++ (byte) mode_twoplanebitmap::bx#2 -- vbuxx=_inc_vbuxx + //SEG727 [386] (byte) mode_twoplanebitmap::bx#1 ← ++ (byte) mode_twoplanebitmap::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG727 [387] if((byte) mode_twoplanebitmap::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG728 [387] if((byte) mode_twoplanebitmap::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_twoplanebitmap::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b9 - //SEG728 mode_twoplanebitmap::@17 - //SEG729 [388] (byte) mode_twoplanebitmap::by#1 ← ++ (byte) mode_twoplanebitmap::by#4 -- vbuz1=_inc_vbuz1 + //SEG729 mode_twoplanebitmap::@17 + //SEG730 [388] (byte) mode_twoplanebitmap::by#1 ← ++ (byte) mode_twoplanebitmap::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG730 [389] if((byte) mode_twoplanebitmap::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG731 [389] if((byte) mode_twoplanebitmap::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_twoplanebitmap::@8 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b8 - //SEG731 [390] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@18 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@18] - //SEG732 mode_twoplanebitmap::@18 - //SEG733 [391] call mode_ctrl - //SEG734 [155] phi from mode_twoplanebitmap::@18 to mode_ctrl [phi:mode_twoplanebitmap::@18->mode_ctrl] - //SEG735 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_twoplanebitmap::@18->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG732 [390] phi from mode_twoplanebitmap::@17 to mode_twoplanebitmap::@18 [phi:mode_twoplanebitmap::@17->mode_twoplanebitmap::@18] + //SEG733 mode_twoplanebitmap::@18 + //SEG734 [391] call mode_ctrl + //SEG735 [155] phi from mode_twoplanebitmap::@18 to mode_ctrl [phi:mode_twoplanebitmap::@18->mode_ctrl] + //SEG736 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0 [phi:mode_twoplanebitmap::@18->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR|DTV_LINEAR sta dtv_control jsr mode_ctrl - //SEG736 mode_twoplanebitmap::@return - //SEG737 [392] return + //SEG737 mode_twoplanebitmap::@return + //SEG738 [392] return rts - //SEG738 mode_twoplanebitmap::@6 + //SEG739 mode_twoplanebitmap::@6 b6: - //SEG739 [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG740 [393] *((byte*) mode_twoplanebitmap::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (gfxa),y - //SEG740 [394] (byte*) mode_twoplanebitmap::gfxa#1 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG741 [394] (byte*) mode_twoplanebitmap::gfxa#1 ← ++ (byte*) mode_twoplanebitmap::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: jmp b7 } -//SEG741 mode_sixsfred2 +//SEG742 mode_sixsfred2 // Sixs Fred Mode 2 - 8bpp Packed Bitmap - Generated from the two DTV linear graphics plane counters // Two Plane MultiColor Bitmap - 8bpp Packed Bitmap (CHUNK/COLDIS/HICOL = 0, ECM/BMM/MCM/LINEAR = 1) // Resolution: 160x200 @@ -28113,239 +28112,239 @@ mode_sixsfred2: { .label ay = 4 .label gfxb = 2 .label by = 4 - //SEG742 [395] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 + //SEG743 [395] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_LINEAR#0 -- _deref_pbuc1=vbuc2 lda #DTV_LINEAR sta DTV_CONTROL - //SEG743 [396] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 + //SEG744 [396] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_ECM#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 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG744 [397] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG745 [397] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta VIC_CONTROL2 - //SEG745 [398] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG746 [398] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 + //SEG747 [399] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) mode_sixsfred2::PLANEA#0 -- _deref_pbuc1=vbuc2 lda #>PLANEA sta DTV_PLANEA_START_MI - //SEG747 [400] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG748 [400] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_START_HI - //SEG748 [401] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG749 [401] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEA_STEP - //SEG749 [402] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG750 [402] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_LO - //SEG750 [403] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG751 [403] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEA_MODULO_HI - //SEG751 [404] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG752 [404] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 + //SEG753 [405] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) mode_sixsfred2::PLANEB#0 -- _deref_pbuc1=vbuc2 lda #>PLANEB sta DTV_PLANEB_START_MI - //SEG753 [406] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG754 [406] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_START_HI - //SEG754 [407] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG755 [407] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta DTV_PLANEB_STEP - //SEG755 [408] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG756 [408] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEB_MODULO_LO - //SEG756 [409] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG757 [409] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_PLANEB_MODULO_HI - //SEG757 [410] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG758 [410] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG759 [411] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #>COLORS/$400 sta DTV_COLOR_BANK_HI - //SEG759 [412] phi from mode_sixsfred2 to mode_sixsfred2::@1 [phi:mode_sixsfred2->mode_sixsfred2::@1] - //SEG760 [412] phi (byte) mode_sixsfred2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2->mode_sixsfred2::@1#0] -- vbuxx=vbuc1 + //SEG760 [412] phi from mode_sixsfred2 to mode_sixsfred2::@1 [phi:mode_sixsfred2->mode_sixsfred2::@1] + //SEG761 [412] phi (byte) mode_sixsfred2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2->mode_sixsfred2::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG761 [412] phi from mode_sixsfred2::@1 to mode_sixsfred2::@1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1] - //SEG762 [412] phi (byte) mode_sixsfred2::i#2 = (byte) mode_sixsfred2::i#1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1#0] -- register_copy - //SEG763 mode_sixsfred2::@1 + //SEG762 [412] phi from mode_sixsfred2::@1 to mode_sixsfred2::@1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1] + //SEG763 [412] phi (byte) mode_sixsfred2::i#2 = (byte) mode_sixsfred2::i#1 [phi:mode_sixsfred2::@1->mode_sixsfred2::@1#0] -- register_copy + //SEG764 mode_sixsfred2::@1 b1: - //SEG764 [413] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred2::i#2) ← (byte) mode_sixsfred2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG765 [413] *((const byte*) DTV_PALETTE#0 + (byte) mode_sixsfred2::i#2) ← (byte) mode_sixsfred2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG765 [414] (byte) mode_sixsfred2::i#1 ← ++ (byte) mode_sixsfred2::i#2 -- vbuxx=_inc_vbuxx + //SEG766 [414] (byte) mode_sixsfred2::i#1 ← ++ (byte) mode_sixsfred2::i#2 -- vbuxx=_inc_vbuxx inx - //SEG766 [415] if((byte) mode_sixsfred2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred2::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG767 [415] if((byte) mode_sixsfred2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_sixsfred2::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG767 mode_sixsfred2::@8 - //SEG768 [416] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG768 mode_sixsfred2::@8 + //SEG769 [416] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG769 [417] phi from mode_sixsfred2::@8 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2] - //SEG770 [417] phi (byte*) mode_sixsfred2::col#3 = (const byte*) mode_sixsfred2::COLORS#0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#0] -- pbuz1=pbuc1 + //SEG770 [417] phi from mode_sixsfred2::@8 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2] + //SEG771 [417] phi (byte*) mode_sixsfred2::col#3 = (const byte*) mode_sixsfred2::COLORS#0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#0] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG771 [417] phi (byte) mode_sixsfred2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#1] -- vbuz1=vbuc1 + //SEG772 [417] phi (byte) mode_sixsfred2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@8->mode_sixsfred2::@2#1] -- vbuz1=vbuc1 lda #0 sta cy - //SEG772 [417] phi from mode_sixsfred2::@9 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2] - //SEG773 [417] phi (byte*) mode_sixsfred2::col#3 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#0] -- register_copy - //SEG774 [417] phi (byte) mode_sixsfred2::cy#4 = (byte) mode_sixsfred2::cy#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#1] -- register_copy - //SEG775 mode_sixsfred2::@2 + //SEG773 [417] phi from mode_sixsfred2::@9 to mode_sixsfred2::@2 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2] + //SEG774 [417] phi (byte*) mode_sixsfred2::col#3 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#0] -- register_copy + //SEG775 [417] phi (byte) mode_sixsfred2::cy#4 = (byte) mode_sixsfred2::cy#1 [phi:mode_sixsfred2::@9->mode_sixsfred2::@2#1] -- register_copy + //SEG776 mode_sixsfred2::@2 b2: - //SEG776 [418] phi from mode_sixsfred2::@2 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3] - //SEG777 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#0] -- register_copy - //SEG778 [418] phi (byte) mode_sixsfred2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#1] -- vbuxx=vbuc1 + //SEG777 [418] phi from mode_sixsfred2::@2 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3] + //SEG778 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#3 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#0] -- register_copy + //SEG779 [418] phi (byte) mode_sixsfred2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@2->mode_sixsfred2::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG779 [418] phi from mode_sixsfred2::@3 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3] - //SEG780 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#0] -- register_copy - //SEG781 [418] phi (byte) mode_sixsfred2::cx#2 = (byte) mode_sixsfred2::cx#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#1] -- register_copy - //SEG782 mode_sixsfred2::@3 + //SEG780 [418] phi from mode_sixsfred2::@3 to mode_sixsfred2::@3 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3] + //SEG781 [418] phi (byte*) mode_sixsfred2::col#2 = (byte*) mode_sixsfred2::col#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#0] -- register_copy + //SEG782 [418] phi (byte) mode_sixsfred2::cx#2 = (byte) mode_sixsfred2::cx#1 [phi:mode_sixsfred2::@3->mode_sixsfred2::@3#1] -- register_copy + //SEG783 mode_sixsfred2::@3 b3: - //SEG783 [419] (byte~) mode_sixsfred2::$14 ← (byte) mode_sixsfred2::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_band_vbuc1 + //SEG784 [419] (byte~) mode_sixsfred2::$14 ← (byte) mode_sixsfred2::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_band_vbuc1 txa and #3 - //SEG784 [420] (byte~) mode_sixsfred2::$15 ← (byte~) mode_sixsfred2::$14 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG785 [420] (byte~) mode_sixsfred2::$15 ← (byte~) mode_sixsfred2::$14 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _15 - //SEG785 [421] (byte~) mode_sixsfred2::$16 ← (byte) mode_sixsfred2::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_band_vbuc1 + //SEG786 [421] (byte~) mode_sixsfred2::$16 ← (byte) mode_sixsfred2::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_band_vbuc1 lda #3 and cy - //SEG786 [422] (byte~) mode_sixsfred2::$17 ← (byte~) mode_sixsfred2::$15 | (byte~) mode_sixsfred2::$16 -- vbuaa=vbuz1_bor_vbuaa + //SEG787 [422] (byte~) mode_sixsfred2::$17 ← (byte~) mode_sixsfred2::$15 | (byte~) mode_sixsfred2::$16 -- vbuaa=vbuz1_bor_vbuaa ora _15 - //SEG787 [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$17 -- _deref_pbuz1=vbuaa + //SEG788 [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$17 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG788 [424] (byte*) mode_sixsfred2::col#1 ← ++ (byte*) mode_sixsfred2::col#2 -- pbuz1=_inc_pbuz1 + //SEG789 [424] (byte*) mode_sixsfred2::col#1 ← ++ (byte*) mode_sixsfred2::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG789 [425] (byte) mode_sixsfred2::cx#1 ← ++ (byte) mode_sixsfred2::cx#2 -- vbuxx=_inc_vbuxx + //SEG790 [425] (byte) mode_sixsfred2::cx#1 ← ++ (byte) mode_sixsfred2::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG790 [426] if((byte) mode_sixsfred2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG791 [426] if((byte) mode_sixsfred2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG791 mode_sixsfred2::@9 - //SEG792 [427] (byte) mode_sixsfred2::cy#1 ← ++ (byte) mode_sixsfred2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG792 mode_sixsfred2::@9 + //SEG793 [427] (byte) mode_sixsfred2::cy#1 ← ++ (byte) mode_sixsfred2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG793 [428] if((byte) mode_sixsfred2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred2::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG794 [428] if((byte) mode_sixsfred2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_sixsfred2::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG794 [429] phi from mode_sixsfred2::@9 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4] - //SEG795 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (const byte*) mode_sixsfred2::PLANEA#0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#0] -- pbuz1=pbuc1 + //SEG795 [429] phi from mode_sixsfred2::@9 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4] + //SEG796 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (const byte*) mode_sixsfred2::PLANEA#0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#0] -- pbuz1=pbuc1 lda #PLANEA sta gfxa+1 - //SEG796 [429] phi (byte) mode_sixsfred2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#1] -- vbuz1=vbuc1 + //SEG797 [429] phi (byte) mode_sixsfred2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@9->mode_sixsfred2::@4#1] -- vbuz1=vbuc1 lda #0 sta ay - //SEG797 [429] phi from mode_sixsfred2::@11 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4] - //SEG798 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#0] -- register_copy - //SEG799 [429] phi (byte) mode_sixsfred2::ay#4 = (byte) mode_sixsfred2::ay#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#1] -- register_copy - //SEG800 mode_sixsfred2::@4 + //SEG798 [429] phi from mode_sixsfred2::@11 to mode_sixsfred2::@4 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4] + //SEG799 [429] phi (byte*) mode_sixsfred2::gfxa#3 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#0] -- register_copy + //SEG800 [429] phi (byte) mode_sixsfred2::ay#4 = (byte) mode_sixsfred2::ay#1 [phi:mode_sixsfred2::@11->mode_sixsfred2::@4#1] -- register_copy + //SEG801 mode_sixsfred2::@4 b4: - //SEG801 [430] phi from mode_sixsfred2::@4 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5] - //SEG802 [430] phi (byte) mode_sixsfred2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#0] -- vbuxx=vbuc1 + //SEG802 [430] phi from mode_sixsfred2::@4 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5] + //SEG803 [430] phi (byte) mode_sixsfred2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG803 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#3 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#1] -- register_copy - //SEG804 [430] phi from mode_sixsfred2::@5 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5] - //SEG805 [430] phi (byte) mode_sixsfred2::ax#2 = (byte) mode_sixsfred2::ax#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#0] -- register_copy - //SEG806 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#1] -- register_copy - //SEG807 mode_sixsfred2::@5 + //SEG804 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#3 [phi:mode_sixsfred2::@4->mode_sixsfred2::@5#1] -- register_copy + //SEG805 [430] phi from mode_sixsfred2::@5 to mode_sixsfred2::@5 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5] + //SEG806 [430] phi (byte) mode_sixsfred2::ax#2 = (byte) mode_sixsfred2::ax#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#0] -- register_copy + //SEG807 [430] phi (byte*) mode_sixsfred2::gfxa#2 = (byte*) mode_sixsfred2::gfxa#1 [phi:mode_sixsfred2::@5->mode_sixsfred2::@5#1] -- register_copy + //SEG808 mode_sixsfred2::@5 b5: - //SEG808 [431] (byte~) mode_sixsfred2::$20 ← (byte) mode_sixsfred2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 + //SEG809 [431] (byte~) mode_sixsfred2::$20 ← (byte) mode_sixsfred2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 lda ay lsr - //SEG809 [432] (byte) mode_sixsfred2::row#0 ← (byte~) mode_sixsfred2::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 + //SEG810 [432] (byte) mode_sixsfred2::row#0 ← (byte~) mode_sixsfred2::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 and #3 - //SEG810 [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte[]) mode_sixsfred2::row_bitmask#0 + (byte) mode_sixsfred2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + //SEG811 [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte[]) mode_sixsfred2::row_bitmask#0 + (byte) mode_sixsfred2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa tay lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG811 [434] (byte*) mode_sixsfred2::gfxa#1 ← ++ (byte*) mode_sixsfred2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG812 [434] (byte*) mode_sixsfred2::gfxa#1 ← ++ (byte*) mode_sixsfred2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG812 [435] (byte) mode_sixsfred2::ax#1 ← ++ (byte) mode_sixsfred2::ax#2 -- vbuxx=_inc_vbuxx + //SEG813 [435] (byte) mode_sixsfred2::ax#1 ← ++ (byte) mode_sixsfred2::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG813 [436] if((byte) mode_sixsfred2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG814 [436] if((byte) mode_sixsfred2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b5 - //SEG814 mode_sixsfred2::@11 - //SEG815 [437] (byte) mode_sixsfred2::ay#1 ← ++ (byte) mode_sixsfred2::ay#4 -- vbuz1=_inc_vbuz1 + //SEG815 mode_sixsfred2::@11 + //SEG816 [437] (byte) mode_sixsfred2::ay#1 ← ++ (byte) mode_sixsfred2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG816 [438] if((byte) mode_sixsfred2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG817 [438] if((byte) mode_sixsfred2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@4 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b4 - //SEG817 [439] phi from mode_sixsfred2::@11 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6] - //SEG818 [439] phi (byte) mode_sixsfred2::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#0] -- vbuz1=vbuc1 + //SEG818 [439] phi from mode_sixsfred2::@11 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6] + //SEG819 [439] phi (byte) mode_sixsfred2::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG819 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (const byte*) mode_sixsfred2::PLANEB#0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#1] -- pbuz1=pbuc1 + //SEG820 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (const byte*) mode_sixsfred2::PLANEB#0 [phi:mode_sixsfred2::@11->mode_sixsfred2::@6#1] -- pbuz1=pbuc1 lda #PLANEB sta gfxb+1 - //SEG820 [439] phi from mode_sixsfred2::@13 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6] - //SEG821 [439] phi (byte) mode_sixsfred2::by#4 = (byte) mode_sixsfred2::by#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#0] -- register_copy - //SEG822 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#1] -- register_copy - //SEG823 mode_sixsfred2::@6 + //SEG821 [439] phi from mode_sixsfred2::@13 to mode_sixsfred2::@6 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6] + //SEG822 [439] phi (byte) mode_sixsfred2::by#4 = (byte) mode_sixsfred2::by#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#0] -- register_copy + //SEG823 [439] phi (byte*) mode_sixsfred2::gfxb#3 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@13->mode_sixsfred2::@6#1] -- register_copy + //SEG824 mode_sixsfred2::@6 b6: - //SEG824 [440] phi from mode_sixsfred2::@6 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7] - //SEG825 [440] phi (byte) mode_sixsfred2::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#0] -- vbuxx=vbuc1 + //SEG825 [440] phi from mode_sixsfred2::@6 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7] + //SEG826 [440] phi (byte) mode_sixsfred2::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#0] -- vbuxx=vbuc1 ldx #0 - //SEG826 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#3 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#1] -- register_copy - //SEG827 [440] phi from mode_sixsfred2::@7 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7] - //SEG828 [440] phi (byte) mode_sixsfred2::bx#2 = (byte) mode_sixsfred2::bx#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#0] -- register_copy - //SEG829 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#1] -- register_copy - //SEG830 mode_sixsfred2::@7 + //SEG827 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#3 [phi:mode_sixsfred2::@6->mode_sixsfred2::@7#1] -- register_copy + //SEG828 [440] phi from mode_sixsfred2::@7 to mode_sixsfred2::@7 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7] + //SEG829 [440] phi (byte) mode_sixsfred2::bx#2 = (byte) mode_sixsfred2::bx#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#0] -- register_copy + //SEG830 [440] phi (byte*) mode_sixsfred2::gfxb#2 = (byte*) mode_sixsfred2::gfxb#1 [phi:mode_sixsfred2::@7->mode_sixsfred2::@7#1] -- register_copy + //SEG831 mode_sixsfred2::@7 b7: - //SEG831 [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 + //SEG832 [441] *((byte*) mode_sixsfred2::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 27 -- _deref_pbuz1=vbuc1 lda #$1b ldy #0 sta (gfxb),y - //SEG832 [442] (byte*) mode_sixsfred2::gfxb#1 ← ++ (byte*) mode_sixsfred2::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG833 [442] (byte*) mode_sixsfred2::gfxb#1 ← ++ (byte*) mode_sixsfred2::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG833 [443] (byte) mode_sixsfred2::bx#1 ← ++ (byte) mode_sixsfred2::bx#2 -- vbuxx=_inc_vbuxx + //SEG834 [443] (byte) mode_sixsfred2::bx#1 ← ++ (byte) mode_sixsfred2::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG834 [444] if((byte) mode_sixsfred2::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG835 [444] if((byte) mode_sixsfred2::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_sixsfred2::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b7 - //SEG835 mode_sixsfred2::@13 - //SEG836 [445] (byte) mode_sixsfred2::by#1 ← ++ (byte) mode_sixsfred2::by#4 -- vbuz1=_inc_vbuz1 + //SEG836 mode_sixsfred2::@13 + //SEG837 [445] (byte) mode_sixsfred2::by#1 ← ++ (byte) mode_sixsfred2::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG837 [446] if((byte) mode_sixsfred2::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG838 [446] if((byte) mode_sixsfred2::by#1!=(byte/word/signed word/dword/signed dword) 200) goto mode_sixsfred2::@6 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b6 - //SEG838 [447] phi from mode_sixsfred2::@13 to mode_sixsfred2::@14 [phi:mode_sixsfred2::@13->mode_sixsfred2::@14] - //SEG839 mode_sixsfred2::@14 - //SEG840 [448] call mode_ctrl - //SEG841 [155] phi from mode_sixsfred2::@14 to mode_ctrl [phi:mode_sixsfred2::@14->mode_ctrl] - //SEG842 [155] phi (byte) dtv_control#145 = (const byte) DTV_LINEAR#0 [phi:mode_sixsfred2::@14->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG839 [447] phi from mode_sixsfred2::@13 to mode_sixsfred2::@14 [phi:mode_sixsfred2::@13->mode_sixsfred2::@14] + //SEG840 mode_sixsfred2::@14 + //SEG841 [448] call mode_ctrl + //SEG842 [155] phi from mode_sixsfred2::@14 to mode_ctrl [phi:mode_sixsfred2::@14->mode_ctrl] + //SEG843 [155] phi (byte) dtv_control#145 = (const byte) DTV_LINEAR#0 [phi:mode_sixsfred2::@14->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_LINEAR sta dtv_control jsr mode_ctrl - //SEG843 mode_sixsfred2::@return - //SEG844 [449] return + //SEG844 mode_sixsfred2::@return + //SEG845 [449] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG845 mode_hicolmcchar +//SEG846 mode_hicolmcchar // High Color Multicolor Character Mode (LINEAR/CHUNK/COLDIS/BMM/ECM = 0, MCM/HICOL = 1) // Resolution: 160x200 (320x200) // Normal VIC Adressing: @@ -28367,147 +28366,147 @@ mode_hicolmcchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG846 [450] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolmcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG847 [450] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolmcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG847 [451] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG848 [451] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG848 [452] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG849 [452] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG849 [453] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG850 [453] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG850 [454] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG851 [454] *((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 - //SEG851 [455] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolmcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG852 [455] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolmcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG852 [456] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG853 [456] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG853 [457] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG854 [457] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL|VIC_MCM sta VIC_CONTROL2 - //SEG854 [458] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolmcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolmcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG855 [458] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolmcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolmcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG855 [459] phi from mode_hicolmcchar to mode_hicolmcchar::@1 [phi:mode_hicolmcchar->mode_hicolmcchar::@1] - //SEG856 [459] phi (byte) mode_hicolmcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar->mode_hicolmcchar::@1#0] -- vbuxx=vbuc1 + //SEG856 [459] phi from mode_hicolmcchar to mode_hicolmcchar::@1 [phi:mode_hicolmcchar->mode_hicolmcchar::@1] + //SEG857 [459] phi (byte) mode_hicolmcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar->mode_hicolmcchar::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG857 [459] phi from mode_hicolmcchar::@1 to mode_hicolmcchar::@1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1] - //SEG858 [459] phi (byte) mode_hicolmcchar::i#2 = (byte) mode_hicolmcchar::i#1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1#0] -- register_copy - //SEG859 mode_hicolmcchar::@1 + //SEG858 [459] phi from mode_hicolmcchar::@1 to mode_hicolmcchar::@1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1] + //SEG859 [459] phi (byte) mode_hicolmcchar::i#2 = (byte) mode_hicolmcchar::i#1 [phi:mode_hicolmcchar::@1->mode_hicolmcchar::@1#0] -- register_copy + //SEG860 mode_hicolmcchar::@1 b1: - //SEG860 [460] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolmcchar::i#2) ← (byte) mode_hicolmcchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG861 [460] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolmcchar::i#2) ← (byte) mode_hicolmcchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG861 [461] (byte) mode_hicolmcchar::i#1 ← ++ (byte) mode_hicolmcchar::i#2 -- vbuxx=_inc_vbuxx + //SEG862 [461] (byte) mode_hicolmcchar::i#1 ← ++ (byte) mode_hicolmcchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG862 [462] if((byte) mode_hicolmcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolmcchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG863 [462] if((byte) mode_hicolmcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolmcchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG863 mode_hicolmcchar::@4 - //SEG864 [463] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG864 mode_hicolmcchar::@4 + //SEG865 [463] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG865 [464] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 + //SEG866 [464] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 lda #$50 sta BGCOL1 - //SEG866 [465] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 + //SEG867 [465] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 lda #$54 sta BGCOL2 - //SEG867 [466] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 + //SEG868 [466] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 lda #$58 sta BGCOL3 - //SEG868 [467] phi from mode_hicolmcchar::@4 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2] - //SEG869 [467] phi (byte*) mode_hicolmcchar::ch#3 = (const byte*) mode_hicolmcchar::SCREEN#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#0] -- pbuz1=pbuc1 + //SEG869 [467] phi from mode_hicolmcchar::@4 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2] + //SEG870 [467] phi (byte*) mode_hicolmcchar::ch#3 = (const byte*) mode_hicolmcchar::SCREEN#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG870 [467] phi (byte*) mode_hicolmcchar::col#3 = (const byte*) mode_hicolmcchar::COLORS#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#1] -- pbuz1=pbuc1 + //SEG871 [467] phi (byte*) mode_hicolmcchar::col#3 = (const byte*) mode_hicolmcchar::COLORS#0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG871 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#2] -- vbuz1=vbuc1 + //SEG872 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@4->mode_hicolmcchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy - //SEG872 [467] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2] - //SEG873 [467] phi (byte*) mode_hicolmcchar::ch#3 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#0] -- register_copy - //SEG874 [467] phi (byte*) mode_hicolmcchar::col#3 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#1] -- register_copy - //SEG875 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte) mode_hicolmcchar::cy#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#2] -- register_copy - //SEG876 mode_hicolmcchar::@2 + //SEG873 [467] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@2 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2] + //SEG874 [467] phi (byte*) mode_hicolmcchar::ch#3 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#0] -- register_copy + //SEG875 [467] phi (byte*) mode_hicolmcchar::col#3 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#1] -- register_copy + //SEG876 [467] phi (byte) mode_hicolmcchar::cy#4 = (byte) mode_hicolmcchar::cy#1 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@2#2] -- register_copy + //SEG877 mode_hicolmcchar::@2 b2: - //SEG877 [468] phi from mode_hicolmcchar::@2 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3] - //SEG878 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#0] -- register_copy - //SEG879 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#1] -- register_copy - //SEG880 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#2] -- vbuxx=vbuc1 + //SEG878 [468] phi from mode_hicolmcchar::@2 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3] + //SEG879 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#0] -- register_copy + //SEG880 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#3 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#1] -- register_copy + //SEG881 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolmcchar::@2->mode_hicolmcchar::@3#2] -- vbuxx=vbuc1 ldx #0 - //SEG881 [468] phi from mode_hicolmcchar::@3 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3] - //SEG882 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#0] -- register_copy - //SEG883 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#1] -- register_copy - //SEG884 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte) mode_hicolmcchar::cx#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#2] -- register_copy - //SEG885 mode_hicolmcchar::@3 + //SEG882 [468] phi from mode_hicolmcchar::@3 to mode_hicolmcchar::@3 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3] + //SEG883 [468] phi (byte*) mode_hicolmcchar::ch#2 = (byte*) mode_hicolmcchar::ch#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#0] -- register_copy + //SEG884 [468] phi (byte*) mode_hicolmcchar::col#2 = (byte*) mode_hicolmcchar::col#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#1] -- register_copy + //SEG885 [468] phi (byte) mode_hicolmcchar::cx#2 = (byte) mode_hicolmcchar::cx#1 [phi:mode_hicolmcchar::@3->mode_hicolmcchar::@3#2] -- register_copy + //SEG886 mode_hicolmcchar::@3 b3: - //SEG886 [469] (byte~) mode_hicolmcchar::$25 ← (byte) mode_hicolmcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG887 [469] (byte~) mode_hicolmcchar::$25 ← (byte) mode_hicolmcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG887 [470] (byte~) mode_hicolmcchar::$26 ← (byte~) mode_hicolmcchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG888 [470] (byte~) mode_hicolmcchar::$26 ← (byte~) mode_hicolmcchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _26 - //SEG888 [471] (byte~) mode_hicolmcchar::$27 ← (byte) mode_hicolmcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG889 [471] (byte~) mode_hicolmcchar::$27 ← (byte) mode_hicolmcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG889 [472] (byte) mode_hicolmcchar::v#0 ← (byte~) mode_hicolmcchar::$26 | (byte~) mode_hicolmcchar::$27 -- vbuaa=vbuz1_bor_vbuaa + //SEG890 [472] (byte) mode_hicolmcchar::v#0 ← (byte~) mode_hicolmcchar::$26 | (byte~) mode_hicolmcchar::$27 -- vbuaa=vbuz1_bor_vbuaa ora _26 - //SEG890 [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuaa + //SEG891 [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG891 [474] (byte*) mode_hicolmcchar::col#1 ← ++ (byte*) mode_hicolmcchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG892 [474] (byte*) mode_hicolmcchar::col#1 ← ++ (byte*) mode_hicolmcchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG892 [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuaa + //SEG893 [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG893 [476] (byte*) mode_hicolmcchar::ch#1 ← ++ (byte*) mode_hicolmcchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG894 [476] (byte*) mode_hicolmcchar::ch#1 ← ++ (byte*) mode_hicolmcchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG894 [477] (byte) mode_hicolmcchar::cx#1 ← ++ (byte) mode_hicolmcchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG895 [477] (byte) mode_hicolmcchar::cx#1 ← ++ (byte) mode_hicolmcchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG895 [478] if((byte) mode_hicolmcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolmcchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG896 [478] if((byte) mode_hicolmcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolmcchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG896 mode_hicolmcchar::@5 - //SEG897 [479] (byte) mode_hicolmcchar::cy#1 ← ++ (byte) mode_hicolmcchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG897 mode_hicolmcchar::@5 + //SEG898 [479] (byte) mode_hicolmcchar::cy#1 ← ++ (byte) mode_hicolmcchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG898 [480] if((byte) mode_hicolmcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolmcchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG899 [480] if((byte) mode_hicolmcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolmcchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG899 [481] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@6 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@6] - //SEG900 mode_hicolmcchar::@6 - //SEG901 [482] call mode_ctrl - //SEG902 [155] phi from mode_hicolmcchar::@6 to mode_ctrl [phi:mode_hicolmcchar::@6->mode_ctrl] - //SEG903 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG900 [481] phi from mode_hicolmcchar::@5 to mode_hicolmcchar::@6 [phi:mode_hicolmcchar::@5->mode_hicolmcchar::@6] + //SEG901 mode_hicolmcchar::@6 + //SEG902 [482] call mode_ctrl + //SEG903 [155] phi from mode_hicolmcchar::@6 to mode_ctrl [phi:mode_hicolmcchar::@6->mode_ctrl] + //SEG904 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolmcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl - //SEG904 mode_hicolmcchar::@return - //SEG905 [483] return + //SEG905 mode_hicolmcchar::@return + //SEG906 [483] return rts } -//SEG906 mode_hicolecmchar +//SEG907 mode_hicolecmchar // High Color Extended Background Color Character Mode (LINEAR/CHUNK/COLDIS/MCM/BMM = 0, ECM/HICOL = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -28528,150 +28527,150 @@ mode_hicolecmchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG907 [484] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG908 [484] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG908 [485] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG909 [485] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG909 [486] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG910 [486] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolecmchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG910 [487] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG911 [487] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG911 [488] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG912 [488] *((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 - //SEG912 [489] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG913 [489] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG913 [490] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG914 [490] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|VIC_ECM|3 sta VIC_CONTROL - //SEG914 [491] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG915 [491] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG915 [492] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG916 [492] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG916 [493] phi from mode_hicolecmchar to mode_hicolecmchar::@1 [phi:mode_hicolecmchar->mode_hicolecmchar::@1] - //SEG917 [493] phi (byte) mode_hicolecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar->mode_hicolecmchar::@1#0] -- vbuxx=vbuc1 + //SEG917 [493] phi from mode_hicolecmchar to mode_hicolecmchar::@1 [phi:mode_hicolecmchar->mode_hicolecmchar::@1] + //SEG918 [493] phi (byte) mode_hicolecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar->mode_hicolecmchar::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG918 [493] phi from mode_hicolecmchar::@1 to mode_hicolecmchar::@1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1] - //SEG919 [493] phi (byte) mode_hicolecmchar::i#2 = (byte) mode_hicolecmchar::i#1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1#0] -- register_copy - //SEG920 mode_hicolecmchar::@1 + //SEG919 [493] phi from mode_hicolecmchar::@1 to mode_hicolecmchar::@1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1] + //SEG920 [493] phi (byte) mode_hicolecmchar::i#2 = (byte) mode_hicolecmchar::i#1 [phi:mode_hicolecmchar::@1->mode_hicolecmchar::@1#0] -- register_copy + //SEG921 mode_hicolecmchar::@1 b1: - //SEG921 [494] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolecmchar::i#2) ← (byte) mode_hicolecmchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG922 [494] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolecmchar::i#2) ← (byte) mode_hicolecmchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG922 [495] (byte) mode_hicolecmchar::i#1 ← ++ (byte) mode_hicolecmchar::i#2 -- vbuxx=_inc_vbuxx + //SEG923 [495] (byte) mode_hicolecmchar::i#1 ← ++ (byte) mode_hicolecmchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG923 [496] if((byte) mode_hicolecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolecmchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG924 [496] if((byte) mode_hicolecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolecmchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG924 mode_hicolecmchar::@4 - //SEG925 [497] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG925 mode_hicolecmchar::@4 + //SEG926 [497] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG926 [498] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 + //SEG927 [498] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- _deref_pbuc1=vbuc2 lda #$50 sta BGCOL1 - //SEG927 [499] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 + //SEG928 [499] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 -- _deref_pbuc1=vbuc2 lda #$54 sta BGCOL2 - //SEG928 [500] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 + //SEG929 [500] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 -- _deref_pbuc1=vbuc2 lda #$58 sta BGCOL3 - //SEG929 [501] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 92 -- _deref_pbuc1=vbuc2 + //SEG930 [501] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 92 -- _deref_pbuc1=vbuc2 lda #$5c sta BGCOL4 - //SEG930 [502] phi from mode_hicolecmchar::@4 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2] - //SEG931 [502] phi (byte*) mode_hicolecmchar::ch#3 = (const byte*) mode_hicolecmchar::SCREEN#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#0] -- pbuz1=pbuc1 + //SEG931 [502] phi from mode_hicolecmchar::@4 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2] + //SEG932 [502] phi (byte*) mode_hicolecmchar::ch#3 = (const byte*) mode_hicolecmchar::SCREEN#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG932 [502] phi (byte*) mode_hicolecmchar::col#3 = (const byte*) mode_hicolecmchar::COLORS#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#1] -- pbuz1=pbuc1 + //SEG933 [502] phi (byte*) mode_hicolecmchar::col#3 = (const byte*) mode_hicolecmchar::COLORS#0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG933 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#2] -- vbuz1=vbuc1 + //SEG934 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@4->mode_hicolecmchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy - //SEG934 [502] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2] - //SEG935 [502] phi (byte*) mode_hicolecmchar::ch#3 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#0] -- register_copy - //SEG936 [502] phi (byte*) mode_hicolecmchar::col#3 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#1] -- register_copy - //SEG937 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte) mode_hicolecmchar::cy#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#2] -- register_copy - //SEG938 mode_hicolecmchar::@2 + //SEG935 [502] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@2 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2] + //SEG936 [502] phi (byte*) mode_hicolecmchar::ch#3 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#0] -- register_copy + //SEG937 [502] phi (byte*) mode_hicolecmchar::col#3 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#1] -- register_copy + //SEG938 [502] phi (byte) mode_hicolecmchar::cy#4 = (byte) mode_hicolecmchar::cy#1 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@2#2] -- register_copy + //SEG939 mode_hicolecmchar::@2 b2: - //SEG939 [503] phi from mode_hicolecmchar::@2 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3] - //SEG940 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#0] -- register_copy - //SEG941 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#1] -- register_copy - //SEG942 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#2] -- vbuxx=vbuc1 + //SEG940 [503] phi from mode_hicolecmchar::@2 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3] + //SEG941 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#0] -- register_copy + //SEG942 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#3 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#1] -- register_copy + //SEG943 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolecmchar::@2->mode_hicolecmchar::@3#2] -- vbuxx=vbuc1 ldx #0 - //SEG943 [503] phi from mode_hicolecmchar::@3 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3] - //SEG944 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#0] -- register_copy - //SEG945 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#1] -- register_copy - //SEG946 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte) mode_hicolecmchar::cx#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#2] -- register_copy - //SEG947 mode_hicolecmchar::@3 + //SEG944 [503] phi from mode_hicolecmchar::@3 to mode_hicolecmchar::@3 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3] + //SEG945 [503] phi (byte*) mode_hicolecmchar::ch#2 = (byte*) mode_hicolecmchar::ch#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#0] -- register_copy + //SEG946 [503] phi (byte*) mode_hicolecmchar::col#2 = (byte*) mode_hicolecmchar::col#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#1] -- register_copy + //SEG947 [503] phi (byte) mode_hicolecmchar::cx#2 = (byte) mode_hicolecmchar::cx#1 [phi:mode_hicolecmchar::@3->mode_hicolecmchar::@3#2] -- register_copy + //SEG948 mode_hicolecmchar::@3 b3: - //SEG948 [504] (byte~) mode_hicolecmchar::$25 ← (byte) mode_hicolecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG949 [504] (byte~) mode_hicolecmchar::$25 ← (byte) mode_hicolecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG949 [505] (byte~) mode_hicolecmchar::$26 ← (byte~) mode_hicolecmchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG950 [505] (byte~) mode_hicolecmchar::$26 ← (byte~) mode_hicolecmchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _26 - //SEG950 [506] (byte~) mode_hicolecmchar::$27 ← (byte) mode_hicolecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG951 [506] (byte~) mode_hicolecmchar::$27 ← (byte) mode_hicolecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG951 [507] (byte) mode_hicolecmchar::v#0 ← (byte~) mode_hicolecmchar::$26 | (byte~) mode_hicolecmchar::$27 -- vbuaa=vbuz1_bor_vbuaa + //SEG952 [507] (byte) mode_hicolecmchar::v#0 ← (byte~) mode_hicolecmchar::$26 | (byte~) mode_hicolecmchar::$27 -- vbuaa=vbuz1_bor_vbuaa ora _26 - //SEG952 [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuaa + //SEG953 [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG953 [509] (byte*) mode_hicolecmchar::col#1 ← ++ (byte*) mode_hicolecmchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG954 [509] (byte*) mode_hicolecmchar::col#1 ← ++ (byte*) mode_hicolecmchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG954 [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuaa + //SEG955 [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG955 [511] (byte*) mode_hicolecmchar::ch#1 ← ++ (byte*) mode_hicolecmchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG956 [511] (byte*) mode_hicolecmchar::ch#1 ← ++ (byte*) mode_hicolecmchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG956 [512] (byte) mode_hicolecmchar::cx#1 ← ++ (byte) mode_hicolecmchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG957 [512] (byte) mode_hicolecmchar::cx#1 ← ++ (byte) mode_hicolecmchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG957 [513] if((byte) mode_hicolecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolecmchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG958 [513] if((byte) mode_hicolecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolecmchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG958 mode_hicolecmchar::@5 - //SEG959 [514] (byte) mode_hicolecmchar::cy#1 ← ++ (byte) mode_hicolecmchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG959 mode_hicolecmchar::@5 + //SEG960 [514] (byte) mode_hicolecmchar::cy#1 ← ++ (byte) mode_hicolecmchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG960 [515] if((byte) mode_hicolecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG961 [515] if((byte) mode_hicolecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG961 [516] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@6 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@6] - //SEG962 mode_hicolecmchar::@6 - //SEG963 [517] call mode_ctrl - //SEG964 [155] phi from mode_hicolecmchar::@6 to mode_ctrl [phi:mode_hicolecmchar::@6->mode_ctrl] - //SEG965 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG962 [516] phi from mode_hicolecmchar::@5 to mode_hicolecmchar::@6 [phi:mode_hicolecmchar::@5->mode_hicolecmchar::@6] + //SEG963 mode_hicolecmchar::@6 + //SEG964 [517] call mode_ctrl + //SEG965 [155] phi from mode_hicolecmchar::@6 to mode_ctrl [phi:mode_hicolecmchar::@6->mode_ctrl] + //SEG966 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl - //SEG966 mode_hicolecmchar::@return - //SEG967 [518] return + //SEG967 mode_hicolecmchar::@return + //SEG968 [518] return rts } -//SEG968 mode_hicolstdchar +//SEG969 mode_hicolstdchar // High Color Standard Character Mode (LINEAR/CHUNK/COLDIS/ECM/MCM/BMM = 0, HICOL = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -28688,140 +28687,140 @@ mode_hicolstdchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG969 [519] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolstdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG970 [519] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_hicolstdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG970 [520] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG971 [520] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #COLORS/$400 sta DTV_COLOR_BANK_LO - //SEG971 [521] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG972 [521] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const byte*) mode_hicolstdchar::COLORS#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG972 [522] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 + //SEG973 [522] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0 -- _deref_pbuc1=vbuc2 lda #DTV_HIGHCOLOR sta DTV_CONTROL - //SEG973 [523] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG974 [523] *((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 - //SEG974 [524] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolstdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG975 [524] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_hicolstdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG975 [525] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG976 [525] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG976 [526] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG977 [526] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG977 [527] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolstdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolstdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG978 [527] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_hicolstdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_hicolstdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG978 [528] phi from mode_hicolstdchar to mode_hicolstdchar::@1 [phi:mode_hicolstdchar->mode_hicolstdchar::@1] - //SEG979 [528] phi (byte) mode_hicolstdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar->mode_hicolstdchar::@1#0] -- vbuxx=vbuc1 + //SEG979 [528] phi from mode_hicolstdchar to mode_hicolstdchar::@1 [phi:mode_hicolstdchar->mode_hicolstdchar::@1] + //SEG980 [528] phi (byte) mode_hicolstdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar->mode_hicolstdchar::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG980 [528] phi from mode_hicolstdchar::@1 to mode_hicolstdchar::@1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1] - //SEG981 [528] phi (byte) mode_hicolstdchar::i#2 = (byte) mode_hicolstdchar::i#1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1#0] -- register_copy - //SEG982 mode_hicolstdchar::@1 + //SEG981 [528] phi from mode_hicolstdchar::@1 to mode_hicolstdchar::@1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1] + //SEG982 [528] phi (byte) mode_hicolstdchar::i#2 = (byte) mode_hicolstdchar::i#1 [phi:mode_hicolstdchar::@1->mode_hicolstdchar::@1#0] -- register_copy + //SEG983 mode_hicolstdchar::@1 b1: - //SEG983 [529] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolstdchar::i#2) ← (byte) mode_hicolstdchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG984 [529] *((const byte*) DTV_PALETTE#0 + (byte) mode_hicolstdchar::i#2) ← (byte) mode_hicolstdchar::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta DTV_PALETTE,x - //SEG984 [530] (byte) mode_hicolstdchar::i#1 ← ++ (byte) mode_hicolstdchar::i#2 -- vbuxx=_inc_vbuxx + //SEG985 [530] (byte) mode_hicolstdchar::i#1 ← ++ (byte) mode_hicolstdchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG985 [531] if((byte) mode_hicolstdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolstdchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG986 [531] if((byte) mode_hicolstdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_hicolstdchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG986 mode_hicolstdchar::@4 - //SEG987 [532] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG987 mode_hicolstdchar::@4 + //SEG988 [532] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG988 [533] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG989 [533] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta BORDERCOL - //SEG989 [534] phi from mode_hicolstdchar::@4 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2] - //SEG990 [534] phi (byte*) mode_hicolstdchar::ch#3 = (const byte*) mode_hicolstdchar::SCREEN#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#0] -- pbuz1=pbuc1 + //SEG990 [534] phi from mode_hicolstdchar::@4 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2] + //SEG991 [534] phi (byte*) mode_hicolstdchar::ch#3 = (const byte*) mode_hicolstdchar::SCREEN#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG991 [534] phi (byte*) mode_hicolstdchar::col#3 = (const byte*) mode_hicolstdchar::COLORS#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#1] -- pbuz1=pbuc1 + //SEG992 [534] phi (byte*) mode_hicolstdchar::col#3 = (const byte*) mode_hicolstdchar::COLORS#0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG992 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#2] -- vbuz1=vbuc1 + //SEG993 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@4->mode_hicolstdchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy - //SEG993 [534] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2] - //SEG994 [534] phi (byte*) mode_hicolstdchar::ch#3 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#0] -- register_copy - //SEG995 [534] phi (byte*) mode_hicolstdchar::col#3 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#1] -- register_copy - //SEG996 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte) mode_hicolstdchar::cy#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#2] -- register_copy - //SEG997 mode_hicolstdchar::@2 + //SEG994 [534] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@2 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2] + //SEG995 [534] phi (byte*) mode_hicolstdchar::ch#3 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#0] -- register_copy + //SEG996 [534] phi (byte*) mode_hicolstdchar::col#3 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#1] -- register_copy + //SEG997 [534] phi (byte) mode_hicolstdchar::cy#4 = (byte) mode_hicolstdchar::cy#1 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@2#2] -- register_copy + //SEG998 mode_hicolstdchar::@2 b2: - //SEG998 [535] phi from mode_hicolstdchar::@2 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3] - //SEG999 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#0] -- register_copy - //SEG1000 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#1] -- register_copy - //SEG1001 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#2] -- vbuxx=vbuc1 + //SEG999 [535] phi from mode_hicolstdchar::@2 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3] + //SEG1000 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#0] -- register_copy + //SEG1001 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#3 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#1] -- register_copy + //SEG1002 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_hicolstdchar::@2->mode_hicolstdchar::@3#2] -- vbuxx=vbuc1 ldx #0 - //SEG1002 [535] phi from mode_hicolstdchar::@3 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3] - //SEG1003 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#0] -- register_copy - //SEG1004 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#1] -- register_copy - //SEG1005 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte) mode_hicolstdchar::cx#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#2] -- register_copy - //SEG1006 mode_hicolstdchar::@3 + //SEG1003 [535] phi from mode_hicolstdchar::@3 to mode_hicolstdchar::@3 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3] + //SEG1004 [535] phi (byte*) mode_hicolstdchar::ch#2 = (byte*) mode_hicolstdchar::ch#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#0] -- register_copy + //SEG1005 [535] phi (byte*) mode_hicolstdchar::col#2 = (byte*) mode_hicolstdchar::col#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#1] -- register_copy + //SEG1006 [535] phi (byte) mode_hicolstdchar::cx#2 = (byte) mode_hicolstdchar::cx#1 [phi:mode_hicolstdchar::@3->mode_hicolstdchar::@3#2] -- register_copy + //SEG1007 mode_hicolstdchar::@3 b3: - //SEG1007 [536] (byte~) mode_hicolstdchar::$24 ← (byte) mode_hicolstdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1008 [536] (byte~) mode_hicolstdchar::$24 ← (byte) mode_hicolstdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1008 [537] (byte~) mode_hicolstdchar::$25 ← (byte~) mode_hicolstdchar::$24 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1009 [537] (byte~) mode_hicolstdchar::$25 ← (byte~) mode_hicolstdchar::$24 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _25 - //SEG1009 [538] (byte~) mode_hicolstdchar::$26 ← (byte) mode_hicolstdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1010 [538] (byte~) mode_hicolstdchar::$26 ← (byte) mode_hicolstdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1010 [539] (byte) mode_hicolstdchar::v#0 ← (byte~) mode_hicolstdchar::$25 | (byte~) mode_hicolstdchar::$26 -- vbuaa=vbuz1_bor_vbuaa + //SEG1011 [539] (byte) mode_hicolstdchar::v#0 ← (byte~) mode_hicolstdchar::$25 | (byte~) mode_hicolstdchar::$26 -- vbuaa=vbuz1_bor_vbuaa ora _25 - //SEG1011 [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuaa + //SEG1012 [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG1012 [541] (byte*) mode_hicolstdchar::col#1 ← ++ (byte*) mode_hicolstdchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1013 [541] (byte*) mode_hicolstdchar::col#1 ← ++ (byte*) mode_hicolstdchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1013 [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuaa + //SEG1014 [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1014 [543] (byte*) mode_hicolstdchar::ch#1 ← ++ (byte*) mode_hicolstdchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1015 [543] (byte*) mode_hicolstdchar::ch#1 ← ++ (byte*) mode_hicolstdchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1015 [544] (byte) mode_hicolstdchar::cx#1 ← ++ (byte) mode_hicolstdchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG1016 [544] (byte) mode_hicolstdchar::cx#1 ← ++ (byte) mode_hicolstdchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1016 [545] if((byte) mode_hicolstdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolstdchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1017 [545] if((byte) mode_hicolstdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_hicolstdchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG1017 mode_hicolstdchar::@5 - //SEG1018 [546] (byte) mode_hicolstdchar::cy#1 ← ++ (byte) mode_hicolstdchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1018 mode_hicolstdchar::@5 + //SEG1019 [546] (byte) mode_hicolstdchar::cy#1 ← ++ (byte) mode_hicolstdchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1019 [547] if((byte) mode_hicolstdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolstdchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1020 [547] if((byte) mode_hicolstdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_hicolstdchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG1020 [548] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@6 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@6] - //SEG1021 mode_hicolstdchar::@6 - //SEG1022 [549] call mode_ctrl - //SEG1023 [155] phi from mode_hicolstdchar::@6 to mode_ctrl [phi:mode_hicolstdchar::@6->mode_ctrl] - //SEG1024 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1021 [548] phi from mode_hicolstdchar::@5 to mode_hicolstdchar::@6 [phi:mode_hicolstdchar::@5->mode_hicolstdchar::@6] + //SEG1022 mode_hicolstdchar::@6 + //SEG1023 [549] call mode_ctrl + //SEG1024 [155] phi from mode_hicolstdchar::@6 to mode_ctrl [phi:mode_hicolstdchar::@6->mode_ctrl] + //SEG1025 [155] phi (byte) dtv_control#145 = (const byte) DTV_HIGHCOLOR#0 [phi:mode_hicolstdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #DTV_HIGHCOLOR sta dtv_control jsr mode_ctrl - //SEG1025 mode_hicolstdchar::@return - //SEG1026 [550] return + //SEG1026 mode_hicolstdchar::@return + //SEG1027 [550] return rts } -//SEG1027 mode_stdbitmap +//SEG1028 mode_stdbitmap // Standard Bitmap Mode (LINEAR/HICOL/CHUNK/COLDIS/MCM/ECM = 0, BMM = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -28837,166 +28836,166 @@ mode_stdbitmap: { .label ch = 2 .label cy = 4 .label l = 4 - //SEG1028 [551] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdbitmap::BITMAP#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1029 [551] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdbitmap::BITMAP#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&BITMAP)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1029 [552] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1030 [552] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_CONTROL - //SEG1030 [553] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1031 [553] *((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 - //SEG1031 [554] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdbitmap::BITMAP#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1032 [554] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdbitmap::BITMAP#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^BITMAP/$4000 sta CIA2_PORT_A - //SEG1032 [555] *((const byte*) VIC_CONTROL#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 -- _deref_pbuc1=vbuc2 + //SEG1033 [555] *((const byte*) VIC_CONTROL#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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1033 [556] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1034 [556] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1034 [557] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdbitmap::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdbitmap::BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1035 [557] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdbitmap::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdbitmap::BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY - //SEG1035 [558] phi from mode_stdbitmap to mode_stdbitmap::@1 [phi:mode_stdbitmap->mode_stdbitmap::@1] - //SEG1036 [558] phi (byte) mode_stdbitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap->mode_stdbitmap::@1#0] -- vbuxx=vbuc1 + //SEG1036 [558] phi from mode_stdbitmap to mode_stdbitmap::@1 [phi:mode_stdbitmap->mode_stdbitmap::@1] + //SEG1037 [558] phi (byte) mode_stdbitmap::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap->mode_stdbitmap::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG1037 [558] phi from mode_stdbitmap::@1 to mode_stdbitmap::@1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1] - //SEG1038 [558] phi (byte) mode_stdbitmap::i#2 = (byte) mode_stdbitmap::i#1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1#0] -- register_copy - //SEG1039 mode_stdbitmap::@1 + //SEG1038 [558] phi from mode_stdbitmap::@1 to mode_stdbitmap::@1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1] + //SEG1039 [558] phi (byte) mode_stdbitmap::i#2 = (byte) mode_stdbitmap::i#1 [phi:mode_stdbitmap::@1->mode_stdbitmap::@1#0] -- register_copy + //SEG1040 mode_stdbitmap::@1 b1: - //SEG1040 [559] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdbitmap::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdbitmap::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG1041 [559] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdbitmap::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdbitmap::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG1041 [560] (byte) mode_stdbitmap::i#1 ← ++ (byte) mode_stdbitmap::i#2 -- vbuxx=_inc_vbuxx + //SEG1042 [560] (byte) mode_stdbitmap::i#1 ← ++ (byte) mode_stdbitmap::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1042 [561] if((byte) mode_stdbitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdbitmap::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1043 [561] if((byte) mode_stdbitmap::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdbitmap::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG1043 mode_stdbitmap::@5 - //SEG1044 [562] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1044 mode_stdbitmap::@5 + //SEG1045 [562] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG1045 [563] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1046 [563] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 sta BORDERCOL - //SEG1046 [564] phi from mode_stdbitmap::@5 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2] - //SEG1047 [564] phi (byte*) mode_stdbitmap::ch#3 = (const byte*) mode_stdbitmap::SCREEN#0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#0] -- pbuz1=pbuc1 + //SEG1047 [564] phi from mode_stdbitmap::@5 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2] + //SEG1048 [564] phi (byte*) mode_stdbitmap::ch#3 = (const byte*) mode_stdbitmap::SCREEN#0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1048 [564] phi (byte) mode_stdbitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#1] -- vbuz1=vbuc1 + //SEG1049 [564] phi (byte) mode_stdbitmap::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@5->mode_stdbitmap::@2#1] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1049 [564] phi from mode_stdbitmap::@6 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2] - //SEG1050 [564] phi (byte*) mode_stdbitmap::ch#3 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#0] -- register_copy - //SEG1051 [564] phi (byte) mode_stdbitmap::cy#4 = (byte) mode_stdbitmap::cy#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#1] -- register_copy - //SEG1052 mode_stdbitmap::@2 + //SEG1050 [564] phi from mode_stdbitmap::@6 to mode_stdbitmap::@2 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2] + //SEG1051 [564] phi (byte*) mode_stdbitmap::ch#3 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#0] -- register_copy + //SEG1052 [564] phi (byte) mode_stdbitmap::cy#4 = (byte) mode_stdbitmap::cy#1 [phi:mode_stdbitmap::@6->mode_stdbitmap::@2#1] -- register_copy + //SEG1053 mode_stdbitmap::@2 b2: - //SEG1053 [565] phi from mode_stdbitmap::@2 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3] - //SEG1054 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#0] -- register_copy - //SEG1055 [565] phi (byte) mode_stdbitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#1] -- vbuxx=vbuc1 + //SEG1054 [565] phi from mode_stdbitmap::@2 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3] + //SEG1055 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#3 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#0] -- register_copy + //SEG1056 [565] phi (byte) mode_stdbitmap::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@2->mode_stdbitmap::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG1056 [565] phi from mode_stdbitmap::@3 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3] - //SEG1057 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#0] -- register_copy - //SEG1058 [565] phi (byte) mode_stdbitmap::cx#2 = (byte) mode_stdbitmap::cx#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#1] -- register_copy - //SEG1059 mode_stdbitmap::@3 + //SEG1057 [565] phi from mode_stdbitmap::@3 to mode_stdbitmap::@3 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3] + //SEG1058 [565] phi (byte*) mode_stdbitmap::ch#2 = (byte*) mode_stdbitmap::ch#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#0] -- register_copy + //SEG1059 [565] phi (byte) mode_stdbitmap::cx#2 = (byte) mode_stdbitmap::cx#1 [phi:mode_stdbitmap::@3->mode_stdbitmap::@3#1] -- register_copy + //SEG1060 mode_stdbitmap::@3 b3: - //SEG1060 [566] (byte~) mode_stdbitmap::$19 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1061 [566] (byte~) mode_stdbitmap::$19 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1061 [567] (byte) mode_stdbitmap::col#0 ← (byte~) mode_stdbitmap::$19 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuaa_band_vbuc1 + //SEG1062 [567] (byte) mode_stdbitmap::col#0 ← (byte~) mode_stdbitmap::$19 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuaa_band_vbuc1 and #$f tay - //SEG1062 [568] (byte) mode_stdbitmap::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) mode_stdbitmap::col#0 -- vbuz1=vbuc1_minus_vbuyy + //SEG1063 [568] (byte) mode_stdbitmap::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) mode_stdbitmap::col#0 -- vbuz1=vbuc1_minus_vbuyy tya eor #$ff clc adc #$f+1 sta col2 - //SEG1063 [569] (byte~) mode_stdbitmap::$22 ← (byte) mode_stdbitmap::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_rol_4 + //SEG1064 [569] (byte~) mode_stdbitmap::$22 ← (byte) mode_stdbitmap::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_rol_4 tya asl asl asl asl - //SEG1064 [570] (byte~) mode_stdbitmap::$23 ← (byte~) mode_stdbitmap::$22 | (byte) mode_stdbitmap::col2#0 -- vbuaa=vbuaa_bor_vbuz1 + //SEG1065 [570] (byte~) mode_stdbitmap::$23 ← (byte~) mode_stdbitmap::$22 | (byte) mode_stdbitmap::col2#0 -- vbuaa=vbuaa_bor_vbuz1 ora col2 - //SEG1065 [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$23 -- _deref_pbuz1=vbuaa + //SEG1066 [571] *((byte*) mode_stdbitmap::ch#2) ← (byte~) mode_stdbitmap::$23 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1066 [572] (byte*) mode_stdbitmap::ch#1 ← ++ (byte*) mode_stdbitmap::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1067 [572] (byte*) mode_stdbitmap::ch#1 ← ++ (byte*) mode_stdbitmap::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1067 [573] (byte) mode_stdbitmap::cx#1 ← ++ (byte) mode_stdbitmap::cx#2 -- vbuxx=_inc_vbuxx + //SEG1068 [573] (byte) mode_stdbitmap::cx#1 ← ++ (byte) mode_stdbitmap::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1068 [574] if((byte) mode_stdbitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdbitmap::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1069 [574] if((byte) mode_stdbitmap::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdbitmap::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG1069 mode_stdbitmap::@6 - //SEG1070 [575] (byte) mode_stdbitmap::cy#1 ← ++ (byte) mode_stdbitmap::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1070 mode_stdbitmap::@6 + //SEG1071 [575] (byte) mode_stdbitmap::cy#1 ← ++ (byte) mode_stdbitmap::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1071 [576] if((byte) mode_stdbitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdbitmap::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1072 [576] if((byte) mode_stdbitmap::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdbitmap::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG1072 [577] phi from mode_stdbitmap::@6 to mode_stdbitmap::@7 [phi:mode_stdbitmap::@6->mode_stdbitmap::@7] - //SEG1073 mode_stdbitmap::@7 - //SEG1074 [578] call bitmap_init - //SEG1075 [732] phi from mode_stdbitmap::@7 to bitmap_init [phi:mode_stdbitmap::@7->bitmap_init] + //SEG1073 [577] phi from mode_stdbitmap::@6 to mode_stdbitmap::@7 [phi:mode_stdbitmap::@6->mode_stdbitmap::@7] + //SEG1074 mode_stdbitmap::@7 + //SEG1075 [578] call bitmap_init + //SEG1076 [732] phi from mode_stdbitmap::@7 to bitmap_init [phi:mode_stdbitmap::@7->bitmap_init] jsr bitmap_init - //SEG1076 [579] phi from mode_stdbitmap::@7 to mode_stdbitmap::@9 [phi:mode_stdbitmap::@7->mode_stdbitmap::@9] - //SEG1077 mode_stdbitmap::@9 - //SEG1078 [580] call bitmap_clear + //SEG1077 [579] phi from mode_stdbitmap::@7 to mode_stdbitmap::@9 [phi:mode_stdbitmap::@7->mode_stdbitmap::@9] + //SEG1078 mode_stdbitmap::@9 + //SEG1079 [580] call bitmap_clear jsr bitmap_clear - //SEG1079 [581] phi from mode_stdbitmap::@9 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4] - //SEG1080 [581] phi (byte) mode_stdbitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4#0] -- vbuz1=vbuc1 + //SEG1080 [581] phi from mode_stdbitmap::@9 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4] + //SEG1081 [581] phi (byte) mode_stdbitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@9->mode_stdbitmap::@4#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG1081 [581] phi from mode_stdbitmap::@11 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4] - //SEG1082 [581] phi (byte) mode_stdbitmap::l#2 = (byte) mode_stdbitmap::l#1 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4#0] -- register_copy - //SEG1083 mode_stdbitmap::@4 + //SEG1082 [581] phi from mode_stdbitmap::@11 to mode_stdbitmap::@4 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4] + //SEG1083 [581] phi (byte) mode_stdbitmap::l#2 = (byte) mode_stdbitmap::l#1 [phi:mode_stdbitmap::@11->mode_stdbitmap::@4#0] -- register_copy + //SEG1084 mode_stdbitmap::@4 b4: - //SEG1084 [582] (byte) bitmap_line::x0#0 ← *((const byte[]) mode_stdbitmap::lines_x#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1085 [582] (byte) bitmap_line::x0#0 ← *((const byte[]) mode_stdbitmap::lines_x#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG1085 [583] (byte) bitmap_line::x1#0 ← *((const byte[]) mode_stdbitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1086 [583] (byte) bitmap_line::x1#0 ← *((const byte[]) mode_stdbitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_x+1,y sta bitmap_line.x1 - //SEG1086 [584] (byte) bitmap_line::y0#0 ← *((const byte[]) mode_stdbitmap::lines_y#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1087 [584] (byte) bitmap_line::y0#0 ← *((const byte[]) mode_stdbitmap::lines_y#0 + (byte) mode_stdbitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_y,y sta bitmap_line.y0 - //SEG1087 [585] (byte) bitmap_line::y1#0 ← *((const byte[]) mode_stdbitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG1088 [585] (byte) bitmap_line::y1#0 ← *((const byte[]) mode_stdbitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mode_stdbitmap::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 ldx l ldy lines_y+1,x - //SEG1088 [586] call bitmap_line + //SEG1089 [586] call bitmap_line jsr bitmap_line - //SEG1089 mode_stdbitmap::@11 - //SEG1090 [587] (byte) mode_stdbitmap::l#1 ← ++ (byte) mode_stdbitmap::l#2 -- vbuz1=_inc_vbuz1 + //SEG1090 mode_stdbitmap::@11 + //SEG1091 [587] (byte) mode_stdbitmap::l#1 ← ++ (byte) mode_stdbitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG1091 [588] if((byte) mode_stdbitmap::l#1<(const byte) mode_stdbitmap::lines_cnt#0) goto mode_stdbitmap::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG1092 [588] if((byte) mode_stdbitmap::l#1<(const byte) mode_stdbitmap::lines_cnt#0) goto mode_stdbitmap::@4 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b4 - //SEG1092 [589] phi from mode_stdbitmap::@11 to mode_stdbitmap::@8 [phi:mode_stdbitmap::@11->mode_stdbitmap::@8] - //SEG1093 mode_stdbitmap::@8 - //SEG1094 [590] call mode_ctrl - //SEG1095 [155] phi from mode_stdbitmap::@8 to mode_ctrl [phi:mode_stdbitmap::@8->mode_ctrl] - //SEG1096 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@8->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1093 [589] phi from mode_stdbitmap::@11 to mode_stdbitmap::@8 [phi:mode_stdbitmap::@11->mode_stdbitmap::@8] + //SEG1094 mode_stdbitmap::@8 + //SEG1095 [590] call mode_ctrl + //SEG1096 [155] phi from mode_stdbitmap::@8 to mode_ctrl [phi:mode_stdbitmap::@8->mode_ctrl] + //SEG1097 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdbitmap::@8->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl - //SEG1097 mode_stdbitmap::@return - //SEG1098 [591] return + //SEG1098 mode_stdbitmap::@return + //SEG1099 [591] 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 } -//SEG1099 bitmap_line +//SEG1100 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = 8 @@ -29004,229 +29003,229 @@ bitmap_line: { .label x0 = 9 .label x1 = $c .label y0 = $b - //SEG1100 [592] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG1101 [592] 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 - //SEG1101 bitmap_line::@15 - //SEG1102 [593] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1102 bitmap_line::@15 + //SEG1103 [593] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 sec sbc x1 sta xd - //SEG1103 [594] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 + //SEG1104 [594] 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 !: - //SEG1104 bitmap_line::@16 - //SEG1105 [595] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1105 bitmap_line::@16 + //SEG1106 [595] (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 - //SEG1106 [596] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1107 [596] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b3 - //SEG1107 bitmap_line::@17 - //SEG1108 [597] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1108 bitmap_line::@17 + //SEG1109 [597] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y - //SEG1109 [598] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1110 [598] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1110 [599] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 - //SEG1111 [600] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG1112 [601] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1113 [602] call bitmap_line_ydxi - //SEG1114 [676] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] - //SEG1115 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG1116 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG1117 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG1118 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG1119 [676] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG1111 [599] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + //SEG1112 [600] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1113 [601] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1114 [602] call bitmap_line_ydxi + //SEG1115 [676] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1116 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1117 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1118 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1119 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1120 [676] 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 - //SEG1120 bitmap_line::@return + //SEG1121 bitmap_line::@return breturn: - //SEG1121 [603] return + //SEG1122 [603] return rts - //SEG1122 bitmap_line::@3 + //SEG1123 bitmap_line::@3 b3: - //SEG1123 [604] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1124 [604] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1124 [605] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1125 [605] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyi.y - //SEG1125 [606] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 - //SEG1126 [607] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1127 [608] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG1128 [609] call bitmap_line_xdyi - //SEG1129 [654] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] - //SEG1130 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG1131 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG1132 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG1133 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG1134 [654] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG1126 [606] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + //SEG1127 [607] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1128 [608] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1129 [609] call bitmap_line_xdyi + //SEG1130 [654] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1131 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1132 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1133 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1134 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1135 [654] 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 - //SEG1135 bitmap_line::@2 + //SEG1136 bitmap_line::@2 b2: - //SEG1136 [610] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1137 [610] (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 - //SEG1137 [611] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1138 [611] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b6 - //SEG1138 bitmap_line::@20 - //SEG1139 [612] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1139 bitmap_line::@20 + //SEG1140 [612] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1140 [613] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1141 [613] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1141 [614] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1142 [614] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y1 - //SEG1142 [615] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG1143 [616] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1144 [617] call bitmap_line_ydxd - //SEG1145 [706] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] - //SEG1146 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG1147 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG1148 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG1149 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG1150 [706] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG1143 [615] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1144 [616] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1145 [617] call bitmap_line_ydxd + //SEG1146 [706] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1147 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1148 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1149 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1150 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1151 [706] 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 - //SEG1151 bitmap_line::@6 + //SEG1152 bitmap_line::@6 b6: - //SEG1152 [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1153 [618] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1153 [619] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1154 [619] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyd.y - //SEG1154 [620] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1155 [620] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1155 [621] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG1156 [622] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG1157 [623] call bitmap_line_xdyd - //SEG1158 [691] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] - //SEG1159 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG1160 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG1161 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG1162 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG1163 [691] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG1156 [621] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1157 [622] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1158 [623] call bitmap_line_xdyd + //SEG1159 [691] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1160 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1161 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1162 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1163 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1164 [691] 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 - //SEG1164 bitmap_line::@1 + //SEG1165 bitmap_line::@1 b1: - //SEG1165 [624] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1166 [624] (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 - //SEG1166 [625] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 + //SEG1167 [625] 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 !: - //SEG1167 bitmap_line::@23 - //SEG1168 [626] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1168 bitmap_line::@23 + //SEG1169 [626] (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 - //SEG1169 [627] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1170 [627] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b10 - //SEG1170 bitmap_line::@24 - //SEG1171 [628] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1171 bitmap_line::@24 + //SEG1172 [628] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y - //SEG1172 [629] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1173 [629] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1173 [630] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 - //SEG1174 [631] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG1175 [632] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1176 [633] call bitmap_line_ydxd - //SEG1177 [706] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] - //SEG1178 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG1179 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG1180 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG1181 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG1182 [706] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG1174 [630] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + //SEG1175 [631] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1176 [632] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1177 [633] call bitmap_line_ydxd + //SEG1178 [706] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1179 [706] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1180 [706] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1181 [706] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1182 [706] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1183 [706] 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 - //SEG1183 bitmap_line::@10 + //SEG1184 bitmap_line::@10 b10: - //SEG1184 [634] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1185 [634] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1185 [635] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - //SEG1186 [636] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 - //SEG1187 [637] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1188 [638] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG1189 [639] call bitmap_line_xdyd - //SEG1190 [691] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] - //SEG1191 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG1192 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG1193 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG1194 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG1195 [691] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG1186 [635] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + //SEG1187 [636] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + //SEG1188 [637] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1189 [638] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1190 [639] call bitmap_line_xdyd + //SEG1191 [691] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1192 [691] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1193 [691] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1194 [691] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1195 [691] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1196 [691] 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 - //SEG1196 bitmap_line::@9 + //SEG1197 bitmap_line::@9 b9: - //SEG1197 [640] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1198 [640] (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 - //SEG1198 [641] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1199 [641] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b13 - //SEG1199 bitmap_line::@27 - //SEG1200 [642] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1200 bitmap_line::@27 + //SEG1201 [642] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1201 [643] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1202 [643] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1202 [644] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1203 [644] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y1 - //SEG1203 [645] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG1204 [646] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1205 [647] call bitmap_line_ydxi - //SEG1206 [676] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] - //SEG1207 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG1208 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG1209 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG1210 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG1211 [676] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG1204 [645] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1205 [646] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1206 [647] call bitmap_line_ydxi + //SEG1207 [676] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1208 [676] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1209 [676] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1210 [676] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1211 [676] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1212 [676] 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 - //SEG1212 bitmap_line::@13 + //SEG1213 bitmap_line::@13 b13: - //SEG1213 [648] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1214 [648] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1214 [649] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - //SEG1215 [650] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1215 [649] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + //SEG1216 [650] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1216 [651] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG1217 [652] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG1218 [653] call bitmap_line_xdyi - //SEG1219 [654] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] - //SEG1220 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG1221 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG1222 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG1223 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG1224 [654] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG1217 [651] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1218 [652] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1219 [653] call bitmap_line_xdyi + //SEG1220 [654] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1221 [654] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1222 [654] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1223 [654] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1224 [654] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1225 [654] 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 } -//SEG1225 bitmap_line_xdyi +//SEG1226 bitmap_line_xdyi bitmap_line_xdyi: { .label x = $a .label y = $b @@ -29234,76 +29233,76 @@ bitmap_line_xdyi: { .label xd = 8 .label yd = 7 .label e = $c - //SEG1226 [655] (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 + //SEG1227 [655] (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 - //SEG1227 [656] 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] - //SEG1228 [656] 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 - //SEG1229 [656] 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 - //SEG1230 [656] 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 - //SEG1231 bitmap_line_xdyi::@1 + //SEG1228 [656] 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] + //SEG1229 [656] 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 + //SEG1230 [656] 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 + //SEG1231 [656] 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 + //SEG1232 bitmap_line_xdyi::@1 b1: - //SEG1232 [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 + //SEG1233 [657] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx x - //SEG1233 [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 + //SEG1234 [658] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1234 [659] call bitmap_plot - //SEG1235 [669] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] - //SEG1236 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG1237 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG1235 [659] call bitmap_plot + //SEG1236 [669] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1237 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1238 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG1238 bitmap_line_xdyi::@5 - //SEG1239 [660] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1239 bitmap_line_xdyi::@5 + //SEG1240 [660] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1240 [661] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1241 [661] (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 - //SEG1241 [662] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1242 [662] 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 - //SEG1242 bitmap_line_xdyi::@3 - //SEG1243 [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1243 bitmap_line_xdyi::@3 + //SEG1244 [663] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1244 [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1245 [664] (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 - //SEG1245 [665] 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] - //SEG1246 [665] 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 - //SEG1247 [665] 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 - //SEG1248 bitmap_line_xdyi::@2 + //SEG1246 [665] 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] + //SEG1247 [665] 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 + //SEG1248 [665] 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 + //SEG1249 bitmap_line_xdyi::@2 b2: - //SEG1249 [666] (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 + //SEG1250 [666] (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 - //SEG1250 [667] 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 + //SEG1251 [667] 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 - //SEG1251 bitmap_line_xdyi::@return - //SEG1252 [668] return + //SEG1252 bitmap_line_xdyi::@return + //SEG1253 [668] return rts } -//SEG1253 bitmap_plot +//SEG1254 bitmap_plot bitmap_plot: { .label _0 = 2 .label plotter_x = 2 .label plotter_y = 5 - //SEG1254 [670] (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 + //SEG1255 [670] (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 - //SEG1255 [671] (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 + //SEG1256 [671] (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 - //SEG1256 [672] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG1257 [672] (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 @@ -29311,78 +29310,78 @@ bitmap_plot: { lda _0+1 adc plotter_y+1 sta _0+1 - //SEG1257 [673] (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 + //SEG1258 [673] (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 - //SEG1258 [674] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa + //SEG1259 [674] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa sta (_0),y - //SEG1259 bitmap_plot::@return - //SEG1260 [675] return + //SEG1260 bitmap_plot::@return + //SEG1261 [675] return rts } -//SEG1261 bitmap_line_ydxi +//SEG1262 bitmap_line_ydxi bitmap_line_ydxi: { .label y = $a .label y1 = $b .label yd = 7 .label xd = 8 .label e = 9 - //SEG1262 [677] (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 + //SEG1263 [677] (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 - //SEG1263 [678] 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] - //SEG1264 [678] 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 - //SEG1265 [678] 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 - //SEG1266 [678] 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 - //SEG1267 bitmap_line_ydxi::@1 + //SEG1264 [678] 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] + //SEG1265 [678] 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 + //SEG1266 [678] 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 + //SEG1267 [678] 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 + //SEG1268 bitmap_line_ydxi::@1 b1: - //SEG1268 [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - //SEG1269 [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 + //SEG1269 [679] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + //SEG1270 [680] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1270 [681] call bitmap_plot - //SEG1271 [669] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] - //SEG1272 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG1273 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG1271 [681] call bitmap_plot + //SEG1272 [669] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1273 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1274 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG1274 bitmap_line_ydxi::@5 - //SEG1275 [682] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1275 bitmap_line_ydxi::@5 + //SEG1276 [682] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1276 [683] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1277 [683] (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 - //SEG1277 [684] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1278 [684] 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 - //SEG1278 bitmap_line_ydxi::@3 - //SEG1279 [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx + //SEG1279 bitmap_line_ydxi::@3 + //SEG1280 [685] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG1280 [686] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1281 [686] (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 - //SEG1281 [687] 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] - //SEG1282 [687] 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 - //SEG1283 [687] 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 - //SEG1284 bitmap_line_ydxi::@2 + //SEG1282 [687] 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] + //SEG1283 [687] 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 + //SEG1284 [687] 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 + //SEG1285 bitmap_line_ydxi::@2 b2: - //SEG1285 [688] (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 + //SEG1286 [688] (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 - //SEG1286 [689] 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 + //SEG1287 [689] 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 - //SEG1287 bitmap_line_ydxi::@return - //SEG1288 [690] return + //SEG1288 bitmap_line_ydxi::@return + //SEG1289 [690] return rts } -//SEG1289 bitmap_line_xdyd +//SEG1290 bitmap_line_xdyd bitmap_line_xdyd: { .label x = $a .label y = $b @@ -29390,254 +29389,254 @@ bitmap_line_xdyd: { .label xd = 8 .label yd = 7 .label e = 9 - //SEG1290 [692] (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 + //SEG1291 [692] (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 - //SEG1291 [693] 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] - //SEG1292 [693] 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 - //SEG1293 [693] 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 - //SEG1294 [693] 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 - //SEG1295 bitmap_line_xdyd::@1 + //SEG1292 [693] 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] + //SEG1293 [693] 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 + //SEG1294 [693] 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 + //SEG1295 [693] 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 + //SEG1296 bitmap_line_xdyd::@1 b1: - //SEG1296 [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 + //SEG1297 [694] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx x - //SEG1297 [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 + //SEG1298 [695] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy y - //SEG1298 [696] call bitmap_plot - //SEG1299 [669] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] - //SEG1300 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG1301 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG1299 [696] call bitmap_plot + //SEG1300 [669] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1301 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1302 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG1302 bitmap_line_xdyd::@5 - //SEG1303 [697] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1303 bitmap_line_xdyd::@5 + //SEG1304 [697] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1304 [698] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1305 [698] (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 - //SEG1305 [699] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1306 [699] 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 - //SEG1306 bitmap_line_xdyd::@3 - //SEG1307 [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1307 bitmap_line_xdyd::@3 + //SEG1308 [700] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1308 [701] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1309 [701] (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 - //SEG1309 [702] 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] - //SEG1310 [702] 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 - //SEG1311 [702] 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 - //SEG1312 bitmap_line_xdyd::@2 + //SEG1310 [702] 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] + //SEG1311 [702] 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 + //SEG1312 [702] 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 + //SEG1313 bitmap_line_xdyd::@2 b2: - //SEG1313 [703] (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 + //SEG1314 [703] (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 - //SEG1314 [704] 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 + //SEG1315 [704] 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 - //SEG1315 bitmap_line_xdyd::@return - //SEG1316 [705] return + //SEG1316 bitmap_line_xdyd::@return + //SEG1317 [705] return rts } -//SEG1317 bitmap_line_ydxd +//SEG1318 bitmap_line_ydxd bitmap_line_ydxd: { .label y = $a .label y1 = $b .label yd = 7 .label xd = 8 .label e = 9 - //SEG1318 [707] (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 + //SEG1319 [707] (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 - //SEG1319 [708] 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] - //SEG1320 [708] 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 - //SEG1321 [708] 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 - //SEG1322 [708] 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 - //SEG1323 bitmap_line_ydxd::@1 + //SEG1320 [708] 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] + //SEG1321 [708] 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 + //SEG1322 [708] 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 + //SEG1323 [708] 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 + //SEG1324 bitmap_line_ydxd::@1 b1: - //SEG1324 [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - //SEG1325 [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 + //SEG1325 [709] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + //SEG1326 [710] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy y - //SEG1326 [711] call bitmap_plot - //SEG1327 [669] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] - //SEG1328 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG1329 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG1327 [711] call bitmap_plot + //SEG1328 [669] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1329 [669] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1330 [669] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG1330 bitmap_line_ydxd::@5 - //SEG1331 [712] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1331 bitmap_line_ydxd::@5 + //SEG1332 [712] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1332 [713] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1333 [713] (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 - //SEG1333 [714] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1334 [714] 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 - //SEG1334 bitmap_line_ydxd::@3 - //SEG1335 [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx + //SEG1335 bitmap_line_ydxd::@3 + //SEG1336 [715] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx dex - //SEG1336 [716] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1337 [716] (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 - //SEG1337 [717] 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] - //SEG1338 [717] 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 - //SEG1339 [717] 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 - //SEG1340 bitmap_line_ydxd::@2 + //SEG1338 [717] 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] + //SEG1339 [717] 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 + //SEG1340 [717] 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 + //SEG1341 bitmap_line_ydxd::@2 b2: - //SEG1341 [718] (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 + //SEG1342 [718] (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 - //SEG1342 [719] 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 + //SEG1343 [719] 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 - //SEG1343 bitmap_line_ydxd::@return - //SEG1344 [720] return + //SEG1344 bitmap_line_ydxd::@return + //SEG1345 [720] return rts } -//SEG1345 bitmap_clear +//SEG1346 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 2 .label y = 4 .label _3 = 2 - //SEG1346 [721] (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 + //SEG1347 [721] (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 - //SEG1347 [722] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG1348 [723] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] - //SEG1349 [723] 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 + //SEG1348 [722] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG1349 [723] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1350 [723] 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 - //SEG1350 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy - //SEG1351 [723] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] - //SEG1352 [723] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG1353 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy - //SEG1354 bitmap_clear::@1 + //SEG1351 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG1352 [723] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1353 [723] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1354 [723] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG1355 bitmap_clear::@1 b1: - //SEG1355 [724] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] - //SEG1356 [724] 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 + //SEG1356 [724] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1357 [724] 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 - //SEG1357 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy - //SEG1358 [724] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] - //SEG1359 [724] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG1360 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy - //SEG1361 bitmap_clear::@2 + //SEG1358 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG1359 [724] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1360 [724] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1361 [724] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG1362 bitmap_clear::@2 b2: - //SEG1362 [725] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1363 [725] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y - //SEG1363 [726] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1364 [726] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1364 [727] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG1365 [727] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG1365 [728] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1366 [728] 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 - //SEG1366 bitmap_clear::@3 - //SEG1367 [729] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1367 bitmap_clear::@3 + //SEG1368 [729] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG1368 [730] 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 + //SEG1369 [730] 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 - //SEG1369 bitmap_clear::@return - //SEG1370 [731] return + //SEG1370 bitmap_clear::@return + //SEG1371 [731] return rts } -//SEG1371 bitmap_init +//SEG1372 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _6 = 4 .label yoffs = 2 - //SEG1372 [733] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - //SEG1373 [733] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 + //SEG1373 [733] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1374 [733] 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 - //SEG1374 [733] 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 + //SEG1375 [733] 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 - //SEG1375 [733] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - //SEG1376 [733] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG1377 [733] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy - //SEG1378 bitmap_init::@1 + //SEG1376 [733] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1377 [733] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1378 [733] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG1379 bitmap_init::@1 b1: - //SEG1379 [734] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG1380 [734] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG1380 [735] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1381 [735] *((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 - //SEG1381 [736] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1382 [736] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) mode_stdbitmap::BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>mode_stdbitmap.BITMAP sta bitmap_plot_xhi,x - //SEG1382 [737] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG1383 [737] *((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 - //SEG1383 [738] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG1384 [738] (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 - //SEG1384 [739] 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 + //SEG1385 [739] 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 - //SEG1385 [740] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - //SEG1386 [740] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 + //SEG1386 [740] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1387 [740] 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 - //SEG1387 bitmap_init::@2 + //SEG1388 bitmap_init::@2 b2: - //SEG1388 [741] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG1389 [741] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG1389 [742] 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 + //SEG1390 [742] 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 - //SEG1390 [743] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - //SEG1391 [743] 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 + //SEG1391 [743] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1392 [743] 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 - //SEG1392 [743] 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 + //SEG1393 [743] 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 - //SEG1393 [743] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - //SEG1394 [743] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG1395 [743] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy - //SEG1396 bitmap_init::@3 + //SEG1394 [743] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1395 [743] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1396 [743] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG1397 bitmap_init::@3 b3: - //SEG1397 [744] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG1398 [744] (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 - //SEG1398 [745] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG1399 [745] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG1399 [746] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG1400 [746] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG1400 [747] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1401 [747] *((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 - //SEG1401 [748] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG1402 [748] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG1402 [749] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1403 [749] *((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 - //SEG1403 [750] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG1404 [750] (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 - //SEG1404 [751] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG1405 [751] 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 - //SEG1405 bitmap_init::@7 - //SEG1406 [752] (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 + //SEG1406 bitmap_init::@7 + //SEG1407 [752] (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 @@ -29645,24 +29644,24 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG1407 [753] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] - //SEG1408 [753] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy - //SEG1409 bitmap_init::@4 + //SEG1408 [753] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG1409 [753] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG1410 bitmap_init::@4 b4: - //SEG1410 [754] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG1411 [754] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG1411 [755] 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 + //SEG1412 [755] 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 - //SEG1412 bitmap_init::@return - //SEG1413 [756] return + //SEG1413 bitmap_init::@return + //SEG1414 [756] return rts - //SEG1414 [757] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] - //SEG1415 bitmap_init::@10 - //SEG1416 [740] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] - //SEG1417 [740] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG1415 [757] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1416 bitmap_init::@10 + //SEG1417 [740] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1418 [740] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } -//SEG1418 mode_mcchar +//SEG1419 mode_mcchar // Multicolor Character Mode (LINEAR/HICOL/CHUNK/COLDIS/BMM/ECM = 0, MCM = 1) // Resolution: 160x200 (320x200) // Normal VIC Adressing: @@ -29684,152 +29683,152 @@ mode_mcchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG1419 [758] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_mcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1420 [758] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_mcchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1420 [759] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1421 [759] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1421 [760] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1422 [760] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1422 [761] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1423 [761] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_CONTROL - //SEG1423 [762] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1424 [762] *((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 - //SEG1424 [763] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_mcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1425 [763] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_mcchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1425 [764] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1426 [764] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1426 [765] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG1427 [765] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0|(const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL|VIC_MCM sta VIC_CONTROL2 - //SEG1427 [766] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_mcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_mcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1428 [766] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_mcchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_mcchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1428 [767] phi from mode_mcchar to mode_mcchar::@1 [phi:mode_mcchar->mode_mcchar::@1] - //SEG1429 [767] phi (byte) mode_mcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar->mode_mcchar::@1#0] -- vbuxx=vbuc1 + //SEG1429 [767] phi from mode_mcchar to mode_mcchar::@1 [phi:mode_mcchar->mode_mcchar::@1] + //SEG1430 [767] phi (byte) mode_mcchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar->mode_mcchar::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG1430 [767] phi from mode_mcchar::@1 to mode_mcchar::@1 [phi:mode_mcchar::@1->mode_mcchar::@1] - //SEG1431 [767] phi (byte) mode_mcchar::i#2 = (byte) mode_mcchar::i#1 [phi:mode_mcchar::@1->mode_mcchar::@1#0] -- register_copy - //SEG1432 mode_mcchar::@1 + //SEG1431 [767] phi from mode_mcchar::@1 to mode_mcchar::@1 [phi:mode_mcchar::@1->mode_mcchar::@1] + //SEG1432 [767] phi (byte) mode_mcchar::i#2 = (byte) mode_mcchar::i#1 [phi:mode_mcchar::@1->mode_mcchar::@1#0] -- register_copy + //SEG1433 mode_mcchar::@1 b1: - //SEG1433 [768] *((const byte*) DTV_PALETTE#0 + (byte) mode_mcchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_mcchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG1434 [768] *((const byte*) DTV_PALETTE#0 + (byte) mode_mcchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_mcchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG1434 [769] (byte) mode_mcchar::i#1 ← ++ (byte) mode_mcchar::i#2 -- vbuxx=_inc_vbuxx + //SEG1435 [769] (byte) mode_mcchar::i#1 ← ++ (byte) mode_mcchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1435 [770] if((byte) mode_mcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_mcchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1436 [770] if((byte) mode_mcchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_mcchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG1436 mode_mcchar::@4 - //SEG1437 [771] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1437 mode_mcchar::@4 + //SEG1438 [771] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG1438 [772] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1439 [772] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1439 [773] *((const byte*) BGCOL2#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG1440 [773] *((const byte*) BGCOL2#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL2 - //SEG1440 [774] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG1441 [774] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL3 - //SEG1441 [775] phi from mode_mcchar::@4 to mode_mcchar::@2 [phi:mode_mcchar::@4->mode_mcchar::@2] - //SEG1442 [775] phi (byte*) mode_mcchar::ch#3 = (const byte*) mode_mcchar::SCREEN#0 [phi:mode_mcchar::@4->mode_mcchar::@2#0] -- pbuz1=pbuc1 + //SEG1442 [775] phi from mode_mcchar::@4 to mode_mcchar::@2 [phi:mode_mcchar::@4->mode_mcchar::@2] + //SEG1443 [775] phi (byte*) mode_mcchar::ch#3 = (const byte*) mode_mcchar::SCREEN#0 [phi:mode_mcchar::@4->mode_mcchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1443 [775] phi (byte*) mode_mcchar::col#3 = (const byte*) mode_mcchar::COLORS#0 [phi:mode_mcchar::@4->mode_mcchar::@2#1] -- pbuz1=pbuc1 + //SEG1444 [775] phi (byte*) mode_mcchar::col#3 = (const byte*) mode_mcchar::COLORS#0 [phi:mode_mcchar::@4->mode_mcchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1444 [775] phi (byte) mode_mcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@4->mode_mcchar::@2#2] -- vbuz1=vbuc1 + //SEG1445 [775] phi (byte) mode_mcchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@4->mode_mcchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1445 [775] phi from mode_mcchar::@5 to mode_mcchar::@2 [phi:mode_mcchar::@5->mode_mcchar::@2] - //SEG1446 [775] phi (byte*) mode_mcchar::ch#3 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@5->mode_mcchar::@2#0] -- register_copy - //SEG1447 [775] phi (byte*) mode_mcchar::col#3 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@5->mode_mcchar::@2#1] -- register_copy - //SEG1448 [775] phi (byte) mode_mcchar::cy#4 = (byte) mode_mcchar::cy#1 [phi:mode_mcchar::@5->mode_mcchar::@2#2] -- register_copy - //SEG1449 mode_mcchar::@2 + //SEG1446 [775] phi from mode_mcchar::@5 to mode_mcchar::@2 [phi:mode_mcchar::@5->mode_mcchar::@2] + //SEG1447 [775] phi (byte*) mode_mcchar::ch#3 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@5->mode_mcchar::@2#0] -- register_copy + //SEG1448 [775] phi (byte*) mode_mcchar::col#3 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@5->mode_mcchar::@2#1] -- register_copy + //SEG1449 [775] phi (byte) mode_mcchar::cy#4 = (byte) mode_mcchar::cy#1 [phi:mode_mcchar::@5->mode_mcchar::@2#2] -- register_copy + //SEG1450 mode_mcchar::@2 b2: - //SEG1450 [776] phi from mode_mcchar::@2 to mode_mcchar::@3 [phi:mode_mcchar::@2->mode_mcchar::@3] - //SEG1451 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#3 [phi:mode_mcchar::@2->mode_mcchar::@3#0] -- register_copy - //SEG1452 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#3 [phi:mode_mcchar::@2->mode_mcchar::@3#1] -- register_copy - //SEG1453 [776] phi (byte) mode_mcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@2->mode_mcchar::@3#2] -- vbuxx=vbuc1 + //SEG1451 [776] phi from mode_mcchar::@2 to mode_mcchar::@3 [phi:mode_mcchar::@2->mode_mcchar::@3] + //SEG1452 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#3 [phi:mode_mcchar::@2->mode_mcchar::@3#0] -- register_copy + //SEG1453 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#3 [phi:mode_mcchar::@2->mode_mcchar::@3#1] -- register_copy + //SEG1454 [776] phi (byte) mode_mcchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@2->mode_mcchar::@3#2] -- vbuxx=vbuc1 ldx #0 - //SEG1454 [776] phi from mode_mcchar::@3 to mode_mcchar::@3 [phi:mode_mcchar::@3->mode_mcchar::@3] - //SEG1455 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@3->mode_mcchar::@3#0] -- register_copy - //SEG1456 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@3->mode_mcchar::@3#1] -- register_copy - //SEG1457 [776] phi (byte) mode_mcchar::cx#2 = (byte) mode_mcchar::cx#1 [phi:mode_mcchar::@3->mode_mcchar::@3#2] -- register_copy - //SEG1458 mode_mcchar::@3 + //SEG1455 [776] phi from mode_mcchar::@3 to mode_mcchar::@3 [phi:mode_mcchar::@3->mode_mcchar::@3] + //SEG1456 [776] phi (byte*) mode_mcchar::ch#2 = (byte*) mode_mcchar::ch#1 [phi:mode_mcchar::@3->mode_mcchar::@3#0] -- register_copy + //SEG1457 [776] phi (byte*) mode_mcchar::col#2 = (byte*) mode_mcchar::col#1 [phi:mode_mcchar::@3->mode_mcchar::@3#1] -- register_copy + //SEG1458 [776] phi (byte) mode_mcchar::cx#2 = (byte) mode_mcchar::cx#1 [phi:mode_mcchar::@3->mode_mcchar::@3#2] -- register_copy + //SEG1459 mode_mcchar::@3 b3: - //SEG1459 [777] (byte~) mode_mcchar::$25 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1460 [777] (byte~) mode_mcchar::$25 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1460 [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG1461 [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG1461 [779] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$26 -- _deref_pbuz1=vbuaa + //SEG1462 [779] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$26 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG1462 [780] (byte*) mode_mcchar::col#1 ← ++ (byte*) mode_mcchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1463 [780] (byte*) mode_mcchar::col#1 ← ++ (byte*) mode_mcchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1463 [781] (byte~) mode_mcchar::$27 ← (byte) mode_mcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1464 [781] (byte~) mode_mcchar::$27 ← (byte) mode_mcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1464 [782] (byte~) mode_mcchar::$28 ← (byte~) mode_mcchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1465 [782] (byte~) mode_mcchar::$28 ← (byte~) mode_mcchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _28 - //SEG1465 [783] (byte~) mode_mcchar::$29 ← (byte) mode_mcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1466 [783] (byte~) mode_mcchar::$29 ← (byte) mode_mcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1466 [784] (byte~) mode_mcchar::$30 ← (byte~) mode_mcchar::$28 | (byte~) mode_mcchar::$29 -- vbuaa=vbuz1_bor_vbuaa + //SEG1467 [784] (byte~) mode_mcchar::$30 ← (byte~) mode_mcchar::$28 | (byte~) mode_mcchar::$29 -- vbuaa=vbuz1_bor_vbuaa ora _28 - //SEG1467 [785] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$30 -- _deref_pbuz1=vbuaa + //SEG1468 [785] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$30 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1468 [786] (byte*) mode_mcchar::ch#1 ← ++ (byte*) mode_mcchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1469 [786] (byte*) mode_mcchar::ch#1 ← ++ (byte*) mode_mcchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1469 [787] (byte) mode_mcchar::cx#1 ← ++ (byte) mode_mcchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG1470 [787] (byte) mode_mcchar::cx#1 ← ++ (byte) mode_mcchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1470 [788] if((byte) mode_mcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_mcchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1471 [788] if((byte) mode_mcchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_mcchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG1471 mode_mcchar::@5 - //SEG1472 [789] (byte) mode_mcchar::cy#1 ← ++ (byte) mode_mcchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1472 mode_mcchar::@5 + //SEG1473 [789] (byte) mode_mcchar::cy#1 ← ++ (byte) mode_mcchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1473 [790] if((byte) mode_mcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_mcchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1474 [790] if((byte) mode_mcchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_mcchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG1474 [791] phi from mode_mcchar::@5 to mode_mcchar::@6 [phi:mode_mcchar::@5->mode_mcchar::@6] - //SEG1475 mode_mcchar::@6 - //SEG1476 [792] call mode_ctrl - //SEG1477 [155] phi from mode_mcchar::@6 to mode_ctrl [phi:mode_mcchar::@6->mode_ctrl] - //SEG1478 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1475 [791] phi from mode_mcchar::@5 to mode_mcchar::@6 [phi:mode_mcchar::@5->mode_mcchar::@6] + //SEG1476 mode_mcchar::@6 + //SEG1477 [792] call mode_ctrl + //SEG1478 [155] phi from mode_mcchar::@6 to mode_ctrl [phi:mode_mcchar::@6->mode_ctrl] + //SEG1479 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_mcchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl - //SEG1479 mode_mcchar::@return - //SEG1480 [793] return + //SEG1480 mode_mcchar::@return + //SEG1481 [793] return rts } -//SEG1481 mode_ecmchar +//SEG1482 mode_ecmchar // Extended Background Color Character Mode (LINEAR/HICOL/CHUNK/COLDIS/MCM/BMM = 0, ECM = 1) // Resolution: 320x200 // Normal VIC Adressing: @@ -29850,154 +29849,154 @@ mode_ecmchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG1482 [794] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_ecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1483 [794] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_ecmchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1483 [795] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1484 [795] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1484 [796] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1485 [796] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1485 [797] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1486 [797] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_CONTROL - //SEG1486 [798] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1487 [798] *((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 - //SEG1487 [799] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_ecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1488 [799] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_ecmchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1488 [800] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1489 [800] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(const byte) VIC_ECM#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|VIC_ECM|3 sta VIC_CONTROL - //SEG1489 [801] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1490 [801] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1490 [802] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_ecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_ecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1491 [802] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_ecmchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_ecmchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1491 [803] phi from mode_ecmchar to mode_ecmchar::@1 [phi:mode_ecmchar->mode_ecmchar::@1] - //SEG1492 [803] phi (byte) mode_ecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar->mode_ecmchar::@1#0] -- vbuxx=vbuc1 + //SEG1492 [803] phi from mode_ecmchar to mode_ecmchar::@1 [phi:mode_ecmchar->mode_ecmchar::@1] + //SEG1493 [803] phi (byte) mode_ecmchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar->mode_ecmchar::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG1493 [803] phi from mode_ecmchar::@1 to mode_ecmchar::@1 [phi:mode_ecmchar::@1->mode_ecmchar::@1] - //SEG1494 [803] phi (byte) mode_ecmchar::i#2 = (byte) mode_ecmchar::i#1 [phi:mode_ecmchar::@1->mode_ecmchar::@1#0] -- register_copy - //SEG1495 mode_ecmchar::@1 + //SEG1494 [803] phi from mode_ecmchar::@1 to mode_ecmchar::@1 [phi:mode_ecmchar::@1->mode_ecmchar::@1] + //SEG1495 [803] phi (byte) mode_ecmchar::i#2 = (byte) mode_ecmchar::i#1 [phi:mode_ecmchar::@1->mode_ecmchar::@1#0] -- register_copy + //SEG1496 mode_ecmchar::@1 b1: - //SEG1496 [804] *((const byte*) DTV_PALETTE#0 + (byte) mode_ecmchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_ecmchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG1497 [804] *((const byte*) DTV_PALETTE#0 + (byte) mode_ecmchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_ecmchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG1497 [805] (byte) mode_ecmchar::i#1 ← ++ (byte) mode_ecmchar::i#2 -- vbuxx=_inc_vbuxx + //SEG1498 [805] (byte) mode_ecmchar::i#1 ← ++ (byte) mode_ecmchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1498 [806] if((byte) mode_ecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_ecmchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1499 [806] if((byte) mode_ecmchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_ecmchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG1499 mode_ecmchar::@4 - //SEG1500 [807] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1500 mode_ecmchar::@4 + //SEG1501 [807] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG1501 [808] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1502 [808] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta BGCOL1 - //SEG1502 [809] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG1503 [809] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL2 - //SEG1503 [810] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG1504 [810] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL3 - //SEG1504 [811] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG1505 [811] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta BGCOL4 - //SEG1505 [812] phi from mode_ecmchar::@4 to mode_ecmchar::@2 [phi:mode_ecmchar::@4->mode_ecmchar::@2] - //SEG1506 [812] phi (byte*) mode_ecmchar::ch#3 = (const byte*) mode_ecmchar::SCREEN#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#0] -- pbuz1=pbuc1 + //SEG1506 [812] phi from mode_ecmchar::@4 to mode_ecmchar::@2 [phi:mode_ecmchar::@4->mode_ecmchar::@2] + //SEG1507 [812] phi (byte*) mode_ecmchar::ch#3 = (const byte*) mode_ecmchar::SCREEN#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1507 [812] phi (byte*) mode_ecmchar::col#3 = (const byte*) mode_ecmchar::COLORS#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#1] -- pbuz1=pbuc1 + //SEG1508 [812] phi (byte*) mode_ecmchar::col#3 = (const byte*) mode_ecmchar::COLORS#0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1508 [812] phi (byte) mode_ecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#2] -- vbuz1=vbuc1 + //SEG1509 [812] phi (byte) mode_ecmchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@4->mode_ecmchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1509 [812] phi from mode_ecmchar::@5 to mode_ecmchar::@2 [phi:mode_ecmchar::@5->mode_ecmchar::@2] - //SEG1510 [812] phi (byte*) mode_ecmchar::ch#3 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#0] -- register_copy - //SEG1511 [812] phi (byte*) mode_ecmchar::col#3 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#1] -- register_copy - //SEG1512 [812] phi (byte) mode_ecmchar::cy#4 = (byte) mode_ecmchar::cy#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#2] -- register_copy - //SEG1513 mode_ecmchar::@2 + //SEG1510 [812] phi from mode_ecmchar::@5 to mode_ecmchar::@2 [phi:mode_ecmchar::@5->mode_ecmchar::@2] + //SEG1511 [812] phi (byte*) mode_ecmchar::ch#3 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#0] -- register_copy + //SEG1512 [812] phi (byte*) mode_ecmchar::col#3 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#1] -- register_copy + //SEG1513 [812] phi (byte) mode_ecmchar::cy#4 = (byte) mode_ecmchar::cy#1 [phi:mode_ecmchar::@5->mode_ecmchar::@2#2] -- register_copy + //SEG1514 mode_ecmchar::@2 b2: - //SEG1514 [813] phi from mode_ecmchar::@2 to mode_ecmchar::@3 [phi:mode_ecmchar::@2->mode_ecmchar::@3] - //SEG1515 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#0] -- register_copy - //SEG1516 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#1] -- register_copy - //SEG1517 [813] phi (byte) mode_ecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@2->mode_ecmchar::@3#2] -- vbuxx=vbuc1 + //SEG1515 [813] phi from mode_ecmchar::@2 to mode_ecmchar::@3 [phi:mode_ecmchar::@2->mode_ecmchar::@3] + //SEG1516 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#0] -- register_copy + //SEG1517 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#3 [phi:mode_ecmchar::@2->mode_ecmchar::@3#1] -- register_copy + //SEG1518 [813] phi (byte) mode_ecmchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@2->mode_ecmchar::@3#2] -- vbuxx=vbuc1 ldx #0 - //SEG1518 [813] phi from mode_ecmchar::@3 to mode_ecmchar::@3 [phi:mode_ecmchar::@3->mode_ecmchar::@3] - //SEG1519 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#0] -- register_copy - //SEG1520 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#1] -- register_copy - //SEG1521 [813] phi (byte) mode_ecmchar::cx#2 = (byte) mode_ecmchar::cx#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#2] -- register_copy - //SEG1522 mode_ecmchar::@3 + //SEG1519 [813] phi from mode_ecmchar::@3 to mode_ecmchar::@3 [phi:mode_ecmchar::@3->mode_ecmchar::@3] + //SEG1520 [813] phi (byte*) mode_ecmchar::ch#2 = (byte*) mode_ecmchar::ch#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#0] -- register_copy + //SEG1521 [813] phi (byte*) mode_ecmchar::col#2 = (byte*) mode_ecmchar::col#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#1] -- register_copy + //SEG1522 [813] phi (byte) mode_ecmchar::cx#2 = (byte) mode_ecmchar::cx#1 [phi:mode_ecmchar::@3->mode_ecmchar::@3#2] -- register_copy + //SEG1523 mode_ecmchar::@3 b3: - //SEG1523 [814] (byte~) mode_ecmchar::$25 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1524 [814] (byte~) mode_ecmchar::$25 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1524 [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG1525 [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG1525 [816] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$26 -- _deref_pbuz1=vbuaa + //SEG1526 [816] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$26 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG1526 [817] (byte*) mode_ecmchar::col#1 ← ++ (byte*) mode_ecmchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1527 [817] (byte*) mode_ecmchar::col#1 ← ++ (byte*) mode_ecmchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1527 [818] (byte~) mode_ecmchar::$27 ← (byte) mode_ecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1528 [818] (byte~) mode_ecmchar::$27 ← (byte) mode_ecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1528 [819] (byte~) mode_ecmchar::$28 ← (byte~) mode_ecmchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1529 [819] (byte~) mode_ecmchar::$28 ← (byte~) mode_ecmchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _28 - //SEG1529 [820] (byte~) mode_ecmchar::$29 ← (byte) mode_ecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1530 [820] (byte~) mode_ecmchar::$29 ← (byte) mode_ecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1530 [821] (byte~) mode_ecmchar::$30 ← (byte~) mode_ecmchar::$28 | (byte~) mode_ecmchar::$29 -- vbuaa=vbuz1_bor_vbuaa + //SEG1531 [821] (byte~) mode_ecmchar::$30 ← (byte~) mode_ecmchar::$28 | (byte~) mode_ecmchar::$29 -- vbuaa=vbuz1_bor_vbuaa ora _28 - //SEG1531 [822] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$30 -- _deref_pbuz1=vbuaa + //SEG1532 [822] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$30 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1532 [823] (byte*) mode_ecmchar::ch#1 ← ++ (byte*) mode_ecmchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1533 [823] (byte*) mode_ecmchar::ch#1 ← ++ (byte*) mode_ecmchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1533 [824] (byte) mode_ecmchar::cx#1 ← ++ (byte) mode_ecmchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG1534 [824] (byte) mode_ecmchar::cx#1 ← ++ (byte) mode_ecmchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1534 [825] if((byte) mode_ecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_ecmchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1535 [825] if((byte) mode_ecmchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_ecmchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG1535 mode_ecmchar::@5 - //SEG1536 [826] (byte) mode_ecmchar::cy#1 ← ++ (byte) mode_ecmchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1536 mode_ecmchar::@5 + //SEG1537 [826] (byte) mode_ecmchar::cy#1 ← ++ (byte) mode_ecmchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1537 [827] if((byte) mode_ecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_ecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1538 [827] if((byte) mode_ecmchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_ecmchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG1538 [828] phi from mode_ecmchar::@5 to mode_ecmchar::@6 [phi:mode_ecmchar::@5->mode_ecmchar::@6] - //SEG1539 mode_ecmchar::@6 - //SEG1540 [829] call mode_ctrl - //SEG1541 [155] phi from mode_ecmchar::@6 to mode_ctrl [phi:mode_ecmchar::@6->mode_ctrl] - //SEG1542 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1539 [828] phi from mode_ecmchar::@5 to mode_ecmchar::@6 [phi:mode_ecmchar::@5->mode_ecmchar::@6] + //SEG1540 mode_ecmchar::@6 + //SEG1541 [829] call mode_ctrl + //SEG1542 [155] phi from mode_ecmchar::@6 to mode_ctrl [phi:mode_ecmchar::@6->mode_ctrl] + //SEG1543 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_ecmchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl - //SEG1543 mode_ecmchar::@return - //SEG1544 [830] return + //SEG1544 mode_ecmchar::@return + //SEG1545 [830] return rts } -//SEG1545 mode_stdchar +//SEG1546 mode_stdchar // Standard Character Mode (LINEAR/HICOL/CHUNK/COLDIS/ECM/MCM/BMM = 0) // Resolution: 320x200 // Normal VIC Adressing: @@ -30014,231 +30013,231 @@ mode_stdchar: { .label col = 2 .label ch = 5 .label cy = 4 - //SEG1546 [831] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 + //SEG1547 [831] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdchar::CHARSET#0/(dword/signed dword) 65536 -- _deref_pbuc1=vbuc2 lda #($ffffffff&CHARSET)/$10000 sta DTV_GRAPHICS_VIC_BANK - //SEG1547 [832] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1548 [832] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DTV_COLOR_BANK_DEFAULT/$400 sta DTV_COLOR_BANK_LO - //SEG1548 [833] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1549 [833] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_COLOR_BANK_HI - //SEG1549 [834] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1550 [834] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta DTV_CONTROL - //SEG1550 [835] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1551 [835] *((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 - //SEG1551 [836] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 + //SEG1552 [836] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) mode_stdchar::CHARSET#0/(word/signed word/dword/signed dword) 16384 -- _deref_pbuc1=vbuc2 lda #3^CHARSET/$4000 sta CIA2_PORT_A - //SEG1552 [837] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1553 [837] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta VIC_CONTROL - //SEG1553 [838] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG1554 [838] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta VIC_CONTROL2 - //SEG1554 [839] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG1555 [839] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) mode_stdchar::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) mode_stdchar::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400 sta VIC_MEMORY - //SEG1555 [840] phi from mode_stdchar to mode_stdchar::@1 [phi:mode_stdchar->mode_stdchar::@1] - //SEG1556 [840] phi (byte) mode_stdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar->mode_stdchar::@1#0] -- vbuxx=vbuc1 + //SEG1556 [840] phi from mode_stdchar to mode_stdchar::@1 [phi:mode_stdchar->mode_stdchar::@1] + //SEG1557 [840] phi (byte) mode_stdchar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar->mode_stdchar::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG1557 [840] phi from mode_stdchar::@1 to mode_stdchar::@1 [phi:mode_stdchar::@1->mode_stdchar::@1] - //SEG1558 [840] phi (byte) mode_stdchar::i#2 = (byte) mode_stdchar::i#1 [phi:mode_stdchar::@1->mode_stdchar::@1#0] -- register_copy - //SEG1559 mode_stdchar::@1 + //SEG1558 [840] phi from mode_stdchar::@1 to mode_stdchar::@1 [phi:mode_stdchar::@1->mode_stdchar::@1] + //SEG1559 [840] phi (byte) mode_stdchar::i#2 = (byte) mode_stdchar::i#1 [phi:mode_stdchar::@1->mode_stdchar::@1#0] -- register_copy + //SEG1560 mode_stdchar::@1 b1: - //SEG1560 [841] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG1561 [841] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdchar::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) mode_stdchar::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda DTV_PALETTE_DEFAULT,x sta DTV_PALETTE,x - //SEG1561 [842] (byte) mode_stdchar::i#1 ← ++ (byte) mode_stdchar::i#2 -- vbuxx=_inc_vbuxx + //SEG1562 [842] (byte) mode_stdchar::i#1 ← ++ (byte) mode_stdchar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1562 [843] if((byte) mode_stdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdchar::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1563 [843] if((byte) mode_stdchar::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mode_stdchar::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG1563 mode_stdchar::@4 - //SEG1564 [844] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1564 mode_stdchar::@4 + //SEG1565 [844] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG1565 [845] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1566 [845] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta BORDERCOL - //SEG1566 [846] phi from mode_stdchar::@4 to mode_stdchar::@2 [phi:mode_stdchar::@4->mode_stdchar::@2] - //SEG1567 [846] phi (byte*) mode_stdchar::ch#3 = (const byte*) mode_stdchar::SCREEN#0 [phi:mode_stdchar::@4->mode_stdchar::@2#0] -- pbuz1=pbuc1 + //SEG1567 [846] phi from mode_stdchar::@4 to mode_stdchar::@2 [phi:mode_stdchar::@4->mode_stdchar::@2] + //SEG1568 [846] phi (byte*) mode_stdchar::ch#3 = (const byte*) mode_stdchar::SCREEN#0 [phi:mode_stdchar::@4->mode_stdchar::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta ch+1 - //SEG1568 [846] phi (byte*) mode_stdchar::col#3 = (const byte*) mode_stdchar::COLORS#0 [phi:mode_stdchar::@4->mode_stdchar::@2#1] -- pbuz1=pbuc1 + //SEG1569 [846] phi (byte*) mode_stdchar::col#3 = (const byte*) mode_stdchar::COLORS#0 [phi:mode_stdchar::@4->mode_stdchar::@2#1] -- pbuz1=pbuc1 lda #COLORS sta col+1 - //SEG1569 [846] phi (byte) mode_stdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@4->mode_stdchar::@2#2] -- vbuz1=vbuc1 + //SEG1570 [846] phi (byte) mode_stdchar::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@4->mode_stdchar::@2#2] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1570 [846] phi from mode_stdchar::@5 to mode_stdchar::@2 [phi:mode_stdchar::@5->mode_stdchar::@2] - //SEG1571 [846] phi (byte*) mode_stdchar::ch#3 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@5->mode_stdchar::@2#0] -- register_copy - //SEG1572 [846] phi (byte*) mode_stdchar::col#3 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@5->mode_stdchar::@2#1] -- register_copy - //SEG1573 [846] phi (byte) mode_stdchar::cy#4 = (byte) mode_stdchar::cy#1 [phi:mode_stdchar::@5->mode_stdchar::@2#2] -- register_copy - //SEG1574 mode_stdchar::@2 + //SEG1571 [846] phi from mode_stdchar::@5 to mode_stdchar::@2 [phi:mode_stdchar::@5->mode_stdchar::@2] + //SEG1572 [846] phi (byte*) mode_stdchar::ch#3 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@5->mode_stdchar::@2#0] -- register_copy + //SEG1573 [846] phi (byte*) mode_stdchar::col#3 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@5->mode_stdchar::@2#1] -- register_copy + //SEG1574 [846] phi (byte) mode_stdchar::cy#4 = (byte) mode_stdchar::cy#1 [phi:mode_stdchar::@5->mode_stdchar::@2#2] -- register_copy + //SEG1575 mode_stdchar::@2 b2: - //SEG1575 [847] phi from mode_stdchar::@2 to mode_stdchar::@3 [phi:mode_stdchar::@2->mode_stdchar::@3] - //SEG1576 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#3 [phi:mode_stdchar::@2->mode_stdchar::@3#0] -- register_copy - //SEG1577 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#3 [phi:mode_stdchar::@2->mode_stdchar::@3#1] -- register_copy - //SEG1578 [847] phi (byte) mode_stdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@2->mode_stdchar::@3#2] -- vbuxx=vbuc1 + //SEG1576 [847] phi from mode_stdchar::@2 to mode_stdchar::@3 [phi:mode_stdchar::@2->mode_stdchar::@3] + //SEG1577 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#3 [phi:mode_stdchar::@2->mode_stdchar::@3#0] -- register_copy + //SEG1578 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#3 [phi:mode_stdchar::@2->mode_stdchar::@3#1] -- register_copy + //SEG1579 [847] phi (byte) mode_stdchar::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@2->mode_stdchar::@3#2] -- vbuxx=vbuc1 ldx #0 - //SEG1579 [847] phi from mode_stdchar::@3 to mode_stdchar::@3 [phi:mode_stdchar::@3->mode_stdchar::@3] - //SEG1580 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@3->mode_stdchar::@3#0] -- register_copy - //SEG1581 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@3->mode_stdchar::@3#1] -- register_copy - //SEG1582 [847] phi (byte) mode_stdchar::cx#2 = (byte) mode_stdchar::cx#1 [phi:mode_stdchar::@3->mode_stdchar::@3#2] -- register_copy - //SEG1583 mode_stdchar::@3 + //SEG1580 [847] phi from mode_stdchar::@3 to mode_stdchar::@3 [phi:mode_stdchar::@3->mode_stdchar::@3] + //SEG1581 [847] phi (byte*) mode_stdchar::ch#2 = (byte*) mode_stdchar::ch#1 [phi:mode_stdchar::@3->mode_stdchar::@3#0] -- register_copy + //SEG1582 [847] phi (byte*) mode_stdchar::col#2 = (byte*) mode_stdchar::col#1 [phi:mode_stdchar::@3->mode_stdchar::@3#1] -- register_copy + //SEG1583 [847] phi (byte) mode_stdchar::cx#2 = (byte) mode_stdchar::cx#1 [phi:mode_stdchar::@3->mode_stdchar::@3#2] -- register_copy + //SEG1584 mode_stdchar::@3 b3: - //SEG1584 [848] (byte~) mode_stdchar::$24 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1585 [848] (byte~) mode_stdchar::$24 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1585 [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG1586 [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG1586 [850] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$25 -- _deref_pbuz1=vbuaa + //SEG1587 [850] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$25 -- _deref_pbuz1=vbuaa ldy #0 sta (col),y - //SEG1587 [851] (byte*) mode_stdchar::col#1 ← ++ (byte*) mode_stdchar::col#2 -- pbuz1=_inc_pbuz1 + //SEG1588 [851] (byte*) mode_stdchar::col#1 ← ++ (byte*) mode_stdchar::col#2 -- pbuz1=_inc_pbuz1 inc col bne !+ inc col+1 !: - //SEG1588 [852] (byte~) mode_stdchar::$26 ← (byte) mode_stdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1589 [852] (byte~) mode_stdchar::$26 ← (byte) mode_stdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1589 [853] (byte~) mode_stdchar::$27 ← (byte~) mode_stdchar::$26 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1590 [853] (byte~) mode_stdchar::$27 ← (byte~) mode_stdchar::$26 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _27 - //SEG1590 [854] (byte~) mode_stdchar::$28 ← (byte) mode_stdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1591 [854] (byte~) mode_stdchar::$28 ← (byte) mode_stdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1591 [855] (byte~) mode_stdchar::$29 ← (byte~) mode_stdchar::$27 | (byte~) mode_stdchar::$28 -- vbuaa=vbuz1_bor_vbuaa + //SEG1592 [855] (byte~) mode_stdchar::$29 ← (byte~) mode_stdchar::$27 | (byte~) mode_stdchar::$28 -- vbuaa=vbuz1_bor_vbuaa ora _27 - //SEG1592 [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 -- _deref_pbuz1=vbuaa + //SEG1593 [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1593 [857] (byte*) mode_stdchar::ch#1 ← ++ (byte*) mode_stdchar::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1594 [857] (byte*) mode_stdchar::ch#1 ← ++ (byte*) mode_stdchar::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1594 [858] (byte) mode_stdchar::cx#1 ← ++ (byte) mode_stdchar::cx#2 -- vbuxx=_inc_vbuxx + //SEG1595 [858] (byte) mode_stdchar::cx#1 ← ++ (byte) mode_stdchar::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1595 [859] if((byte) mode_stdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdchar::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1596 [859] if((byte) mode_stdchar::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto mode_stdchar::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG1596 mode_stdchar::@5 - //SEG1597 [860] (byte) mode_stdchar::cy#1 ← ++ (byte) mode_stdchar::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1597 mode_stdchar::@5 + //SEG1598 [860] (byte) mode_stdchar::cy#1 ← ++ (byte) mode_stdchar::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1598 [861] if((byte) mode_stdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdchar::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1599 [861] if((byte) mode_stdchar::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto mode_stdchar::@2 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b2 - //SEG1599 [862] phi from mode_stdchar::@5 to mode_stdchar::@6 [phi:mode_stdchar::@5->mode_stdchar::@6] - //SEG1600 mode_stdchar::@6 - //SEG1601 [863] call mode_ctrl - //SEG1602 [155] phi from mode_stdchar::@6 to mode_ctrl [phi:mode_stdchar::@6->mode_ctrl] - //SEG1603 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 + //SEG1600 [862] phi from mode_stdchar::@5 to mode_stdchar::@6 [phi:mode_stdchar::@5->mode_stdchar::@6] + //SEG1601 mode_stdchar::@6 + //SEG1602 [863] call mode_ctrl + //SEG1603 [155] phi from mode_stdchar::@6 to mode_ctrl [phi:mode_stdchar::@6->mode_ctrl] + //SEG1604 [155] phi (byte) dtv_control#145 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mode_stdchar::@6->mode_ctrl#0] -- vbuz1=vbuc1 lda #0 sta dtv_control jsr mode_ctrl - //SEG1604 mode_stdchar::@return - //SEG1605 [864] return + //SEG1605 mode_stdchar::@return + //SEG1606 [864] return rts } -//SEG1606 print_str_lines +//SEG1607 print_str_lines // Print a number of zero-terminated strings, each followed by a newline. // The sequence of lines is terminated by another zero. print_str_lines: { .label str = 2 - //SEG1607 [866] phi from print_str_lines to print_str_lines::@1 [phi:print_str_lines->print_str_lines::@1] - //SEG1608 [866] phi (byte*) print_line_cursor#17 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#0] -- pbuz1=pbuc1 + //SEG1608 [866] phi from print_str_lines to print_str_lines::@1 [phi:print_str_lines->print_str_lines::@1] + //SEG1609 [866] phi (byte*) print_line_cursor#17 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#0] -- pbuz1=pbuc1 lda #menu.SCREEN sta print_line_cursor+1 - //SEG1609 [866] phi (byte*) print_char_cursor#19 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#1] -- pbuz1=pbuc1 + //SEG1610 [866] phi (byte*) print_char_cursor#19 = (const byte*) menu::SCREEN#0 [phi:print_str_lines->print_str_lines::@1#1] -- pbuz1=pbuc1 lda #menu.SCREEN sta print_char_cursor+1 - //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 + //SEG1611 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 lda #MENU_TEXT sta str+1 - //SEG1611 print_str_lines::@1 + //SEG1612 print_str_lines::@1 b1: - //SEG1612 [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG1613 [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b4 - //SEG1613 print_str_lines::@return - //SEG1614 [868] return + //SEG1614 print_str_lines::@return + //SEG1615 [868] return rts - //SEG1615 [869] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] - //SEG1616 [869] phi (byte*) print_char_cursor#17 = (byte*) print_char_cursor#19 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy - //SEG1617 [869] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#2 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy - //SEG1618 print_str_lines::@4 + //SEG1616 [869] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4] + //SEG1617 [869] phi (byte*) print_char_cursor#17 = (byte*) print_char_cursor#19 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy + //SEG1618 [869] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#2 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy + //SEG1619 print_str_lines::@4 b4: - //SEG1619 [870] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) -- vbuaa=_deref_pbuz1 + //SEG1620 [870] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) -- vbuaa=_deref_pbuz1 ldy #0 lda (str),y - //SEG1620 [871] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#3 -- pbuz1=_inc_pbuz1 + //SEG1621 [871] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG1621 [872] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuaa_eq_vbuc1_then_la1 + //SEG1622 [872] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 -- vbuaa_eq_vbuc1_then_la1 cmp #'@' beq b5 - //SEG1622 print_str_lines::@8 - //SEG1623 [873] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuaa + //SEG1623 print_str_lines::@8 + //SEG1624 [873] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG1624 [874] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#17 -- pbuz1=_inc_pbuz1 + //SEG1625 [874] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#17 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG1625 [875] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] - //SEG1626 [875] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#17 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy - //SEG1627 print_str_lines::@5 + //SEG1626 [875] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5] + //SEG1627 [875] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#17 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy + //SEG1628 print_str_lines::@5 b5: - //SEG1628 [876] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG1629 [876] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b4 - //SEG1629 [877] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] - //SEG1630 print_str_lines::@9 - //SEG1631 [878] call print_ln - //SEG1632 [880] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] + //SEG1630 [877] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9] + //SEG1631 print_str_lines::@9 + //SEG1632 [878] call print_ln + //SEG1633 [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#103 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + //SEG1634 [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#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 + //SEG1635 [866] phi from print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines::@9->print_str_lines::@1] + //SEG1636 [866] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@9->print_str_lines::@1#0] -- register_copy + //SEG1637 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#103 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG1638 [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 } -//SEG1638 print_ln +//SEG1639 print_ln // Print a newline print_ln: { - //SEG1639 [881] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG1640 [881] phi (byte*) print_line_cursor#18 = (byte*) print_line_cursor#17 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG1641 print_ln::@1 + //SEG1640 [881] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG1641 [881] phi (byte*) print_line_cursor#18 = (byte*) print_line_cursor#17 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG1642 print_ln::@1 b1: - //SEG1642 [882] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1643 [882] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -30246,7 +30245,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG1643 [883] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG1644 [883] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -30255,49 +30254,49 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG1644 print_ln::@return - //SEG1645 [884] return + //SEG1645 print_ln::@return + //SEG1646 [884] return rts } -//SEG1646 print_cls +//SEG1647 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG1647 [886] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG1648 [886] phi (byte*) print_cls::sc#2 = (const byte*) menu::SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG1648 [886] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG1649 [886] phi (byte*) print_cls::sc#2 = (const byte*) menu::SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #menu.SCREEN sta sc+1 - //SEG1649 [886] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG1650 [886] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG1651 print_cls::@1 + //SEG1650 [886] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG1651 [886] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG1652 print_cls::@1 b1: - //SEG1652 [887] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG1653 [887] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG1653 [888] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG1654 [888] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG1654 [889] if((byte*) print_cls::sc#1!=(const byte*) menu::SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG1655 [889] if((byte*) print_cls::sc#1!=(const byte*) menu::SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>menu.SCREEN+$3e8 bne b1 lda sc cmp #@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call line - //SEG11 [9] phi from main to line [phi:main->line] + //SEG11 [5] call line + //SEG12 [9] phi from main to line [phi:main->line] line_from_main: - //SEG12 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->line#0] -- vbuz1=vbuc1 + //SEG13 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->line#0] -- vbuz1=vbuc1 lda #2 sta line.x1 - //SEG13 [9] phi (byte*) screen#14 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->line#1] -- pbuz1=pbuc1 + //SEG14 [9] phi (byte*) screen#14 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->line#1] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG14 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->line#2] -- vbuz1=vbuc1 + //SEG15 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->line#2] -- vbuz1=vbuc1 lda #1 sta line.x jsr line - //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG16 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] call line - //SEG18 [9] phi from main::@1 to line [phi:main::@1->line] + //SEG18 [7] call line + //SEG19 [9] phi from main::@1 to line [phi:main::@1->line] line_from_b1: - //SEG19 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@1->line#0] -- vbuz1=vbuc1 + //SEG20 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@1->line#0] -- vbuz1=vbuc1 lda #5 sta line.x1 - //SEG20 [9] phi (byte*) screen#14 = (byte*) screen#11 [phi:main::@1->line#1] -- register_copy - //SEG21 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->line#2] -- vbuz1=vbuc1 + //SEG21 [9] phi (byte*) screen#14 = (byte*) screen#11 [phi:main::@1->line#1] -- register_copy + //SEG22 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->line#2] -- vbuz1=vbuc1 lda #3 sta line.x jsr line jmp breturn - //SEG22 main::@return + //SEG23 main::@return breturn: - //SEG23 [8] return + //SEG24 [8] return rts } -//SEG24 line +//SEG25 line line: { .label x = 3 .label x1 = 2 - //SEG25 [10] phi from line line::@1 to line::@1 [phi:line/line::@1->line::@1] + //SEG26 [10] phi from line line::@1 to line::@1 [phi:line/line::@1->line::@1] b1_from_line: b1_from_b1: - //SEG26 [10] phi (byte*) screen#10 = (byte*) screen#14 [phi:line/line::@1->line::@1#0] -- register_copy - //SEG27 [10] phi (byte) line::x#2 = (byte) line::x#0 [phi:line/line::@1->line::@1#1] -- register_copy + //SEG27 [10] phi (byte*) screen#10 = (byte*) screen#14 [phi:line/line::@1->line::@1#0] -- register_copy + //SEG28 [10] phi (byte) line::x#2 = (byte) line::x#0 [phi:line/line::@1->line::@1#1] -- register_copy jmp b1 - //SEG28 line::@1 + //SEG29 line::@1 b1: - //SEG29 [11] *((byte*) screen#10) ← (byte) line::x#2 -- _deref_pbuz1=vbuz2 + //SEG30 [11] *((byte*) screen#10) ← (byte) line::x#2 -- _deref_pbuz1=vbuz2 lda x ldy #0 sta (screen),y - //SEG30 [12] (byte*) screen#11 ← ++ (byte*) screen#10 -- pbuz1=_inc_pbuz1 + //SEG31 [12] (byte*) screen#11 ← ++ (byte*) screen#10 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG31 [13] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuz1=_inc_vbuz1 + //SEG32 [13] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG32 [14] if((byte) line::x#1<(byte) line::x1#3) goto line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG33 [14] if((byte) line::x#1<(byte) line::x1#3) goto line::@1 -- vbuz1_lt_vbuz2_then_la1 lda x cmp x1 bcc b1_from_b1 jmp breturn - //SEG33 line::@return + //SEG34 line::@return breturn: - //SEG34 [15] return + //SEG35 [15] return rts } @@ -344,94 +348,98 @@ Uplifting [line] best 426 combination zp ZP_BYTE:2 [ line::x1#3 ] Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ screen#10 screen#14 screen#11 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Multiple calls with different (constant?) parameters should yield different values at runtime +// Currently the same constant parameter is passed on every call. +// Reason: Multiple versioned parameter constants x0#0, x0#1 are only output as a single constant in the ASM .const x0 = 0 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call line - //SEG11 [9] phi from main to line [phi:main->line] + //SEG11 [5] call line + //SEG12 [9] phi from main to line [phi:main->line] line_from_main: - //SEG12 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->line#0] -- vbuz1=vbuc1 + //SEG13 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->line#0] -- vbuz1=vbuc1 lda #2 sta line.x1 - //SEG13 [9] phi (byte*) screen#14 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->line#1] -- pbuz1=pbuc1 + //SEG14 [9] phi (byte*) screen#14 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->line#1] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG14 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->line#2] -- vbuxx=vbuc1 + //SEG15 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->line#2] -- vbuxx=vbuc1 ldx #1 jsr line - //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG16 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] call line - //SEG18 [9] phi from main::@1 to line [phi:main::@1->line] + //SEG18 [7] call line + //SEG19 [9] phi from main::@1 to line [phi:main::@1->line] line_from_b1: - //SEG19 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@1->line#0] -- vbuz1=vbuc1 + //SEG20 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@1->line#0] -- vbuz1=vbuc1 lda #5 sta line.x1 - //SEG20 [9] phi (byte*) screen#14 = (byte*) screen#11 [phi:main::@1->line#1] -- register_copy - //SEG21 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->line#2] -- vbuxx=vbuc1 + //SEG21 [9] phi (byte*) screen#14 = (byte*) screen#11 [phi:main::@1->line#1] -- register_copy + //SEG22 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->line#2] -- vbuxx=vbuc1 ldx #3 jsr line jmp breturn - //SEG22 main::@return + //SEG23 main::@return breturn: - //SEG23 [8] return + //SEG24 [8] return rts } -//SEG24 line +//SEG25 line line: { .label x1 = 2 - //SEG25 [10] phi from line line::@1 to line::@1 [phi:line/line::@1->line::@1] + //SEG26 [10] phi from line line::@1 to line::@1 [phi:line/line::@1->line::@1] b1_from_line: b1_from_b1: - //SEG26 [10] phi (byte*) screen#10 = (byte*) screen#14 [phi:line/line::@1->line::@1#0] -- register_copy - //SEG27 [10] phi (byte) line::x#2 = (byte) line::x#0 [phi:line/line::@1->line::@1#1] -- register_copy + //SEG27 [10] phi (byte*) screen#10 = (byte*) screen#14 [phi:line/line::@1->line::@1#0] -- register_copy + //SEG28 [10] phi (byte) line::x#2 = (byte) line::x#0 [phi:line/line::@1->line::@1#1] -- register_copy jmp b1 - //SEG28 line::@1 + //SEG29 line::@1 b1: - //SEG29 [11] *((byte*) screen#10) ← (byte) line::x#2 -- _deref_pbuz1=vbuxx + //SEG30 [11] *((byte*) screen#10) ← (byte) line::x#2 -- _deref_pbuz1=vbuxx txa ldy #0 sta (screen),y - //SEG30 [12] (byte*) screen#11 ← ++ (byte*) screen#10 -- pbuz1=_inc_pbuz1 + //SEG31 [12] (byte*) screen#11 ← ++ (byte*) screen#10 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG31 [13] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx + //SEG32 [13] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx inx - //SEG32 [14] if((byte) line::x#1<(byte) line::x1#3) goto line::@1 -- vbuxx_lt_vbuz1_then_la1 + //SEG33 [14] if((byte) line::x#1<(byte) line::x1#3) goto line::@1 -- vbuxx_lt_vbuz1_then_la1 cpx x1 bcc b1_from_b1 jmp breturn - //SEG33 line::@return + //SEG34 line::@return breturn: - //SEG34 [15] return + //SEG35 [15] return rts } @@ -495,73 +503,77 @@ zp ZP_WORD:3 [ screen#10 screen#14 screen#11 ] FINAL ASSEMBLER Score: 348 -//SEG0 Basic Upstart +//SEG0 File Comments +// Multiple calls with different (constant?) parameters should yield different values at runtime +// Currently the same constant parameter is passed on every call. +// Reason: Multiple versioned parameter constants x0#0, x0#1 are only output as a single constant in the ASM .const x0 = 0 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = 3 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call line - //SEG11 [9] phi from main to line [phi:main->line] - //SEG12 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->line#0] -- vbuz1=vbuc1 + //SEG11 [5] call line + //SEG12 [9] phi from main to line [phi:main->line] + //SEG13 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->line#0] -- vbuz1=vbuc1 lda #2 sta line.x1 - //SEG13 [9] phi (byte*) screen#14 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->line#1] -- pbuz1=pbuc1 + //SEG14 [9] phi (byte*) screen#14 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->line#1] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG14 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->line#2] -- vbuxx=vbuc1 + //SEG15 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->line#2] -- vbuxx=vbuc1 ldx #1 jsr line - //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG16 main::@1 - //SEG17 [7] call line - //SEG18 [9] phi from main::@1 to line [phi:main::@1->line] - //SEG19 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@1->line#0] -- vbuz1=vbuc1 + //SEG16 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG17 main::@1 + //SEG18 [7] call line + //SEG19 [9] phi from main::@1 to line [phi:main::@1->line] + //SEG20 [9] phi (byte) line::x1#3 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main::@1->line#0] -- vbuz1=vbuc1 lda #5 sta line.x1 - //SEG20 [9] phi (byte*) screen#14 = (byte*) screen#11 [phi:main::@1->line#1] -- register_copy - //SEG21 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->line#2] -- vbuxx=vbuc1 + //SEG21 [9] phi (byte*) screen#14 = (byte*) screen#11 [phi:main::@1->line#1] -- register_copy + //SEG22 [9] phi (byte) line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->line#2] -- vbuxx=vbuc1 ldx #3 jsr line - //SEG22 main::@return - //SEG23 [8] return + //SEG23 main::@return + //SEG24 [8] return rts } -//SEG24 line +//SEG25 line line: { .label x1 = 2 - //SEG25 [10] phi from line line::@1 to line::@1 [phi:line/line::@1->line::@1] - //SEG26 [10] phi (byte*) screen#10 = (byte*) screen#14 [phi:line/line::@1->line::@1#0] -- register_copy - //SEG27 [10] phi (byte) line::x#2 = (byte) line::x#0 [phi:line/line::@1->line::@1#1] -- register_copy - //SEG28 line::@1 + //SEG26 [10] phi from line line::@1 to line::@1 [phi:line/line::@1->line::@1] + //SEG27 [10] phi (byte*) screen#10 = (byte*) screen#14 [phi:line/line::@1->line::@1#0] -- register_copy + //SEG28 [10] phi (byte) line::x#2 = (byte) line::x#0 [phi:line/line::@1->line::@1#1] -- register_copy + //SEG29 line::@1 b1: - //SEG29 [11] *((byte*) screen#10) ← (byte) line::x#2 -- _deref_pbuz1=vbuxx + //SEG30 [11] *((byte*) screen#10) ← (byte) line::x#2 -- _deref_pbuz1=vbuxx txa ldy #0 sta (screen),y - //SEG30 [12] (byte*) screen#11 ← ++ (byte*) screen#10 -- pbuz1=_inc_pbuz1 + //SEG31 [12] (byte*) screen#11 ← ++ (byte*) screen#10 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG31 [13] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx + //SEG32 [13] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx inx - //SEG32 [14] if((byte) line::x#1<(byte) line::x1#3) goto line::@1 -- vbuxx_lt_vbuz1_then_la1 + //SEG33 [14] if((byte) line::x#1<(byte) line::x1#3) goto line::@1 -- vbuxx_lt_vbuz1_then_la1 cpx x1 bcc b1 - //SEG33 line::@return - //SEG34 [15] return + //SEG34 line::@return + //SEG35 [15] return rts } diff --git a/src/test/ref/cast-deref.asm b/src/test/ref/cast-deref.asm index ea12bf535..5d97ea4f6 100644 --- a/src/test/ref/cast-deref.asm +++ b/src/test/ref/cast-deref.asm @@ -1,7 +1,7 @@ +// Example of NOP-casting a dereferenced signed byte to a byte .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Example of NOP-casting a dereferenced signed byte to a byte main: { .label SCREEN = $400 ldx #0 diff --git a/src/test/ref/cast-deref.log b/src/test/ref/cast-deref.log index 62fbc6b4c..17b0c7de2 100644 --- a/src/test/ref/cast-deref.log +++ b/src/test/ref/cast-deref.log @@ -138,58 +138,59 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Example of NOP-casting a dereferenced signed byte to a byte +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Example of NOP-casting a dereferenced signed byte to a byte +//SEG10 main main: { .label SCREEN = $400 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte)*((const signed byte[]) main::sbs#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte)*((const signed byte[]) main::sbs#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda sbs,y sta SCREEN,y - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts sbs: .byte -1, -2, -3, -4 } @@ -208,54 +209,55 @@ Uplifting [main] best 288 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 288 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Example of NOP-casting a dereferenced signed byte to a byte +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Example of NOP-casting a dereferenced signed byte to a byte +//SEG10 main main: { .label SCREEN = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte)*((const signed byte[]) main::sbs#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte)*((const signed byte[]) main::sbs#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda sbs,x sta SCREEN,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts sbs: .byte -1, -2, -3, -4 } @@ -306,39 +308,40 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 186 -//SEG0 Basic Upstart +//SEG0 File Comments +// Example of NOP-casting a dereferenced signed byte to a byte +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Example of NOP-casting a dereferenced signed byte to a byte +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte)*((const signed byte[]) main::sbs#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte)*((const signed byte[]) main::sbs#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda sbs,x sta SCREEN,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts sbs: .byte -1, -2, -3, -4 } diff --git a/src/test/ref/cast-precedence-problem.asm b/src/test/ref/cast-precedence-problem.asm index 787056954..73046e6b8 100644 --- a/src/test/ref/cast-precedence-problem.asm +++ b/src/test/ref/cast-precedence-problem.asm @@ -1,7 +1,7 @@ +// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 main: { .label SCREEN = $400 .const min = $a diff --git a/src/test/ref/cast-precedence-problem.log b/src/test/ref/cast-precedence-problem.log index b98653c2e..989047513 100644 --- a/src/test/ref/cast-precedence-problem.log +++ b/src/test/ref/cast-precedence-problem.log @@ -169,27 +169,28 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 +//SEG9 main main: { .label SCREEN = $400 .const min = $a @@ -199,30 +200,30 @@ main: { .const sumw = min+max .const midb = (sumb>>1)+1 .const midw = (sumw>>1)+1 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2 lda #midw sta SCREEN - //SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 -- _deref_pbuc1=vbuc2 lda #midb sta SCREEN+1 - //SEG11 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1 + //SEG12 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1 lda SCREEN cmp SCREEN+1 beq b1 jmp b3 - //SEG12 main::@3 + //SEG13 main::@3 b3: - //SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG14 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL jmp breturn - //SEG14 main::@return + //SEG15 main::@return breturn: - //SEG15 [8] return + //SEG16 [8] return rts - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG18 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL jmp breturn @@ -243,27 +244,28 @@ Uplifting [main] best 61 combination Uplifting [] best 61 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 +//SEG9 main main: { .label SCREEN = $400 .const min = $a @@ -273,30 +275,30 @@ main: { .const sumw = min+max .const midb = (sumb>>1)+1 .const midw = (sumw>>1)+1 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2 lda #midw sta SCREEN - //SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 -- _deref_pbuc1=vbuc2 lda #midb sta SCREEN+1 - //SEG11 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1 + //SEG12 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1 lda SCREEN cmp SCREEN+1 beq b1 jmp b3 - //SEG12 main::@3 + //SEG13 main::@3 b3: - //SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG14 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL jmp breturn - //SEG14 main::@return + //SEG15 main::@return breturn: - //SEG15 [8] return + //SEG16 [8] return rts - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG18 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL jmp breturn @@ -351,19 +353,20 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 43 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main -// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1 +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label SCREEN = $400 .const min = $a @@ -373,27 +376,27 @@ main: { .const sumw = min+max .const midb = (sumb>>1)+1 .const midw = (sumw>>1)+1 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::midw#0 -- _deref_pbuc1=vbuc2 lda #midw sta SCREEN - //SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 -- _deref_pbuc1=vbuc2 lda #midb sta SCREEN+1 - //SEG11 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1 + //SEG12 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1 lda SCREEN cmp SCREEN+1 beq b1 - //SEG12 main::@3 - //SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG13 main::@3 + //SEG14 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG14 main::@return + //SEG15 main::@return breturn: - //SEG15 [8] return + //SEG16 [8] return rts - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG18 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL jmp breturn diff --git a/src/test/ref/casting.log b/src/test/ref/casting.log index 33303ab9d..145e5d581 100644 --- a/src/test/ref/casting.log +++ b/src/test/ref/casting.log @@ -343,130 +343,131 @@ Allocated zp ZP_BYTE:5 [ main::sb#0 ] Allocated zp ZP_BYTE:6 [ w::b2#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = SCREEN+$28*3 .label SCREEN3 = SCREEN+$28*6 .label SCREEN4 = SCREEN+$28*9 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label b2 = 4 .label sb = 5 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta b jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::b2#0 ← (byte/word/signed word/dword/signed dword) 200 - (byte) main::b#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG16 [6] (byte) main::b2#0 ← (byte/word/signed word/dword/signed dword) 200 - (byte) main::b#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$c8 sec sbc b sta b2 - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda b2 ldy b sta SCREEN,y - //SEG17 [8] (signed byte) main::sb#0 ← - (signed byte)(byte) main::b#2 -- vbsz1=_neg_vbsz2 + //SEG18 [8] (signed byte) main::sb#0 ← - (signed byte)(byte) main::b#2 -- vbsz1=_neg_vbsz2 lda b eor #$ff clc adc #1 sta sb - //SEG18 [9] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte)(signed byte) main::sb#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG19 [9] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte)(signed byte) main::sb#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda sb ldy b sta SCREEN2,y - //SEG19 [10] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG20 [10] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG20 [11] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG21 [11] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #$65 bne b1_from_b1 - //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [13] call w - //SEG24 [15] phi from main::@2 to w [phi:main::@2->w] + //SEG24 [13] call w + //SEG25 [15] phi from main::@2 to w [phi:main::@2->w] w_from_b2: jsr w jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [14] return + //SEG27 [14] return rts } -//SEG27 w +//SEG28 w w: { .const w1 = $514 .const w2 = $4e2 .const b = w1-w2 .label b2 = 6 .label i = 3 - //SEG28 [16] phi from w to w::@1 [phi:w->w::@1] + //SEG29 [16] phi from w to w::@1 [phi:w->w::@1] b1_from_w: - //SEG29 [16] phi (byte) w::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:w->w::@1#0] -- vbuz1=vbuc1 + //SEG30 [16] phi (byte) w::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:w->w::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG30 [16] phi from w::@1 to w::@1 [phi:w::@1->w::@1] + //SEG31 [16] phi from w::@1 to w::@1 [phi:w::@1->w::@1] b1_from_b1: - //SEG31 [16] phi (byte) w::i#2 = (byte) w::i#1 [phi:w::@1->w::@1#0] -- register_copy + //SEG32 [16] phi (byte) w::i#2 = (byte) w::i#1 [phi:w::@1->w::@1#0] -- register_copy jmp b1 - //SEG32 w::@1 + //SEG33 w::@1 b1: - //SEG33 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) 1400-(word/signed word/dword/signed dword) 1350 + (byte) w::i#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG34 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) 1400-(word/signed word/dword/signed dword) 1350 + (byte) w::i#2 -- vbuz1=vbuc1_plus_vbuz2 lda #$578-$546 clc adc i sta b2 - //SEG34 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG35 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #b sta SCREEN3,y - //SEG35 [19] *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG36 [19] *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda b2 ldy i sta SCREEN4,y - //SEG36 [20] (byte) w::i#1 ← ++ (byte) w::i#2 -- vbuz1=_inc_vbuz1 + //SEG37 [20] (byte) w::i#1 ← ++ (byte) w::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG37 [21] if((byte) w::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto w::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG38 [21] if((byte) w::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto w::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b1 jmp breturn - //SEG38 w::@return + //SEG39 w::@return breturn: - //SEG39 [22] return + //SEG40 [22] return rts } @@ -500,114 +501,115 @@ Uplifting [w] best 836 combination reg byte y [ w::i#2 w::i#1 ] reg byte x [ w:: Uplifting [] best 836 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = SCREEN+$28*3 .label SCREEN3 = SCREEN+$28*6 .label SCREEN4 = SCREEN+$28*9 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::b2#0 ← (byte/word/signed word/dword/signed dword) 200 - (byte) main::b#2 -- vbuaa=vbuc1_minus_vbuxx + //SEG16 [6] (byte) main::b2#0 ← (byte/word/signed word/dword/signed dword) 200 - (byte) main::b#2 -- vbuaa=vbuc1_minus_vbuxx txa eor #$ff clc adc #$c8+1 - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG17 [8] (signed byte) main::sb#0 ← - (signed byte)(byte) main::b#2 -- vbsaa=_neg_vbsxx + //SEG18 [8] (signed byte) main::sb#0 ← - (signed byte)(byte) main::b#2 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG18 [9] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte)(signed byte) main::sb#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG19 [9] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte)(signed byte) main::sb#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN2,x - //SEG19 [10] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuxx=_inc_vbuxx + //SEG20 [10] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuxx=_inc_vbuxx inx - //SEG20 [11] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG21 [11] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1_from_b1 - //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [13] call w - //SEG24 [15] phi from main::@2 to w [phi:main::@2->w] + //SEG24 [13] call w + //SEG25 [15] phi from main::@2 to w [phi:main::@2->w] w_from_b2: jsr w jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [14] return + //SEG27 [14] return rts } -//SEG27 w +//SEG28 w w: { .const w1 = $514 .const w2 = $4e2 .const b = w1-w2 - //SEG28 [16] phi from w to w::@1 [phi:w->w::@1] + //SEG29 [16] phi from w to w::@1 [phi:w->w::@1] b1_from_w: - //SEG29 [16] phi (byte) w::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:w->w::@1#0] -- vbuyy=vbuc1 + //SEG30 [16] phi (byte) w::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:w->w::@1#0] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG30 [16] phi from w::@1 to w::@1 [phi:w::@1->w::@1] + //SEG31 [16] phi from w::@1 to w::@1 [phi:w::@1->w::@1] b1_from_b1: - //SEG31 [16] phi (byte) w::i#2 = (byte) w::i#1 [phi:w::@1->w::@1#0] -- register_copy + //SEG32 [16] phi (byte) w::i#2 = (byte) w::i#1 [phi:w::@1->w::@1#0] -- register_copy jmp b1 - //SEG32 w::@1 + //SEG33 w::@1 b1: - //SEG33 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) 1400-(word/signed word/dword/signed dword) 1350 + (byte) w::i#2 -- vbuxx=vbuc1_plus_vbuyy + //SEG34 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) 1400-(word/signed word/dword/signed dword) 1350 + (byte) w::i#2 -- vbuxx=vbuc1_plus_vbuyy tya clc adc #$578-$546 tax - //SEG34 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG35 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #b sta SCREEN3,y - //SEG35 [19] *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 -- pbuc1_derefidx_vbuyy=vbuxx + //SEG36 [19] *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 -- pbuc1_derefidx_vbuyy=vbuxx txa sta SCREEN4,y - //SEG36 [20] (byte) w::i#1 ← ++ (byte) w::i#2 -- vbuyy=_inc_vbuyy + //SEG37 [20] (byte) w::i#1 ← ++ (byte) w::i#2 -- vbuyy=_inc_vbuyy iny - //SEG37 [21] if((byte) w::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto w::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG38 [21] if((byte) w::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto w::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$b bne b1_from_b1 jmp breturn - //SEG38 w::@return + //SEG39 w::@return breturn: - //SEG39 [22] return + //SEG40 [22] return rts } @@ -695,89 +697,90 @@ reg byte x [ w::b2#0 ] FINAL ASSEMBLER Score: 668 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = SCREEN+$28*3 .label SCREEN3 = SCREEN+$28*6 .label SCREEN4 = SCREEN+$28*9 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::b2#0 ← (byte/word/signed word/dword/signed dword) 200 - (byte) main::b#2 -- vbuaa=vbuc1_minus_vbuxx + //SEG16 [6] (byte) main::b2#0 ← (byte/word/signed word/dword/signed dword) 200 - (byte) main::b#2 -- vbuaa=vbuc1_minus_vbuxx txa eor #$ff clc adc #$c8+1 - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG17 [8] (signed byte) main::sb#0 ← - (signed byte)(byte) main::b#2 -- vbsaa=_neg_vbsxx + //SEG18 [8] (signed byte) main::sb#0 ← - (signed byte)(byte) main::b#2 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG18 [9] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte)(signed byte) main::sb#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG19 [9] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte)(signed byte) main::sb#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN2,x - //SEG19 [10] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuxx=_inc_vbuxx + //SEG20 [10] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuxx=_inc_vbuxx inx - //SEG20 [11] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG21 [11] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1 - //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG22 main::@2 - //SEG23 [13] call w - //SEG24 [15] phi from main::@2 to w [phi:main::@2->w] + //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG23 main::@2 + //SEG24 [13] call w + //SEG25 [15] phi from main::@2 to w [phi:main::@2->w] jsr w - //SEG25 main::@return - //SEG26 [14] return + //SEG26 main::@return + //SEG27 [14] return rts } -//SEG27 w +//SEG28 w w: { .const w1 = $514 .const w2 = $4e2 .const b = w1-w2 - //SEG28 [16] phi from w to w::@1 [phi:w->w::@1] - //SEG29 [16] phi (byte) w::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:w->w::@1#0] -- vbuyy=vbuc1 + //SEG29 [16] phi from w to w::@1 [phi:w->w::@1] + //SEG30 [16] phi (byte) w::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:w->w::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG30 [16] phi from w::@1 to w::@1 [phi:w::@1->w::@1] - //SEG31 [16] phi (byte) w::i#2 = (byte) w::i#1 [phi:w::@1->w::@1#0] -- register_copy - //SEG32 w::@1 + //SEG31 [16] phi from w::@1 to w::@1 [phi:w::@1->w::@1] + //SEG32 [16] phi (byte) w::i#2 = (byte) w::i#1 [phi:w::@1->w::@1#0] -- register_copy + //SEG33 w::@1 b1: - //SEG33 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) 1400-(word/signed word/dword/signed dword) 1350 + (byte) w::i#2 -- vbuxx=vbuc1_plus_vbuyy + //SEG34 [17] (byte) w::b2#0 ← (word/signed word/dword/signed dword) 1400-(word/signed word/dword/signed dword) 1350 + (byte) w::i#2 -- vbuxx=vbuc1_plus_vbuyy tya clc adc #$578-$546 tax - //SEG34 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG35 [18] *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (const byte) w::b#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #b sta SCREEN3,y - //SEG35 [19] *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 -- pbuc1_derefidx_vbuyy=vbuxx + //SEG36 [19] *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 -- pbuc1_derefidx_vbuyy=vbuxx txa sta SCREEN4,y - //SEG36 [20] (byte) w::i#1 ← ++ (byte) w::i#2 -- vbuyy=_inc_vbuyy + //SEG37 [20] (byte) w::i#1 ← ++ (byte) w::i#2 -- vbuyy=_inc_vbuyy iny - //SEG37 [21] if((byte) w::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto w::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG38 [21] if((byte) w::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto w::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$b bne b1 - //SEG38 w::@return - //SEG39 [22] return + //SEG39 w::@return + //SEG40 [22] return rts } diff --git a/src/test/ref/chargen.log b/src/test/ref/chargen.log index 47ab70232..7b27a14b9 100644 --- a/src/test/ref/chargen.log +++ b/src/test/ref/chargen.log @@ -369,29 +369,30 @@ Allocated zp ZP_BYTE:7 [ main::c#2 ] Allocated zp ZP_BYTE:8 [ main::$1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label PROCPORT = 1 .label CHARGEN = $d000 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label CHAR_A = CHARGEN+8 .label _1 = 8 @@ -400,97 +401,97 @@ main: { .label x = 6 .label y = 2 .label c = 7 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte*) main::sc#7 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG13 [6] phi (byte*) main::sc#7 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG13 [6] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG14 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG15 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG15 [6] phi (byte*) main::sc#7 = (byte*) main::sc#2 [phi:main::@5->main::@1#0] -- register_copy - //SEG16 [6] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG16 [6] phi (byte*) main::sc#7 = (byte*) main::sc#2 [phi:main::@5->main::@1#0] -- register_copy + //SEG17 [6] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@5->main::@1#1] -- register_copy jmp b1 - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG19 [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy y lda CHAR_A,y sta bits - //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG20 [8] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG21 [8] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG21 [8] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy - //SEG22 [8] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy + //SEG22 [8] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy + //SEG23 [8] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy jmp b2 - //SEG23 [8] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG24 [8] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG24 [8] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@2#0] -- register_copy - //SEG25 [8] phi (byte*) main::sc#3 = (byte*) main::sc#1 [phi:main::@3->main::@2#1] -- register_copy - //SEG26 [8] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy + //SEG25 [8] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@2#0] -- register_copy + //SEG26 [8] phi (byte*) main::sc#3 = (byte*) main::sc#1 [phi:main::@3->main::@2#1] -- register_copy + //SEG27 [8] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy jmp b2 - //SEG27 main::@2 + //SEG28 main::@2 b2: - //SEG28 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG29 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and bits sta _1 - //SEG29 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuz1_eq_0_then_la1 + //SEG30 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 - //SEG30 [11] phi from main::@2 to main::@4 [phi:main::@2->main::@4] + //SEG31 [11] phi from main::@2 to main::@4 [phi:main::@2->main::@4] b4_from_b2: jmp b4 - //SEG31 main::@4 + //SEG32 main::@4 b4: - //SEG32 [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] + //SEG33 [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] b3_from_b4: - //SEG33 [12] phi (byte) main::c#2 = (byte) '*' [phi:main::@4->main::@3#0] -- vbuz1=vbuc1 + //SEG34 [12] phi (byte) main::c#2 = (byte) '*' [phi:main::@4->main::@3#0] -- vbuz1=vbuc1 lda #'*' sta c jmp b3 - //SEG34 [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG35 [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG35 [12] phi (byte) main::c#2 = (byte) '.' [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + //SEG36 [12] phi (byte) main::c#2 = (byte) '.' [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 lda #'.' sta c jmp b3 - //SEG36 main::@3 + //SEG37 main::@3 b3: - //SEG37 [13] *((byte*) main::sc#3) ← (byte) main::c#2 -- _deref_pbuz1=vbuz2 + //SEG38 [13] *((byte*) main::sc#3) ← (byte) main::c#2 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (sc),y - //SEG38 [14] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 -- pbuz1=_inc_pbuz1 + //SEG39 [14] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG39 [15] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG40 [15] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG40 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuz1=_inc_vbuz1 + //SEG41 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG41 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG42 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #8 bne b2_from_b3 jmp b5 - //SEG42 main::@5 + //SEG43 main::@5 b5: - //SEG43 [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 + //SEG44 [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$20 @@ -498,24 +499,24 @@ main: { bcc !+ inc sc+1 !: - //SEG44 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 + //SEG45 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG45 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG46 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1_from_b5 jmp b6 - //SEG46 main::@6 + //SEG47 main::@6 b6: - //SEG47 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG48 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG48 asm { cli } + //SEG49 asm { cli } cli jmp breturn - //SEG49 main::@return + //SEG50 main::@return breturn: - //SEG50 [23] return + //SEG51 [23] return rts } @@ -557,118 +558,119 @@ Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::y#2 main::y#1 ] Uplifting [main] best 7232 combination zp ZP_BYTE:2 [ main::y#2 main::y#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label PROCPORT = 1 .label CHARGEN = $d000 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label CHAR_A = CHARGEN+8 .label bits = 3 .label sc = 4 .label y = 2 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte*) main::sc#7 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG13 [6] phi (byte*) main::sc#7 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG13 [6] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG14 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG15 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG15 [6] phi (byte*) main::sc#7 = (byte*) main::sc#2 [phi:main::@5->main::@1#0] -- register_copy - //SEG16 [6] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG16 [6] phi (byte*) main::sc#7 = (byte*) main::sc#2 [phi:main::@5->main::@1#0] -- register_copy + //SEG17 [6] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@5->main::@1#1] -- register_copy jmp b1 - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG19 [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy y lda CHAR_A,y sta bits - //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG20 [8] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG21 [8] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG21 [8] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy - //SEG22 [8] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy + //SEG22 [8] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy + //SEG23 [8] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy jmp b2 - //SEG23 [8] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG24 [8] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG24 [8] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@2#0] -- register_copy - //SEG25 [8] phi (byte*) main::sc#3 = (byte*) main::sc#1 [phi:main::@3->main::@2#1] -- register_copy - //SEG26 [8] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy + //SEG25 [8] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@2#0] -- register_copy + //SEG26 [8] phi (byte*) main::sc#3 = (byte*) main::sc#1 [phi:main::@3->main::@2#1] -- register_copy + //SEG27 [8] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy jmp b2 - //SEG27 main::@2 + //SEG28 main::@2 b2: - //SEG28 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG29 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG29 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuaa_eq_0_then_la1 + //SEG30 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG30 [11] phi from main::@2 to main::@4 [phi:main::@2->main::@4] + //SEG31 [11] phi from main::@2 to main::@4 [phi:main::@2->main::@4] b4_from_b2: jmp b4 - //SEG31 main::@4 + //SEG32 main::@4 b4: - //SEG32 [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] + //SEG33 [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] b3_from_b4: - //SEG33 [12] phi (byte) main::c#2 = (byte) '*' [phi:main::@4->main::@3#0] -- vbuaa=vbuc1 + //SEG34 [12] phi (byte) main::c#2 = (byte) '*' [phi:main::@4->main::@3#0] -- vbuaa=vbuc1 lda #'*' jmp b3 - //SEG34 [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG35 [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG35 [12] phi (byte) main::c#2 = (byte) '.' [phi:main::@2->main::@3#0] -- vbuaa=vbuc1 + //SEG36 [12] phi (byte) main::c#2 = (byte) '.' [phi:main::@2->main::@3#0] -- vbuaa=vbuc1 lda #'.' jmp b3 - //SEG36 main::@3 + //SEG37 main::@3 b3: - //SEG37 [13] *((byte*) main::sc#3) ← (byte) main::c#2 -- _deref_pbuz1=vbuaa + //SEG38 [13] *((byte*) main::sc#3) ← (byte) main::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (sc),y - //SEG38 [14] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 -- pbuz1=_inc_pbuz1 + //SEG39 [14] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG39 [15] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG40 [15] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG40 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuxx=_inc_vbuxx + //SEG41 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuxx=_inc_vbuxx inx - //SEG41 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG42 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b3 jmp b5 - //SEG42 main::@5 + //SEG43 main::@5 b5: - //SEG43 [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 + //SEG44 [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$20 @@ -676,24 +678,24 @@ main: { bcc !+ inc sc+1 !: - //SEG44 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 + //SEG45 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG45 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG46 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1_from_b5 jmp b6 - //SEG46 main::@6 + //SEG47 main::@6 b6: - //SEG47 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG48 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG48 asm { cli } + //SEG49 asm { cli } cli jmp breturn - //SEG49 main::@return + //SEG50 main::@return breturn: - //SEG50 [23] return + //SEG51 [23] return rts } @@ -787,95 +789,96 @@ reg byte a [ main::$1 ] FINAL ASSEMBLER Score: 5627 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label PROCPORT = 1 .label CHARGEN = $d000 .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label CHAR_A = CHARGEN+8 .label bits = 3 .label sc = 4 .label y = 2 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG12 [6] phi (byte*) main::sc#7 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi (byte*) main::sc#7 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG13 [6] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG14 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG15 [6] phi (byte*) main::sc#7 = (byte*) main::sc#2 [phi:main::@5->main::@1#0] -- register_copy - //SEG16 [6] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@5->main::@1#1] -- register_copy - //SEG17 main::@1 + //SEG15 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG16 [6] phi (byte*) main::sc#7 = (byte*) main::sc#2 [phi:main::@5->main::@1#0] -- register_copy + //SEG17 [6] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG18 main::@1 b1: - //SEG18 [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG19 [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy y lda CHAR_A,y sta bits - //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG20 [8] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [8] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG21 [8] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy - //SEG22 [8] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy - //SEG23 [8] phi from main::@3 to main::@2 [phi:main::@3->main::@2] - //SEG24 [8] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@2#0] -- register_copy - //SEG25 [8] phi (byte*) main::sc#3 = (byte*) main::sc#1 [phi:main::@3->main::@2#1] -- register_copy - //SEG26 [8] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy - //SEG27 main::@2 + //SEG22 [8] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy + //SEG23 [8] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy + //SEG24 [8] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG25 [8] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@2#0] -- register_copy + //SEG26 [8] phi (byte*) main::sc#3 = (byte*) main::sc#1 [phi:main::@3->main::@2#1] -- register_copy + //SEG27 [8] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy + //SEG28 main::@2 b2: - //SEG28 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG29 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG29 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuaa_eq_0_then_la1 + //SEG30 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG30 [11] phi from main::@2 to main::@4 [phi:main::@2->main::@4] - //SEG31 main::@4 - //SEG32 [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] - //SEG33 [12] phi (byte) main::c#2 = (byte) '*' [phi:main::@4->main::@3#0] -- vbuaa=vbuc1 + //SEG31 [11] phi from main::@2 to main::@4 [phi:main::@2->main::@4] + //SEG32 main::@4 + //SEG33 [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] + //SEG34 [12] phi (byte) main::c#2 = (byte) '*' [phi:main::@4->main::@3#0] -- vbuaa=vbuc1 lda #'*' jmp b3 - //SEG34 [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG35 [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b4: - //SEG35 [12] phi (byte) main::c#2 = (byte) '.' [phi:main::@2->main::@3#0] -- vbuaa=vbuc1 + //SEG36 [12] phi (byte) main::c#2 = (byte) '.' [phi:main::@2->main::@3#0] -- vbuaa=vbuc1 lda #'.' - //SEG36 main::@3 + //SEG37 main::@3 b3: - //SEG37 [13] *((byte*) main::sc#3) ← (byte) main::c#2 -- _deref_pbuz1=vbuaa + //SEG38 [13] *((byte*) main::sc#3) ← (byte) main::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (sc),y - //SEG38 [14] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 -- pbuz1=_inc_pbuz1 + //SEG39 [14] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG39 [15] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG40 [15] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG40 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuxx=_inc_vbuxx + //SEG41 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuxx=_inc_vbuxx inx - //SEG41 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG42 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG42 main::@5 - //SEG43 [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 + //SEG43 main::@5 + //SEG44 [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$20 @@ -883,20 +886,20 @@ main: { bcc !+ inc sc+1 !: - //SEG44 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 + //SEG45 [19] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG45 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG46 [20] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1 - //SEG46 main::@6 - //SEG47 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG47 main::@6 + //SEG48 [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG48 asm { cli } + //SEG49 asm { cli } cli - //SEG49 main::@return - //SEG50 [23] return + //SEG50 main::@return + //SEG51 [23] return rts } diff --git a/src/test/ref/chessboard.asm b/src/test/ref/chessboard.asm index 0ff3a26ee..e47a7e7f9 100644 --- a/src/test/ref/chessboard.asm +++ b/src/test/ref/chessboard.asm @@ -1,7 +1,7 @@ +// Draws a chess board in the upper left corner of the screen .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Draws a chess board in the upper left corner of the screen main: { .label screen = 2 .label colors = 4 diff --git a/src/test/ref/chessboard.log b/src/test/ref/chessboard.log index e261ef744..6117b3197 100644 --- a/src/test/ref/chessboard.log +++ b/src/test/ref/chessboard.log @@ -246,103 +246,104 @@ Allocated zp ZP_BYTE:7 [ main::column#2 main::column#1 ] Allocated zp ZP_BYTE:8 [ main::color#3 main::color#5 main::color#2 main::color#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Draws a chess board in the upper left corner of the screen +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Draws a chess board in the upper left corner of the screen +//SEG10 main main: { .label color = 8 .label column = 7 .label screen = 2 .label colors = 4 .label row = 6 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::row#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::row#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta row - //SEG12 [5] phi (byte*) main::colors#4 = ((byte*))(word/dword/signed dword) 55296 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::colors#4 = ((byte*))(word/dword/signed dword) 55296 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$d800 sta colors lda #>$d800 sta colors+1 - //SEG13 [5] phi (byte) main::color#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#2] -- vbuz1=vbuc1 + //SEG14 [5] phi (byte) main::color#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#2] -- vbuz1=vbuc1 lda #1 sta color - //SEG14 [5] phi (byte*) main::screen#4 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#3] -- pbuz1=pbuc1 + //SEG15 [5] phi (byte*) main::screen#4 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#3] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 jmp b1 - //SEG15 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG16 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG16 [5] phi (byte) main::row#4 = (byte) main::row#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG17 [5] phi (byte*) main::colors#4 = (byte*) main::colors#1 [phi:main::@3->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::color#5 = (byte) main::color#2 [phi:main::@3->main::@1#2] -- register_copy - //SEG19 [5] phi (byte*) main::screen#4 = (byte*) main::screen#1 [phi:main::@3->main::@1#3] -- register_copy + //SEG17 [5] phi (byte) main::row#4 = (byte) main::row#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG18 [5] phi (byte*) main::colors#4 = (byte*) main::colors#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::color#5 = (byte) main::color#2 [phi:main::@3->main::@1#2] -- register_copy + //SEG20 [5] phi (byte*) main::screen#4 = (byte*) main::screen#1 [phi:main::@3->main::@1#3] -- register_copy jmp b1 - //SEG20 main::@1 + //SEG21 main::@1 b1: - //SEG21 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [6] phi (byte) main::color#3 = (byte) main::color#5 [phi:main::@1->main::@2#0] -- register_copy - //SEG23 [6] phi (byte) main::column#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#1] -- vbuz1=vbuc1 + //SEG23 [6] phi (byte) main::color#3 = (byte) main::color#5 [phi:main::@1->main::@2#0] -- register_copy + //SEG24 [6] phi (byte) main::column#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#1] -- vbuz1=vbuc1 lda #0 sta column jmp b2 - //SEG24 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG25 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG25 [6] phi (byte) main::color#3 = (byte) main::color#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG26 [6] phi (byte) main::column#2 = (byte) main::column#1 [phi:main::@2->main::@2#1] -- register_copy + //SEG26 [6] phi (byte) main::color#3 = (byte) main::color#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG27 [6] phi (byte) main::column#2 = (byte) main::column#1 [phi:main::@2->main::@2#1] -- register_copy jmp b2 - //SEG27 main::@2 + //SEG28 main::@2 b2: - //SEG28 [7] *((byte*) main::screen#4 + (byte) main::column#2) ← (byte/word/signed word/dword/signed dword) 160 -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG29 [7] *((byte*) main::screen#4 + (byte) main::column#2) ← (byte/word/signed word/dword/signed dword) 160 -- pbuz1_derefidx_vbuz2=vbuc1 lda #$a0 ldy column sta (screen),y - //SEG29 [8] *((byte*) main::colors#4 + (byte) main::column#2) ← (byte) main::color#3 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG30 [8] *((byte*) main::colors#4 + (byte) main::column#2) ← (byte) main::color#3 -- pbuz1_derefidx_vbuz2=vbuz3 lda color ldy column sta (colors),y - //SEG30 [9] (byte) main::color#1 ← (byte) main::color#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG31 [9] (byte) main::color#1 ← (byte) main::color#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda color eor #1 sta color - //SEG31 [10] (byte) main::column#1 ← ++ (byte) main::column#2 -- vbuz1=_inc_vbuz1 + //SEG32 [10] (byte) main::column#1 ← ++ (byte) main::column#2 -- vbuz1=_inc_vbuz1 inc column - //SEG32 [11] if((byte) main::column#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG33 [11] if((byte) main::column#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda column cmp #8 bne b2_from_b2 jmp b3 - //SEG33 main::@3 + //SEG34 main::@3 b3: - //SEG34 [12] (byte) main::color#2 ← (byte) main::color#1 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG35 [12] (byte) main::color#2 ← (byte) main::color#1 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda color eor #1 sta color - //SEG35 [13] (byte*) main::screen#1 ← (byte*) main::screen#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG36 [13] (byte*) main::screen#1 ← (byte*) main::screen#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda screen clc adc #$28 @@ -350,7 +351,7 @@ main: { bcc !+ inc screen+1 !: - //SEG36 [14] (byte*) main::colors#1 ← (byte*) main::colors#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG37 [14] (byte*) main::colors#1 ← (byte*) main::colors#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda colors clc adc #$28 @@ -358,16 +359,16 @@ main: { bcc !+ inc colors+1 !: - //SEG37 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1 + //SEG38 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1 inc row - //SEG38 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG39 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 jmp breturn - //SEG39 main::@return + //SEG40 main::@return breturn: - //SEG40 [17] return + //SEG41 [17] return rts } @@ -403,96 +404,97 @@ Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::row#4 main::row# Uplifting [main] best 4863 combination zp ZP_BYTE:6 [ main::row#4 main::row#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Draws a chess board in the upper left corner of the screen +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Draws a chess board in the upper left corner of the screen +//SEG10 main main: { .label screen = 2 .label colors = 4 .label row = 6 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::row#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::row#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta row - //SEG12 [5] phi (byte*) main::colors#4 = ((byte*))(word/dword/signed dword) 55296 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::colors#4 = ((byte*))(word/dword/signed dword) 55296 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$d800 sta colors lda #>$d800 sta colors+1 - //SEG13 [5] phi (byte) main::color#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#2] -- vbuxx=vbuc1 + //SEG14 [5] phi (byte) main::color#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#2] -- vbuxx=vbuc1 ldx #1 - //SEG14 [5] phi (byte*) main::screen#4 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#3] -- pbuz1=pbuc1 + //SEG15 [5] phi (byte*) main::screen#4 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#3] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 jmp b1 - //SEG15 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG16 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG16 [5] phi (byte) main::row#4 = (byte) main::row#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG17 [5] phi (byte*) main::colors#4 = (byte*) main::colors#1 [phi:main::@3->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::color#5 = (byte) main::color#2 [phi:main::@3->main::@1#2] -- register_copy - //SEG19 [5] phi (byte*) main::screen#4 = (byte*) main::screen#1 [phi:main::@3->main::@1#3] -- register_copy + //SEG17 [5] phi (byte) main::row#4 = (byte) main::row#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG18 [5] phi (byte*) main::colors#4 = (byte*) main::colors#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::color#5 = (byte) main::color#2 [phi:main::@3->main::@1#2] -- register_copy + //SEG20 [5] phi (byte*) main::screen#4 = (byte*) main::screen#1 [phi:main::@3->main::@1#3] -- register_copy jmp b1 - //SEG20 main::@1 + //SEG21 main::@1 b1: - //SEG21 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [6] phi (byte) main::color#3 = (byte) main::color#5 [phi:main::@1->main::@2#0] -- register_copy - //SEG23 [6] phi (byte) main::column#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#1] -- vbuyy=vbuc1 + //SEG23 [6] phi (byte) main::color#3 = (byte) main::color#5 [phi:main::@1->main::@2#0] -- register_copy + //SEG24 [6] phi (byte) main::column#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#1] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG24 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG25 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG25 [6] phi (byte) main::color#3 = (byte) main::color#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG26 [6] phi (byte) main::column#2 = (byte) main::column#1 [phi:main::@2->main::@2#1] -- register_copy + //SEG26 [6] phi (byte) main::color#3 = (byte) main::color#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG27 [6] phi (byte) main::column#2 = (byte) main::column#1 [phi:main::@2->main::@2#1] -- register_copy jmp b2 - //SEG27 main::@2 + //SEG28 main::@2 b2: - //SEG28 [7] *((byte*) main::screen#4 + (byte) main::column#2) ← (byte/word/signed word/dword/signed dword) 160 -- pbuz1_derefidx_vbuyy=vbuc1 + //SEG29 [7] *((byte*) main::screen#4 + (byte) main::column#2) ← (byte/word/signed word/dword/signed dword) 160 -- pbuz1_derefidx_vbuyy=vbuc1 lda #$a0 sta (screen),y - //SEG29 [8] *((byte*) main::colors#4 + (byte) main::column#2) ← (byte) main::color#3 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG30 [8] *((byte*) main::colors#4 + (byte) main::column#2) ← (byte) main::color#3 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (colors),y - //SEG30 [9] (byte) main::color#1 ← (byte) main::color#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_bxor_vbuc1 + //SEG31 [9] (byte) main::color#1 ← (byte) main::color#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_bxor_vbuc1 txa eor #1 tax - //SEG31 [10] (byte) main::column#1 ← ++ (byte) main::column#2 -- vbuyy=_inc_vbuyy + //SEG32 [10] (byte) main::column#1 ← ++ (byte) main::column#2 -- vbuyy=_inc_vbuyy iny - //SEG32 [11] if((byte) main::column#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG33 [11] if((byte) main::column#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b2_from_b2 jmp b3 - //SEG33 main::@3 + //SEG34 main::@3 b3: - //SEG34 [12] (byte) main::color#2 ← (byte) main::color#1 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_bxor_vbuc1 + //SEG35 [12] (byte) main::color#2 ← (byte) main::color#1 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_bxor_vbuc1 txa eor #1 tax - //SEG35 [13] (byte*) main::screen#1 ← (byte*) main::screen#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG36 [13] (byte*) main::screen#1 ← (byte*) main::screen#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda screen clc adc #$28 @@ -500,7 +502,7 @@ main: { bcc !+ inc screen+1 !: - //SEG36 [14] (byte*) main::colors#1 ← (byte*) main::colors#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG37 [14] (byte*) main::colors#1 ← (byte*) main::colors#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda colors clc adc #$28 @@ -508,16 +510,16 @@ main: { bcc !+ inc colors+1 !: - //SEG37 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1 + //SEG38 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1 inc row - //SEG38 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG39 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 jmp breturn - //SEG39 main::@return + //SEG40 main::@return breturn: - //SEG40 [17] return + //SEG41 [17] return rts } @@ -590,77 +592,78 @@ reg byte x [ main::color#3 main::color#5 main::color#2 main::color#1 ] FINAL ASSEMBLER Score: 3861 -//SEG0 Basic Upstart +//SEG0 File Comments +// Draws a chess board in the upper left corner of the screen +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Draws a chess board in the upper left corner of the screen +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label screen = 2 .label colors = 4 .label row = 6 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::row#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::row#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta row - //SEG12 [5] phi (byte*) main::colors#4 = ((byte*))(word/dword/signed dword) 55296 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::colors#4 = ((byte*))(word/dword/signed dword) 55296 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$d800 sta colors lda #>$d800 sta colors+1 - //SEG13 [5] phi (byte) main::color#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#2] -- vbuxx=vbuc1 + //SEG14 [5] phi (byte) main::color#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@1#2] -- vbuxx=vbuc1 ldx #1 - //SEG14 [5] phi (byte*) main::screen#4 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#3] -- pbuz1=pbuc1 + //SEG15 [5] phi (byte*) main::screen#4 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#3] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG15 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG16 [5] phi (byte) main::row#4 = (byte) main::row#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG17 [5] phi (byte*) main::colors#4 = (byte*) main::colors#1 [phi:main::@3->main::@1#1] -- register_copy - //SEG18 [5] phi (byte) main::color#5 = (byte) main::color#2 [phi:main::@3->main::@1#2] -- register_copy - //SEG19 [5] phi (byte*) main::screen#4 = (byte*) main::screen#1 [phi:main::@3->main::@1#3] -- register_copy - //SEG20 main::@1 + //SEG16 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG17 [5] phi (byte) main::row#4 = (byte) main::row#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG18 [5] phi (byte*) main::colors#4 = (byte*) main::colors#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG19 [5] phi (byte) main::color#5 = (byte) main::color#2 [phi:main::@3->main::@1#2] -- register_copy + //SEG20 [5] phi (byte*) main::screen#4 = (byte*) main::screen#1 [phi:main::@3->main::@1#3] -- register_copy + //SEG21 main::@1 b1: - //SEG21 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG22 [6] phi (byte) main::color#3 = (byte) main::color#5 [phi:main::@1->main::@2#0] -- register_copy - //SEG23 [6] phi (byte) main::column#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#1] -- vbuyy=vbuc1 + //SEG22 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG23 [6] phi (byte) main::color#3 = (byte) main::color#5 [phi:main::@1->main::@2#0] -- register_copy + //SEG24 [6] phi (byte) main::column#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#1] -- vbuyy=vbuc1 ldy #0 - //SEG24 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG25 [6] phi (byte) main::color#3 = (byte) main::color#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG26 [6] phi (byte) main::column#2 = (byte) main::column#1 [phi:main::@2->main::@2#1] -- register_copy - //SEG27 main::@2 + //SEG25 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG26 [6] phi (byte) main::color#3 = (byte) main::color#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG27 [6] phi (byte) main::column#2 = (byte) main::column#1 [phi:main::@2->main::@2#1] -- register_copy + //SEG28 main::@2 b2: - //SEG28 [7] *((byte*) main::screen#4 + (byte) main::column#2) ← (byte/word/signed word/dword/signed dword) 160 -- pbuz1_derefidx_vbuyy=vbuc1 + //SEG29 [7] *((byte*) main::screen#4 + (byte) main::column#2) ← (byte/word/signed word/dword/signed dword) 160 -- pbuz1_derefidx_vbuyy=vbuc1 lda #$a0 sta (screen),y - //SEG29 [8] *((byte*) main::colors#4 + (byte) main::column#2) ← (byte) main::color#3 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG30 [8] *((byte*) main::colors#4 + (byte) main::column#2) ← (byte) main::color#3 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (colors),y - //SEG30 [9] (byte) main::color#1 ← (byte) main::color#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_bxor_vbuc1 + //SEG31 [9] (byte) main::color#1 ← (byte) main::color#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_bxor_vbuc1 txa eor #1 tax - //SEG31 [10] (byte) main::column#1 ← ++ (byte) main::column#2 -- vbuyy=_inc_vbuyy + //SEG32 [10] (byte) main::column#1 ← ++ (byte) main::column#2 -- vbuyy=_inc_vbuyy iny - //SEG32 [11] if((byte) main::column#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG33 [11] if((byte) main::column#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b2 - //SEG33 main::@3 - //SEG34 [12] (byte) main::color#2 ← (byte) main::color#1 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_bxor_vbuc1 + //SEG34 main::@3 + //SEG35 [12] (byte) main::color#2 ← (byte) main::color#1 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_bxor_vbuc1 txa eor #1 tax - //SEG35 [13] (byte*) main::screen#1 ← (byte*) main::screen#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG36 [13] (byte*) main::screen#1 ← (byte*) main::screen#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda screen clc adc #$28 @@ -668,7 +671,7 @@ main: { bcc !+ inc screen+1 !: - //SEG36 [14] (byte*) main::colors#1 ← (byte*) main::colors#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG37 [14] (byte*) main::colors#1 ← (byte*) main::colors#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda colors clc adc #$28 @@ -676,14 +679,14 @@ main: { bcc !+ inc colors+1 !: - //SEG37 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1 + //SEG38 [15] (byte) main::row#1 ← ++ (byte) main::row#4 -- vbuz1=_inc_vbuz1 inc row - //SEG38 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG39 [16] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1 - //SEG39 main::@return - //SEG40 [17] return + //SEG40 main::@return + //SEG41 [17] return rts } diff --git a/src/test/ref/clobber-a-problem.log b/src/test/ref/clobber-a-problem.log index 26a26bdfe..ad01c1f0f 100644 --- a/src/test/ref/clobber-a-problem.log +++ b/src/test/ref/clobber-a-problem.log @@ -255,11 +255,12 @@ Allocated zp ZP_BYTE:4 [ irq_raster_next#1 ] Allocated zp ZP_BYTE:5 [ irq::$0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label RASTER = $d012 .const DARK_GREY = $b @@ -267,88 +268,88 @@ INITIAL ASM .label KERNEL_IRQ = $314 .label irq_raster_next = 3 .label irq_raster_next_1 = 4 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b1 -//SEG3 @1 +//SEG4 @1 b1: -//SEG4 [1] (byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG5 [1] (byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_raster_next -//SEG5 [2] phi from @1 to @2 [phi:@1->@2] +//SEG6 [2] phi from @1 to @2 [phi:@1->@2] b2_from_b1: jmp b2 -//SEG6 @2 +//SEG7 @2 b2: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @2 to @end [phi:@2->@end] +//SEG9 [4] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { - //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG12 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [6] return + //SEG14 [6] return rts } -//SEG14 irq +//SEG15 irq irq: { .label _0 = 5 .label raster_next = 2 - //SEG15 entry interrupt(HARDWARE_CLOBBER) + //SEG16 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG16 [7] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG17 [7] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BORDERCOL - //SEG17 [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG18 [8] (byte) irq_raster_next#1 ← (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_1 - //SEG18 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuz1=vbuz2 + //SEG19 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuz1=vbuz2 lda irq_raster_next_1 sta raster_next - //SEG19 [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG20 [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and raster_next sta _0 - //SEG20 [11] if((byte~) irq::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuz1_neq_0_then_la1 + //SEG21 [11] if((byte~) irq::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuz1_neq_0_then_la1 lda _0 cmp #0 bne b1_from_irq jmp b2 - //SEG21 irq::@2 + //SEG22 irq::@2 b2: - //SEG22 [12] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 + //SEG23 [12] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_minus_1 dec raster_next - //SEG23 [13] phi from irq irq::@2 to irq::@1 [phi:irq/irq::@2->irq::@1] + //SEG24 [13] phi from irq irq::@2 to irq::@1 [phi:irq/irq::@2->irq::@1] b1_from_irq: b1_from_b2: - //SEG24 [13] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq/irq::@2->irq::@1#0] -- register_copy + //SEG25 [13] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq/irq::@2->irq::@1#0] -- register_copy jmp b1 - //SEG25 irq::@1 + //SEG26 irq::@1 b1: - //SEG26 [14] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuz1 + //SEG27 [14] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuz1 lda raster_next sta RASTER - //SEG27 [15] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG28 [15] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp breturn - //SEG28 irq::@return + //SEG29 irq::@return breturn: - //SEG29 [16] return - exit interrupt(HARDWARE_CLOBBER) + //SEG30 [16] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -394,97 +395,98 @@ Uplifting [] best 248 combination zp ZP_BYTE:4 [ irq_raster_next#1 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ irq_raster_next#0 ] ] with [ zp ZP_BYTE:4 [ irq_raster_next#1 ] ] - score: 1 Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ irq_raster_next#0 irq_raster_next#1 ] Interrupt procedure irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG15 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG29 [16] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG29 [16] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG16 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG30 [16] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG30 [16] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label RASTER = $d012 .const DARK_GREY = $b .const BLACK = 0 .label KERNEL_IRQ = $314 .label irq_raster_next = 2 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b1 -//SEG3 @1 +//SEG4 @1 b1: -//SEG4 [1] (byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG5 [1] (byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_raster_next -//SEG5 [2] phi from @1 to @2 [phi:@1->@2] +//SEG6 [2] phi from @1 to @2 [phi:@1->@2] b2_from_b1: jmp b2 -//SEG6 @2 +//SEG7 @2 b2: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @2 to @end [phi:@2->@end] +//SEG9 [4] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { - //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG12 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [6] return + //SEG14 [6] return rts } -//SEG14 irq +//SEG15 irq irq: { - //SEG15 entry interrupt(HARDWARE_CLOBBER) + //SEG16 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG16 [7] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG17 [7] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BORDERCOL - //SEG17 [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG18 [8] (byte) irq_raster_next#1 ← (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 - //SEG18 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuxx=vbuz1 + //SEG19 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuxx=vbuz1 ldx irq_raster_next - //SEG19 [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG20 [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG20 [11] if((byte~) irq::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuaa_neq_0_then_la1 + //SEG21 [11] if((byte~) irq::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1_from_irq jmp b2 - //SEG21 irq::@2 + //SEG22 irq::@2 b2: - //SEG22 [12] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + //SEG23 [12] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 dex - //SEG23 [13] phi from irq irq::@2 to irq::@1 [phi:irq/irq::@2->irq::@1] + //SEG24 [13] phi from irq irq::@2 to irq::@1 [phi:irq/irq::@2->irq::@1] b1_from_irq: b1_from_b2: - //SEG24 [13] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq/irq::@2->irq::@1#0] -- register_copy + //SEG25 [13] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq/irq::@2->irq::@1#0] -- register_copy jmp b1 - //SEG25 irq::@1 + //SEG26 irq::@1 b1: - //SEG26 [14] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + //SEG27 [14] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx stx RASTER - //SEG27 [15] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG28 [15] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp breturn - //SEG28 irq::@return + //SEG29 irq::@return breturn: - //SEG29 [16] return - exit interrupt(HARDWARE_CLOBBER) + //SEG30 [16] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -554,75 +556,76 @@ reg byte a [ irq::$0 ] FINAL ASSEMBLER Score: 157 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label RASTER = $d012 .const DARK_GREY = $b .const BLACK = 0 .label KERNEL_IRQ = $314 .label irq_raster_next = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 @1 -//SEG4 [1] (byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 @1 +//SEG5 [1] (byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_raster_next -//SEG5 [2] phi from @1 to @2 [phi:@1->@2] -//SEG6 @2 -//SEG7 [3] call main +//SEG6 [2] phi from @1 to @2 [phi:@1->@2] +//SEG7 @2 +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @2 to @end [phi:@2->@end] -//SEG9 @end -//SEG10 main +//SEG9 [4] phi from @2 to @end [phi:@2->@end] +//SEG10 @end +//SEG11 main main: { - //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG12 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG12 main::@return - //SEG13 [6] return + //SEG13 main::@return + //SEG14 [6] return rts } -//SEG14 irq +//SEG15 irq irq: { - //SEG15 entry interrupt(HARDWARE_CLOBBER) + //SEG16 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG16 [7] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG17 [7] *((const byte*) BORDERCOL#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BORDERCOL - //SEG17 [8] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG18 [8] (byte) irq_raster_next#1 ← (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 - //SEG18 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuxx=vbuz1 + //SEG19 [9] (byte) irq::raster_next#0 ← (byte) irq_raster_next#1 -- vbuxx=vbuz1 tax - //SEG19 [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG20 [10] (byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG20 [11] if((byte~) irq::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuaa_neq_0_then_la1 + //SEG21 [11] if((byte~) irq::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 - //SEG21 irq::@2 - //SEG22 [12] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 + //SEG22 irq::@2 + //SEG23 [12] (byte) irq::raster_next#1 ← (byte) irq::raster_next#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_minus_1 dex - //SEG23 [13] phi from irq irq::@2 to irq::@1 [phi:irq/irq::@2->irq::@1] - //SEG24 [13] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq/irq::@2->irq::@1#0] -- register_copy - //SEG25 irq::@1 + //SEG24 [13] phi from irq irq::@2 to irq::@1 [phi:irq/irq::@2->irq::@1] + //SEG25 [13] phi (byte) irq::raster_next#2 = (byte) irq::raster_next#0 [phi:irq/irq::@2->irq::@1#0] -- register_copy + //SEG26 irq::@1 b1: - //SEG26 [14] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx + //SEG27 [14] *((const byte*) RASTER#0) ← (byte) irq::raster_next#2 -- _deref_pbuc1=vbuxx stx RASTER - //SEG27 [15] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG28 [15] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG28 irq::@return - //SEG29 [16] return - exit interrupt(HARDWARE_CLOBBER) + //SEG29 irq::@return + //SEG30 [16] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: diff --git a/src/test/ref/complex/tetris/test-sprites.asm b/src/test/ref/complex/tetris/test-sprites.asm index 423d12de7..fa829cbe8 100644 --- a/src/test/ref/complex/tetris/test-sprites.asm +++ b/src/test/ref/complex/tetris/test-sprites.asm @@ -1,7 +1,6 @@ .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -40,8 +39,6 @@ .label HARDWARE_IRQ = $fffe // The colors of the C64 .const BLACK = 0 - // Tetris Game for the Commodore 64 - // Memory Layout and Shared Data // Address of the first screen .label PLAYFIELD_SCREEN_1 = $400 // Address of the second screen diff --git a/src/test/ref/complex/tetris/test-sprites.log b/src/test/ref/complex/tetris/test-sprites.log index 0276bf399..a56eea9f5 100644 --- a/src/test/ref/complex/tetris/test-sprites.log +++ b/src/test/ref/complex/tetris/test-sprites.log @@ -2185,12 +2185,12 @@ Allocated zp ZP_BYTE:34 [ sprites_irq::ptr#1 ] Allocated zp ZP_BYTE:35 [ sprites_irq::ptr#2 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -2229,8 +2229,6 @@ INITIAL ASM .label HARDWARE_IRQ = $fffe // The colors of the C64 .const BLACK = 0 - // Tetris Game for the Commodore 64 - // Memory Layout and Shared Data // Address of the first screen .label PLAYFIELD_SCREEN_1 = $400 // Address of the second screen @@ -2271,58 +2269,58 @@ INITIAL ASM .label irq_sprite_ptr_3 = $1c .label irq_raster_next_4 = $a .label sin_idx = 5 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b4 -//SEG3 @4 +//SEG4 @4 b4: -//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG6 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b5 -//SEG6 @5 +//SEG7 @5 b5: -//SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG8 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG8 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 +//SEG9 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG10 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] toSpritePtr1_from_b5: jmp toSpritePtr1 -//SEG10 toSpritePtr1 +//SEG11 toSpritePtr1 toSpritePtr1: jmp b10 -//SEG11 @10 +//SEG12 @10 b10: -//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 +//SEG13 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG14 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt jmp b7 -//SEG14 @7 +//SEG15 @7 b7: -//SEG15 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} -//SEG16 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} -//SEG17 [10] phi from @7 to @9 [phi:@7->@9] +//SEG16 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} +//SEG17 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} +//SEG18 [10] phi from @7 to @9 [phi:@7->@9] b9_from_b7: jmp b9 -//SEG18 @9 +//SEG19 @9 b9: -//SEG19 [11] call main -//SEG20 [13] phi from @9 to main [phi:@9->main] +//SEG20 [11] call main +//SEG21 [13] phi from @9 to main [phi:@9->main] main_from_b9: jsr main -//SEG21 [12] phi from @9 to @end [phi:@9->@end] +//SEG22 [12] phi from @9 to @end [phi:@9->@end] bend_from_b9: jmp bend -//SEG22 @end +//SEG23 @end bend: -//SEG23 main +//SEG24 main main: { .const toSpritePtr2_return = SIN_SPRITE>>6 .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN_1)>>6 @@ -2333,308 +2331,308 @@ main: { .label ypos = 4 .label s = 2 jmp vicSelectGfxBank1 - //SEG24 main::vicSelectGfxBank1 + //SEG25 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG25 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG26 [14] *((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 - //SEG26 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG27 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG27 main::vicSelectGfxBank1_toDd001 + //SEG28 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG28 main::vicSelectGfxBank1_@1 + //SEG29 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG29 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG30 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG30 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG31 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG31 main::toD0181 + //SEG32 main::toD0181 toD0181: jmp b4 - //SEG32 main::@4 + //SEG33 main::@4 b4: - //SEG33 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG34 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG34 [19] call sprites_init + //SEG35 [19] call sprites_init jsr sprites_init jmp b6 - //SEG35 main::@6 + //SEG36 main::@6 b6: - //SEG36 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG37 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG37 [21] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG38 [21] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG38 [21] phi (byte) main::ypos#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 + //SEG39 [21] phi (byte) main::ypos#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 lda #$32 sta ypos - //SEG39 [21] phi (byte) main::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24 [phi:main::@6->main::@1#1] -- vbuz1=vbuc1 + //SEG40 [21] phi (byte) main::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24 [phi:main::@6->main::@1#1] -- vbuz1=vbuc1 lda #$18 sta xpos - //SEG40 [21] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@6->main::@1#2] -- vbuz1=vbuc1 + //SEG41 [21] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@6->main::@1#2] -- vbuz1=vbuc1 lda #4 sta s jmp b1 - //SEG41 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG42 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG42 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG43 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@5->main::@1#1] -- register_copy - //SEG44 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@5->main::@1#2] -- register_copy + //SEG43 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG44 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG45 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@5->main::@1#2] -- register_copy jmp b1 - //SEG45 main::@1 + //SEG46 main::@1 b1: - //SEG46 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG47 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta s2 - //SEG47 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG48 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda xpos ldy s2 sta SPRITES_XPOS,y - //SEG48 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG49 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda ypos ldy s2 sta SPRITES_YPOS,y - //SEG49 [25] (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::s#2 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_minus_vbuc1 + //SEG50 [25] (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::s#2 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_minus_vbuc1 lda s sec sbc #3 sta _4 - //SEG50 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte/signed word/word/dword/signed dword~) main::$4 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG51 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte/signed word/word/dword/signed dword~) main::$4 -- pbuc1_derefidx_vbuz1=vbuz2 lda _4 ldy s sta SPRITES_COLS,y - //SEG51 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] + //SEG52 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] toSpritePtr2_from_b1: jmp toSpritePtr2 - //SEG52 main::toSpritePtr2 + //SEG53 main::toSpritePtr2 toSpritePtr2: jmp b5 - //SEG53 main::@5 + //SEG54 main::@5 b5: - //SEG54 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG55 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy s lda #toSpritePtr2_return sta PLAYFIELD_SPRITE_PTRS_1,y - //SEG55 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG56 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc ypos sta ypos - //SEG57 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1 + //SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG58 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG59 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda s cmp #8 bne b1_from_b5 - //SEG59 [33] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG60 [33] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: jmp b2 - //SEG60 main::@2 + //SEG61 main::@2 b2: - //SEG61 [34] call sprites_irq_init + //SEG62 [34] call sprites_irq_init jsr sprites_irq_init - //SEG62 [35] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG63 [35] phi from main::@2 to main::@7 [phi:main::@2->main::@7] b7_from_b2: jmp b7 - //SEG63 main::@7 + //SEG64 main::@7 b7: - //SEG64 [36] call loop - //SEG65 [38] phi from main::@7 to loop [phi:main::@7->loop] + //SEG65 [36] call loop + //SEG66 [38] phi from main::@7 to loop [phi:main::@7->loop] loop_from_b7: jsr loop jmp breturn - //SEG66 main::@return + //SEG67 main::@return breturn: - //SEG67 [37] return + //SEG68 [37] return rts } -//SEG68 loop +//SEG69 loop loop: { .label _1 = $12 .label idx = 7 .label s = 6 - //SEG69 [39] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG70 [39] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: - //SEG70 [39] phi (byte) sin_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG71 [39] phi (byte) sin_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx jmp b1 - //SEG71 loop::@1 + //SEG72 loop::@1 b1: jmp b4 - //SEG72 loop::@4 + //SEG73 loop::@4 b4: - //SEG73 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG74 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b8 - //SEG74 loop::@8 + //SEG75 loop::@8 b8: - //SEG75 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2 + //SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2 lda sin_idx sta idx - //SEG76 [42] phi from loop::@8 to loop::@5 [phi:loop::@8->loop::@5] + //SEG77 [42] phi from loop::@8 to loop::@5 [phi:loop::@8->loop::@5] b5_from_b8: - //SEG77 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@8->loop::@5#0] -- register_copy - //SEG78 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuz1=vbuc1 + //SEG78 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@8->loop::@5#0] -- register_copy + //SEG79 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuz1=vbuc1 lda #4 sta s jmp b5 - //SEG79 [42] phi from loop::@5 to loop::@5 [phi:loop::@5->loop::@5] + //SEG80 [42] phi from loop::@5 to loop::@5 [phi:loop::@5->loop::@5] b5_from_b5: - //SEG80 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@5->loop::@5#0] -- register_copy - //SEG81 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@5->loop::@5#1] -- register_copy + //SEG81 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@5->loop::@5#0] -- register_copy + //SEG82 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@5->loop::@5#1] -- register_copy jmp b5 - //SEG82 loop::@5 + //SEG83 loop::@5 b5: - //SEG83 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta _1 - //SEG84 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy idx lda SIN,y ldy _1 sta SPRITES_YPOS,y - //SEG85 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 + //SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 lda #$a clc adc idx sta idx - //SEG86 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1 + //SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG87 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG88 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuz1_neq_vbuc1_then_la1 lda s cmp #8 bne b5_from_b5 jmp b9 - //SEG88 loop::@9 + //SEG89 loop::@9 b9: - //SEG89 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 + //SEG90 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 inc sin_idx - //SEG90 [39] phi from loop::@9 to loop::@1 [phi:loop::@9->loop::@1] + //SEG91 [39] phi from loop::@9 to loop::@1 [phi:loop::@9->loop::@1] b1_from_b9: - //SEG91 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@9->loop::@1#0] -- register_copy + //SEG92 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@9->loop::@1#0] -- register_copy jmp b1 } -//SEG92 sprites_irq_init +//SEG93 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG93 asm { sei } + //SEG94 asm { sei } sei - //SEG94 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG95 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG95 asm { ldaCIA1_INTERRUPT } + //SEG96 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG96 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG97 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG97 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG98 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG98 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG99 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG99 [55] *((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 + //SEG100 [55] *((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 - //SEG100 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG101 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG102 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG102 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG103 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG103 asm { cli } + //SEG104 asm { cli } cli jmp breturn - //SEG104 sprites_irq_init::@return + //SEG105 sprites_irq_init::@return breturn: - //SEG105 [60] return + //SEG106 [60] return rts } -//SEG106 sprites_init +//SEG107 sprites_init // Setup the sprites sprites_init: { .label s2 = $13 .label xpos = 9 .label s = 8 - //SEG107 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG108 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG108 [62] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG109 [62] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG109 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG110 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG110 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG111 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG111 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG112 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG112 [65] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG113 [65] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG113 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 + //SEG114 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 lda #0 sta s jmp b1 - //SEG114 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG115 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG115 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG116 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG116 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG117 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG117 sprites_init::@1 + //SEG118 sprites_init::@1 b1: - //SEG118 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta s2 - //SEG119 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda xpos ldy s2 sta SPRITES_XPOS,y - //SEG120 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy s lda #BLACK sta SPRITES_COLS,y - //SEG121 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG122 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + //SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG123 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG124 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda s cmp #4 bne b1_from_b1 jmp breturn - //SEG124 sprites_init::@return + //SEG125 sprites_init::@return breturn: - //SEG125 [72] return + //SEG126 [72] return rts } -//SEG126 sprites_irq +//SEG127 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers @@ -2648,128 +2646,128 @@ sprites_irq: { .label ptr_2 = $23 .label ptr_3 = $18 .label ptr_4 = $19 - //SEG127 entry interrupt(HARDWARE_CLOBBER) + //SEG128 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG128 asm { cld } + //SEG129 asm { cld } cld - //SEG129 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG130 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 lda irq_sprite_ypos sta ypos - //SEG130 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG131 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG131 [76] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG132 [77] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG133 [78] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG134 [78] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 - //SEG134 [79] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG135 [79] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy irq_raster_next iny sty _0 - //SEG135 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuz2 + //SEG136 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuz2 lda _0 sta raster_sprite_gfx_modify jmp b1 - //SEG136 sprites_irq::@1 + //SEG137 sprites_irq::@1 b1: - //SEG137 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG138 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b1 jmp b8 - //SEG138 sprites_irq::@8 + //SEG139 sprites_irq::@8 b8: - //SEG139 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + //SEG140 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG140 [83] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG141 [83] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 jmp b9 - //SEG141 sprites_irq::@9 + //SEG142 sprites_irq::@9 b9: - //SEG142 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG143 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG143 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG144 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_3 - //SEG144 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG145 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG146 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG146 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + //SEG147 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 ldy ptr_3 iny sty ptr_4 - //SEG147 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + //SEG148 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b3 - //SEG148 sprites_irq::@3 + //SEG149 sprites_irq::@3 b3: - //SEG149 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + //SEG150 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 ldy irq_cnt iny sty irq_cnt_1 - //SEG150 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG151 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #9 beq b4 jmp b11 - //SEG151 sprites_irq::@11 + //SEG152 sprites_irq::@11 b11: - //SEG152 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG153 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #$a beq b5 jmp b12 - //SEG153 sprites_irq::@12 + //SEG154 sprites_irq::@12 b12: - //SEG154 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz2_plus_vbuc1 + //SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz2_plus_vbuc1 lda #$14 clc adc irq_raster_next sta irq_raster_next_3 - //SEG155 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG156 [94] (byte) irq_sprite_ypos#3 ← (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_3 - //SEG156 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr_3 - //SEG157 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + //SEG158 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] b7_from_b12: b7_from_b15: b7_from_b5: - //SEG158 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + //SEG159 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy jmp b7 - //SEG159 sprites_irq::@7 + //SEG160 sprites_irq::@7 b7: - //SEG160 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG161 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 lda irq_raster_next_4 sta RASTER - //SEG161 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG162 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG162 sprites_irq::@return + //SEG163 sprites_irq::@return breturn: - //SEG163 [99] return - exit interrupt(HARDWARE_CLOBBER) + //SEG164 [99] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -2777,67 +2775,67 @@ sprites_irq: { regy: ldy #00 rti - //SEG164 sprites_irq::@5 + //SEG165 sprites_irq::@5 b5: - //SEG165 [100] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG166 [100] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt_2 - //SEG166 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG167 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next_2 - //SEG167 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG168 [102] (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 - //SEG168 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG169 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr_2 jmp b7_from_b5 - //SEG169 sprites_irq::@4 + //SEG170 sprites_irq::@4 b4: - //SEG170 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG171 [104] (byte) irq_raster_next#1 ← (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_1 - //SEG171 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG172 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos_1 - //SEG172 [106] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG173 [106] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG173 sprites_irq::toSpritePtr2 + //SEG174 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b15 - //SEG174 sprites_irq::@15 + //SEG175 sprites_irq::@15 b15: - //SEG175 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG176 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr_1 jmp b7_from_b15 - //SEG176 sprites_irq::@2 + //SEG177 sprites_irq::@2 b2: - //SEG177 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG178 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_1 - //SEG178 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG179 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_1 - //SEG179 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG180 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG180 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG181 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG181 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + //SEG182 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 ldy ptr_1 iny sty ptr_2 - //SEG182 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + //SEG183 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 lda ptr_2 sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 @@ -3110,17 +3108,17 @@ Allocated (was zp ZP_BYTE:15) zp ZP_BYTE:8 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ] Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:9 [ loop::$1 ] Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] Interrupt procedure sprites_irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG127 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG163 [99] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG163 [99] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG128 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG164 [99] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG164 [99] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -3159,8 +3157,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label HARDWARE_IRQ = $fffe // The colors of the C64 .const BLACK = 0 - // Tetris Game for the Commodore 64 - // Memory Layout and Shared Data // Address of the first screen .label PLAYFIELD_SCREEN_1 = $400 // Address of the second screen @@ -3189,58 +3185,58 @@ ASSEMBLER BEFORE OPTIMIZATION .label irq_sprite_ptr = 7 .label irq_cnt = 8 .label sin_idx = 2 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b4 -//SEG3 @4 +//SEG4 @4 b4: -//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG6 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b5 -//SEG6 @5 +//SEG7 @5 b5: -//SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG8 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG8 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 +//SEG9 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG10 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] toSpritePtr1_from_b5: jmp toSpritePtr1 -//SEG10 toSpritePtr1 +//SEG11 toSpritePtr1 toSpritePtr1: jmp b10 -//SEG11 @10 +//SEG12 @10 b10: -//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 +//SEG13 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG14 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt jmp b7 -//SEG14 @7 +//SEG15 @7 b7: -//SEG15 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} -//SEG16 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} -//SEG17 [10] phi from @7 to @9 [phi:@7->@9] +//SEG16 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} +//SEG17 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} +//SEG18 [10] phi from @7 to @9 [phi:@7->@9] b9_from_b7: jmp b9 -//SEG18 @9 +//SEG19 @9 b9: -//SEG19 [11] call main -//SEG20 [13] phi from @9 to main [phi:@9->main] +//SEG20 [11] call main +//SEG21 [13] phi from @9 to main [phi:@9->main] main_from_b9: jsr main -//SEG21 [12] phi from @9 to @end [phi:@9->@end] +//SEG22 [12] phi from @9 to @end [phi:@9->@end] bend_from_b9: jmp bend -//SEG22 @end +//SEG23 @end bend: -//SEG23 main +//SEG24 main main: { .const toSpritePtr2_return = SIN_SPRITE>>6 .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN_1)>>6 @@ -3248,465 +3244,465 @@ main: { .label xpos = 2 .label ypos = 3 jmp vicSelectGfxBank1 - //SEG24 main::vicSelectGfxBank1 + //SEG25 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG25 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG26 [14] *((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 - //SEG26 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG27 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG27 main::vicSelectGfxBank1_toDd001 + //SEG28 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG28 main::vicSelectGfxBank1_@1 + //SEG29 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG29 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG30 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG30 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG31 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG31 main::toD0181 + //SEG32 main::toD0181 toD0181: jmp b4 - //SEG32 main::@4 + //SEG33 main::@4 b4: - //SEG33 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG34 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG34 [19] call sprites_init + //SEG35 [19] call sprites_init jsr sprites_init jmp b6 - //SEG35 main::@6 + //SEG36 main::@6 b6: - //SEG36 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG37 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG37 [21] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG38 [21] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG38 [21] phi (byte) main::ypos#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 + //SEG39 [21] phi (byte) main::ypos#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 lda #$32 sta ypos - //SEG39 [21] phi (byte) main::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24 [phi:main::@6->main::@1#1] -- vbuz1=vbuc1 + //SEG40 [21] phi (byte) main::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24 [phi:main::@6->main::@1#1] -- vbuz1=vbuc1 lda #$18 sta xpos - //SEG40 [21] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@6->main::@1#2] -- vbuyy=vbuc1 + //SEG41 [21] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@6->main::@1#2] -- vbuyy=vbuc1 ldy #4 jmp b1 - //SEG41 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG42 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG42 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG43 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@5->main::@1#1] -- register_copy - //SEG44 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@5->main::@1#2] -- register_copy + //SEG43 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG44 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG45 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@5->main::@1#2] -- register_copy jmp b1 - //SEG45 main::@1 + //SEG46 main::@1 b1: - //SEG46 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG47 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG47 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG48 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG48 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG49 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda ypos sta SPRITES_YPOS,x - //SEG49 [25] (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::s#2 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_minus_vbuc1 + //SEG50 [25] (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::s#2 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_minus_vbuc1 tya sec sbc #3 - //SEG50 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte/signed word/word/dword/signed dword~) main::$4 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG51 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte/signed word/word/dword/signed dword~) main::$4 -- pbuc1_derefidx_vbuyy=vbuaa sta SPRITES_COLS,y - //SEG51 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] + //SEG52 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] toSpritePtr2_from_b1: jmp toSpritePtr2 - //SEG52 main::toSpritePtr2 + //SEG53 main::toSpritePtr2 toSpritePtr2: jmp b5 - //SEG53 main::@5 + //SEG54 main::@5 b5: - //SEG54 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG55 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #toSpritePtr2_return sta PLAYFIELD_SPRITE_PTRS_1,y - //SEG55 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG56 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc ypos sta ypos - //SEG57 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy + //SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy iny - //SEG58 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG59 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b1_from_b5 - //SEG59 [33] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG60 [33] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: jmp b2 - //SEG60 main::@2 + //SEG61 main::@2 b2: - //SEG61 [34] call sprites_irq_init + //SEG62 [34] call sprites_irq_init jsr sprites_irq_init - //SEG62 [35] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG63 [35] phi from main::@2 to main::@7 [phi:main::@2->main::@7] b7_from_b2: jmp b7 - //SEG63 main::@7 + //SEG64 main::@7 b7: - //SEG64 [36] call loop - //SEG65 [38] phi from main::@7 to loop [phi:main::@7->loop] + //SEG65 [36] call loop + //SEG66 [38] phi from main::@7 to loop [phi:main::@7->loop] loop_from_b7: jsr loop jmp breturn - //SEG66 main::@return + //SEG67 main::@return breturn: - //SEG67 [37] return + //SEG68 [37] return rts } -//SEG68 loop +//SEG69 loop loop: { .label _1 = 9 .label idx = 3 - //SEG69 [39] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG70 [39] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: - //SEG70 [39] phi (byte) sin_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG71 [39] phi (byte) sin_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx jmp b1 - //SEG71 loop::@1 + //SEG72 loop::@1 b1: jmp b4 - //SEG72 loop::@4 + //SEG73 loop::@4 b4: - //SEG73 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG74 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b8 - //SEG74 loop::@8 + //SEG75 loop::@8 b8: - //SEG75 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2 + //SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2 lda sin_idx sta idx - //SEG76 [42] phi from loop::@8 to loop::@5 [phi:loop::@8->loop::@5] + //SEG77 [42] phi from loop::@8 to loop::@5 [phi:loop::@8->loop::@5] b5_from_b8: - //SEG77 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@8->loop::@5#0] -- register_copy - //SEG78 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuxx=vbuc1 + //SEG78 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@8->loop::@5#0] -- register_copy + //SEG79 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuxx=vbuc1 ldx #4 jmp b5 - //SEG79 [42] phi from loop::@5 to loop::@5 [phi:loop::@5->loop::@5] + //SEG80 [42] phi from loop::@5 to loop::@5 [phi:loop::@5->loop::@5] b5_from_b5: - //SEG80 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@5->loop::@5#0] -- register_copy - //SEG81 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@5->loop::@5#1] -- register_copy + //SEG81 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@5->loop::@5#0] -- register_copy + //SEG82 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@5->loop::@5#1] -- register_copy jmp b5 - //SEG82 loop::@5 + //SEG83 loop::@5 b5: - //SEG83 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _1 - //SEG84 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy idx lda SIN,y ldy _1 sta SPRITES_YPOS,y - //SEG85 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 + //SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 lda #$a clc adc idx sta idx - //SEG86 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuxx=_inc_vbuxx + //SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuxx=_inc_vbuxx inx - //SEG87 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG88 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b5_from_b5 jmp b9 - //SEG88 loop::@9 + //SEG89 loop::@9 b9: - //SEG89 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 + //SEG90 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 inc sin_idx - //SEG90 [39] phi from loop::@9 to loop::@1 [phi:loop::@9->loop::@1] + //SEG91 [39] phi from loop::@9 to loop::@1 [phi:loop::@9->loop::@1] b1_from_b9: - //SEG91 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@9->loop::@1#0] -- register_copy + //SEG92 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@9->loop::@1#0] -- register_copy jmp b1 } -//SEG92 sprites_irq_init +//SEG93 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG93 asm { sei } + //SEG94 asm { sei } sei - //SEG94 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG95 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG95 asm { ldaCIA1_INTERRUPT } + //SEG96 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG96 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG97 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG97 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG98 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG98 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG99 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG99 [55] *((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 + //SEG100 [55] *((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 - //SEG100 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG101 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG102 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG102 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG103 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG103 asm { cli } + //SEG104 asm { cli } cli jmp breturn - //SEG104 sprites_irq_init::@return + //SEG105 sprites_irq_init::@return breturn: - //SEG105 [60] return + //SEG106 [60] return rts } -//SEG106 sprites_init +//SEG107 sprites_init // Setup the sprites sprites_init: { .label xpos = 2 - //SEG107 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG108 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG108 [62] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG109 [62] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG109 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG110 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG110 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG111 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG111 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG112 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG112 [65] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG113 [65] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG113 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 + //SEG114 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG114 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG115 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG115 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG116 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG116 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG117 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG117 sprites_init::@1 + //SEG118 sprites_init::@1 b1: - //SEG118 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG119 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda xpos sta SPRITES_XPOS,y - //SEG120 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG121 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG122 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG123 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG124 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG124 sprites_init::@return + //SEG125 sprites_init::@return breturn: - //SEG125 [72] return + //SEG126 [72] return rts } -//SEG126 sprites_irq +//SEG127 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 .label raster_sprite_gfx_modify = $a - //SEG127 entry interrupt(HARDWARE_CLOBBER) + //SEG128 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG128 asm { cld } + //SEG129 asm { cld } cld - //SEG129 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG130 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG130 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG131 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG131 [76] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG132 [77] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG133 [78] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG134 [78] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG134 [79] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG135 [79] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG135 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG136 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx stx raster_sprite_gfx_modify jmp b1 - //SEG136 sprites_irq::@1 + //SEG137 sprites_irq::@1 b1: - //SEG137 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG138 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b1 jmp b8 - //SEG138 sprites_irq::@8 + //SEG139 sprites_irq::@8 b8: - //SEG139 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG140 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG140 [83] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG141 [83] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 jmp b9 - //SEG141 sprites_irq::@9 + //SEG142 sprites_irq::@9 b9: - //SEG142 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG143 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG143 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG144 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG144 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG145 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG146 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG146 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG147 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG147 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG148 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b3 - //SEG148 sprites_irq::@3 + //SEG149 sprites_irq::@3 b3: - //SEG149 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG150 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG150 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG151 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #9 beq b4 jmp b11 - //SEG151 sprites_irq::@11 + //SEG152 sprites_irq::@11 b11: - //SEG152 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG153 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a beq b5 jmp b12 - //SEG153 sprites_irq::@12 + //SEG154 sprites_irq::@12 b12: - //SEG154 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 + //SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 lda #$14 clc adc irq_raster_next sta irq_raster_next - //SEG155 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG156 [94] (byte) irq_sprite_ypos#3 ← (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 - //SEG156 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG157 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + //SEG158 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] b7_from_b12: b7_from_b15: b7_from_b5: - //SEG158 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + //SEG159 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy jmp b7 - //SEG159 sprites_irq::@7 + //SEG160 sprites_irq::@7 b7: - //SEG160 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG161 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 lda irq_raster_next sta RASTER - //SEG161 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG162 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG162 sprites_irq::@return + //SEG163 sprites_irq::@return breturn: - //SEG163 [99] return - exit interrupt(HARDWARE_CLOBBER) + //SEG164 [99] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG164 sprites_irq::@5 + //SEG165 sprites_irq::@5 b5: - //SEG165 [100] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG166 [100] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG166 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG167 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG167 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG168 [102] (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 - //SEG168 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG169 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr jmp b7_from_b5 - //SEG169 sprites_irq::@4 + //SEG170 sprites_irq::@4 b4: - //SEG170 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG171 [104] (byte) irq_raster_next#1 ← (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 - //SEG171 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG172 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG172 [106] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG173 [106] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG173 sprites_irq::toSpritePtr2 + //SEG174 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b15 - //SEG174 sprites_irq::@15 + //SEG175 sprites_irq::@15 b15: - //SEG175 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG176 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b7_from_b15 - //SEG176 sprites_irq::@2 + //SEG177 sprites_irq::@2 b2: - //SEG177 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG178 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG178 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG179 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG179 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG180 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG180 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG181 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG181 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + //SEG182 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG182 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG183 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } @@ -4165,12 +4161,12 @@ reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER Score: 7709 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -4209,8 +4205,6 @@ Score: 7709 .label HARDWARE_IRQ = $fffe // The colors of the C64 .const BLACK = 0 - // Tetris Game for the Commodore 64 - // Memory Layout and Shared Data // Address of the first screen .label PLAYFIELD_SCREEN_1 = $400 // Address of the second screen @@ -4239,429 +4233,429 @@ Score: 7709 .label irq_sprite_ptr = 7 .label irq_cnt = 8 .label sin_idx = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 @4 -//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 @4 +//SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} -//SEG6 @5 -//SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG6 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG7 @5 +//SEG8 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG8 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 +//SEG9 [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG9 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] -//SEG10 toSpritePtr1 -//SEG11 @10 -//SEG12 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 +//SEG10 [5] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG11 toSpritePtr1 +//SEG12 @10 +//SEG13 [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG13 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG14 [7] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG14 @7 -//SEG15 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} -//SEG16 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} -//SEG17 [10] phi from @7 to @9 [phi:@7->@9] -//SEG18 @9 -//SEG19 [11] call main -//SEG20 [13] phi from @9 to main [phi:@9->main] +//SEG15 @7 +//SEG16 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} +//SEG17 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} +//SEG18 [10] phi from @7 to @9 [phi:@7->@9] +//SEG19 @9 +//SEG20 [11] call main +//SEG21 [13] phi from @9 to main [phi:@9->main] jsr main -//SEG21 [12] phi from @9 to @end [phi:@9->@end] -//SEG22 @end -//SEG23 main +//SEG22 [12] phi from @9 to @end [phi:@9->@end] +//SEG23 @end +//SEG24 main main: { .const toSpritePtr2_return = SIN_SPRITE>>6 .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN_1)>>6 .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .label xpos = 2 .label ypos = 3 - //SEG24 main::vicSelectGfxBank1 - //SEG25 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG25 main::vicSelectGfxBank1 + //SEG26 [14] *((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 - //SEG26 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] - //SEG27 main::vicSelectGfxBank1_toDd001 - //SEG28 main::vicSelectGfxBank1_@1 - //SEG29 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG27 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG28 main::vicSelectGfxBank1_toDd001 + //SEG29 main::vicSelectGfxBank1_@1 + //SEG30 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG30 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] - //SEG31 main::toD0181 - //SEG32 main::@4 - //SEG33 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG31 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG32 main::toD0181 + //SEG33 main::@4 + //SEG34 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG34 [19] call sprites_init + //SEG35 [19] call sprites_init jsr sprites_init - //SEG35 main::@6 - //SEG36 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG36 main::@6 + //SEG37 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG37 [21] phi from main::@6 to main::@1 [phi:main::@6->main::@1] - //SEG38 [21] phi (byte) main::ypos#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 + //SEG38 [21] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG39 [21] phi (byte) main::ypos#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 lda #$32 sta ypos - //SEG39 [21] phi (byte) main::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24 [phi:main::@6->main::@1#1] -- vbuz1=vbuc1 + //SEG40 [21] phi (byte) main::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24 [phi:main::@6->main::@1#1] -- vbuz1=vbuc1 lda #$18 sta xpos - //SEG40 [21] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@6->main::@1#2] -- vbuyy=vbuc1 + //SEG41 [21] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@6->main::@1#2] -- vbuyy=vbuc1 ldy #4 - //SEG41 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG42 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG43 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@5->main::@1#1] -- register_copy - //SEG44 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@5->main::@1#2] -- register_copy - //SEG45 main::@1 + //SEG42 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG43 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG44 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG45 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@5->main::@1#2] -- register_copy + //SEG46 main::@1 b1: - //SEG46 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG47 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG47 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG48 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG48 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG49 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda ypos sta SPRITES_YPOS,x - //SEG49 [25] (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::s#2 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_minus_vbuc1 + //SEG50 [25] (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::s#2 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_minus_vbuc1 tya sec sbc #3 - //SEG50 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte/signed word/word/dword/signed dword~) main::$4 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG51 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte/signed word/word/dword/signed dword~) main::$4 -- pbuc1_derefidx_vbuyy=vbuaa sta SPRITES_COLS,y - //SEG51 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] - //SEG52 main::toSpritePtr2 - //SEG53 main::@5 - //SEG54 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG52 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] + //SEG53 main::toSpritePtr2 + //SEG54 main::@5 + //SEG55 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #toSpritePtr2_return sta PLAYFIELD_SPRITE_PTRS_1,y - //SEG55 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG56 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc ypos sta ypos - //SEG57 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy + //SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy iny - //SEG58 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG59 [32] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b1 - //SEG59 [33] phi from main::@5 to main::@2 [phi:main::@5->main::@2] - //SEG60 main::@2 - //SEG61 [34] call sprites_irq_init + //SEG60 [33] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG61 main::@2 + //SEG62 [34] call sprites_irq_init jsr sprites_irq_init - //SEG62 [35] phi from main::@2 to main::@7 [phi:main::@2->main::@7] - //SEG63 main::@7 - //SEG64 [36] call loop - //SEG65 [38] phi from main::@7 to loop [phi:main::@7->loop] + //SEG63 [35] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG64 main::@7 + //SEG65 [36] call loop + //SEG66 [38] phi from main::@7 to loop [phi:main::@7->loop] jsr loop - //SEG66 main::@return - //SEG67 [37] return + //SEG67 main::@return + //SEG68 [37] return rts } -//SEG68 loop +//SEG69 loop loop: { .label _1 = 9 .label idx = 3 - //SEG69 [39] phi from loop to loop::@1 [phi:loop->loop::@1] - //SEG70 [39] phi (byte) sin_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG70 [39] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG71 [39] phi (byte) sin_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx - //SEG71 loop::@1 - //SEG72 loop::@4 + //SEG72 loop::@1 + //SEG73 loop::@4 b4: - //SEG73 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG74 [40] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG74 loop::@8 - //SEG75 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2 + //SEG75 loop::@8 + //SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2 lda sin_idx sta idx - //SEG76 [42] phi from loop::@8 to loop::@5 [phi:loop::@8->loop::@5] - //SEG77 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@8->loop::@5#0] -- register_copy - //SEG78 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuxx=vbuc1 + //SEG77 [42] phi from loop::@8 to loop::@5 [phi:loop::@8->loop::@5] + //SEG78 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@8->loop::@5#0] -- register_copy + //SEG79 [42] phi (byte) loop::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:loop::@8->loop::@5#1] -- vbuxx=vbuc1 ldx #4 - //SEG79 [42] phi from loop::@5 to loop::@5 [phi:loop::@5->loop::@5] - //SEG80 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@5->loop::@5#0] -- register_copy - //SEG81 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@5->loop::@5#1] -- register_copy - //SEG82 loop::@5 + //SEG80 [42] phi from loop::@5 to loop::@5 [phi:loop::@5->loop::@5] + //SEG81 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@5->loop::@5#0] -- register_copy + //SEG82 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@5->loop::@5#1] -- register_copy + //SEG83 loop::@5 b5: - //SEG83 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _1 - //SEG84 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy idx lda SIN,y ldy _1 sta SPRITES_YPOS,y - //SEG85 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 + //SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 lda #$a clc adc idx sta idx - //SEG86 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuxx=_inc_vbuxx + //SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuxx=_inc_vbuxx inx - //SEG87 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG88 [47] if((byte) loop::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto loop::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b5 - //SEG88 loop::@9 - //SEG89 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 + //SEG89 loop::@9 + //SEG90 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 inc sin_idx - //SEG90 [39] phi from loop::@9 to loop::@1 [phi:loop::@9->loop::@1] - //SEG91 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@9->loop::@1#0] -- register_copy + //SEG91 [39] phi from loop::@9 to loop::@1 [phi:loop::@9->loop::@1] + //SEG92 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@9->loop::@1#0] -- register_copy jmp b4 } -//SEG92 sprites_irq_init +//SEG93 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG93 asm { sei } + //SEG94 asm { sei } sei - //SEG94 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG95 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG95 asm { ldaCIA1_INTERRUPT } + //SEG96 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG96 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG97 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG97 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG98 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG98 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG99 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG99 [55] *((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 + //SEG100 [55] *((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 - //SEG100 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG101 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG102 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG102 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG103 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG103 asm { cli } + //SEG104 asm { cli } cli - //SEG104 sprites_irq_init::@return - //SEG105 [60] return + //SEG105 sprites_irq_init::@return + //SEG106 [60] return rts } -//SEG106 sprites_init +//SEG107 sprites_init // Setup the sprites sprites_init: { .label xpos = 2 - //SEG107 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG108 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG108 [62] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG109 [62] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG109 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG110 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG110 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG111 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //SEG111 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] - //SEG112 [65] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG112 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG113 [65] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG113 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 + //SEG114 [65] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG114 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG115 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG116 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy - //SEG117 sprites_init::@1 + //SEG115 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG116 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG117 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG118 sprites_init::@1 b1: - //SEG118 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG119 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda xpos sta SPRITES_XPOS,y - //SEG120 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG121 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG122 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG123 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG124 [71] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG124 sprites_init::@return - //SEG125 [72] return + //SEG125 sprites_init::@return + //SEG126 [72] return rts } -//SEG126 sprites_irq +//SEG127 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 .label raster_sprite_gfx_modify = $a - //SEG127 entry interrupt(HARDWARE_CLOBBER) + //SEG128 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG128 asm { cld } + //SEG129 asm { cld } cld - //SEG129 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG130 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG130 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG131 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG131 [76] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG132 [77] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG133 [78] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG134 [78] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG134 [79] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG135 [79] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG135 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG136 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx stx raster_sprite_gfx_modify - //SEG136 sprites_irq::@1 + //SEG137 sprites_irq::@1 b1: - //SEG137 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG138 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b1 - //SEG138 sprites_irq::@8 - //SEG139 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG139 sprites_irq::@8 + //SEG140 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG140 [83] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG141 [83] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 - //SEG141 sprites_irq::@9 - //SEG142 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG142 sprites_irq::@9 + //SEG143 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG143 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG144 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG144 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG145 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG146 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG146 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG147 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG147 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG148 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 - //SEG148 sprites_irq::@3 + //SEG149 sprites_irq::@3 b3: - //SEG149 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG150 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG150 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG151 [91] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #9 beq b4 - //SEG151 sprites_irq::@11 - //SEG152 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG152 sprites_irq::@11 + //SEG153 [92] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 cmp #$a beq b5 - //SEG153 sprites_irq::@12 - //SEG154 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 + //SEG154 sprites_irq::@12 + //SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 lda #$14 clc adc irq_raster_next sta irq_raster_next - //SEG155 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG156 [94] (byte) irq_sprite_ypos#3 ← (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 - //SEG156 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG157 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] - //SEG158 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy - //SEG159 sprites_irq::@7 + //SEG158 [96] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + //SEG159 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + //SEG160 sprites_irq::@7 b7: - //SEG160 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG161 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 lda irq_raster_next sta RASTER - //SEG161 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG162 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG162 sprites_irq::@return - //SEG163 [99] return - exit interrupt(HARDWARE_CLOBBER) + //SEG163 sprites_irq::@return + //SEG164 [99] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG164 sprites_irq::@5 + //SEG165 sprites_irq::@5 b5: - //SEG165 [100] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG166 [100] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG166 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG167 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG167 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG168 [102] (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 - //SEG168 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG169 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr jmp b7 - //SEG169 sprites_irq::@4 + //SEG170 sprites_irq::@4 b4: - //SEG170 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG171 [104] (byte) irq_raster_next#1 ← (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 - //SEG171 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG172 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG172 [106] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] - //SEG173 sprites_irq::toSpritePtr2 - //SEG174 sprites_irq::@15 - //SEG175 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG173 [106] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG174 sprites_irq::toSpritePtr2 + //SEG175 sprites_irq::@15 + //SEG176 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b7 - //SEG176 sprites_irq::@2 + //SEG177 sprites_irq::@2 b2: - //SEG177 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG178 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG178 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG179 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG179 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG180 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG180 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG181 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG181 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + //SEG182 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG182 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG183 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } diff --git a/src/test/ref/complex/tetris/tetris.asm b/src/test/ref/complex/tetris/tetris.asm index f5385f663..b4b8b9e24 100644 --- a/src/test/ref/complex/tetris/tetris.asm +++ b/src/test/ref/complex/tetris/tetris.asm @@ -1,7 +1,9 @@ +// Tetris Game for the Commodore 64 +// The tetris game tries to match NES tetris gameplay pretty closely +// Source: https://meatfighter.com/nintendotetrisai/ .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -88,8 +90,6 @@ .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b - // Tetris Game for the Commodore 64 - // Memory Layout and Shared Data // Address of the first screen .label PLAYFIELD_SCREEN_1 = $400 // Address of the second screen @@ -1689,8 +1689,6 @@ sprites_irq: { keyboard_events: .fill 8, 0 // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() keyboard_scan_values: .fill 8, 0 - // Tetris Game for the Commodore 64 - // The tetris pieces // The T-piece .align $40 PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 diff --git a/src/test/ref/complex/tetris/tetris.log b/src/test/ref/complex/tetris/tetris.log index e5ef8d27f..88280bb5b 100644 --- a/src/test/ref/complex/tetris/tetris.log +++ b/src/test/ref/complex/tetris/tetris.log @@ -12805,12 +12805,15 @@ Allocated zp ZP_BYTE:238 [ sprites_irq::ptr#1 ] Allocated zp ZP_BYTE:239 [ sprites_irq::ptr#2 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tetris Game for the Commodore 64 +// The tetris game tries to match NES tetris gameplay pretty closely +// Source: https://meatfighter.com/nintendotetrisai/ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -12897,8 +12900,6 @@ INITIAL ASM .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b - // Tetris Game for the Commodore 64 - // Memory Layout and Shared Data // Address of the first screen .label PLAYFIELD_SCREEN_1 = $400 // Address of the second screen @@ -12999,426 +13000,426 @@ INITIAL ASM .label current_piece_100 = $2b .label current_piece_101 = $2b .label current_piece_102 = $2b -//SEG2 @begin +//SEG3 @begin bbegin: jmp b14 -//SEG3 @14 +//SEG4 @14 b14: -//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} -//SEG6 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} -//SEG7 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} +//SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} +//SEG7 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} +//SEG8 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} jmp b23 -//SEG8 @23 +//SEG9 @23 b23: -//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG10 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b24 -//SEG10 @24 +//SEG11 @24 b24: -//SEG11 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG12 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG12 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 +//SEG13 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG13 [8] phi from @24 to toSpritePtr1 [phi:@24->toSpritePtr1] +//SEG14 [8] phi from @24 to toSpritePtr1 [phi:@24->toSpritePtr1] toSpritePtr1_from_b24: jmp toSpritePtr1 -//SEG14 toSpritePtr1 +//SEG15 toSpritePtr1 toSpritePtr1: jmp b39 -//SEG15 @39 +//SEG16 @39 b39: -//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 +//SEG17 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG17 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG18 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG18 [11] phi from @39 to @38 [phi:@39->@38] +//SEG19 [11] phi from @39 to @38 [phi:@39->@38] b38_from_b39: jmp b38 -//SEG19 @38 +//SEG20 @38 b38: -//SEG20 [12] call main -//SEG21 [14] phi from @38 to main [phi:@38->main] +//SEG21 [12] call main +//SEG22 [14] phi from @38 to main [phi:@38->main] main_from_b38: jsr main -//SEG22 [13] phi from @38 to @end [phi:@38->@end] +//SEG23 [13] phi from @38 to @end [phi:@38->@end] bend_from_b38: jmp bend -//SEG23 @end +//SEG24 @end bend: -//SEG24 main +//SEG25 main main: { .label key_event = $7d .label render = $80 - //SEG25 [15] call sid_rnd_init + //SEG26 [15] call sid_rnd_init jsr sid_rnd_init jmp b25 - //SEG26 main::@25 + //SEG27 main::@25 b25: - //SEG27 asm { sei } + //SEG28 asm { sei } sei - //SEG28 [17] call render_init - //SEG29 [501] phi from main::@25 to render_init [phi:main::@25->render_init] + //SEG29 [17] call render_init + //SEG30 [501] phi from main::@25 to render_init [phi:main::@25->render_init] render_init_from_b25: jsr render_init - //SEG30 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG31 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] b26_from_b25: jmp b26 - //SEG31 main::@26 + //SEG32 main::@26 b26: - //SEG32 [19] call sprites_init + //SEG33 [19] call sprites_init jsr sprites_init - //SEG33 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG34 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] b27_from_b26: jmp b27 - //SEG34 main::@27 + //SEG35 main::@27 b27: - //SEG35 [21] call sprites_irq_init + //SEG36 [21] call sprites_irq_init jsr sprites_irq_init - //SEG36 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] + //SEG37 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] b28_from_b27: jmp b28 - //SEG37 main::@28 + //SEG38 main::@28 b28: - //SEG38 [23] call play_init - //SEG39 [460] phi from main::@28 to play_init [phi:main::@28->play_init] + //SEG39 [23] call play_init + //SEG40 [460] phi from main::@28 to play_init [phi:main::@28->play_init] play_init_from_b28: jsr play_init - //SEG40 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] + //SEG41 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] b29_from_b28: jmp b29 - //SEG41 main::@29 + //SEG42 main::@29 b29: - //SEG42 [25] call play_spawn_current - //SEG43 [285] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] + //SEG43 [25] call play_spawn_current + //SEG44 [285] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] play_spawn_current_from_b29: - //SEG44 [285] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG45 [285] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG45 [285] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG46 [285] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#1] -- vbuz1=vbuc1 lda #0 sta next_piece_idx jsr play_spawn_current - //SEG46 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + //SEG47 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] b30_from_b29: jmp b30 - //SEG47 main::@30 + //SEG48 main::@30 b30: - //SEG48 [27] call play_spawn_current - //SEG49 [285] phi from main::@30 to play_spawn_current [phi:main::@30->play_spawn_current] + //SEG49 [27] call play_spawn_current + //SEG50 [285] phi from main::@30 to play_spawn_current [phi:main::@30->play_spawn_current] play_spawn_current_from_b30: - //SEG50 [285] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@30->play_spawn_current#0] -- register_copy - //SEG51 [285] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@30->play_spawn_current#1] -- register_copy + //SEG51 [285] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@30->play_spawn_current#0] -- register_copy + //SEG52 [285] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@30->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG52 [28] phi from main::@30 to main::@31 [phi:main::@30->main::@31] + //SEG53 [28] phi from main::@30 to main::@31 [phi:main::@30->main::@31] b31_from_b30: jmp b31 - //SEG53 main::@31 + //SEG54 main::@31 b31: - //SEG54 [29] call render_playfield - //SEG55 [150] phi from main::@31 to render_playfield [phi:main::@31->render_playfield] + //SEG55 [29] call render_playfield + //SEG56 [150] phi from main::@31 to render_playfield [phi:main::@31->render_playfield] render_playfield_from_b31: - //SEG56 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_playfield#0] -- vbuz1=vbuc1 + //SEG57 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_playfield#0] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_22 jsr render_playfield jmp b32 - //SEG57 main::@32 + //SEG58 main::@32 b32: - //SEG58 [30] (byte~) current_ypos#108 ← (byte) current_ypos#5 -- vbuz1=vbuz2 + //SEG59 [30] (byte~) current_ypos#108 ← (byte) current_ypos#5 -- vbuz1=vbuz2 lda current_ypos sta current_ypos_108 - //SEG59 [31] (byte~) current_xpos#132 ← (byte) current_xpos#102 -- vbuz1=vbuz2 + //SEG60 [31] (byte~) current_xpos#132 ← (byte) current_xpos#102 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_132 - //SEG60 [32] (byte*~) current_piece_gfx#122 ← (byte*) current_piece_gfx#7 -- pbuz1=pbuz2 + //SEG61 [32] (byte*~) current_piece_gfx#122 ← (byte*) current_piece_gfx#7 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_122 lda current_piece_gfx+1 sta current_piece_gfx_122+1 - //SEG61 [33] (byte~) current_piece_char#110 ← (byte) current_piece_char#4 -- vbuz1=vbuz2 + //SEG62 [33] (byte~) current_piece_char#110 ← (byte) current_piece_char#4 -- vbuz1=vbuz2 lda current_piece_char sta current_piece_char_110 - //SEG62 [34] call render_moving - //SEG63 [129] phi from main::@32 to render_moving [phi:main::@32->render_moving] + //SEG63 [34] call render_moving + //SEG64 [129] phi from main::@32 to render_moving [phi:main::@32->render_moving] render_moving_from_b32: - //SEG64 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#110 [phi:main::@32->render_moving#0] -- register_copy - //SEG65 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#122 [phi:main::@32->render_moving#1] -- register_copy - //SEG66 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#132 [phi:main::@32->render_moving#2] -- register_copy - //SEG67 [129] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@32->render_moving#3] -- vbuz1=vbuc1 + //SEG65 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#110 [phi:main::@32->render_moving#0] -- register_copy + //SEG66 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#122 [phi:main::@32->render_moving#1] -- register_copy + //SEG67 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#132 [phi:main::@32->render_moving#2] -- register_copy + //SEG68 [129] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@32->render_moving#3] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_33 - //SEG68 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#108 [phi:main::@32->render_moving#4] -- register_copy + //SEG69 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#108 [phi:main::@32->render_moving#4] -- register_copy jsr render_moving jmp b33 - //SEG69 main::@33 + //SEG70 main::@33 b33: - //SEG70 [35] (byte~) next_piece_idx#84 ← (byte) play_spawn_current::piece_idx#2 -- vbuz1=vbuz2 + //SEG71 [35] (byte~) next_piece_idx#84 ← (byte) play_spawn_current::piece_idx#2 -- vbuz1=vbuz2 lda play_spawn_current.piece_idx sta next_piece_idx_84 - //SEG71 [36] call render_next - //SEG72 [108] phi from main::@33 to render_next [phi:main::@33->render_next] + //SEG72 [36] call render_next + //SEG73 [108] phi from main::@33 to render_next [phi:main::@33->render_next] render_next_from_b33: - //SEG73 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@33->render_next#0] -- register_copy - //SEG74 [108] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->render_next#1] -- vbuz1=vbuc1 + //SEG74 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@33->render_next#0] -- register_copy + //SEG75 [108] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->render_next#1] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_15 jsr render_next - //SEG75 [37] (byte*~) current_piece#96 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG76 [37] (byte*~) current_piece#96 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._0 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG76 [38] phi from main::@33 to main::@1 [phi:main::@33->main::@1] + //SEG77 [38] phi from main::@33 to main::@1 [phi:main::@33->main::@1] b1_from_b33: - //SEG77 [38] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#0] -- vbuz1=vbuc1 + //SEG78 [38] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG78 [38] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#1] -- vbuz1=vbuc1 + //SEG79 [38] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#1] -- vbuz1=vbuc1 lda #0 sta level - //SEG79 [38] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#2] -- vduz1=vbuc1 + //SEG80 [38] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#2] -- vduz1=vbuc1 lda #0 sta score_bcd lda #0 sta score_bcd+1 sta score_bcd+2 sta score_bcd+3 - //SEG80 [38] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#3] -- vwuz1=vbuc1 + //SEG81 [38] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#3] -- vwuz1=vbuc1 lda #<0 sta lines_bcd lda #>0 sta lines_bcd+1 - //SEG81 [38] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#4] -- vbuz1=vbuc1 + //SEG82 [38] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#4] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG82 [38] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#5] -- vbuz1=vbuc1 + //SEG83 [38] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#5] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG83 [38] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@33->main::@1#6] -- register_copy - //SEG84 [38] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@33->main::@1#7] -- register_copy - //SEG85 [38] phi (byte) current_ypos#10 = (byte) current_ypos#5 [phi:main::@33->main::@1#8] -- register_copy - //SEG86 [38] phi (byte) current_xpos#121 = (byte) current_xpos#102 [phi:main::@33->main::@1#9] -- register_copy - //SEG87 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#7 [phi:main::@33->main::@1#10] -- register_copy - //SEG88 [38] phi (byte) current_orientation#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#11] -- vbuz1=vbuc1 + //SEG84 [38] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@33->main::@1#6] -- register_copy + //SEG85 [38] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@33->main::@1#7] -- register_copy + //SEG86 [38] phi (byte) current_ypos#10 = (byte) current_ypos#5 [phi:main::@33->main::@1#8] -- register_copy + //SEG87 [38] phi (byte) current_xpos#121 = (byte) current_xpos#102 [phi:main::@33->main::@1#9] -- register_copy + //SEG88 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#7 [phi:main::@33->main::@1#10] -- register_copy + //SEG89 [38] phi (byte) current_orientation#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#11] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG89 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#4 [phi:main::@33->main::@1#12] -- register_copy - //SEG90 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#96 [phi:main::@33->main::@1#13] -- register_copy - //SEG91 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@33->main::@1#14] -- register_copy - //SEG92 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->main::@1#15] -- vbuz1=vbuc1 + //SEG90 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#4 [phi:main::@33->main::@1#12] -- register_copy + //SEG91 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#96 [phi:main::@33->main::@1#13] -- register_copy + //SEG92 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@33->main::@1#14] -- register_copy + //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->main::@1#15] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG93 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#16] -- vbuz1=vbuc1 + //SEG94 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#16] -- vbuz1=vbuc1 lda #0 sta render_screen_show jmp b1 - //SEG94 [38] phi from main::@11 to main::@1 [phi:main::@11->main::@1] + //SEG95 [38] phi from main::@11 to main::@1 [phi:main::@11->main::@1] b1_from_b11: - //SEG95 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@11->main::@1#0] -- register_copy - //SEG96 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@11->main::@1#1] -- register_copy - //SEG97 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@11->main::@1#2] -- register_copy - //SEG98 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@11->main::@1#3] -- register_copy - //SEG99 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@11->main::@1#4] -- register_copy - //SEG100 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@11->main::@1#5] -- register_copy - //SEG101 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@11->main::@1#6] -- register_copy - //SEG102 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@11->main::@1#7] -- register_copy - //SEG103 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@11->main::@1#8] -- register_copy - //SEG104 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@11->main::@1#9] -- register_copy - //SEG105 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@11->main::@1#10] -- register_copy - //SEG106 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@11->main::@1#11] -- register_copy - //SEG107 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@11->main::@1#12] -- register_copy - //SEG108 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@11->main::@1#13] -- register_copy - //SEG109 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@11->main::@1#14] -- register_copy + //SEG96 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@11->main::@1#0] -- register_copy + //SEG97 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@11->main::@1#1] -- register_copy + //SEG98 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@11->main::@1#2] -- register_copy + //SEG99 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@11->main::@1#3] -- register_copy + //SEG100 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@11->main::@1#4] -- register_copy + //SEG101 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@11->main::@1#5] -- register_copy + //SEG102 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@11->main::@1#6] -- register_copy + //SEG103 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@11->main::@1#7] -- register_copy + //SEG104 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@11->main::@1#8] -- register_copy + //SEG105 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@11->main::@1#9] -- register_copy + //SEG106 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@11->main::@1#10] -- register_copy + //SEG107 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@11->main::@1#11] -- register_copy + //SEG108 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@11->main::@1#12] -- register_copy + //SEG109 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@11->main::@1#13] -- register_copy + //SEG110 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@11->main::@1#14] -- register_copy jmp b1 - //SEG110 main::@1 + //SEG111 main::@1 b1: jmp b4 - //SEG111 main::@4 + //SEG112 main::@4 b4: - //SEG112 [39] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG113 [39] 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 - //SEG113 [40] phi from main::@4 to main::@6 [phi:main::@4->main::@6] + //SEG114 [40] phi from main::@4 to main::@6 [phi:main::@4->main::@6] b6_from_b4: jmp b6 - //SEG114 main::@6 + //SEG115 main::@6 b6: - //SEG115 [41] call render_show + //SEG116 [41] call render_show jsr render_show - //SEG116 [42] phi from main::@6 to main::@35 [phi:main::@6->main::@35] + //SEG117 [42] phi from main::@6 to main::@35 [phi:main::@6->main::@35] b35_from_b6: jmp b35 - //SEG117 main::@35 + //SEG118 main::@35 b35: - //SEG118 [43] call keyboard_event_scan - //SEG119 [395] phi from main::@35 to keyboard_event_scan [phi:main::@35->keyboard_event_scan] + //SEG119 [43] call keyboard_event_scan + //SEG120 [395] phi from main::@35 to keyboard_event_scan [phi:main::@35->keyboard_event_scan] keyboard_event_scan_from_b35: jsr keyboard_event_scan - //SEG120 [44] phi from main::@35 to main::@36 [phi:main::@35->main::@36] + //SEG121 [44] phi from main::@35 to main::@36 [phi:main::@35->main::@36] b36_from_b35: jmp b36 - //SEG121 main::@36 + //SEG122 main::@36 b36: - //SEG122 [45] call keyboard_event_get + //SEG123 [45] call keyboard_event_get jsr keyboard_event_get - //SEG123 [46] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG124 [46] (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 b37 - //SEG124 main::@37 + //SEG125 main::@37 b37: - //SEG125 [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 + //SEG126 [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta key_event - //SEG126 [48] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 + //SEG127 [48] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b7 jmp b9 - //SEG127 main::@9 + //SEG128 main::@9 b9: - //SEG128 [49] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG129 [49] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b9 - //SEG129 main::@7 + //SEG130 main::@7 b7: - //SEG130 [50] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG131 [50] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_movement.key_event - //SEG131 [51] call play_movement + //SEG132 [51] call play_movement jsr play_movement - //SEG132 [52] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuz1=vbuz2 + //SEG133 [52] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuz1=vbuz2 lda play_movement.return sta play_movement.return_3 jmp b38 - //SEG133 main::@38 + //SEG134 main::@38 b38: - //SEG134 [53] (byte) main::render#1 ← (byte) play_movement::return#3 -- vbuz1=vbuz2 + //SEG135 [53] (byte) main::render#1 ← (byte) play_movement::return#3 -- vbuz1=vbuz2 lda play_movement.return_3 sta render jmp b11 - //SEG135 main::@11 + //SEG136 main::@11 b11: - //SEG136 [54] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_eq_0_then_la1 + //SEG137 [54] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_eq_0_then_la1 lda render cmp #0 beq b1_from_b11 jmp b23 - //SEG137 main::@23 + //SEG138 main::@23 b23: - //SEG138 [55] (byte~) render_screen_render#70 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG139 [55] (byte~) render_screen_render#70 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_70 - //SEG139 [56] call render_playfield - //SEG140 [150] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] + //SEG140 [56] call render_playfield + //SEG141 [150] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] render_playfield_from_b23: - //SEG141 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@23->render_playfield#0] -- register_copy + //SEG142 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@23->render_playfield#0] -- register_copy jsr render_playfield jmp b39 - //SEG142 main::@39 + //SEG143 main::@39 b39: - //SEG143 [57] (byte~) current_ypos#109 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG144 [57] (byte~) current_ypos#109 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta current_ypos_109 - //SEG144 [58] (byte~) render_screen_render#69 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG145 [58] (byte~) render_screen_render#69 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_69 - //SEG145 [59] (byte~) current_xpos#133 ← (byte) current_xpos#18 -- vbuz1=vbuz2 + //SEG146 [59] (byte~) current_xpos#133 ← (byte) current_xpos#18 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_133 - //SEG146 [60] (byte*~) current_piece_gfx#123 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 + //SEG147 [60] (byte*~) current_piece_gfx#123 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_123 lda current_piece_gfx+1 sta current_piece_gfx_123+1 - //SEG147 [61] (byte~) current_piece_char#111 ← (byte) current_piece_char#15 -- vbuz1=vbuz2 + //SEG148 [61] (byte~) current_piece_char#111 ← (byte) current_piece_char#15 -- vbuz1=vbuz2 lda current_piece_char sta current_piece_char_111 - //SEG148 [62] call render_moving - //SEG149 [129] phi from main::@39 to render_moving [phi:main::@39->render_moving] + //SEG149 [62] call render_moving + //SEG150 [129] phi from main::@39 to render_moving [phi:main::@39->render_moving] render_moving_from_b39: - //SEG150 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#111 [phi:main::@39->render_moving#0] -- register_copy - //SEG151 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#123 [phi:main::@39->render_moving#1] -- register_copy - //SEG152 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#133 [phi:main::@39->render_moving#2] -- register_copy - //SEG153 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#69 [phi:main::@39->render_moving#3] -- register_copy - //SEG154 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#109 [phi:main::@39->render_moving#4] -- register_copy + //SEG151 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#111 [phi:main::@39->render_moving#0] -- register_copy + //SEG152 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#123 [phi:main::@39->render_moving#1] -- register_copy + //SEG153 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#133 [phi:main::@39->render_moving#2] -- register_copy + //SEG154 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#69 [phi:main::@39->render_moving#3] -- register_copy + //SEG155 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#109 [phi:main::@39->render_moving#4] -- register_copy jsr render_moving jmp b40 - //SEG155 main::@40 + //SEG156 main::@40 b40: - //SEG156 [63] (byte~) render_screen_render#68 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG157 [63] (byte~) render_screen_render#68 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_68 - //SEG157 [64] (byte~) next_piece_idx#85 ← (byte) next_piece_idx#16 -- vbuz1=vbuz2 + //SEG158 [64] (byte~) next_piece_idx#85 ← (byte) next_piece_idx#16 -- vbuz1=vbuz2 lda next_piece_idx sta next_piece_idx_85 - //SEG158 [65] call render_next - //SEG159 [108] phi from main::@40 to render_next [phi:main::@40->render_next] + //SEG159 [65] call render_next + //SEG160 [108] phi from main::@40 to render_next [phi:main::@40->render_next] render_next_from_b40: - //SEG160 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#85 [phi:main::@40->render_next#0] -- register_copy - //SEG161 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#68 [phi:main::@40->render_next#1] -- register_copy + //SEG161 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#85 [phi:main::@40->render_next#0] -- register_copy + //SEG162 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#68 [phi:main::@40->render_next#1] -- register_copy jsr render_next - //SEG162 [66] phi from main::@40 to main::@41 [phi:main::@40->main::@41] + //SEG163 [66] phi from main::@40 to main::@41 [phi:main::@40->main::@41] b41_from_b40: jmp b41 - //SEG163 main::@41 + //SEG164 main::@41 b41: - //SEG164 [67] call render_score + //SEG165 [67] call render_score jsr render_score - //SEG165 [68] phi from main::@41 to main::@42 [phi:main::@41->main::@42] + //SEG166 [68] phi from main::@41 to main::@42 [phi:main::@41->main::@42] b42_from_b41: jmp b42 - //SEG166 main::@42 + //SEG167 main::@42 b42: - //SEG167 [69] call render_screen_swap + //SEG168 [69] call render_screen_swap jsr render_screen_swap - //SEG168 [38] phi from main::@42 to main::@1 [phi:main::@42->main::@1] + //SEG169 [38] phi from main::@42 to main::@1 [phi:main::@42->main::@1] b1_from_b42: - //SEG169 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@42->main::@1#0] -- register_copy - //SEG170 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@42->main::@1#1] -- register_copy - //SEG171 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@42->main::@1#2] -- register_copy - //SEG172 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@42->main::@1#3] -- register_copy - //SEG173 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@42->main::@1#4] -- register_copy - //SEG174 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@42->main::@1#5] -- register_copy - //SEG175 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@42->main::@1#6] -- register_copy - //SEG176 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@42->main::@1#7] -- register_copy - //SEG177 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@42->main::@1#8] -- register_copy - //SEG178 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@42->main::@1#9] -- register_copy - //SEG179 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@42->main::@1#10] -- register_copy - //SEG180 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@42->main::@1#11] -- register_copy - //SEG181 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@42->main::@1#12] -- register_copy - //SEG182 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@42->main::@1#13] -- register_copy - //SEG183 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@42->main::@1#14] -- register_copy - //SEG184 [38] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@42->main::@1#15] -- register_copy - //SEG185 [38] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@42->main::@1#16] -- register_copy + //SEG170 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@42->main::@1#0] -- register_copy + //SEG171 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@42->main::@1#1] -- register_copy + //SEG172 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@42->main::@1#2] -- register_copy + //SEG173 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@42->main::@1#3] -- register_copy + //SEG174 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@42->main::@1#4] -- register_copy + //SEG175 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@42->main::@1#5] -- register_copy + //SEG176 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@42->main::@1#6] -- register_copy + //SEG177 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@42->main::@1#7] -- register_copy + //SEG178 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@42->main::@1#8] -- register_copy + //SEG179 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@42->main::@1#9] -- register_copy + //SEG180 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@42->main::@1#10] -- register_copy + //SEG181 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@42->main::@1#11] -- register_copy + //SEG182 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@42->main::@1#12] -- register_copy + //SEG183 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@42->main::@1#13] -- register_copy + //SEG184 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@42->main::@1#14] -- register_copy + //SEG185 [38] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@42->main::@1#15] -- register_copy + //SEG186 [38] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@42->main::@1#16] -- register_copy jmp b1 } -//SEG186 render_screen_swap +//SEG187 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG187 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG188 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show jmp breturn - //SEG189 render_screen_swap::@return + //SEG190 render_screen_swap::@return breturn: - //SEG190 [72] return + //SEG191 [72] return rts } -//SEG191 render_score +//SEG192 render_score // Show the current score render_score: { .label score_bytes = score_bcd @@ -13426,187 +13427,187 @@ render_score: { .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG192 [73] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 + //SEG193 [73] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b2_from_render_score - //SEG193 [74] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] + //SEG194 [74] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] b3_from_render_score: jmp b3 - //SEG194 render_score::@3 + //SEG195 render_score::@3 b3: - //SEG195 [75] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] + //SEG196 [75] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] b2_from_b3: - //SEG196 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 + //SEG197 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG197 [75] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG198 [75] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] b2_from_render_score: - //SEG198 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG199 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 jmp b2 - //SEG199 render_score::@2 + //SEG200 render_score::@2 b2: - //SEG200 [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG201 [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG201 [77] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=_deref_pbuc1 + //SEG202 [77] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=_deref_pbuc1 lda score_bytes+2 sta render_bcd.bcd - //SEG202 [78] call render_bcd - //SEG203 [95] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG203 [78] call render_bcd + //SEG204 [95] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] render_bcd_from_b2: - //SEG204 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG205 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuz1=vbuc1 + //SEG205 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG206 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG206 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG207 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG207 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG208 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd jmp b5 - //SEG208 render_score::@5 + //SEG209 render_score::@5 b5: - //SEG209 [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG210 [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG210 [80] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=_deref_pbuc1 + //SEG211 [80] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=_deref_pbuc1 lda score_bytes+1 sta render_bcd.bcd - //SEG211 [81] call render_bcd - //SEG212 [95] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG212 [81] call render_bcd + //SEG213 [95] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] render_bcd_from_b5: - //SEG213 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG214 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuz1=vbuc1 + //SEG214 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG215 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG215 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 + //SEG216 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG216 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG217 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd jmp b6 - //SEG217 render_score::@6 + //SEG218 render_score::@6 b6: - //SEG218 [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG219 [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG219 [83] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuz1=_deref_pbuc1 + //SEG220 [83] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuz1=_deref_pbuc1 lda score_bytes sta render_bcd.bcd - //SEG220 [84] call render_bcd - //SEG221 [95] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG221 [84] call render_bcd + //SEG222 [95] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] render_bcd_from_b6: - //SEG222 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG223 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuz1=vbuc1 + //SEG223 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG224 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG224 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 + //SEG225 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG225 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG226 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd jmp b7 - //SEG226 render_score::@7 + //SEG227 render_score::@7 b7: - //SEG227 [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuz1=_hi_vwuz2 + //SEG228 [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuz1=_hi_vwuz2 lda lines_bcd+1 sta render_bcd.bcd - //SEG228 [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG229 [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG229 [87] call render_bcd - //SEG230 [95] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG230 [87] call render_bcd + //SEG231 [95] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] render_bcd_from_b7: - //SEG231 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG232 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuz1=vbuc1 + //SEG232 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG233 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuz1=vbuc1 lda #1 sta render_bcd.only_low - //SEG233 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG234 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG234 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG235 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd jmp b8 - //SEG235 render_score::@8 + //SEG236 render_score::@8 b8: - //SEG236 [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuz1=_lo_vwuz2 + //SEG237 [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuz1=_lo_vwuz2 lda lines_bcd sta render_bcd.bcd - //SEG237 [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG238 [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG238 [90] call render_bcd - //SEG239 [95] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] + //SEG239 [90] call render_bcd + //SEG240 [95] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] render_bcd_from_b8: - //SEG240 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy - //SEG241 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuz1=vbuc1 + //SEG241 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy + //SEG242 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG242 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 + //SEG243 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG243 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy + //SEG244 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy jsr render_bcd jmp b9 - //SEG244 render_score::@9 + //SEG245 render_score::@9 b9: - //SEG245 [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 + //SEG246 [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 -- pbuz1=pbuz2 lda screen sta render_bcd.screen lda screen+1 sta render_bcd.screen+1 - //SEG246 [92] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuz1=vbuz2 + //SEG247 [92] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuz1=vbuz2 lda level_bcd sta render_bcd.bcd - //SEG247 [93] call render_bcd - //SEG248 [95] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] + //SEG248 [93] call render_bcd + //SEG249 [95] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] render_bcd_from_b9: - //SEG249 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy - //SEG250 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuz1=vbuc1 + //SEG250 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy + //SEG251 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuz1=vbuc1 lda #0 sta render_bcd.only_low - //SEG251 [95] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 + //SEG252 [95] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG252 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy + //SEG253 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy jsr render_bcd jmp breturn - //SEG253 render_score::@return + //SEG254 render_score::@return breturn: - //SEG254 [94] return + //SEG255 [94] return rts } -//SEG255 render_bcd +//SEG256 render_bcd // Render BCD digits on a screen. // - screen: pointer to the screen to render on // - offset: offset on the screen @@ -13624,7 +13625,7 @@ render_bcd: { .label screen_pos_1 = $85 .label offset = 9 .label only_low = $b - //SEG256 [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz3 + //SEG257 [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz3 lda screen clc adc offset @@ -13632,55 +13633,55 @@ render_bcd: { lda screen+1 adc offset+1 sta screen_pos+1 - //SEG257 [97] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuz1_neq_0_then_la1 + //SEG258 [97] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuz1_neq_0_then_la1 lda only_low cmp #0 bne b1_from_render_bcd jmp b2 - //SEG258 render_bcd::@2 + //SEG259 render_bcd::@2 b2: - //SEG259 [98] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG260 [98] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda bcd lsr lsr lsr lsr sta _3 - //SEG260 [99] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuz1=vbuc1_plus_vbuz2 + //SEG261 [99] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuz1=vbuc1_plus_vbuz2 lda #ZERO_CHAR clc adc _3 sta _4 - //SEG261 [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuz2 + //SEG262 [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuz2 lda _4 ldy #0 sta (screen_pos),y - //SEG262 [101] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG263 [101] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG263 [102] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG264 [102] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] b1_from_render_bcd: b1_from_b2: - //SEG264 [102] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG265 [102] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy jmp b1 - //SEG265 render_bcd::@1 + //SEG266 render_bcd::@1 b1: - //SEG266 [103] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG267 [103] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and bcd sta _5 - //SEG267 [104] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuz1=vbuc1_plus_vbuz2 + //SEG268 [104] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuz1=vbuc1_plus_vbuz2 lda #ZERO_CHAR clc adc _5 sta _6 - //SEG268 [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuz2 + //SEG269 [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (screen_pos),y - //SEG269 [106] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz2 + //SEG270 [106] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz2 lda screen_pos clc adc #1 @@ -13689,12 +13690,12 @@ render_bcd: { adc #0 sta screen_pos_1+1 jmp breturn - //SEG270 render_bcd::@return + //SEG271 render_bcd::@return breturn: - //SEG271 [107] return + //SEG272 [107] return rts } -//SEG272 render_next +//SEG273 render_next // Render the next tetromino in the "next" area render_next: { .const next_area_offset = $28*$c+$18+4 @@ -13705,117 +13706,117 @@ render_next: { .label screen_next_area = $14 .label c = $16 .label l = $11 - //SEG273 [109] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@2 -- vbuz1_eq_0_then_la1 + //SEG274 [109] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@2 -- vbuz1_eq_0_then_la1 lda render_screen_render_15 cmp #0 beq b2_from_render_next - //SEG274 [110] phi from render_next to render_next::@7 [phi:render_next->render_next::@7] + //SEG275 [110] phi from render_next to render_next::@7 [phi:render_next->render_next::@7] b7_from_render_next: jmp b7 - //SEG275 render_next::@7 + //SEG276 render_next::@7 b7: - //SEG276 [111] phi from render_next::@7 to render_next::@2 [phi:render_next::@7->render_next::@2] + //SEG277 [111] phi from render_next::@7 to render_next::@2 [phi:render_next::@7->render_next::@2] b2_from_b7: - //SEG277 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next::@7->render_next::@2#0] -- pbuz1=pbuc1 + //SEG278 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next::@7->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+next_area_offset sta screen_next_area+1 jmp b2 - //SEG278 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] + //SEG279 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] b2_from_render_next: - //SEG279 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 + //SEG280 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+next_area_offset sta screen_next_area+1 jmp b2 - //SEG280 render_next::@2 + //SEG281 render_next::@2 b2: - //SEG281 [112] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG282 [112] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda next_piece_idx_12 asl sta _6 - //SEG282 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG283 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuz2 ldy next_piece_idx_12 lda PIECES_NEXT_CHARS,y sta next_piece_char - //SEG283 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG284 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuz2 ldy _6 lda PIECES,y sta next_piece_gfx lda PIECES+1,y sta next_piece_gfx+1 - //SEG284 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] + //SEG285 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] b3_from_b2: - //SEG285 [115] phi (byte) render_next::l#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 + //SEG286 [115] phi (byte) render_next::l#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG286 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#10 [phi:render_next::@2->render_next::@3#1] -- register_copy - //SEG287 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy + //SEG287 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#10 [phi:render_next::@2->render_next::@3#1] -- register_copy + //SEG288 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy jmp b3 - //SEG288 [115] phi from render_next::@11 to render_next::@3 [phi:render_next::@11->render_next::@3] + //SEG289 [115] phi from render_next::@11 to render_next::@3 [phi:render_next::@11->render_next::@3] b3_from_b11: - //SEG289 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@11->render_next::@3#0] -- register_copy - //SEG290 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#3 [phi:render_next::@11->render_next::@3#1] -- register_copy - //SEG291 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@11->render_next::@3#2] -- register_copy + //SEG290 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@11->render_next::@3#0] -- register_copy + //SEG291 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#3 [phi:render_next::@11->render_next::@3#1] -- register_copy + //SEG292 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@11->render_next::@3#2] -- register_copy jmp b3 - //SEG292 render_next::@3 + //SEG293 render_next::@3 b3: - //SEG293 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] + //SEG294 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] b4_from_b3: - //SEG294 [116] phi (byte) render_next::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@3->render_next::@4#0] -- vbuz1=vbuc1 + //SEG295 [116] phi (byte) render_next::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@3->render_next::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG295 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#9 [phi:render_next::@3->render_next::@4#1] -- register_copy - //SEG296 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy + //SEG296 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#9 [phi:render_next::@3->render_next::@4#1] -- register_copy + //SEG297 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy jmp b4 - //SEG297 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] + //SEG298 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] b4_from_b6: - //SEG298 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy - //SEG299 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#2 [phi:render_next::@6->render_next::@4#1] -- register_copy - //SEG300 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy + //SEG299 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy + //SEG300 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#2 [phi:render_next::@6->render_next::@4#1] -- register_copy + //SEG301 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy jmp b4 - //SEG301 render_next::@4 + //SEG302 render_next::@4 b4: - //SEG302 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuz1=_deref_pbuz2 + //SEG303 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (next_piece_gfx),y sta cell - //SEG303 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 + //SEG304 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 inc next_piece_gfx bne !+ inc next_piece_gfx+1 !: - //SEG304 [119] if((byte) render_next::cell#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@5 -- vbuz1_neq_0_then_la1 + //SEG305 [119] if((byte) render_next::cell#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@5 -- vbuz1_neq_0_then_la1 lda cell cmp #0 bne b5 jmp b9 - //SEG305 render_next::@9 + //SEG306 render_next::@9 b9: - //SEG306 [120] *((byte*) render_next::screen_next_area#4) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG307 [120] *((byte*) render_next::screen_next_area#4) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (screen_next_area),y jmp b6 - //SEG307 render_next::@6 + //SEG308 render_next::@6 b6: - //SEG308 [121] (byte*) render_next::screen_next_area#2 ← ++ (byte*) render_next::screen_next_area#4 -- pbuz1=_inc_pbuz1 + //SEG309 [121] (byte*) render_next::screen_next_area#2 ← ++ (byte*) render_next::screen_next_area#4 -- pbuz1=_inc_pbuz1 inc screen_next_area bne !+ inc screen_next_area+1 !: - //SEG309 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuz1=_inc_vbuz1 + //SEG310 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG310 [123] if((byte) render_next::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG311 [123] if((byte) render_next::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@4 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b4_from_b6 jmp b11 - //SEG311 render_next::@11 + //SEG312 render_next::@11 b11: - //SEG312 [124] (byte*) render_next::screen_next_area#3 ← (byte*) render_next::screen_next_area#2 + (byte/signed byte/word/signed word/dword/signed dword) 36 -- pbuz1=pbuz1_plus_vbuc1 + //SEG313 [124] (byte*) render_next::screen_next_area#3 ← (byte*) render_next::screen_next_area#2 + (byte/signed byte/word/signed word/dword/signed dword) 36 -- pbuz1=pbuz1_plus_vbuc1 lda screen_next_area clc adc #$24 @@ -13823,26 +13824,26 @@ render_next: { bcc !+ inc screen_next_area+1 !: - //SEG313 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 + //SEG314 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 inc l - //SEG314 [126] if((byte) render_next::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [126] if((byte) render_next::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b3_from_b11 jmp breturn - //SEG315 render_next::@return + //SEG316 render_next::@return breturn: - //SEG316 [127] return + //SEG317 [127] return rts - //SEG317 render_next::@5 + //SEG318 render_next::@5 b5: - //SEG318 [128] *((byte*) render_next::screen_next_area#4) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 + //SEG319 [128] *((byte*) render_next::screen_next_area#4) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 lda next_piece_char ldy #0 sta (screen_next_area),y jmp b6 } -//SEG319 render_moving +//SEG320 render_moving // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { @@ -13854,128 +13855,128 @@ render_moving: { .label l = $1e .label current_cell = $8d .label c = $21 - //SEG320 [130] (byte) render_moving::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG321 [130] (byte) render_moving::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos_12 asl sta ypos2 - //SEG321 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG322 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] b1_from_render_moving: - //SEG322 [131] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG323 [131] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG323 [131] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG324 [131] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG324 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG325 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy jmp b1 - //SEG325 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG326 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] b1_from_b3: - //SEG326 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG327 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG328 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG327 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG328 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG329 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy jmp b1 - //SEG329 render_moving::@1 + //SEG330 render_moving::@1 b1: - //SEG330 [132] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG331 [132] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 -- vbuz1_gt_vbuc1_then_la1 lda ypos2 cmp #2 beq !+ bcs b2 !: jmp b6 - //SEG331 render_moving::@6 + //SEG332 render_moving::@6 b6: - //SEG332 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG333 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc i sta i - //SEG333 [134] phi from render_moving::@5 render_moving::@6 to render_moving::@3 [phi:render_moving::@5/render_moving::@6->render_moving::@3] + //SEG334 [134] phi from render_moving::@5 render_moving::@6 to render_moving::@3 [phi:render_moving::@5/render_moving::@6->render_moving::@3] b3_from_b5: b3_from_b6: - //SEG334 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@6->render_moving::@3#0] -- register_copy + //SEG335 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@6->render_moving::@3#0] -- register_copy jmp b3 - //SEG335 render_moving::@3 + //SEG336 render_moving::@3 b3: - //SEG336 [135] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG337 [135] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG337 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG338 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG338 [137] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG339 [137] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b3 jmp breturn - //SEG339 render_moving::@return + //SEG340 render_moving::@return breturn: - //SEG340 [138] return + //SEG341 [138] return rts - //SEG341 render_moving::@2 + //SEG342 render_moving::@2 b2: - //SEG342 [139] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG343 [139] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuz1=vbuz2_plus_vbuz3 lda render_screen_render_33 clc adc ypos2 sta _2 - //SEG343 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG344 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuz2 ldy _2 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG344 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#58 -- vbuz1=vbuz2 + //SEG345 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#58 -- vbuz1=vbuz2 lda current_xpos_58 sta xpos - //SEG345 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG346 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] b4_from_b2: - //SEG346 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 + //SEG347 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG347 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG348 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG348 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG349 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy jmp b4 - //SEG349 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG350 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] b4_from_b5: - //SEG350 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG351 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG352 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG351 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG352 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG353 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy jmp b4 - //SEG353 render_moving::@4 + //SEG354 render_moving::@4 b4: - //SEG354 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_moving::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG355 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_moving::i#4) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i lda (current_piece_gfx_63),y sta current_cell - //SEG355 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG356 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG356 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuz1_eq_0_then_la1 + //SEG357 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuz1_eq_0_then_la1 lda current_cell cmp #0 beq b5 jmp b8 - //SEG357 render_moving::@8 + //SEG358 render_moving::@8 b8: - //SEG358 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#67 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG359 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#67 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char_67 ldy xpos sta (screen_line),y jmp b5 - //SEG359 render_moving::@5 + //SEG360 render_moving::@5 b5: - //SEG360 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG361 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG361 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 + //SEG362 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG362 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG363 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b4_from_b5 jmp b3_from_b5 } -//SEG363 render_playfield +//SEG364 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label _2 = $8e @@ -13984,87 +13985,87 @@ render_playfield: { .label i = $24 .label c = $27 .label l = $23 - //SEG364 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG365 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG365 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG366 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG366 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG367 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l jmp b1 - //SEG367 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG368 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG368 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG369 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG369 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG370 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG370 render_playfield::@1 + //SEG371 render_playfield::@1 b1: - //SEG371 [152] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG372 [152] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda l asl sta _2 - //SEG372 [153] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG373 [153] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuz1=vbuz2_plus_vbuz3 lda render_screen_render_22 clc adc _2 sta _3 - //SEG373 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG374 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy _3 lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG374 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG375 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG375 [155] 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 + //SEG376 [155] 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 - //SEG376 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG377 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG377 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG378 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG378 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG379 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG379 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG380 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG381 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG380 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG381 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG382 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG382 render_playfield::@2 + //SEG383 render_playfield::@2 b2: - //SEG383 [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG384 [156] *((byte*) render_playfield::screen_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 (screen_line),y - //SEG384 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG385 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG385 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG386 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG386 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG387 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG387 [160] 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 + //SEG388 [160] 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 - //SEG388 render_playfield::@3 + //SEG389 render_playfield::@3 b3: - //SEG389 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG390 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG390 [162] 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 + //SEG391 [162] 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 - //SEG391 render_playfield::@return + //SEG392 render_playfield::@return breturn: - //SEG392 [163] return + //SEG393 [163] return rts } -//SEG393 play_movement +//SEG394 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) @@ -14077,84 +14078,84 @@ play_movement: { .label return = $28 .label key_event = $7e .label return_3 = $7f - //SEG394 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + //SEG395 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_down.key_event - //SEG395 [165] call play_move_down + //SEG396 [165] call play_move_down jsr play_move_down - //SEG396 [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + //SEG397 [166] (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 b5 - //SEG397 play_movement::@5 + //SEG398 play_movement::@5 b5: - //SEG398 [167] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 + //SEG399 [167] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 lda play_move_down.return sta _0 - //SEG399 [168] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuz2 + //SEG400 [168] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuz2 lda #0 clc adc _0 sta render - //SEG400 [169] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG401 [169] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG401 [170] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] + //SEG402 [170] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] breturn_from_b5: breturn_from_b7: - //SEG402 [170] phi (byte) current_xpos#18 = (byte) current_xpos#21 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy - //SEG403 [170] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy - //SEG404 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy - //SEG405 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy + //SEG403 [170] phi (byte) current_xpos#18 = (byte) current_xpos#21 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy + //SEG404 [170] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy + //SEG405 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy + //SEG406 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy jmp breturn - //SEG406 play_movement::@return + //SEG407 play_movement::@return breturn: - //SEG407 [171] return + //SEG408 [171] return rts - //SEG408 play_movement::@1 + //SEG409 play_movement::@1 b1: - //SEG409 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + //SEG410 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_leftright.key_event - //SEG410 [173] call play_move_leftright + //SEG411 [173] call play_move_leftright jsr play_move_leftright - //SEG411 [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 + //SEG412 [174] (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 b6 - //SEG412 play_movement::@6 + //SEG413 play_movement::@6 b6: - //SEG413 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 + //SEG414 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 lda play_move_leftright.return sta _3 - //SEG414 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz2_plus_vbuz3 + //SEG415 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz2_plus_vbuz3 lda render clc adc _3 sta render_2 - //SEG415 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 + //SEG416 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_rotate.key_event - //SEG416 [178] call play_move_rotate + //SEG417 [178] call play_move_rotate jsr play_move_rotate - //SEG417 [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 + //SEG418 [179] (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 b7 - //SEG418 play_movement::@7 + //SEG419 play_movement::@7 b7: - //SEG419 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 + //SEG420 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 lda play_move_rotate.return sta _4 - //SEG420 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG421 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 clc adc _4 sta return jmp breturn_from_b7 } -//SEG421 play_move_rotate +//SEG422 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed play_move_rotate: { @@ -14165,90 +14166,90 @@ play_move_rotate: { .label return = $98 .label orientation = $2a .label return_2 = $29 - //SEG422 [182] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG423 [182] 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 - //SEG423 play_move_rotate::@6 + //SEG424 play_move_rotate::@6 b6: - //SEG424 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG425 [183] 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 - //SEG425 [184] 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] + //SEG426 [184] 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: - //SEG426 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG427 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG428 [184] 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 + //SEG427 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG428 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG429 [184] 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 - //SEG429 play_move_rotate::@return + //SEG430 play_move_rotate::@return breturn: - //SEG430 [185] return + //SEG431 [185] return rts - //SEG431 play_move_rotate::@2 + //SEG432 play_move_rotate::@2 b2: - //SEG432 [186] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 + //SEG433 [186] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 lda #$10 clc adc current_orientation sta _2 - //SEG433 [187] (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 + //SEG434 [187] (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 - //SEG434 [188] 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] + //SEG435 [188] 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: - //SEG435 [188] 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 + //SEG436 [188] 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 - //SEG436 play_move_rotate::@4 + //SEG437 play_move_rotate::@4 b4: - //SEG437 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#25 -- vbuz1=vbuz2 + //SEG438 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#25 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG438 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG439 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG439 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG440 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta play_collision.orientation - //SEG440 [192] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG441 [192] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_101 lda current_piece+1 sta current_piece_101+1 - //SEG441 [193] call play_collision - //SEG442 [201] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + //SEG442 [193] call play_collision + //SEG443 [201] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] play_collision_from_b4: - //SEG443 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG444 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG445 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG446 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG444 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG445 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG446 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG447 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG447 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG448 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_14 jmp b14 - //SEG448 play_move_rotate::@14 + //SEG449 play_move_rotate::@14 b14: - //SEG449 [195] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + //SEG450 [195] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 lda play_collision.return_14 sta _6 - //SEG450 [196] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG451 [196] 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 - //SEG451 play_move_rotate::@11 + //SEG452 play_move_rotate::@11 b11: - //SEG452 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG453 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG453 [198] (byte*) current_piece_gfx#6 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG454 [198] (byte*) current_piece_gfx#6 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -14256,28 +14257,28 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG454 [184] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG455 [184] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG455 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG456 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG457 [184] 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 + //SEG456 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG457 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG458 [184] 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 - //SEG458 play_move_rotate::@1 + //SEG459 play_move_rotate::@1 b1: - //SEG459 [199] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 + //SEG460 [199] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 lda current_orientation sec sbc #$10 sta _4 - //SEG460 [200] (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 + //SEG461 [200] (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 } -//SEG461 play_collision +//SEG462 play_collision // Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries // Returns information about the type of the collision detected play_collision: { @@ -14302,7 +14303,7 @@ play_collision: { .label i_3 = $32 .label i_11 = $32 .label i_13 = $32 - //SEG462 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuz3 + //SEG463 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz2_plus_vbuz3 lda orientation clc adc current_piece_17 @@ -14310,162 +14311,162 @@ play_collision: { lda #0 adc current_piece_17+1 sta piece_gfx+1 - //SEG463 [203] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG464 [203] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda ypos asl sta ypos2 - //SEG464 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG465 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG465 [204] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG466 [204] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG466 [204] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG467 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG468 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG468 play_collision::@1 + //SEG469 play_collision::@1 b1: - //SEG469 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG470 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG470 [206] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG471 [206] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta col - //SEG471 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG472 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG472 [207] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 + //SEG473 [207] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG473 [207] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG474 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG474 [207] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG475 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG475 play_collision::@2 + //SEG476 play_collision::@2 b2: - //SEG476 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG477 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG477 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG478 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG478 play_collision::@8 + //SEG479 play_collision::@8 b8: - //SEG479 [210] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG480 [210] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG480 [211] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG481 [211] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG481 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG482 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM sta return_15 jmp breturn - //SEG482 play_collision::@return + //SEG483 play_collision::@return breturn: - //SEG483 [212] return + //SEG484 [212] return rts - //SEG484 play_collision::@4 + //SEG485 play_collision::@4 b4: - //SEG485 [213] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG486 [213] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and col sta _7 - //SEG486 [214] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 + //SEG487 [214] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b5 - //SEG487 [211] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG488 [211] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG488 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG489 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT sta return_15 jmp breturn - //SEG489 play_collision::@5 + //SEG490 play_collision::@5 b5: - //SEG490 [215] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG491 [215] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG491 [211] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG492 [211] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG492 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG493 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT sta return_15 jmp breturn - //SEG493 play_collision::@6 + //SEG494 play_collision::@6 b6: - //SEG494 [216] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG495 [216] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG495 [211] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG496 [211] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG496 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG497 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD sta return_15 jmp breturn - //SEG497 play_collision::@3 + //SEG498 play_collision::@3 b3: - //SEG498 [217] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG499 [217] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG499 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG500 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG500 [219] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuz1_neq_vbuc1_then_la1 + //SEG501 [219] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b21 jmp b17 - //SEG501 play_collision::@17 + //SEG502 play_collision::@17 b17: - //SEG502 [220] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG503 [220] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG503 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG504 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG504 [222] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG505 [222] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG505 [211] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG506 [211] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG506 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuz1=vbuc1 + //SEG507 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE sta return_15 jmp breturn - //SEG507 play_collision::@20 + //SEG508 play_collision::@20 b20: - //SEG508 [223] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG509 [223] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG509 [204] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG510 [204] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG510 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG511 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG512 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG511 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG512 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG513 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG513 play_collision::@21 + //SEG514 play_collision::@21 b21: - //SEG514 [224] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG515 [224] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG515 [207] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG516 [207] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG516 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG517 [207] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG518 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG517 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG518 [207] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG519 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG519 play_move_leftright +//SEG520 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed play_move_leftright: { @@ -14474,128 +14475,128 @@ play_move_leftright: { .label key_event = $93 .label return = $94 .label return_2 = $36 - //SEG520 [225] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG521 [225] 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 - //SEG521 play_move_leftright::@6 + //SEG522 play_move_leftright::@6 b6: - //SEG522 [226] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG523 [226] 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 - //SEG523 play_move_leftright::@7 + //SEG524 play_move_leftright::@7 b7: - //SEG524 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG525 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG525 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG526 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG526 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuz1=vbuz2 + //SEG527 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG527 [230] (byte*~) current_piece#100 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG528 [230] (byte*~) current_piece#100 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_100 lda current_piece+1 sta current_piece_100+1 - //SEG528 [231] call play_collision - //SEG529 [201] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + //SEG529 [231] call play_collision + //SEG530 [201] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] play_collision_from_b7: - //SEG530 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG531 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG532 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG533 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG531 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG532 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG533 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG534 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG534 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG535 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_13 jmp b15 - //SEG535 play_move_leftright::@15 + //SEG536 play_move_leftright::@15 b15: - //SEG536 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 + //SEG537 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 lda play_collision.return_13 sta _4 - //SEG537 [234] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG538 [234] 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 - //SEG538 play_move_leftright::@8 + //SEG539 play_move_leftright::@8 b8: - //SEG539 [235] (byte) current_xpos#5 ← ++ (byte) current_xpos#21 -- vbuz1=_inc_vbuz1 + //SEG540 [235] (byte) current_xpos#5 ← ++ (byte) current_xpos#21 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG540 [236] 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] + //SEG541 [236] 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: - //SEG541 [236] phi (byte) current_xpos#25 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG542 [236] 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 + //SEG542 [236] phi (byte) current_xpos#25 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG543 [236] 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 - //SEG543 [236] 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] + //SEG544 [236] 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: - //SEG544 [236] phi (byte) current_xpos#25 = (byte) current_xpos#21 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG545 [236] 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 + //SEG545 [236] phi (byte) current_xpos#25 = (byte) current_xpos#21 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG546 [236] 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 - //SEG546 play_move_leftright::@return + //SEG547 play_move_leftright::@return breturn: - //SEG547 [237] return + //SEG548 [237] return rts - //SEG548 play_move_leftright::@1 + //SEG549 play_move_leftright::@1 b1: - //SEG549 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#21 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG550 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#21 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG550 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG551 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG551 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuz1=vbuz2 + //SEG552 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG552 [241] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG553 [241] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_99 lda current_piece+1 sta current_piece_99+1 - //SEG553 [242] call play_collision - //SEG554 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG554 [242] call play_collision + //SEG555 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG555 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG556 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG557 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG558 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG556 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG557 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG558 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG559 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG559 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG560 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_1 jmp b14 - //SEG560 play_move_leftright::@14 + //SEG561 play_move_leftright::@14 b14: - //SEG561 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 + //SEG562 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 lda play_collision.return_1 sta _8 - //SEG562 [245] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG563 [245] 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 - //SEG563 play_move_leftright::@11 + //SEG564 play_move_leftright::@11 b11: - //SEG564 [246] (byte) current_xpos#7 ← -- (byte) current_xpos#21 -- vbuz1=_dec_vbuz1 + //SEG565 [246] (byte) current_xpos#7 ← -- (byte) current_xpos#21 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG565 play_move_down +//SEG566 play_move_down // Move down the current piece // Return non-zero if a render is needed play_move_down: { @@ -14606,265 +14607,265 @@ play_move_down: { .label movedown = $37 .label removed = $ad .label return_3 = $49 - //SEG566 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + //SEG567 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG567 [248] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG568 [248] 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 - //SEG568 [249] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG569 [249] 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 - //SEG569 play_move_down::@8 + //SEG570 play_move_down::@8 b8: - //SEG570 [250] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG571 [250] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG571 [250] 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 + //SEG572 [250] 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 - //SEG572 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG573 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG573 [250] 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 + //SEG574 [250] 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 - //SEG574 play_move_down::@1 + //SEG575 play_move_down::@1 b1: - //SEG575 [251] call keyboard_event_pressed - //SEG576 [384] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG576 [251] call keyboard_event_pressed + //SEG577 [384] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG577 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG578 [384] 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 - //SEG578 [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG579 [252] (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 - //SEG579 play_move_down::@17 + //SEG580 play_move_down::@17 b17: - //SEG580 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG581 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG581 [254] 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 + //SEG582 [254] 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 - //SEG582 play_move_down::@9 + //SEG583 play_move_down::@9 b9: - //SEG583 [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG584 [255] if((byte) current_movedown_counter#12<(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 - //SEG584 play_move_down::@10 + //SEG585 play_move_down::@10 b10: - //SEG585 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG586 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG586 [257] 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] + //SEG587 [257] 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: - //SEG587 [257] 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 + //SEG588 [257] 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 - //SEG588 play_move_down::@2 + //SEG589 play_move_down::@2 b2: - //SEG589 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG590 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG590 play_move_down::@11 + //SEG591 play_move_down::@11 b11: - //SEG591 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG592 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG592 [260] 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] + //SEG593 [260] 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: - //SEG593 [260] 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 + //SEG594 [260] 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 - //SEG594 play_move_down::@4 + //SEG595 play_move_down::@4 b4: - //SEG595 [261] 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 + //SEG596 [261] 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 - //SEG596 play_move_down::@12 + //SEG597 play_move_down::@12 b12: - //SEG597 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG598 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG598 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 + //SEG599 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG599 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuz1=vbuz2 + //SEG600 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuz1=vbuz2 lda current_orientation sta play_collision.orientation - //SEG600 [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG601 [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_98 lda current_piece+1 sta current_piece_98+1 - //SEG601 [266] call play_collision - //SEG602 [201] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + //SEG602 [266] call play_collision + //SEG603 [201] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] play_collision_from_b12: - //SEG603 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG604 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG605 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG606 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG604 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG605 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG606 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG607 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG607 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG608 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return jmp b18 - //SEG608 play_move_down::@18 + //SEG609 play_move_down::@18 b18: - //SEG609 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 + //SEG610 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 lda play_collision.return sta _12 - //SEG610 [269] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 + //SEG611 [269] 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 - //SEG611 [270] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG612 [270] 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 - //SEG612 play_move_down::@13 + //SEG613 play_move_down::@13 b13: - //SEG613 [271] call play_lock_current + //SEG614 [271] call play_lock_current jsr play_lock_current - //SEG614 [272] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG615 [272] 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 - //SEG615 play_move_down::@19 + //SEG616 play_move_down::@19 b19: - //SEG616 [273] call play_remove_lines - //SEG617 [344] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG617 [273] call play_remove_lines + //SEG618 [344] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] play_remove_lines_from_b19: jsr play_remove_lines - //SEG618 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuz1=vbuz2 + //SEG619 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuz1=vbuz2 lda play_remove_lines.removed sta play_remove_lines.return jmp b20 - //SEG619 play_move_down::@20 + //SEG620 play_move_down::@20 b20: - //SEG620 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 -- vbuz1=vbuz2 + //SEG621 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 -- vbuz1=vbuz2 lda play_remove_lines.return sta removed - //SEG621 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuz1=vbuz2 + //SEG622 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuz1=vbuz2 lda removed sta play_update_score.removed - //SEG622 [277] call play_update_score + //SEG623 [277] call play_update_score jsr play_update_score - //SEG623 [278] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] + //SEG624 [278] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] b21_from_b20: jmp b21 - //SEG624 play_move_down::@21 + //SEG625 play_move_down::@21 b21: - //SEG625 [279] call play_spawn_current - //SEG626 [285] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] + //SEG626 [279] call play_spawn_current + //SEG627 [285] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] play_spawn_current_from_b21: - //SEG627 [285] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy - //SEG628 [285] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@21->play_spawn_current#1] -- register_copy + //SEG628 [285] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy + //SEG629 [285] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@21->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG629 [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG630 [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._0 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG630 [281] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] + //SEG631 [281] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] b7_from_b21: - //SEG631 [281] phi (byte) next_piece_idx#31 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy - //SEG632 [281] phi (byte) game_over#28 = (byte) game_over#52 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy - //SEG633 [281] phi (byte) current_xpos#43 = (byte) current_xpos#102 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy - //SEG634 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#7 [phi:play_move_down::@21->play_move_down::@7#3] -- register_copy - //SEG635 [281] phi (byte) current_orientation#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#4] -- vbuz1=vbuc1 + //SEG632 [281] phi (byte) next_piece_idx#31 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy + //SEG633 [281] phi (byte) game_over#28 = (byte) game_over#52 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy + //SEG634 [281] phi (byte) current_xpos#43 = (byte) current_xpos#102 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy + //SEG635 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#7 [phi:play_move_down::@21->play_move_down::@7#3] -- register_copy + //SEG636 [281] phi (byte) current_orientation#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG636 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#4 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy - //SEG637 [281] phi (byte*) current_piece#29 = (byte*~) current_piece#103 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy - //SEG638 [281] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy - //SEG639 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy - //SEG640 [281] phi (byte) level#34 = (byte) level#19 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy - //SEG641 [281] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy - //SEG642 [281] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy - //SEG643 [281] phi (byte) current_ypos#38 = (byte) current_ypos#5 [phi:play_move_down::@21->play_move_down::@7#12] -- register_copy + //SEG637 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#4 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy + //SEG638 [281] phi (byte*) current_piece#29 = (byte*~) current_piece#103 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy + //SEG639 [281] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy + //SEG640 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy + //SEG641 [281] phi (byte) level#34 = (byte) level#19 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy + //SEG642 [281] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy + //SEG643 [281] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy + //SEG644 [281] phi (byte) current_ypos#38 = (byte) current_ypos#5 [phi:play_move_down::@21->play_move_down::@7#12] -- register_copy jmp b7 - //SEG644 play_move_down::@7 + //SEG645 play_move_down::@7 b7: - //SEG645 [282] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG646 [282] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG646 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#31 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG647 [282] phi (byte) game_over#15 = (byte) game_over#28 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG648 [282] phi (byte) current_xpos#21 = (byte) current_xpos#43 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG649 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#35 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG650 [282] phi (byte) current_orientation#20 = (byte) current_orientation#38 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG651 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG652 [282] phi (byte*) current_piece#15 = (byte*) current_piece#29 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy - //SEG653 [282] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy - //SEG654 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy - //SEG655 [282] phi (byte) level#17 = (byte) level#34 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy - //SEG656 [282] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy - //SEG657 [282] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy - //SEG658 [282] phi (byte) current_ypos#18 = (byte) current_ypos#38 [phi:play_move_down::@7->play_move_down::@return#12] -- register_copy - //SEG659 [282] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG647 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#31 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG648 [282] phi (byte) game_over#15 = (byte) game_over#28 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG649 [282] phi (byte) current_xpos#21 = (byte) current_xpos#43 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG650 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#35 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG651 [282] phi (byte) current_orientation#20 = (byte) current_orientation#38 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG652 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG653 [282] phi (byte*) current_piece#15 = (byte*) current_piece#29 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy + //SEG654 [282] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy + //SEG655 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy + //SEG656 [282] phi (byte) level#17 = (byte) level#34 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy + //SEG657 [282] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy + //SEG658 [282] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy + //SEG659 [282] phi (byte) current_ypos#18 = (byte) current_ypos#38 [phi:play_move_down::@7->play_move_down::@return#12] -- register_copy + //SEG660 [282] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG660 [282] 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#14] -- vbuz1=vbuc1 + //SEG661 [282] 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#14] -- vbuz1=vbuc1 lda #1 sta return_3 jmp breturn - //SEG661 [282] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG662 [282] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG662 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG663 [282] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG664 [282] phi (byte) current_xpos#21 = (byte) current_xpos#121 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG665 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#111 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG666 [282] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG667 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG668 [282] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG669 [282] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy - //SEG670 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy - //SEG671 [282] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy - //SEG672 [282] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy - //SEG673 [282] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy - //SEG674 [282] phi (byte) current_ypos#18 = (byte) current_ypos#10 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy - //SEG675 [282] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#13] -- register_copy - //SEG676 [282] 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#14] -- vbuz1=vbuc1 + //SEG663 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG664 [282] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG665 [282] phi (byte) current_xpos#21 = (byte) current_xpos#121 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG666 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#111 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG667 [282] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG668 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG669 [282] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG670 [282] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy + //SEG671 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy + //SEG672 [282] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy + //SEG673 [282] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy + //SEG674 [282] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy + //SEG675 [282] phi (byte) current_ypos#18 = (byte) current_ypos#10 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy + //SEG676 [282] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#13] -- register_copy + //SEG677 [282] 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#14] -- vbuz1=vbuc1 lda #0 sta return_3 jmp breturn - //SEG677 play_move_down::@return + //SEG678 play_move_down::@return breturn: - //SEG678 [283] return + //SEG679 [283] return rts - //SEG679 play_move_down::@6 + //SEG680 play_move_down::@6 b6: - //SEG680 [284] (byte) current_ypos#2 ← ++ (byte) current_ypos#10 -- vbuz1=_inc_vbuz1 + //SEG681 [284] (byte) current_ypos#2 ← ++ (byte) current_ypos#10 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG681 [281] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG682 [281] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG682 [281] phi (byte) next_piece_idx#31 = (byte) next_piece_idx#10 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG683 [281] phi (byte) game_over#28 = (byte) game_over#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG684 [281] phi (byte) current_xpos#43 = (byte) current_xpos#121 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG685 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#111 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG686 [281] phi (byte) current_orientation#38 = (byte) current_orientation#13 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG687 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#21 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy - //SEG688 [281] phi (byte*) current_piece#29 = (byte*) current_piece#10 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy - //SEG689 [281] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy - //SEG690 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy - //SEG691 [281] phi (byte) level#34 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy - //SEG692 [281] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy - //SEG693 [281] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy - //SEG694 [281] phi (byte) current_ypos#38 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#12] -- register_copy + //SEG683 [281] phi (byte) next_piece_idx#31 = (byte) next_piece_idx#10 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG684 [281] phi (byte) game_over#28 = (byte) game_over#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG685 [281] phi (byte) current_xpos#43 = (byte) current_xpos#121 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG686 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#111 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG687 [281] phi (byte) current_orientation#38 = (byte) current_orientation#13 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG688 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#21 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG689 [281] phi (byte*) current_piece#29 = (byte*) current_piece#10 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy + //SEG690 [281] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy + //SEG691 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy + //SEG692 [281] phi (byte) level#34 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy + //SEG693 [281] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG694 [281] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy + //SEG695 [281] phi (byte) current_ypos#38 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#12] -- register_copy jmp b7 } -//SEG695 play_spawn_current +//SEG696 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { @@ -14873,141 +14874,141 @@ play_spawn_current: { .label _6 = $b4 .label current_piece_idx = $af .label piece_idx = $4a - //SEG696 [286] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuz1=vbuz2 + //SEG697 [286] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuz1=vbuz2 lda next_piece_idx sta current_piece_idx - //SEG697 [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG698 [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_piece_idx asl sta _0 - //SEG698 [288] (byte) current_piece_char#4 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG699 [288] (byte) current_piece_char#4 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_CHARS,y sta current_piece_char - //SEG699 [289] (byte*) current_piece_gfx#7 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG700 [289] (byte*) current_piece_gfx#7 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _0 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG700 [290] (byte) current_xpos#102 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG701 [290] (byte) current_xpos#102 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_START_X,y sta current_xpos - //SEG701 [291] (byte) current_ypos#5 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG702 [291] (byte) current_ypos#5 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy current_piece_idx lda PIECES_START_Y,y sta current_ypos - //SEG702 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#102 -- vbuz1=vbuz2 + //SEG703 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#102 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG703 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#5 -- vbuz1=vbuz2 + //SEG704 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#5 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG704 [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG705 [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 ldy _0 lda PIECES,y sta current_piece_102 lda PIECES+1,y sta current_piece_102+1 - //SEG705 [295] call play_collision - //SEG706 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG706 [295] call play_collision + //SEG707 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] play_collision_from_play_spawn_current: - //SEG707 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG708 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG709 [201] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuz1=vbuc1 + //SEG708 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG709 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG710 [201] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuz1=vbuc1 lda #0 sta play_collision.orientation - //SEG710 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG711 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG711 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 + //SEG712 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 -- vbuz1=vbuz2 lda play_collision.return_15 sta play_collision.return_10 jmp b9 - //SEG712 play_spawn_current::@9 + //SEG713 play_spawn_current::@9 b9: - //SEG713 [297] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 -- vbuz1=vbuz2 + //SEG714 [297] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 -- vbuz1=vbuz2 lda play_collision.return_10 sta _2 - //SEG714 [298] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG715 [298] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuz1_neq_vbuc1_then_la1 lda _2 cmp #COLLISION_PLAYFIELD bne b11_from_b9 - //SEG715 [299] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] + //SEG716 [299] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] b1_from_b9: - //SEG716 [299] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG717 [299] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over jmp b1 - //SEG717 play_spawn_current::@1 + //SEG718 play_spawn_current::@1 b1: - //SEG718 [300] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG719 [300] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: - //SEG719 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG720 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b2 - //SEG720 play_spawn_current::@2 + //SEG721 play_spawn_current::@2 b2: - //SEG721 [301] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG722 [301] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@3 -- vbuz1_eq_vbuc1_then_la1 lda piece_idx cmp #7 beq b3_from_b2 jmp breturn - //SEG722 play_spawn_current::@return + //SEG723 play_spawn_current::@return breturn: - //SEG723 [302] return + //SEG724 [302] return rts - //SEG724 [303] phi from play_spawn_current::@2 to play_spawn_current::@3 [phi:play_spawn_current::@2->play_spawn_current::@3] + //SEG725 [303] phi from play_spawn_current::@2 to play_spawn_current::@3 [phi:play_spawn_current::@2->play_spawn_current::@3] b3_from_b2: jmp b3 - //SEG725 play_spawn_current::@3 + //SEG726 play_spawn_current::@3 b3: - //SEG726 [304] call sid_rnd + //SEG727 [304] call sid_rnd jsr sid_rnd - //SEG727 [305] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 + //SEG728 [305] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 lda sid_rnd.return sta sid_rnd.return_2 jmp b10 - //SEG728 play_spawn_current::@10 + //SEG729 play_spawn_current::@10 b10: - //SEG729 [306] (byte~) play_spawn_current::$6 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + //SEG730 [306] (byte~) play_spawn_current::$6 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 lda sid_rnd.return_2 sta _6 - //SEG730 [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG731 [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and _6 sta piece_idx - //SEG731 [300] phi from play_spawn_current::@10 to play_spawn_current::@2 [phi:play_spawn_current::@10->play_spawn_current::@2] + //SEG732 [300] phi from play_spawn_current::@10 to play_spawn_current::@2 [phi:play_spawn_current::@10->play_spawn_current::@2] b2_from_b10: - //SEG732 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@10->play_spawn_current::@2#0] -- register_copy + //SEG733 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@10->play_spawn_current::@2#0] -- register_copy jmp b2 - //SEG733 [308] phi from play_spawn_current::@9 to play_spawn_current::@11 [phi:play_spawn_current::@9->play_spawn_current::@11] + //SEG734 [308] phi from play_spawn_current::@9 to play_spawn_current::@11 [phi:play_spawn_current::@9->play_spawn_current::@11] b11_from_b9: jmp b11 - //SEG734 play_spawn_current::@11 + //SEG735 play_spawn_current::@11 b11: - //SEG735 [299] phi from play_spawn_current::@11 to play_spawn_current::@1 [phi:play_spawn_current::@11->play_spawn_current::@1] + //SEG736 [299] phi from play_spawn_current::@11 to play_spawn_current::@1 [phi:play_spawn_current::@11->play_spawn_current::@1] b1_from_b11: - //SEG736 [299] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@11->play_spawn_current::@1#0] -- register_copy + //SEG737 [299] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@11->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG737 sid_rnd +//SEG738 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { .label return = $b5 .label return_2 = $b3 - //SEG738 [309] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + //SEG739 [309] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta return jmp breturn - //SEG739 sid_rnd::@return + //SEG740 sid_rnd::@return breturn: - //SEG740 [310] return + //SEG741 [310] return rts } -//SEG741 play_update_score +//SEG742 play_update_score // Update the score based on the number of lines removed play_update_score: { .label _2 = $b6 @@ -15017,26 +15018,26 @@ play_update_score: { .label lines_before = $b7 .label add_bcd = $b9 .label lines_after = $be - //SEG742 [311] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuz1_eq_0_then_la1 + //SEG743 [311] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuz1_eq_0_then_la1 lda removed cmp #0 beq breturn_from_play_update_score jmp b3 - //SEG743 play_update_score::@3 + //SEG744 play_update_score::@3 b3: - //SEG744 [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuz1=_lo_vwuz2 + //SEG745 [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuz1=_lo_vwuz2 lda lines_bcd sta _2 - //SEG745 [313] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuz2_band_vbuc1 + //SEG746 [313] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuz2_band_vbuc1 lda #$f0 and _2 sta lines_before - //SEG746 [314] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG747 [314] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda removed asl asl sta _4 - //SEG747 [315] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuz2 + //SEG748 [315] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuz2 ldy _4 lda score_add_bcd,y sta add_bcd @@ -15046,9 +15047,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG748 asm { sed } + //SEG749 asm { sed } sed - //SEG749 [317] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuz2 + //SEG750 [317] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuz2 lda removed clc adc lines_bcd @@ -15056,7 +15057,7 @@ play_update_score: { lda #0 adc lines_bcd+1 sta lines_bcd+1 - //SEG750 [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG751 [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -15070,119 +15071,119 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG751 asm { cld } + //SEG752 asm { cld } cld - //SEG752 [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuz1=_lo_vwuz2 + //SEG753 [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuz1=_lo_vwuz2 lda lines_bcd sta _5 - //SEG753 [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuz2_band_vbuc1 + //SEG754 [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuz2_band_vbuc1 lda #$f0 and _5 sta lines_after - //SEG754 [322] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuz2_then_la1 + //SEG755 [322] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuz2_then_la1 lda lines_before cmp lines_after beq breturn_from_b3 - //SEG755 [323] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] + //SEG756 [323] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] b4_from_b3: jmp b4 - //SEG756 play_update_score::@4 + //SEG757 play_update_score::@4 b4: - //SEG757 [324] call play_increase_level + //SEG758 [324] call play_increase_level jsr play_increase_level - //SEG758 [325] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] + //SEG759 [325] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] breturn_from_play_update_score: breturn_from_b3: breturn_from_b4: - //SEG759 [325] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy - //SEG760 [325] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy - //SEG761 [325] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy - //SEG762 [325] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy - //SEG763 [325] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy + //SEG760 [325] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy + //SEG761 [325] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy + //SEG762 [325] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy + //SEG763 [325] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy + //SEG764 [325] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy jmp breturn - //SEG764 play_update_score::@return + //SEG765 play_update_score::@return breturn: - //SEG765 [326] return + //SEG766 [326] return rts } -//SEG766 play_increase_level +//SEG767 play_increase_level // Increase the level play_increase_level: { .label _1 = $bf .label b4 = $c0 .label b = $4c - //SEG767 [327] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + //SEG768 [327] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG768 [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG769 [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 lda level cmp #$1d beq !+ bcs b2_from_play_increase_level !: jmp b5 - //SEG769 play_increase_level::@5 + //SEG770 play_increase_level::@5 b5: - //SEG770 [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG771 [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG771 [330] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] + //SEG772 [330] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] b2_from_b5: - //SEG772 [330] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy + //SEG773 [330] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG773 [330] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] + //SEG774 [330] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] b2_from_play_increase_level: - //SEG774 [330] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 + //SEG775 [330] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow jmp b2 - //SEG775 play_increase_level::@2 + //SEG776 play_increase_level::@2 b2: - //SEG776 [331] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG777 [331] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG777 [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG778 [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and level_bcd sta _1 - //SEG778 [333] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG779 [333] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuz1_neq_vbuc1_then_la1 lda _1 cmp #$a bne b3_from_b2 jmp b7 - //SEG779 play_increase_level::@7 + //SEG780 play_increase_level::@7 b7: - //SEG780 [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG781 [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 lda #6 clc adc level_bcd sta level_bcd - //SEG781 [335] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] + //SEG782 [335] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] b3_from_b2: b3_from_b7: - //SEG782 [335] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy + //SEG783 [335] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy jmp b3 - //SEG783 play_increase_level::@3 + //SEG784 play_increase_level::@3 b3: - //SEG784 asm { sed } + //SEG785 asm { sed } sed - //SEG785 [337] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] + //SEG786 [337] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] b4_from_b3: - //SEG786 [337] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuz1=vbuc1 + //SEG787 [337] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuz1=vbuc1 lda #0 sta b jmp b4 - //SEG787 [337] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] + //SEG788 [337] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] b4_from_b4: - //SEG788 [337] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy + //SEG789 [337] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy jmp b4 - //SEG789 play_increase_level::@4 + //SEG790 play_increase_level::@4 b4: - //SEG790 [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG791 [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda b asl asl sta b4 - //SEG791 [339] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_derefidx_vbuz1 + //SEG792 [339] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuz1=pduc1_derefidx_vbuz1_plus_pduc2_derefidx_vbuz1 ldy b4 clc lda score_add_bcd,y @@ -15197,24 +15198,24 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG792 [340] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuz1=_inc_vbuz1 + //SEG793 [340] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG793 [341] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG794 [341] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #5 bne b4_from_b4 jmp b8 - //SEG794 play_increase_level::@8 + //SEG795 play_increase_level::@8 b8: - //SEG795 asm { cld } + //SEG796 asm { cld } cld jmp breturn - //SEG796 play_increase_level::@return + //SEG797 play_increase_level::@return breturn: - //SEG797 [343] return + //SEG798 [343] return rts } -//SEG798 play_remove_lines +//SEG799 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. @@ -15228,147 +15229,147 @@ play_remove_lines: { .label y = $4d .label removed = $4e .label full = $51 - //SEG799 [345] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG800 [345] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG800 [345] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG801 [345] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG801 [345] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG802 [345] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG802 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 + //SEG803 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta w - //SEG803 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#3] -- vbuz1=vbuc1 + //SEG804 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#3] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta r jmp b1 - //SEG804 [345] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG805 [345] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG805 [345] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG806 [345] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG807 [345] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy - //SEG808 [345] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy + //SEG806 [345] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG807 [345] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG808 [345] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG809 [345] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy jmp b1 - //SEG809 play_remove_lines::@1 + //SEG810 play_remove_lines::@1 b1: - //SEG810 [346] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG811 [346] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG811 [346] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG812 [346] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG812 [346] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG813 [346] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG813 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG814 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG814 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG815 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG815 [346] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG816 [346] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG816 [346] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG817 [346] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG818 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG819 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG817 [346] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG818 [346] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG819 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG820 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG820 play_remove_lines::@2 + //SEG821 play_remove_lines::@2 b2: - //SEG821 [347] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG822 [347] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy r lda playfield,y sta c - //SEG822 [348] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 + //SEG823 [348] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 dec r - //SEG823 [349] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 + //SEG824 [349] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b18_from_b2 - //SEG824 [350] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG825 [350] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG825 [350] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG826 [350] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG826 play_remove_lines::@3 + //SEG827 play_remove_lines::@3 b3: - //SEG827 [351] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG828 [351] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy w sta playfield,y - //SEG828 [352] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 + //SEG829 [352] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 dec w - //SEG829 [353] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG830 [353] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG830 [354] if((byte) play_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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG831 [354] if((byte) play_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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG831 play_remove_lines::@9 + //SEG832 play_remove_lines::@9 b9: - //SEG832 [355] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG833 [355] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG833 play_remove_lines::@10 + //SEG834 play_remove_lines::@10 b10: - //SEG834 [356] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG835 [356] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc w sta w - //SEG835 [357] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG836 [357] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG836 [358] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG837 [358] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG837 [358] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy - //SEG838 [358] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy + //SEG838 [358] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG839 [358] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy jmp b4 - //SEG839 play_remove_lines::@4 + //SEG840 play_remove_lines::@4 b4: - //SEG840 [359] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG841 [359] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG841 [360] if((byte) play_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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [360] if((byte) play_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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG842 [361] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG843 [361] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG843 [361] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG844 [361] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy jmp b5 - //SEG844 play_remove_lines::@5 + //SEG845 play_remove_lines::@5 b5: - //SEG845 [362] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG846 [362] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda w cmp #$ff bne b6 jmp breturn - //SEG846 play_remove_lines::@return + //SEG847 play_remove_lines::@return breturn: - //SEG847 [363] return + //SEG848 [363] return rts - //SEG848 play_remove_lines::@6 + //SEG849 play_remove_lines::@6 b6: - //SEG849 [364] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG850 [364] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_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 - //SEG850 [365] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 + //SEG851 [365] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 dec w jmp b5_from_b6 - //SEG851 [366] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] + //SEG852 [366] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] b18_from_b2: jmp b18 - //SEG852 play_remove_lines::@18 + //SEG853 play_remove_lines::@18 b18: - //SEG853 [350] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] + //SEG854 [350] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] b3_from_b18: - //SEG854 [350] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy + //SEG855 [350] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG855 play_lock_current +//SEG856 play_lock_current // Lock the current piece onto the playfield play_lock_current: { .label ypos2 = $53 @@ -15381,111 +15382,111 @@ play_lock_current: { .label i_3 = $55 .label i_7 = $55 .label i_9 = $55 - //SEG856 [367] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG857 [367] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos asl sta ypos2 - //SEG857 [368] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG858 [368] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG858 [368] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG859 [368] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG859 [368] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG860 [368] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG860 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG861 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG861 play_lock_current::@1 + //SEG862 play_lock_current::@1 b1: - //SEG862 [369] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG863 [369] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG863 [370] (byte) play_lock_current::col#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 + //SEG864 [370] (byte) play_lock_current::col#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG864 [371] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG865 [371] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG865 [371] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 + //SEG866 [371] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG866 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG867 [371] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG867 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG868 [371] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG868 play_lock_current::@2 + //SEG869 play_lock_current::@2 b2: - //SEG869 [372] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG870 [372] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG870 [373] if(*((byte*) current_piece_gfx#111 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG871 [373] if(*((byte*) current_piece_gfx#111 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG871 play_lock_current::@4 + //SEG872 play_lock_current::@4 b4: - //SEG872 [374] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#21 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG873 [374] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#21 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y jmp b3 - //SEG873 play_lock_current::@3 + //SEG874 play_lock_current::@3 b3: - //SEG874 [375] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG875 [375] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG875 [376] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG876 [376] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG876 [377] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG877 [377] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b8 jmp b5 - //SEG877 play_lock_current::@5 + //SEG878 play_lock_current::@5 b5: - //SEG878 [378] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG879 [378] (byte) play_lock_current::ypos2#1 ← (byte) play_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 - //SEG879 [379] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG880 [379] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG880 [380] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG881 [380] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG881 play_lock_current::@return + //SEG882 play_lock_current::@return breturn: - //SEG882 [381] return + //SEG883 [381] return rts - //SEG883 play_lock_current::@7 + //SEG884 play_lock_current::@7 b7: - //SEG884 [382] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG885 [382] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG885 [368] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG886 [368] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG886 [368] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG887 [368] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG888 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG887 [368] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG888 [368] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG889 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG889 play_lock_current::@8 + //SEG890 play_lock_current::@8 b8: - //SEG890 [383] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG891 [383] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG891 [371] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG892 [371] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG892 [371] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG893 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG894 [371] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG893 [371] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG894 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG895 [371] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG895 keyboard_event_pressed +//SEG896 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed keyboard_event_pressed: { @@ -15499,69 +15500,69 @@ keyboard_event_pressed: { .label keycode = $58 .label return_11 = $c8 .label return_12 = $a8 - //SEG896 [385] (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 + //SEG897 [385] (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 - //SEG897 [386] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG898 [386] (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 - //SEG898 [387] (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 + //SEG899 [387] (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 - //SEG899 [388] (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 + //SEG900 [388] (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 - //SEG900 keyboard_event_pressed::@return + //SEG901 keyboard_event_pressed::@return breturn: - //SEG901 [389] return + //SEG902 [389] return rts } -//SEG902 keyboard_event_get +//SEG903 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { .label return = $59 .label return_3 = $7c - //SEG903 [390] 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 + //SEG904 [390] 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 - //SEG904 keyboard_event_get::@3 + //SEG905 keyboard_event_get::@3 b3: - //SEG905 [391] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG906 [391] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG906 [392] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG907 [392] (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 - //SEG907 [393] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG908 [393] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG908 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG909 [393] 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 + //SEG909 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG910 [393] 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 - //SEG910 [393] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG911 [393] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG911 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG912 [393] 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 + //SEG912 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG913 [393] 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 - //SEG913 keyboard_event_get::@return + //SEG914 keyboard_event_get::@return breturn: - //SEG914 [394] return + //SEG915 [394] return rts } -//SEG915 keyboard_event_scan +//SEG916 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -15579,307 +15580,307 @@ keyboard_event_scan: { .label row = $5a .label col = $5c .label event_type = $d7 - //SEG916 [396] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG917 [396] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG917 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG918 [396] 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 + //SEG918 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG919 [396] 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 - //SEG919 [396] 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 + //SEG920 [396] 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 - //SEG920 [396] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG921 [396] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG921 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG922 [396] 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 - //SEG923 [396] 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 + //SEG922 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG923 [396] 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 + //SEG924 [396] 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 - //SEG924 keyboard_event_scan::@1 + //SEG925 keyboard_event_scan::@1 b1: - //SEG925 [397] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG926 [397] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG926 [398] call keyboard_matrix_read + //SEG927 [398] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG927 [399] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG928 [399] (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 - //SEG928 keyboard_event_scan::@25 + //SEG929 keyboard_event_scan::@25 b25: - //SEG929 [400] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG930 [400] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG930 [401] 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 + //SEG931 [401] 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 - //SEG931 keyboard_event_scan::@13 + //SEG932 keyboard_event_scan::@13 b13: - //SEG932 [402] (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 + //SEG933 [402] (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 - //SEG933 [403] 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] + //SEG934 [403] 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: - //SEG934 [403] 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 - //SEG935 [403] 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 + //SEG935 [403] 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 + //SEG936 [403] 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 - //SEG936 keyboard_event_scan::@3 + //SEG937 keyboard_event_scan::@3 b3: - //SEG937 [404] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG938 [404] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG938 [405] 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 + //SEG939 [405] 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 - //SEG939 [406] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG940 [406] 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 - //SEG940 keyboard_event_scan::@20 + //SEG941 keyboard_event_scan::@20 b20: - //SEG941 [407] call keyboard_event_pressed - //SEG942 [384] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG942 [407] call keyboard_event_pressed + //SEG943 [384] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG943 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG944 [384] 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 - //SEG944 [408] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG945 [408] (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 - //SEG945 keyboard_event_scan::@26 + //SEG946 keyboard_event_scan::@26 b26: - //SEG946 [409] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG947 [409] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG947 [410] 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 + //SEG948 [410] 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 - //SEG948 [411] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG949 [411] 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 - //SEG949 keyboard_event_scan::@21 + //SEG950 keyboard_event_scan::@21 b21: - //SEG950 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG951 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG951 [412] 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 + //SEG952 [412] 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 - //SEG952 [412] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG953 [412] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG953 [412] 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 + //SEG954 [412] 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 - //SEG954 keyboard_event_scan::@9 + //SEG955 keyboard_event_scan::@9 b9: - //SEG955 [413] call keyboard_event_pressed - //SEG956 [384] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG956 [413] call keyboard_event_pressed + //SEG957 [384] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG957 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG958 [384] 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 - //SEG958 [414] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG959 [414] (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 - //SEG959 keyboard_event_scan::@27 + //SEG960 keyboard_event_scan::@27 b27: - //SEG960 [415] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG961 [415] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG961 [416] 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 + //SEG962 [416] 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 jmp b22 - //SEG962 keyboard_event_scan::@22 + //SEG963 keyboard_event_scan::@22 b22: - //SEG963 [417] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG964 [417] (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 - //SEG964 [418] 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] + //SEG965 [418] 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: - //SEG965 [418] 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 + //SEG966 [418] 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 - //SEG966 keyboard_event_scan::@10 + //SEG967 keyboard_event_scan::@10 b10: - //SEG967 [419] call keyboard_event_pressed - //SEG968 [384] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG968 [419] call keyboard_event_pressed + //SEG969 [384] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG969 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG970 [384] 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 - //SEG970 [420] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG971 [420] (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 - //SEG971 keyboard_event_scan::@28 + //SEG972 keyboard_event_scan::@28 b28: - //SEG972 [421] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG973 [421] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG973 [422] 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 + //SEG974 [422] 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 jmp b23 - //SEG974 keyboard_event_scan::@23 + //SEG975 keyboard_event_scan::@23 b23: - //SEG975 [423] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 + //SEG976 [423] (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 - //SEG976 [424] 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] + //SEG977 [424] 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: - //SEG977 [424] 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 + //SEG978 [424] 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 - //SEG978 keyboard_event_scan::@11 + //SEG979 keyboard_event_scan::@11 b11: - //SEG979 [425] call keyboard_event_pressed - //SEG980 [384] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG980 [425] call keyboard_event_pressed + //SEG981 [384] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG981 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG982 [384] 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 - //SEG982 [426] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG983 [426] (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 - //SEG983 keyboard_event_scan::@29 + //SEG984 keyboard_event_scan::@29 b29: - //SEG984 [427] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG985 [427] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _26 - //SEG985 [428] 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 + //SEG986 [428] 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 jmp b24 - //SEG986 keyboard_event_scan::@24 + //SEG987 keyboard_event_scan::@24 b24: - //SEG987 [429] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz2_bor_vbuc1 + //SEG988 [429] (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 - //SEG988 keyboard_event_scan::@return + //SEG989 keyboard_event_scan::@return breturn: - //SEG989 [430] return + //SEG990 [430] return rts - //SEG990 [431] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG991 [431] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG991 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG992 [431] 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 - //SEG993 [431] 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 + //SEG992 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG993 [431] 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 + //SEG994 [431] 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 - //SEG994 [431] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG995 [431] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG995 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG996 [431] 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 - //SEG997 [431] 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 + //SEG996 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG997 [431] 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 + //SEG998 [431] 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 - //SEG998 keyboard_event_scan::@4 + //SEG999 keyboard_event_scan::@4 b4: - //SEG999 [432] (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 + //SEG1000 [432] (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 - //SEG1000 [433] (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 + //SEG1001 [433] (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 - //SEG1001 [434] 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 + //SEG1002 [434] 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 - //SEG1002 keyboard_event_scan::@15 + //SEG1003 keyboard_event_scan::@15 b15: - //SEG1003 [435] 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 + //SEG1004 [435] 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 - //SEG1004 keyboard_event_scan::@16 + //SEG1005 keyboard_event_scan::@16 b16: - //SEG1005 [436] (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 + //SEG1006 [436] (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 - //SEG1006 [437] 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 + //SEG1007 [437] 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 - //SEG1007 keyboard_event_scan::@17 + //SEG1008 keyboard_event_scan::@17 b17: - //SEG1008 [438] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1009 [438] *((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 - //SEG1009 [439] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1010 [439] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG1010 [440] 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] + //SEG1011 [440] 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: - //SEG1011 [440] 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 + //SEG1012 [440] 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 - //SEG1012 keyboard_event_scan::@5 + //SEG1013 keyboard_event_scan::@5 b5: - //SEG1013 [441] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1014 [441] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1014 [442] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG1015 [442] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1015 [443] 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 + //SEG1016 [443] 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 - //SEG1016 keyboard_event_scan::@19 + //SEG1017 keyboard_event_scan::@19 b19: - //SEG1017 [444] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1018 [444] *((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 - //SEG1018 keyboard_event_scan::@7 + //SEG1019 keyboard_event_scan::@7 b7: - //SEG1019 [445] (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 + //SEG1020 [445] (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 - //SEG1020 [446] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1021 [446] *((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 - //SEG1021 [447] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1022 [447] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG1022 keyboard_matrix_read +//SEG1023 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -15889,75 +15890,75 @@ keyboard_matrix_read: { .label return = $d9 .label rowid = $c9 .label return_2 = $ca - //SEG1023 [448] *((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 + //SEG1024 [448] *((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 - //SEG1024 [449] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG1025 [449] (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 - //SEG1025 keyboard_matrix_read::@return + //SEG1026 keyboard_matrix_read::@return breturn: - //SEG1026 [450] return + //SEG1027 [450] return rts } -//SEG1027 render_show +//SEG1028 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .label d018val = $5f - //SEG1028 [451] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG1029 [451] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG1029 [452] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1030 [452] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG1030 render_show::toD0182 + //SEG1031 render_show::toD0182 toD0182: - //SEG1031 [453] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG1032 [453] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] b2_from_toD0182: - //SEG1032 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuz1=vbuc1 + //SEG1033 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuz1=vbuc1 lda #toD0182_return sta d018val jmp b2 - //SEG1033 render_show::@2 + //SEG1034 render_show::@2 b2: - //SEG1034 [454] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 + //SEG1035 [454] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuz1 lda d018val sta D018 - //SEG1035 [455] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1036 [455] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1036 [456] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1037 [456] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1037 [457] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1038 [457] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing_1 jmp breturn - //SEG1038 render_show::@return + //SEG1039 render_show::@return breturn: - //SEG1039 [458] return + //SEG1040 [458] return rts - //SEG1040 [459] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1041 [459] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG1041 render_show::toD0181 + //SEG1042 render_show::toD0181 toD0181: - //SEG1042 [453] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG1043 [453] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] b2_from_toD0181: - //SEG1043 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuz1=vbuc1 + //SEG1044 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuz1=vbuc1 lda #toD0181_return sta d018val jmp b2 } -//SEG1044 play_init +//SEG1045 play_init // Initialize play data tables play_init: { .label _1 = $db @@ -15966,43 +15967,43 @@ play_init: { .label j = $60 .label b4 = $dc .label b = $64 - //SEG1045 [461] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG1046 [461] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG1046 [461] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1047 [461] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1047 [461] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1048 [461] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1048 [461] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 + //SEG1049 [461] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG1049 [461] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1050 [461] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG1050 [461] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1051 [461] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1052 [461] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1051 [461] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1052 [461] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1053 [461] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG1053 play_init::@1 + //SEG1054 play_init::@1 b1: - //SEG1054 [462] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1055 [462] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _1 - //SEG1055 [463] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG1056 [463] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _1 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG1056 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1057 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda idx ldy j sta playfield_lines_idx,y - //SEG1057 [465] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1058 [465] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -16010,44 +16011,44 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1058 [466] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1059 [466] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG1059 [467] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG1060 [467] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG1060 [468] if((byte) play_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 play_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1061 [468] if((byte) play_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 play_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b3 - //SEG1061 play_init::@3 + //SEG1062 play_init::@3 b3: - //SEG1062 [469] *((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 + //SEG1063 [469] *((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 - //SEG1063 [470] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1064 [470] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1064 [471] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] + //SEG1065 [471] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] b2_from_b3: - //SEG1065 [471] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuz1=vbuc1 + //SEG1066 [471] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuz1=vbuc1 lda #0 sta b jmp b2 - //SEG1066 [471] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] + //SEG1067 [471] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] b2_from_b2: - //SEG1067 [471] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy + //SEG1068 [471] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy jmp b2 - //SEG1068 play_init::@2 + //SEG1069 play_init::@2 b2: - //SEG1069 [472] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG1070 [472] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda b asl asl sta b4 - //SEG1070 [473] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1 + //SEG1071 [473] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuz1=pduc2_derefidx_vbuz1 ldy b4 lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -16057,124 +16058,124 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1071 [474] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuz1=_inc_vbuz1 + //SEG1072 [474] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG1072 [475] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1073 [475] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #5 bne b2_from_b2 jmp breturn - //SEG1073 play_init::@return + //SEG1074 play_init::@return breturn: - //SEG1074 [476] return + //SEG1075 [476] return rts } -//SEG1075 sprites_irq_init +//SEG1076 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1076 asm { sei } + //SEG1077 asm { sei } sei - //SEG1077 [478] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1078 [478] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG1078 asm { ldaCIA1_INTERRUPT } + //SEG1079 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1079 [480] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1080 [480] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1080 [481] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1081 [481] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1081 [482] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1082 [482] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1082 [483] *((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 + //SEG1083 [483] *((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 - //SEG1083 [484] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1084 [484] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1084 [485] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1085 [485] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1085 [486] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1086 [486] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1086 asm { cli } + //SEG1087 asm { cli } cli jmp breturn - //SEG1087 sprites_irq_init::@return + //SEG1088 sprites_irq_init::@return breturn: - //SEG1088 [488] return + //SEG1089 [488] return rts } -//SEG1089 sprites_init +//SEG1090 sprites_init // Setup the sprites sprites_init: { .label s2 = $dd .label xpos = $66 .label s = $65 - //SEG1090 [489] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG1091 [489] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1091 [490] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1092 [490] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1092 [491] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1093 [491] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG1093 [492] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1094 [492] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG1094 [493] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1095 [493] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG1095 [493] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1096 [493] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1096 [493] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 + //SEG1097 [493] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 lda #0 sta s jmp b1 - //SEG1097 [493] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1098 [493] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG1098 [493] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1099 [493] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1099 [493] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1100 [493] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG1100 sprites_init::@1 + //SEG1101 sprites_init::@1 b1: - //SEG1101 [494] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1102 [494] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta s2 - //SEG1102 [495] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1103 [495] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda xpos ldy s2 sta SPRITES_XPOS,y - //SEG1103 [496] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG1104 [496] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy s lda #BLACK sta SPRITES_COLS,y - //SEG1104 [497] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1105 [497] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG1105 [498] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + //SEG1106 [498] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG1106 [499] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1107 [499] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda s cmp #4 bne b1_from_b1 jmp breturn - //SEG1107 sprites_init::@return + //SEG1108 sprites_init::@return breturn: - //SEG1108 [500] return + //SEG1109 [500] return rts } -//SEG1109 render_init +//SEG1110 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 @@ -16184,111 +16185,111 @@ render_init: { .label li_2 = $6a .label i = $67 jmp vicSelectGfxBank1 - //SEG1110 render_init::vicSelectGfxBank1 + //SEG1111 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG1111 [502] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1112 [502] *((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 - //SEG1112 [503] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1113 [503] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG1113 render_init::vicSelectGfxBank1_toDd001 + //SEG1114 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG1114 render_init::vicSelectGfxBank1_@1 + //SEG1115 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG1115 [504] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1116 [504] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b3 - //SEG1116 render_init::@3 + //SEG1117 render_init::@3 b3: - //SEG1117 [505] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1118 [505] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1118 [506] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1119 [506] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1119 [507] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1120 [507] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1120 [508] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1121 [508] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1121 [509] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1122 [509] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1122 [510] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1123 [510] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1123 [511] call render_screen_original - //SEG1124 [524] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1124 [511] call render_screen_original + //SEG1125 [524] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] render_screen_original_from_b3: - //SEG1125 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1126 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1126 [512] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] + //SEG1127 [512] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] b4_from_b3: jmp b4 - //SEG1127 render_init::@4 + //SEG1128 render_init::@4 b4: - //SEG1128 [513] call render_screen_original - //SEG1129 [524] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] + //SEG1129 [513] call render_screen_original + //SEG1130 [524] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] render_screen_original_from_b4: - //SEG1130 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1131 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1131 [514] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG1132 [514] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] b1_from_b4: - //SEG1132 [514] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1133 [514] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1133 [514] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1134 [514] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1134 [514] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuz1=vbuc1 + //SEG1135 [514] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG1135 [514] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1136 [514] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG1136 [514] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1137 [514] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1138 [514] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1137 [514] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1138 [514] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1139 [514] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy jmp b1 - //SEG1139 render_init::@1 + //SEG1140 render_init::@1 b1: - //SEG1140 [515] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1141 [515] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _13 - //SEG1141 [516] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG1142 [516] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _13 lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1142 [517] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG1143 [517] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _14 - //SEG1143 [518] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG1144 [518] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _14 lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1144 [519] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1145 [519] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -16296,7 +16297,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1145 [520] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1146 [520] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -16304,19 +16305,19 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1146 [521] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG1147 [521] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG1147 [522] if((byte) render_init::i#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::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1148 [522] if((byte) render_init::i#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::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp breturn - //SEG1148 render_init::@return + //SEG1149 render_init::@return breturn: - //SEG1149 [523] return + //SEG1150 [523] return rts } -//SEG1150 render_screen_original +//SEG1151 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 render_screen_original: { @@ -16327,191 +16328,191 @@ render_screen_original: { .label oscr = $6d .label ocols = $6f .label y = $6c - //SEG1151 [525] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1152 [525] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG1152 [525] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1153 [525] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1153 [525] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1154 [525] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1154 [525] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1155 [525] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1155 [525] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1156 [525] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1156 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1157 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1157 [525] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG1158 [525] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] b1_from_b7: - //SEG1158 [525] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG1159 [525] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG1160 [525] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy - //SEG1161 [525] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy - //SEG1162 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy + //SEG1159 [525] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG1160 [525] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG1161 [525] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG1162 [525] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy + //SEG1163 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1163 render_screen_original::@1 + //SEG1164 render_screen_original::@1 b1: - //SEG1164 [526] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1165 [526] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG1165 [526] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuz1=vbuc1 + //SEG1166 [526] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG1166 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1167 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1167 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1168 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1168 [526] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1169 [526] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG1169 [526] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1170 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1171 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1170 [526] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1171 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1172 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1172 render_screen_original::@2 + //SEG1173 render_screen_original::@2 b2: - //SEG1173 [527] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1174 [527] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1174 [528] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1175 [528] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1175 [529] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1176 [529] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1176 [530] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1177 [530] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1177 [531] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 + //SEG1178 [531] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG1178 [532] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1179 [532] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #4 bne b2_from_b2 - //SEG1179 [533] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1180 [533] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] b3_from_b2: b3_from_b3: - //SEG1180 [533] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1181 [533] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1182 [533] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1183 [533] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1184 [533] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1181 [533] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1182 [533] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1183 [533] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1184 [533] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1185 [533] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy jmp b3 - //SEG1185 render_screen_original::@3 + //SEG1186 render_screen_original::@3 b3: - //SEG1186 [534] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1187 [534] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y ldy #0 sta (screen),y - //SEG1187 [535] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1188 [535] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1188 [536] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1189 [536] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1189 [537] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1190 [537] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y ldy #0 sta (cols),y - //SEG1190 [538] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1191 [538] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1191 [539] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1192 [539] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1192 [540] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 + //SEG1193 [540] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG1193 [541] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1194 [541] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$24 bne b3_from_b3 - //SEG1194 [542] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1195 [542] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] b4_from_b3: b4_from_b4: - //SEG1195 [542] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1196 [542] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1197 [542] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1196 [542] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1197 [542] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1198 [542] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy jmp b4 - //SEG1198 render_screen_original::@4 + //SEG1199 render_screen_original::@4 b4: - //SEG1199 [543] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1200 [543] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1200 [544] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1201 [544] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1201 [545] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1202 [545] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1202 [546] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1203 [546] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1203 [547] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 + //SEG1204 [547] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG1204 [548] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG1205 [548] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b4_from_b4 jmp b7 - //SEG1205 render_screen_original::@7 + //SEG1206 render_screen_original::@7 b7: - //SEG1206 [549] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1207 [549] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1207 [550] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1208 [550] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b7 jmp breturn - //SEG1208 render_screen_original::@return + //SEG1209 render_screen_original::@return breturn: - //SEG1209 [551] return + //SEG1210 [551] return rts } -//SEG1210 sid_rnd_init +//SEG1211 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1211 [552] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG1212 [552] *((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 - //SEG1212 [553] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1213 [553] *((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 - //SEG1213 sid_rnd_init::@return + //SEG1214 sid_rnd_init::@return breturn: - //SEG1214 [554] return + //SEG1215 [554] return rts } -//SEG1215 sprites_irq +//SEG1216 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers @@ -16525,128 +16526,128 @@ sprites_irq: { .label ptr_2 = $ef .label ptr_3 = $e4 .label ptr_4 = $e5 - //SEG1216 entry interrupt(HARDWARE_CLOBBER) + //SEG1217 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG1217 asm { cld } + //SEG1218 asm { cld } cld - //SEG1218 [556] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG1219 [556] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 lda irq_sprite_ypos sta ypos - //SEG1219 [557] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1220 [557] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG1220 [558] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1221 [558] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG1221 [559] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1222 [559] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG1222 [560] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG1223 [560] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 - //SEG1223 [561] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG1224 [561] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy irq_raster_next iny sty _0 - //SEG1224 [562] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuz2 + //SEG1225 [562] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuz2 lda _0 sta raster_sprite_gfx_modify jmp b1 - //SEG1225 sprites_irq::@1 + //SEG1226 sprites_irq::@1 b1: - //SEG1226 [563] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1227 [563] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b1 jmp b8 - //SEG1227 sprites_irq::@8 + //SEG1228 sprites_irq::@8 b8: - //SEG1228 [564] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + //SEG1229 [564] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG1229 [565] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG1230 [565] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 jmp b9 - //SEG1230 sprites_irq::@9 + //SEG1231 sprites_irq::@9 b9: - //SEG1231 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG1232 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG1232 [567] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG1233 [567] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_3 - //SEG1233 [568] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG1234 [568] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1234 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG1235 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1235 [570] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + //SEG1236 [570] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 ldy ptr_3 iny sty ptr_4 - //SEG1236 [571] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + //SEG1237 [571] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b3 - //SEG1237 sprites_irq::@3 + //SEG1238 sprites_irq::@3 b3: - //SEG1238 [572] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + //SEG1239 [572] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 ldy irq_cnt iny sty irq_cnt_1 - //SEG1239 [573] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1240 [573] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #9 beq b4 jmp b11 - //SEG1240 sprites_irq::@11 + //SEG1241 sprites_irq::@11 b11: - //SEG1241 [574] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG1242 [574] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt_1 cmp #$a beq b5 jmp b12 - //SEG1242 sprites_irq::@12 + //SEG1243 sprites_irq::@12 b12: - //SEG1243 [575] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz2_plus_vbuc1 + //SEG1244 [575] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz2_plus_vbuc1 lda #$14 clc adc irq_raster_next sta irq_raster_next_3 - //SEG1244 [576] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG1245 [576] (byte) irq_sprite_ypos#3 ← (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_3 - //SEG1245 [577] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG1246 [577] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr_3 - //SEG1246 [578] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + //SEG1247 [578] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] b7_from_b12: b7_from_b15: b7_from_b5: - //SEG1247 [578] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + //SEG1248 [578] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy jmp b7 - //SEG1248 sprites_irq::@7 + //SEG1249 sprites_irq::@7 b7: - //SEG1249 [579] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1250 [579] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 lda irq_raster_next_4 sta RASTER - //SEG1250 [580] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1251 [580] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG1251 sprites_irq::@return + //SEG1252 sprites_irq::@return breturn: - //SEG1252 [581] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1253 [581] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -16654,67 +16655,67 @@ sprites_irq: { regy: ldy #00 rti - //SEG1253 sprites_irq::@5 + //SEG1254 sprites_irq::@5 b5: - //SEG1254 [582] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1255 [582] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt_2 - //SEG1255 [583] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1256 [583] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next_2 - //SEG1256 [584] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG1257 [584] (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 - //SEG1257 [585] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG1258 [585] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr_2 jmp b7_from_b5 - //SEG1258 sprites_irq::@4 + //SEG1259 sprites_irq::@4 b4: - //SEG1259 [586] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG1260 [586] (byte) irq_raster_next#1 ← (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_1 - //SEG1260 [587] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1261 [587] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos_1 - //SEG1261 [588] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG1262 [588] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG1262 sprites_irq::toSpritePtr2 + //SEG1263 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b15 - //SEG1263 sprites_irq::@15 + //SEG1264 sprites_irq::@15 b15: - //SEG1264 [589] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1265 [589] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr_1 jmp b7_from_b15 - //SEG1265 sprites_irq::@2 + //SEG1266 sprites_irq::@2 b2: - //SEG1266 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG1267 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_1 - //SEG1267 [591] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG1268 [591] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_1 - //SEG1268 [592] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG1269 [592] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1269 [593] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG1270 [593] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1270 [594] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + //SEG1271 [594] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 ldy ptr_1 iny sty ptr_2 - //SEG1271 [595] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + //SEG1272 [595] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 lda ptr_2 sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 @@ -16727,8 +16728,6 @@ sprites_irq: { keyboard_events: .fill 8, 0 // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() keyboard_scan_values: .fill 8, 0 - // Tetris Game for the Commodore 64 - // The tetris pieces // The T-piece .align $40 PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 @@ -18045,17 +18044,20 @@ Allocated (was zp ZP_BYTE:162) zp ZP_BYTE:42 [ play_collision::i#1 ] Allocated (was zp ZP_DWORD:185) zp ZP_DWORD:43 [ play_update_score::add_bcd#0 ] Allocated (was zp ZP_BYTE:226) zp ZP_BYTE:47 [ sprites_irq::raster_sprite_gfx_modify#0 ] Interrupt procedure sprites_irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG1216 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG1252 [581] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG1252 [581] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG1217 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG1253 [581] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG1253 [581] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tetris Game for the Commodore 64 +// The tetris game tries to match NES tetris gameplay pretty closely +// Source: https://meatfighter.com/nintendotetrisai/ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -18142,8 +18144,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b - // Tetris Game for the Commodore 64 - // Memory Layout and Shared Data // Address of the first screen .label PLAYFIELD_SCREEN_1 = $400 // Address of the second screen @@ -18216,405 +18216,405 @@ ASSEMBLER BEFORE OPTIMIZATION .label current_piece_100 = 5 .label current_piece_101 = 5 .label current_piece_102 = 5 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b14 -//SEG3 @14 +//SEG4 @14 b14: -//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} -//SEG6 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} -//SEG7 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} +//SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} +//SEG7 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} +//SEG8 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} jmp b23 -//SEG8 @23 +//SEG9 @23 b23: -//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG10 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} jmp b24 -//SEG10 @24 +//SEG11 @24 b24: -//SEG11 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG12 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG12 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 +//SEG13 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG13 [8] phi from @24 to toSpritePtr1 [phi:@24->toSpritePtr1] +//SEG14 [8] phi from @24 to toSpritePtr1 [phi:@24->toSpritePtr1] toSpritePtr1_from_b24: jmp toSpritePtr1 -//SEG14 toSpritePtr1 +//SEG15 toSpritePtr1 toSpritePtr1: jmp b39 -//SEG15 @39 +//SEG16 @39 b39: -//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 +//SEG17 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG17 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG18 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG18 [11] phi from @39 to @38 [phi:@39->@38] +//SEG19 [11] phi from @39 to @38 [phi:@39->@38] b38_from_b39: jmp b38 -//SEG19 @38 +//SEG20 @38 b38: -//SEG20 [12] call main -//SEG21 [14] phi from @38 to main [phi:@38->main] +//SEG21 [12] call main +//SEG22 [14] phi from @38 to main [phi:@38->main] main_from_b38: jsr main -//SEG22 [13] phi from @38 to @end [phi:@38->@end] +//SEG23 [13] phi from @38 to @end [phi:@38->@end] bend_from_b38: jmp bend -//SEG23 @end +//SEG24 @end bend: -//SEG24 main +//SEG25 main main: { - //SEG25 [15] call sid_rnd_init + //SEG26 [15] call sid_rnd_init jsr sid_rnd_init jmp b25 - //SEG26 main::@25 + //SEG27 main::@25 b25: - //SEG27 asm { sei } + //SEG28 asm { sei } sei - //SEG28 [17] call render_init - //SEG29 [501] phi from main::@25 to render_init [phi:main::@25->render_init] + //SEG29 [17] call render_init + //SEG30 [501] phi from main::@25 to render_init [phi:main::@25->render_init] render_init_from_b25: jsr render_init - //SEG30 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG31 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] b26_from_b25: jmp b26 - //SEG31 main::@26 + //SEG32 main::@26 b26: - //SEG32 [19] call sprites_init + //SEG33 [19] call sprites_init jsr sprites_init - //SEG33 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG34 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] b27_from_b26: jmp b27 - //SEG34 main::@27 + //SEG35 main::@27 b27: - //SEG35 [21] call sprites_irq_init + //SEG36 [21] call sprites_irq_init jsr sprites_irq_init - //SEG36 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] + //SEG37 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] b28_from_b27: jmp b28 - //SEG37 main::@28 + //SEG38 main::@28 b28: - //SEG38 [23] call play_init - //SEG39 [460] phi from main::@28 to play_init [phi:main::@28->play_init] + //SEG39 [23] call play_init + //SEG40 [460] phi from main::@28 to play_init [phi:main::@28->play_init] play_init_from_b28: jsr play_init - //SEG40 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] + //SEG41 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] b29_from_b28: jmp b29 - //SEG41 main::@29 + //SEG42 main::@29 b29: - //SEG42 [25] call play_spawn_current - //SEG43 [285] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] + //SEG43 [25] call play_spawn_current + //SEG44 [285] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] play_spawn_current_from_b29: - //SEG44 [285] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG45 [285] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG45 [285] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG46 [285] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#1] -- vbuz1=vbuc1 lda #0 sta next_piece_idx jsr play_spawn_current - //SEG46 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + //SEG47 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] b30_from_b29: jmp b30 - //SEG47 main::@30 + //SEG48 main::@30 b30: - //SEG48 [27] call play_spawn_current - //SEG49 [285] phi from main::@30 to play_spawn_current [phi:main::@30->play_spawn_current] + //SEG49 [27] call play_spawn_current + //SEG50 [285] phi from main::@30 to play_spawn_current [phi:main::@30->play_spawn_current] play_spawn_current_from_b30: - //SEG50 [285] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@30->play_spawn_current#0] -- register_copy - //SEG51 [285] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@30->play_spawn_current#1] -- register_copy + //SEG51 [285] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@30->play_spawn_current#0] -- register_copy + //SEG52 [285] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@30->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG52 [28] phi from main::@30 to main::@31 [phi:main::@30->main::@31] + //SEG53 [28] phi from main::@30 to main::@31 [phi:main::@30->main::@31] b31_from_b30: jmp b31 - //SEG53 main::@31 + //SEG54 main::@31 b31: - //SEG54 [29] call render_playfield - //SEG55 [150] phi from main::@31 to render_playfield [phi:main::@31->render_playfield] + //SEG55 [29] call render_playfield + //SEG56 [150] phi from main::@31 to render_playfield [phi:main::@31->render_playfield] render_playfield_from_b31: - //SEG56 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_playfield#0] -- vbuxx=vbuc1 + //SEG57 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_playfield#0] -- vbuxx=vbuc1 ldx #$40 jsr render_playfield jmp b32 - //SEG57 main::@32 + //SEG58 main::@32 b32: - //SEG58 [30] (byte~) current_ypos#108 ← (byte) current_ypos#5 -- vbuyy=vbuz1 + //SEG59 [30] (byte~) current_ypos#108 ← (byte) current_ypos#5 -- vbuyy=vbuz1 ldy current_ypos - //SEG59 [31] (byte~) current_xpos#132 ← (byte) current_xpos#102 -- vbuz1=vbuz2 + //SEG60 [31] (byte~) current_xpos#132 ← (byte) current_xpos#102 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_132 - //SEG60 [32] (byte*~) current_piece_gfx#122 ← (byte*) current_piece_gfx#7 -- pbuz1=pbuz2 + //SEG61 [32] (byte*~) current_piece_gfx#122 ← (byte*) current_piece_gfx#7 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_122 lda current_piece_gfx+1 sta current_piece_gfx_122+1 - //SEG61 [33] (byte~) current_piece_char#110 ← (byte) current_piece_char#4 -- vbuxx=vbuz1 + //SEG62 [33] (byte~) current_piece_char#110 ← (byte) current_piece_char#4 -- vbuxx=vbuz1 ldx current_piece_char - //SEG62 [34] call render_moving - //SEG63 [129] phi from main::@32 to render_moving [phi:main::@32->render_moving] + //SEG63 [34] call render_moving + //SEG64 [129] phi from main::@32 to render_moving [phi:main::@32->render_moving] render_moving_from_b32: - //SEG64 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#110 [phi:main::@32->render_moving#0] -- register_copy - //SEG65 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#122 [phi:main::@32->render_moving#1] -- register_copy - //SEG66 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#132 [phi:main::@32->render_moving#2] -- register_copy - //SEG67 [129] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@32->render_moving#3] -- vbuz1=vbuc1 + //SEG65 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#110 [phi:main::@32->render_moving#0] -- register_copy + //SEG66 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#122 [phi:main::@32->render_moving#1] -- register_copy + //SEG67 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#132 [phi:main::@32->render_moving#2] -- register_copy + //SEG68 [129] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@32->render_moving#3] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_33 - //SEG68 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#108 [phi:main::@32->render_moving#4] -- register_copy + //SEG69 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#108 [phi:main::@32->render_moving#4] -- register_copy jsr render_moving jmp b33 - //SEG69 main::@33 + //SEG70 main::@33 b33: - //SEG70 [35] (byte~) next_piece_idx#84 ← (byte) play_spawn_current::piece_idx#2 -- vbuyy=vbuz1 + //SEG71 [35] (byte~) next_piece_idx#84 ← (byte) play_spawn_current::piece_idx#2 -- vbuyy=vbuz1 ldy play_spawn_current.piece_idx - //SEG71 [36] call render_next - //SEG72 [108] phi from main::@33 to render_next [phi:main::@33->render_next] + //SEG72 [36] call render_next + //SEG73 [108] phi from main::@33 to render_next [phi:main::@33->render_next] render_next_from_b33: - //SEG73 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@33->render_next#0] -- register_copy - //SEG74 [108] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->render_next#1] -- vbuaa=vbuc1 + //SEG74 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@33->render_next#0] -- register_copy + //SEG75 [108] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->render_next#1] -- vbuaa=vbuc1 lda #$40 jsr render_next - //SEG75 [37] (byte*~) current_piece#96 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG76 [37] (byte*~) current_piece#96 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._0 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG76 [38] phi from main::@33 to main::@1 [phi:main::@33->main::@1] + //SEG77 [38] phi from main::@33 to main::@1 [phi:main::@33->main::@1] b1_from_b33: - //SEG77 [38] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#0] -- vbuz1=vbuc1 + //SEG78 [38] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG78 [38] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#1] -- vbuz1=vbuc1 + //SEG79 [38] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#1] -- vbuz1=vbuc1 lda #0 sta level - //SEG79 [38] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#2] -- vduz1=vbuc1 + //SEG80 [38] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#2] -- vduz1=vbuc1 lda #0 sta score_bcd lda #0 sta score_bcd+1 sta score_bcd+2 sta score_bcd+3 - //SEG80 [38] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#3] -- vwuz1=vbuc1 + //SEG81 [38] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#3] -- vwuz1=vbuc1 lda #<0 sta lines_bcd lda #>0 sta lines_bcd+1 - //SEG81 [38] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#4] -- vbuz1=vbuc1 + //SEG82 [38] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#4] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG82 [38] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#5] -- vbuz1=vbuc1 + //SEG83 [38] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#5] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG83 [38] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@33->main::@1#6] -- register_copy - //SEG84 [38] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@33->main::@1#7] -- register_copy - //SEG85 [38] phi (byte) current_ypos#10 = (byte) current_ypos#5 [phi:main::@33->main::@1#8] -- register_copy - //SEG86 [38] phi (byte) current_xpos#121 = (byte) current_xpos#102 [phi:main::@33->main::@1#9] -- register_copy - //SEG87 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#7 [phi:main::@33->main::@1#10] -- register_copy - //SEG88 [38] phi (byte) current_orientation#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#11] -- vbuz1=vbuc1 + //SEG84 [38] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@33->main::@1#6] -- register_copy + //SEG85 [38] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@33->main::@1#7] -- register_copy + //SEG86 [38] phi (byte) current_ypos#10 = (byte) current_ypos#5 [phi:main::@33->main::@1#8] -- register_copy + //SEG87 [38] phi (byte) current_xpos#121 = (byte) current_xpos#102 [phi:main::@33->main::@1#9] -- register_copy + //SEG88 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#7 [phi:main::@33->main::@1#10] -- register_copy + //SEG89 [38] phi (byte) current_orientation#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#11] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG89 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#4 [phi:main::@33->main::@1#12] -- register_copy - //SEG90 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#96 [phi:main::@33->main::@1#13] -- register_copy - //SEG91 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@33->main::@1#14] -- register_copy - //SEG92 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->main::@1#15] -- vbuz1=vbuc1 + //SEG90 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#4 [phi:main::@33->main::@1#12] -- register_copy + //SEG91 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#96 [phi:main::@33->main::@1#13] -- register_copy + //SEG92 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@33->main::@1#14] -- register_copy + //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->main::@1#15] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG93 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#16] -- vbuz1=vbuc1 + //SEG94 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#16] -- vbuz1=vbuc1 lda #0 sta render_screen_show jmp b1 - //SEG94 [38] phi from main::@11 to main::@1 [phi:main::@11->main::@1] + //SEG95 [38] phi from main::@11 to main::@1 [phi:main::@11->main::@1] b1_from_b11: - //SEG95 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@11->main::@1#0] -- register_copy - //SEG96 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@11->main::@1#1] -- register_copy - //SEG97 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@11->main::@1#2] -- register_copy - //SEG98 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@11->main::@1#3] -- register_copy - //SEG99 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@11->main::@1#4] -- register_copy - //SEG100 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@11->main::@1#5] -- register_copy - //SEG101 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@11->main::@1#6] -- register_copy - //SEG102 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@11->main::@1#7] -- register_copy - //SEG103 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@11->main::@1#8] -- register_copy - //SEG104 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@11->main::@1#9] -- register_copy - //SEG105 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@11->main::@1#10] -- register_copy - //SEG106 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@11->main::@1#11] -- register_copy - //SEG107 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@11->main::@1#12] -- register_copy - //SEG108 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@11->main::@1#13] -- register_copy - //SEG109 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@11->main::@1#14] -- register_copy + //SEG96 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@11->main::@1#0] -- register_copy + //SEG97 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@11->main::@1#1] -- register_copy + //SEG98 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@11->main::@1#2] -- register_copy + //SEG99 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@11->main::@1#3] -- register_copy + //SEG100 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@11->main::@1#4] -- register_copy + //SEG101 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@11->main::@1#5] -- register_copy + //SEG102 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@11->main::@1#6] -- register_copy + //SEG103 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@11->main::@1#7] -- register_copy + //SEG104 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@11->main::@1#8] -- register_copy + //SEG105 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@11->main::@1#9] -- register_copy + //SEG106 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@11->main::@1#10] -- register_copy + //SEG107 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@11->main::@1#11] -- register_copy + //SEG108 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@11->main::@1#12] -- register_copy + //SEG109 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@11->main::@1#13] -- register_copy + //SEG110 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@11->main::@1#14] -- register_copy jmp b1 - //SEG110 main::@1 + //SEG111 main::@1 b1: jmp b4 - //SEG111 main::@4 + //SEG112 main::@4 b4: - //SEG112 [39] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG113 [39] 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 - //SEG113 [40] phi from main::@4 to main::@6 [phi:main::@4->main::@6] + //SEG114 [40] phi from main::@4 to main::@6 [phi:main::@4->main::@6] b6_from_b4: jmp b6 - //SEG114 main::@6 + //SEG115 main::@6 b6: - //SEG115 [41] call render_show + //SEG116 [41] call render_show jsr render_show - //SEG116 [42] phi from main::@6 to main::@35 [phi:main::@6->main::@35] + //SEG117 [42] phi from main::@6 to main::@35 [phi:main::@6->main::@35] b35_from_b6: jmp b35 - //SEG117 main::@35 + //SEG118 main::@35 b35: - //SEG118 [43] call keyboard_event_scan - //SEG119 [395] phi from main::@35 to keyboard_event_scan [phi:main::@35->keyboard_event_scan] + //SEG119 [43] call keyboard_event_scan + //SEG120 [395] phi from main::@35 to keyboard_event_scan [phi:main::@35->keyboard_event_scan] keyboard_event_scan_from_b35: jsr keyboard_event_scan - //SEG120 [44] phi from main::@35 to main::@36 [phi:main::@35->main::@36] + //SEG121 [44] phi from main::@35 to main::@36 [phi:main::@35->main::@36] b36_from_b35: jmp b36 - //SEG121 main::@36 + //SEG122 main::@36 b36: - //SEG122 [45] call keyboard_event_get + //SEG123 [45] call keyboard_event_get jsr keyboard_event_get - //SEG123 [46] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG124 [46] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 jmp b37 - //SEG124 main::@37 + //SEG125 main::@37 b37: - //SEG125 [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - //SEG126 [48] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 + //SEG126 [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + //SEG127 [48] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b7 jmp b9 - //SEG127 main::@9 + //SEG128 main::@9 b9: - //SEG128 [49] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG129 [49] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b9 - //SEG129 main::@7 + //SEG130 main::@7 b7: - //SEG130 [50] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx + //SEG131 [50] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx stx play_movement.key_event - //SEG131 [51] call play_movement + //SEG132 [51] call play_movement jsr play_movement - //SEG132 [52] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 + //SEG133 [52] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 lda play_movement.return jmp b38 - //SEG133 main::@38 + //SEG134 main::@38 b38: - //SEG134 [53] (byte) main::render#1 ← (byte) play_movement::return#3 + //SEG135 [53] (byte) main::render#1 ← (byte) play_movement::return#3 jmp b11 - //SEG135 main::@11 + //SEG136 main::@11 b11: - //SEG136 [54] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuaa_eq_0_then_la1 + //SEG137 [54] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq b1_from_b11 jmp b23 - //SEG137 main::@23 + //SEG138 main::@23 b23: - //SEG138 [55] (byte~) render_screen_render#70 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 + //SEG139 [55] (byte~) render_screen_render#70 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 ldx render_screen_render - //SEG139 [56] call render_playfield - //SEG140 [150] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] + //SEG140 [56] call render_playfield + //SEG141 [150] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] render_playfield_from_b23: - //SEG141 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@23->render_playfield#0] -- register_copy + //SEG142 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@23->render_playfield#0] -- register_copy jsr render_playfield jmp b39 - //SEG142 main::@39 + //SEG143 main::@39 b39: - //SEG143 [57] (byte~) current_ypos#109 ← (byte) current_ypos#18 -- vbuyy=vbuz1 + //SEG144 [57] (byte~) current_ypos#109 ← (byte) current_ypos#18 -- vbuyy=vbuz1 ldy current_ypos - //SEG144 [58] (byte~) render_screen_render#69 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG145 [58] (byte~) render_screen_render#69 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_69 - //SEG145 [59] (byte~) current_xpos#133 ← (byte) current_xpos#18 -- vbuz1=vbuz2 + //SEG146 [59] (byte~) current_xpos#133 ← (byte) current_xpos#18 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_133 - //SEG146 [60] (byte*~) current_piece_gfx#123 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 + //SEG147 [60] (byte*~) current_piece_gfx#123 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_123 lda current_piece_gfx+1 sta current_piece_gfx_123+1 - //SEG147 [61] (byte~) current_piece_char#111 ← (byte) current_piece_char#15 -- vbuxx=vbuz1 + //SEG148 [61] (byte~) current_piece_char#111 ← (byte) current_piece_char#15 -- vbuxx=vbuz1 ldx current_piece_char - //SEG148 [62] call render_moving - //SEG149 [129] phi from main::@39 to render_moving [phi:main::@39->render_moving] + //SEG149 [62] call render_moving + //SEG150 [129] phi from main::@39 to render_moving [phi:main::@39->render_moving] render_moving_from_b39: - //SEG150 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#111 [phi:main::@39->render_moving#0] -- register_copy - //SEG151 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#123 [phi:main::@39->render_moving#1] -- register_copy - //SEG152 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#133 [phi:main::@39->render_moving#2] -- register_copy - //SEG153 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#69 [phi:main::@39->render_moving#3] -- register_copy - //SEG154 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#109 [phi:main::@39->render_moving#4] -- register_copy + //SEG151 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#111 [phi:main::@39->render_moving#0] -- register_copy + //SEG152 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#123 [phi:main::@39->render_moving#1] -- register_copy + //SEG153 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#133 [phi:main::@39->render_moving#2] -- register_copy + //SEG154 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#69 [phi:main::@39->render_moving#3] -- register_copy + //SEG155 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#109 [phi:main::@39->render_moving#4] -- register_copy jsr render_moving jmp b40 - //SEG155 main::@40 + //SEG156 main::@40 b40: - //SEG156 [63] (byte~) render_screen_render#68 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 + //SEG157 [63] (byte~) render_screen_render#68 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 lda render_screen_render - //SEG157 [64] (byte~) next_piece_idx#85 ← (byte) next_piece_idx#16 -- vbuyy=vbuz1 + //SEG158 [64] (byte~) next_piece_idx#85 ← (byte) next_piece_idx#16 -- vbuyy=vbuz1 ldy next_piece_idx - //SEG158 [65] call render_next - //SEG159 [108] phi from main::@40 to render_next [phi:main::@40->render_next] + //SEG159 [65] call render_next + //SEG160 [108] phi from main::@40 to render_next [phi:main::@40->render_next] render_next_from_b40: - //SEG160 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#85 [phi:main::@40->render_next#0] -- register_copy - //SEG161 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#68 [phi:main::@40->render_next#1] -- register_copy + //SEG161 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#85 [phi:main::@40->render_next#0] -- register_copy + //SEG162 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#68 [phi:main::@40->render_next#1] -- register_copy jsr render_next - //SEG162 [66] phi from main::@40 to main::@41 [phi:main::@40->main::@41] + //SEG163 [66] phi from main::@40 to main::@41 [phi:main::@40->main::@41] b41_from_b40: jmp b41 - //SEG163 main::@41 + //SEG164 main::@41 b41: - //SEG164 [67] call render_score + //SEG165 [67] call render_score jsr render_score - //SEG165 [68] phi from main::@41 to main::@42 [phi:main::@41->main::@42] + //SEG166 [68] phi from main::@41 to main::@42 [phi:main::@41->main::@42] b42_from_b41: jmp b42 - //SEG166 main::@42 + //SEG167 main::@42 b42: - //SEG167 [69] call render_screen_swap + //SEG168 [69] call render_screen_swap jsr render_screen_swap - //SEG168 [38] phi from main::@42 to main::@1 [phi:main::@42->main::@1] + //SEG169 [38] phi from main::@42 to main::@1 [phi:main::@42->main::@1] b1_from_b42: - //SEG169 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@42->main::@1#0] -- register_copy - //SEG170 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@42->main::@1#1] -- register_copy - //SEG171 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@42->main::@1#2] -- register_copy - //SEG172 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@42->main::@1#3] -- register_copy - //SEG173 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@42->main::@1#4] -- register_copy - //SEG174 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@42->main::@1#5] -- register_copy - //SEG175 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@42->main::@1#6] -- register_copy - //SEG176 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@42->main::@1#7] -- register_copy - //SEG177 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@42->main::@1#8] -- register_copy - //SEG178 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@42->main::@1#9] -- register_copy - //SEG179 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@42->main::@1#10] -- register_copy - //SEG180 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@42->main::@1#11] -- register_copy - //SEG181 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@42->main::@1#12] -- register_copy - //SEG182 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@42->main::@1#13] -- register_copy - //SEG183 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@42->main::@1#14] -- register_copy - //SEG184 [38] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@42->main::@1#15] -- register_copy - //SEG185 [38] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@42->main::@1#16] -- register_copy + //SEG170 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@42->main::@1#0] -- register_copy + //SEG171 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@42->main::@1#1] -- register_copy + //SEG172 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@42->main::@1#2] -- register_copy + //SEG173 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@42->main::@1#3] -- register_copy + //SEG174 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@42->main::@1#4] -- register_copy + //SEG175 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@42->main::@1#5] -- register_copy + //SEG176 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@42->main::@1#6] -- register_copy + //SEG177 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@42->main::@1#7] -- register_copy + //SEG178 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@42->main::@1#8] -- register_copy + //SEG179 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@42->main::@1#9] -- register_copy + //SEG180 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@42->main::@1#10] -- register_copy + //SEG181 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@42->main::@1#11] -- register_copy + //SEG182 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@42->main::@1#12] -- register_copy + //SEG183 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@42->main::@1#13] -- register_copy + //SEG184 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@42->main::@1#14] -- register_copy + //SEG185 [38] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@42->main::@1#15] -- register_copy + //SEG186 [38] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@42->main::@1#16] -- register_copy jmp b1 } -//SEG186 render_screen_swap +//SEG187 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG187 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG188 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show jmp breturn - //SEG189 render_screen_swap::@return + //SEG190 render_screen_swap::@return breturn: - //SEG190 [72] return + //SEG191 [72] return rts } -//SEG191 render_score +//SEG192 render_score // Show the current score render_score: { .label score_bytes = score_bcd @@ -18622,153 +18622,153 @@ render_score: { .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG192 [73] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 + //SEG193 [73] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b2_from_render_score - //SEG193 [74] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] + //SEG194 [74] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] b3_from_render_score: jmp b3 - //SEG194 render_score::@3 + //SEG195 render_score::@3 b3: - //SEG195 [75] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] + //SEG196 [75] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] b2_from_b3: - //SEG196 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 + //SEG197 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG197 [75] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG198 [75] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] b2_from_render_score: - //SEG198 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG199 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 jmp b2 - //SEG199 render_score::@2 + //SEG200 render_score::@2 b2: - //SEG200 [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 - //SEG201 [77] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuxx=_deref_pbuc1 + //SEG201 [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 + //SEG202 [77] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuxx=_deref_pbuc1 ldx score_bytes+2 - //SEG202 [78] call render_bcd - //SEG203 [95] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG203 [78] call render_bcd + //SEG204 [95] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] render_bcd_from_b2: - //SEG204 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG205 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 + //SEG205 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG206 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG206 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG207 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG207 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG208 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd jmp b5 - //SEG208 render_score::@5 + //SEG209 render_score::@5 b5: - //SEG209 [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 - //SEG210 [80] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuxx=_deref_pbuc1 + //SEG210 [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 + //SEG211 [80] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuxx=_deref_pbuc1 ldx score_bytes+1 - //SEG211 [81] call render_bcd - //SEG212 [95] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG212 [81] call render_bcd + //SEG213 [95] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] render_bcd_from_b5: - //SEG213 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG214 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 + //SEG214 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG215 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG215 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 + //SEG216 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG216 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG217 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd jmp b6 - //SEG217 render_score::@6 + //SEG218 render_score::@6 b6: - //SEG218 [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 - //SEG219 [83] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 + //SEG219 [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 + //SEG220 [83] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 ldx score_bytes - //SEG220 [84] call render_bcd - //SEG221 [95] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG221 [84] call render_bcd + //SEG222 [95] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] render_bcd_from_b6: - //SEG222 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG223 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 + //SEG223 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG224 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG224 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 + //SEG225 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG225 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG226 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd jmp b7 - //SEG226 render_score::@7 + //SEG227 render_score::@7 b7: - //SEG227 [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 + //SEG228 [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 lda lines_bcd+1 tax - //SEG228 [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 - //SEG229 [87] call render_bcd - //SEG230 [95] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG229 [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 + //SEG230 [87] call render_bcd + //SEG231 [95] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] render_bcd_from_b7: - //SEG231 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG232 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 + //SEG232 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG233 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 ldy #1 - //SEG233 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG234 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG234 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG235 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd jmp b8 - //SEG235 render_score::@8 + //SEG236 render_score::@8 b8: - //SEG236 [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 + //SEG237 [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 lda lines_bcd tax - //SEG237 [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 - //SEG238 [90] call render_bcd - //SEG239 [95] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] + //SEG238 [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 + //SEG239 [90] call render_bcd + //SEG240 [95] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] render_bcd_from_b8: - //SEG240 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy - //SEG241 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuyy=vbuc1 + //SEG241 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy + //SEG242 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG242 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 + //SEG243 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG243 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy + //SEG244 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy jsr render_bcd jmp b9 - //SEG244 render_score::@9 + //SEG245 render_score::@9 b9: - //SEG245 [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 - //SEG246 [92] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 + //SEG246 [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 + //SEG247 [92] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 ldx level_bcd - //SEG247 [93] call render_bcd - //SEG248 [95] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] + //SEG248 [93] call render_bcd + //SEG249 [95] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] render_bcd_from_b9: - //SEG249 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy - //SEG250 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuyy=vbuc1 + //SEG250 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy + //SEG251 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG251 [95] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 + //SEG252 [95] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG252 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy + //SEG253 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy jsr render_bcd jmp breturn - //SEG253 render_score::@return + //SEG254 render_score::@return breturn: - //SEG254 [94] return + //SEG255 [94] return rts } -//SEG255 render_bcd +//SEG256 render_bcd // Render BCD digits on a screen. // - screen: pointer to the screen to render on // - offset: offset on the screen @@ -18779,7 +18779,7 @@ render_bcd: { .label screen = 5 .label screen_pos = 7 .label offset = 7 - //SEG256 [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 + //SEG257 [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 lda screen_pos clc adc screen @@ -18787,57 +18787,57 @@ render_bcd: { lda screen_pos+1 adc screen+1 sta screen_pos+1 - //SEG257 [97] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 + //SEG258 [97] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 cpy #0 bne b1_from_render_bcd jmp b2 - //SEG258 render_bcd::@2 + //SEG259 render_bcd::@2 b2: - //SEG259 [98] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG260 [98] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG260 [99] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa + //SEG261 [99] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG261 [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa + //SEG262 [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG262 [101] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG263 [101] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG263 [102] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG264 [102] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] b1_from_render_bcd: b1_from_b2: - //SEG264 [102] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG265 [102] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy jmp b1 - //SEG265 render_bcd::@1 + //SEG266 render_bcd::@1 b1: - //SEG266 [103] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG267 [103] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG267 [104] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa + //SEG268 [104] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG268 [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa + //SEG269 [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG269 [106] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz1 + //SEG270 [106] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: jmp breturn - //SEG270 render_bcd::@return + //SEG271 render_bcd::@return breturn: - //SEG271 [107] return + //SEG272 [107] return rts } -//SEG272 render_next +//SEG273 render_next // Render the next tetromino in the "next" area render_next: { .const next_area_offset = $28*$c+$18+4 @@ -18845,110 +18845,110 @@ render_next: { .label next_piece_gfx = 5 .label screen_next_area = 7 .label l = 9 - //SEG273 [109] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@2 -- vbuaa_eq_0_then_la1 + //SEG274 [109] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_render_next - //SEG274 [110] phi from render_next to render_next::@7 [phi:render_next->render_next::@7] + //SEG275 [110] phi from render_next to render_next::@7 [phi:render_next->render_next::@7] b7_from_render_next: jmp b7 - //SEG275 render_next::@7 + //SEG276 render_next::@7 b7: - //SEG276 [111] phi from render_next::@7 to render_next::@2 [phi:render_next::@7->render_next::@2] + //SEG277 [111] phi from render_next::@7 to render_next::@2 [phi:render_next::@7->render_next::@2] b2_from_b7: - //SEG277 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next::@7->render_next::@2#0] -- pbuz1=pbuc1 + //SEG278 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next::@7->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+next_area_offset sta screen_next_area+1 jmp b2 - //SEG278 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] + //SEG279 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] b2_from_render_next: - //SEG279 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 + //SEG280 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+next_area_offset sta screen_next_area+1 jmp b2 - //SEG280 render_next::@2 + //SEG281 render_next::@2 b2: - //SEG281 [112] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG282 [112] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG282 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG283 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuyy lda PIECES_NEXT_CHARS,y sta next_piece_char - //SEG283 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuxx + //SEG284 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuxx lda PIECES,x sta next_piece_gfx lda PIECES+1,x sta next_piece_gfx+1 - //SEG284 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] + //SEG285 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] b3_from_b2: - //SEG285 [115] phi (byte) render_next::l#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 + //SEG286 [115] phi (byte) render_next::l#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG286 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#10 [phi:render_next::@2->render_next::@3#1] -- register_copy - //SEG287 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy + //SEG287 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#10 [phi:render_next::@2->render_next::@3#1] -- register_copy + //SEG288 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy jmp b3 - //SEG288 [115] phi from render_next::@11 to render_next::@3 [phi:render_next::@11->render_next::@3] + //SEG289 [115] phi from render_next::@11 to render_next::@3 [phi:render_next::@11->render_next::@3] b3_from_b11: - //SEG289 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@11->render_next::@3#0] -- register_copy - //SEG290 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#3 [phi:render_next::@11->render_next::@3#1] -- register_copy - //SEG291 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@11->render_next::@3#2] -- register_copy + //SEG290 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@11->render_next::@3#0] -- register_copy + //SEG291 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#3 [phi:render_next::@11->render_next::@3#1] -- register_copy + //SEG292 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@11->render_next::@3#2] -- register_copy jmp b3 - //SEG292 render_next::@3 + //SEG293 render_next::@3 b3: - //SEG293 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] + //SEG294 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] b4_from_b3: - //SEG294 [116] phi (byte) render_next::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1 + //SEG295 [116] phi (byte) render_next::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG295 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#9 [phi:render_next::@3->render_next::@4#1] -- register_copy - //SEG296 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy + //SEG296 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#9 [phi:render_next::@3->render_next::@4#1] -- register_copy + //SEG297 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy jmp b4 - //SEG297 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] + //SEG298 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] b4_from_b6: - //SEG298 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy - //SEG299 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#2 [phi:render_next::@6->render_next::@4#1] -- register_copy - //SEG300 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy + //SEG299 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy + //SEG300 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#2 [phi:render_next::@6->render_next::@4#1] -- register_copy + //SEG301 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy jmp b4 - //SEG301 render_next::@4 + //SEG302 render_next::@4 b4: - //SEG302 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuaa=_deref_pbuz1 + //SEG303 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuaa=_deref_pbuz1 ldy #0 lda (next_piece_gfx),y - //SEG303 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 + //SEG304 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 inc next_piece_gfx bne !+ inc next_piece_gfx+1 !: - //SEG304 [119] if((byte) render_next::cell#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@5 -- vbuaa_neq_0_then_la1 + //SEG305 [119] if((byte) render_next::cell#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@5 -- vbuaa_neq_0_then_la1 cmp #0 bne b5 jmp b9 - //SEG305 render_next::@9 + //SEG306 render_next::@9 b9: - //SEG306 [120] *((byte*) render_next::screen_next_area#4) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG307 [120] *((byte*) render_next::screen_next_area#4) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (screen_next_area),y jmp b6 - //SEG307 render_next::@6 + //SEG308 render_next::@6 b6: - //SEG308 [121] (byte*) render_next::screen_next_area#2 ← ++ (byte*) render_next::screen_next_area#4 -- pbuz1=_inc_pbuz1 + //SEG309 [121] (byte*) render_next::screen_next_area#2 ← ++ (byte*) render_next::screen_next_area#4 -- pbuz1=_inc_pbuz1 inc screen_next_area bne !+ inc screen_next_area+1 !: - //SEG309 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuxx=_inc_vbuxx + //SEG310 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuxx=_inc_vbuxx inx - //SEG310 [123] if((byte) render_next::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG311 [123] if((byte) render_next::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b4_from_b6 jmp b11 - //SEG311 render_next::@11 + //SEG312 render_next::@11 b11: - //SEG312 [124] (byte*) render_next::screen_next_area#3 ← (byte*) render_next::screen_next_area#2 + (byte/signed byte/word/signed word/dword/signed dword) 36 -- pbuz1=pbuz1_plus_vbuc1 + //SEG313 [124] (byte*) render_next::screen_next_area#3 ← (byte*) render_next::screen_next_area#2 + (byte/signed byte/word/signed word/dword/signed dword) 36 -- pbuz1=pbuz1_plus_vbuc1 lda screen_next_area clc adc #$24 @@ -18956,26 +18956,26 @@ render_next: { bcc !+ inc screen_next_area+1 !: - //SEG313 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 + //SEG314 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 inc l - //SEG314 [126] if((byte) render_next::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [126] if((byte) render_next::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b3_from_b11 jmp breturn - //SEG315 render_next::@return + //SEG316 render_next::@return breturn: - //SEG316 [127] return + //SEG317 [127] return rts - //SEG317 render_next::@5 + //SEG318 render_next::@5 b5: - //SEG318 [128] *((byte*) render_next::screen_next_area#4) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 + //SEG319 [128] *((byte*) render_next::screen_next_area#4) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 lda next_piece_char ldy #0 sta (screen_next_area),y jmp b6 } -//SEG319 render_moving +//SEG320 render_moving // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { @@ -18985,210 +18985,210 @@ render_moving: { .label i = $d .label l = $c .label c = $f - //SEG320 [130] (byte) render_moving::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG321 [130] (byte) render_moving::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG321 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG322 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] b1_from_render_moving: - //SEG322 [131] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG323 [131] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG323 [131] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG324 [131] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG324 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG325 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy jmp b1 - //SEG325 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG326 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] b1_from_b3: - //SEG326 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG327 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG328 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG327 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG328 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG329 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy jmp b1 - //SEG329 render_moving::@1 + //SEG330 render_moving::@1 b1: - //SEG330 [132] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG331 [132] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 -- vbuz1_gt_vbuc1_then_la1 lda ypos2 cmp #2 beq !+ bcs b2 !: jmp b6 - //SEG331 render_moving::@6 + //SEG332 render_moving::@6 b6: - //SEG332 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG333 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc i sta i - //SEG333 [134] phi from render_moving::@5 render_moving::@6 to render_moving::@3 [phi:render_moving::@5/render_moving::@6->render_moving::@3] + //SEG334 [134] phi from render_moving::@5 render_moving::@6 to render_moving::@3 [phi:render_moving::@5/render_moving::@6->render_moving::@3] b3_from_b5: b3_from_b6: - //SEG334 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@6->render_moving::@3#0] -- register_copy + //SEG335 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@6->render_moving::@3#0] -- register_copy jmp b3 - //SEG335 render_moving::@3 + //SEG336 render_moving::@3 b3: - //SEG336 [135] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG337 [135] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG337 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG338 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG338 [137] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG339 [137] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b3 jmp breturn - //SEG339 render_moving::@return + //SEG340 render_moving::@return breturn: - //SEG340 [138] return + //SEG341 [138] return rts - //SEG341 render_moving::@2 + //SEG342 render_moving::@2 b2: - //SEG342 [139] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG343 [139] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 lda render_screen_render_33 clc adc ypos2 - //SEG343 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuaa + //SEG344 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG344 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#58 -- vbuz1=vbuz2 + //SEG345 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#58 -- vbuz1=vbuz2 lda current_xpos_58 sta xpos - //SEG345 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG346 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] b4_from_b2: - //SEG346 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 + //SEG347 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG347 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG348 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG348 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG349 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy jmp b4 - //SEG349 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG350 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] b4_from_b5: - //SEG350 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG351 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG352 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG351 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG352 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG353 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy jmp b4 - //SEG353 render_moving::@4 + //SEG354 render_moving::@4 b4: - //SEG354 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG355 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_63),y - //SEG355 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG356 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG356 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 + //SEG357 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 jmp b8 - //SEG357 render_moving::@8 + //SEG358 render_moving::@8 b8: - //SEG358 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#67 -- pbuz1_derefidx_vbuz2=vbuxx + //SEG359 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#67 -- pbuz1_derefidx_vbuz2=vbuxx ldy xpos txa sta (screen_line),y jmp b5 - //SEG359 render_moving::@5 + //SEG360 render_moving::@5 b5: - //SEG360 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG361 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG361 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 + //SEG362 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG362 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG363 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b4_from_b5 jmp b3_from_b5 } -//SEG363 render_playfield +//SEG364 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label screen_line = 5 .label i = $a .label c = $b .label l = 9 - //SEG364 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG365 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG365 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG366 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG366 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG367 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l jmp b1 - //SEG367 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG368 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG368 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG369 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG369 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG370 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG370 render_playfield::@1 + //SEG371 render_playfield::@1 b1: - //SEG371 [152] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG372 [152] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG372 [153] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa + //SEG373 [153] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa stx $ff clc adc $ff - //SEG373 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa + //SEG374 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG374 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG375 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG375 [155] 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 + //SEG376 [155] 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 - //SEG376 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG377 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG377 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG378 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG378 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG379 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG379 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG380 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG381 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG380 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG381 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG382 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG382 render_playfield::@2 + //SEG383 render_playfield::@2 b2: - //SEG383 [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG384 [156] *((byte*) render_playfield::screen_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 (screen_line),y - //SEG384 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG385 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG385 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG386 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG386 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG387 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG387 [160] 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 + //SEG388 [160] 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 - //SEG388 render_playfield::@3 + //SEG389 render_playfield::@3 b3: - //SEG389 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG390 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG390 [162] 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 + //SEG391 [162] 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 - //SEG391 render_playfield::@return + //SEG392 render_playfield::@return breturn: - //SEG392 [163] return + //SEG393 [163] return rts } -//SEG393 play_movement +//SEG394 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) @@ -19196,144 +19196,144 @@ play_movement: { .label render = 9 .label return = 9 .label key_event = $29 - //SEG394 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG395 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG395 [165] call play_move_down + //SEG396 [165] call play_move_down jsr play_move_down - //SEG396 [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG397 [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa jmp b5 - //SEG397 play_movement::@5 + //SEG398 play_movement::@5 b5: - //SEG398 [167] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 - //SEG399 [168] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuaa + //SEG399 [167] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 + //SEG400 [168] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG400 [169] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG401 [169] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG401 [170] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] + //SEG402 [170] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] breturn_from_b5: breturn_from_b7: - //SEG402 [170] phi (byte) current_xpos#18 = (byte) current_xpos#21 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy - //SEG403 [170] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy - //SEG404 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy - //SEG405 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy + //SEG403 [170] phi (byte) current_xpos#18 = (byte) current_xpos#21 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy + //SEG404 [170] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy + //SEG405 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy + //SEG406 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy jmp breturn - //SEG406 play_movement::@return + //SEG407 play_movement::@return breturn: - //SEG407 [171] return + //SEG408 [171] return rts - //SEG408 play_movement::@1 + //SEG409 play_movement::@1 b1: - //SEG409 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG410 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG410 [173] call play_move_leftright + //SEG411 [173] call play_move_leftright jsr play_move_leftright - //SEG411 [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG412 [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 jmp b6 - //SEG412 play_movement::@6 + //SEG413 play_movement::@6 b6: - //SEG413 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - //SEG414 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa + //SEG414 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + //SEG415 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG415 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG416 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG416 [178] call play_move_rotate + //SEG417 [178] call play_move_rotate jsr play_move_rotate - //SEG417 [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG418 [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 jmp b7 - //SEG418 play_movement::@7 + //SEG419 play_movement::@7 b7: - //SEG419 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - //SEG420 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa + //SEG420 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + //SEG421 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa clc adc return sta return jmp breturn_from_b7 } -//SEG421 play_move_rotate +//SEG422 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed play_move_rotate: { .label orientation = $a - //SEG422 [182] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG423 [182] 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 - //SEG423 play_move_rotate::@6 + //SEG424 play_move_rotate::@6 b6: - //SEG424 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG425 [183] 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 - //SEG425 [184] 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] + //SEG426 [184] 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: - //SEG426 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG427 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG428 [184] 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 + //SEG427 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG428 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG429 [184] 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 - //SEG429 play_move_rotate::@return + //SEG430 play_move_rotate::@return breturn: - //SEG430 [185] return + //SEG431 [185] return rts - //SEG431 play_move_rotate::@2 + //SEG432 play_move_rotate::@2 b2: - //SEG432 [186] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG433 [186] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation - //SEG433 [187] (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 + //SEG434 [187] (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 - //SEG434 [188] 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] + //SEG435 [188] 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: - //SEG435 [188] 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 + //SEG436 [188] 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 - //SEG436 play_move_rotate::@4 + //SEG437 play_move_rotate::@4 b4: - //SEG437 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#25 -- vbuz1=vbuz2 + //SEG438 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#25 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG438 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG439 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG439 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG440 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG440 [192] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG441 [192] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_101 lda current_piece+1 sta current_piece_101+1 - //SEG441 [193] call play_collision - //SEG442 [201] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + //SEG442 [193] call play_collision + //SEG443 [201] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] play_collision_from_b4: - //SEG443 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG444 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG445 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG446 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG444 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG445 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG446 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG447 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG447 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + //SEG448 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 jmp b14 - //SEG448 play_move_rotate::@14 + //SEG449 play_move_rotate::@14 b14: - //SEG449 [195] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 - //SEG450 [196] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG450 [195] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 + //SEG451 [196] 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 - //SEG451 play_move_rotate::@11 + //SEG452 play_move_rotate::@11 b11: - //SEG452 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG453 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG453 [198] (byte*) current_piece_gfx#6 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG454 [198] (byte*) current_piece_gfx#6 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -19341,25 +19341,25 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG454 [184] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG455 [184] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG455 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG456 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG457 [184] 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 + //SEG456 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG457 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG458 [184] 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 - //SEG458 play_move_rotate::@1 + //SEG459 play_move_rotate::@1 b1: - //SEG459 [199] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG460 [199] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 - //SEG460 [200] (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 + //SEG461 [200] (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 } -//SEG461 play_collision +//SEG462 play_collision // Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries // Returns information about the type of the collision detected play_collision: { @@ -19375,7 +19375,7 @@ play_collision: { .label i_3 = $e .label i_11 = $e .label i_13 = $e - //SEG462 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx + //SEG463 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -19383,643 +19383,643 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG463 [203] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG464 [203] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG464 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG465 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] b1_from_play_collision: - //SEG465 [204] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG466 [204] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG466 [204] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG467 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG468 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG468 play_collision::@1 + //SEG469 play_collision::@1 b1: - //SEG469 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG470 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG470 [206] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG471 [206] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta col - //SEG471 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG472 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG472 [207] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 + //SEG473 [207] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG473 [207] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG474 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG474 [207] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG475 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG475 play_collision::@2 + //SEG476 play_collision::@2 b2: - //SEG476 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG477 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG477 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG478 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG478 play_collision::@8 + //SEG479 play_collision::@8 b8: - //SEG479 [210] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG480 [210] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG480 [211] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG481 [211] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG481 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG482 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG482 play_collision::@return + //SEG483 play_collision::@return breturn: - //SEG483 [212] return + //SEG484 [212] return rts - //SEG484 play_collision::@4 + //SEG485 play_collision::@4 b4: - //SEG485 [213] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG486 [213] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG486 [214] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG487 [214] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG487 [211] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG488 [211] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG488 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG489 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG489 play_collision::@5 + //SEG490 play_collision::@5 b5: - //SEG490 [215] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG491 [215] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG491 [211] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG492 [211] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG492 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG493 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG493 play_collision::@6 + //SEG494 play_collision::@6 b6: - //SEG494 [216] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG495 [216] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG495 [211] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG496 [211] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG496 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG497 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG497 play_collision::@3 + //SEG498 play_collision::@3 b3: - //SEG498 [217] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG499 [217] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG499 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG500 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG500 [219] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG501 [219] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 jmp b17 - //SEG501 play_collision::@17 + //SEG502 play_collision::@17 b17: - //SEG502 [220] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG503 [220] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG503 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG504 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG504 [222] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG505 [222] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG505 [211] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG506 [211] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG506 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG507 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG507 play_collision::@20 + //SEG508 play_collision::@20 b20: - //SEG508 [223] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG509 [223] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG509 [204] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG510 [204] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG510 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG511 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG512 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG511 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG512 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG513 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG513 play_collision::@21 + //SEG514 play_collision::@21 b21: - //SEG514 [224] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG515 [224] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG515 [207] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG516 [207] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG516 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG517 [207] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG518 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG517 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG518 [207] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG519 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG519 play_move_leftright +//SEG520 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed play_move_leftright: { - //SEG520 [225] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG521 [225] 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 - //SEG521 play_move_leftright::@6 + //SEG522 play_move_leftright::@6 b6: - //SEG522 [226] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG523 [226] 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 - //SEG523 play_move_leftright::@7 + //SEG524 play_move_leftright::@7 b7: - //SEG524 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG525 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG525 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG526 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG526 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG527 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG527 [230] (byte*~) current_piece#100 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG528 [230] (byte*~) current_piece#100 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_100 lda current_piece+1 sta current_piece_100+1 - //SEG528 [231] call play_collision - //SEG529 [201] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + //SEG529 [231] call play_collision + //SEG530 [201] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] play_collision_from_b7: - //SEG530 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG531 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG532 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG533 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG531 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG532 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG533 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG534 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG534 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + //SEG535 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 jmp b15 - //SEG535 play_move_leftright::@15 + //SEG536 play_move_leftright::@15 b15: - //SEG536 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - //SEG537 [234] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG537 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + //SEG538 [234] 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 - //SEG538 play_move_leftright::@8 + //SEG539 play_move_leftright::@8 b8: - //SEG539 [235] (byte) current_xpos#5 ← ++ (byte) current_xpos#21 -- vbuz1=_inc_vbuz1 + //SEG540 [235] (byte) current_xpos#5 ← ++ (byte) current_xpos#21 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG540 [236] 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] + //SEG541 [236] 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: - //SEG541 [236] phi (byte) current_xpos#25 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG542 [236] 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 + //SEG542 [236] phi (byte) current_xpos#25 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG543 [236] 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 - //SEG543 [236] 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] + //SEG544 [236] 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: - //SEG544 [236] phi (byte) current_xpos#25 = (byte) current_xpos#21 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG545 [236] 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 + //SEG545 [236] phi (byte) current_xpos#25 = (byte) current_xpos#21 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG546 [236] 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 - //SEG546 play_move_leftright::@return + //SEG547 play_move_leftright::@return breturn: - //SEG547 [237] return + //SEG548 [237] return rts - //SEG548 play_move_leftright::@1 + //SEG549 play_move_leftright::@1 b1: - //SEG549 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#21 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG550 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#21 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG550 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG551 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG551 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG552 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG552 [241] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG553 [241] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_99 lda current_piece+1 sta current_piece_99+1 - //SEG553 [242] call play_collision - //SEG554 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG554 [242] call play_collision + //SEG555 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] play_collision_from_b1: - //SEG555 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG556 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG557 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG558 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG556 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG557 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG558 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG559 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG559 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + //SEG560 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 jmp b14 - //SEG560 play_move_leftright::@14 + //SEG561 play_move_leftright::@14 b14: - //SEG561 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - //SEG562 [245] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG562 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG563 [245] 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 - //SEG563 play_move_leftright::@11 + //SEG564 play_move_leftright::@11 b11: - //SEG564 [246] (byte) current_xpos#7 ← -- (byte) current_xpos#21 -- vbuz1=_dec_vbuz1 + //SEG565 [246] (byte) current_xpos#7 ← -- (byte) current_xpos#21 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG565 play_move_down +//SEG566 play_move_down // Move down the current piece // Return non-zero if a render is needed play_move_down: { - //SEG566 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + //SEG567 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG567 [248] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG568 [248] 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 - //SEG568 [249] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG569 [249] 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 - //SEG569 play_move_down::@8 + //SEG570 play_move_down::@8 b8: - //SEG570 [250] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG571 [250] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG571 [250] 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 + //SEG572 [250] 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 - //SEG572 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG573 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG573 [250] 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 + //SEG574 [250] 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 - //SEG574 play_move_down::@1 + //SEG575 play_move_down::@1 b1: - //SEG575 [251] call keyboard_event_pressed - //SEG576 [384] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG576 [251] call keyboard_event_pressed + //SEG577 [384] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG577 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG578 [384] 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 - //SEG578 [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG579 [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 jmp b17 - //SEG579 play_move_down::@17 + //SEG580 play_move_down::@17 b17: - //SEG580 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - //SEG581 [254] 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 + //SEG581 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG582 [254] 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 - //SEG582 play_move_down::@9 + //SEG583 play_move_down::@9 b9: - //SEG583 [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG584 [255] if((byte) current_movedown_counter#12<(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 - //SEG584 play_move_down::@10 + //SEG585 play_move_down::@10 b10: - //SEG585 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG586 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG586 [257] 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] + //SEG587 [257] 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: - //SEG587 [257] 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 + //SEG588 [257] 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 - //SEG588 play_move_down::@2 + //SEG589 play_move_down::@2 b2: - //SEG589 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG590 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG590 play_move_down::@11 + //SEG591 play_move_down::@11 b11: - //SEG591 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG592 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG592 [260] 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] + //SEG593 [260] 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: - //SEG593 [260] 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 + //SEG594 [260] 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 - //SEG594 play_move_down::@4 + //SEG595 play_move_down::@4 b4: - //SEG595 [261] 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 + //SEG596 [261] 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 - //SEG596 play_move_down::@12 + //SEG597 play_move_down::@12 b12: - //SEG597 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG598 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG598 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 + //SEG599 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG599 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 + //SEG600 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 ldx current_orientation - //SEG600 [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG601 [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_98 lda current_piece+1 sta current_piece_98+1 - //SEG601 [266] call play_collision - //SEG602 [201] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + //SEG602 [266] call play_collision + //SEG603 [201] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] play_collision_from_b12: - //SEG603 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG604 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG605 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG606 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG604 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG605 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG606 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG607 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG607 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + //SEG608 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 jmp b18 - //SEG608 play_move_down::@18 + //SEG609 play_move_down::@18 b18: - //SEG609 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - //SEG610 [269] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG610 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG611 [269] 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 - //SEG611 [270] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG612 [270] 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 - //SEG612 play_move_down::@13 + //SEG613 play_move_down::@13 b13: - //SEG613 [271] call play_lock_current + //SEG614 [271] call play_lock_current jsr play_lock_current - //SEG614 [272] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG615 [272] 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 - //SEG615 play_move_down::@19 + //SEG616 play_move_down::@19 b19: - //SEG616 [273] call play_remove_lines - //SEG617 [344] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG617 [273] call play_remove_lines + //SEG618 [344] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] play_remove_lines_from_b19: jsr play_remove_lines - //SEG618 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuaa=vbuz1 + //SEG619 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuaa=vbuz1 lda play_remove_lines.removed jmp b20 - //SEG619 play_move_down::@20 + //SEG620 play_move_down::@20 b20: - //SEG620 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - //SEG621 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa + //SEG621 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + //SEG622 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa tax - //SEG622 [277] call play_update_score + //SEG623 [277] call play_update_score jsr play_update_score - //SEG623 [278] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] + //SEG624 [278] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] b21_from_b20: jmp b21 - //SEG624 play_move_down::@21 + //SEG625 play_move_down::@21 b21: - //SEG625 [279] call play_spawn_current - //SEG626 [285] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] + //SEG626 [279] call play_spawn_current + //SEG627 [285] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] play_spawn_current_from_b21: - //SEG627 [285] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy - //SEG628 [285] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@21->play_spawn_current#1] -- register_copy + //SEG628 [285] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy + //SEG629 [285] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@21->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG629 [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG630 [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._0 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG630 [281] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] + //SEG631 [281] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] b7_from_b21: - //SEG631 [281] phi (byte) next_piece_idx#31 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy - //SEG632 [281] phi (byte) game_over#28 = (byte) game_over#52 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy - //SEG633 [281] phi (byte) current_xpos#43 = (byte) current_xpos#102 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy - //SEG634 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#7 [phi:play_move_down::@21->play_move_down::@7#3] -- register_copy - //SEG635 [281] phi (byte) current_orientation#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#4] -- vbuz1=vbuc1 + //SEG632 [281] phi (byte) next_piece_idx#31 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy + //SEG633 [281] phi (byte) game_over#28 = (byte) game_over#52 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy + //SEG634 [281] phi (byte) current_xpos#43 = (byte) current_xpos#102 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy + //SEG635 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#7 [phi:play_move_down::@21->play_move_down::@7#3] -- register_copy + //SEG636 [281] phi (byte) current_orientation#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG636 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#4 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy - //SEG637 [281] phi (byte*) current_piece#29 = (byte*~) current_piece#103 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy - //SEG638 [281] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy - //SEG639 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy - //SEG640 [281] phi (byte) level#34 = (byte) level#19 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy - //SEG641 [281] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy - //SEG642 [281] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy - //SEG643 [281] phi (byte) current_ypos#38 = (byte) current_ypos#5 [phi:play_move_down::@21->play_move_down::@7#12] -- register_copy + //SEG637 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#4 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy + //SEG638 [281] phi (byte*) current_piece#29 = (byte*~) current_piece#103 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy + //SEG639 [281] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy + //SEG640 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy + //SEG641 [281] phi (byte) level#34 = (byte) level#19 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy + //SEG642 [281] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy + //SEG643 [281] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy + //SEG644 [281] phi (byte) current_ypos#38 = (byte) current_ypos#5 [phi:play_move_down::@21->play_move_down::@7#12] -- register_copy jmp b7 - //SEG644 play_move_down::@7 + //SEG645 play_move_down::@7 b7: - //SEG645 [282] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG646 [282] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG646 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#31 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG647 [282] phi (byte) game_over#15 = (byte) game_over#28 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG648 [282] phi (byte) current_xpos#21 = (byte) current_xpos#43 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG649 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#35 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG650 [282] phi (byte) current_orientation#20 = (byte) current_orientation#38 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG651 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG652 [282] phi (byte*) current_piece#15 = (byte*) current_piece#29 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy - //SEG653 [282] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy - //SEG654 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy - //SEG655 [282] phi (byte) level#17 = (byte) level#34 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy - //SEG656 [282] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy - //SEG657 [282] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy - //SEG658 [282] phi (byte) current_ypos#18 = (byte) current_ypos#38 [phi:play_move_down::@7->play_move_down::@return#12] -- register_copy - //SEG659 [282] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG647 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#31 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG648 [282] phi (byte) game_over#15 = (byte) game_over#28 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG649 [282] phi (byte) current_xpos#21 = (byte) current_xpos#43 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG650 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#35 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG651 [282] phi (byte) current_orientation#20 = (byte) current_orientation#38 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG652 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG653 [282] phi (byte*) current_piece#15 = (byte*) current_piece#29 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy + //SEG654 [282] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy + //SEG655 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy + //SEG656 [282] phi (byte) level#17 = (byte) level#34 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy + //SEG657 [282] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy + //SEG658 [282] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy + //SEG659 [282] phi (byte) current_ypos#18 = (byte) current_ypos#38 [phi:play_move_down::@7->play_move_down::@return#12] -- register_copy + //SEG660 [282] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG660 [282] 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#14] -- vbuxx=vbuc1 + //SEG661 [282] 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#14] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG661 [282] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG662 [282] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG662 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG663 [282] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG664 [282] phi (byte) current_xpos#21 = (byte) current_xpos#121 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG665 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#111 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG666 [282] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG667 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG668 [282] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG669 [282] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy - //SEG670 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy - //SEG671 [282] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy - //SEG672 [282] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy - //SEG673 [282] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy - //SEG674 [282] phi (byte) current_ypos#18 = (byte) current_ypos#10 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy - //SEG675 [282] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#13] -- register_copy - //SEG676 [282] 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#14] -- vbuxx=vbuc1 + //SEG663 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG664 [282] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG665 [282] phi (byte) current_xpos#21 = (byte) current_xpos#121 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG666 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#111 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG667 [282] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG668 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG669 [282] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG670 [282] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy + //SEG671 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy + //SEG672 [282] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy + //SEG673 [282] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy + //SEG674 [282] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy + //SEG675 [282] phi (byte) current_ypos#18 = (byte) current_ypos#10 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy + //SEG676 [282] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#13] -- register_copy + //SEG677 [282] 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#14] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG677 play_move_down::@return + //SEG678 play_move_down::@return breturn: - //SEG678 [283] return + //SEG679 [283] return rts - //SEG679 play_move_down::@6 + //SEG680 play_move_down::@6 b6: - //SEG680 [284] (byte) current_ypos#2 ← ++ (byte) current_ypos#10 -- vbuz1=_inc_vbuz1 + //SEG681 [284] (byte) current_ypos#2 ← ++ (byte) current_ypos#10 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG681 [281] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG682 [281] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG682 [281] phi (byte) next_piece_idx#31 = (byte) next_piece_idx#10 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG683 [281] phi (byte) game_over#28 = (byte) game_over#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG684 [281] phi (byte) current_xpos#43 = (byte) current_xpos#121 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG685 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#111 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG686 [281] phi (byte) current_orientation#38 = (byte) current_orientation#13 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG687 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#21 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy - //SEG688 [281] phi (byte*) current_piece#29 = (byte*) current_piece#10 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy - //SEG689 [281] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy - //SEG690 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy - //SEG691 [281] phi (byte) level#34 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy - //SEG692 [281] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy - //SEG693 [281] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy - //SEG694 [281] phi (byte) current_ypos#38 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#12] -- register_copy + //SEG683 [281] phi (byte) next_piece_idx#31 = (byte) next_piece_idx#10 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG684 [281] phi (byte) game_over#28 = (byte) game_over#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG685 [281] phi (byte) current_xpos#43 = (byte) current_xpos#121 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG686 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#111 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG687 [281] phi (byte) current_orientation#38 = (byte) current_orientation#13 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG688 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#21 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG689 [281] phi (byte*) current_piece#29 = (byte*) current_piece#10 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy + //SEG690 [281] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy + //SEG691 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy + //SEG692 [281] phi (byte) level#34 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy + //SEG693 [281] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG694 [281] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy + //SEG695 [281] phi (byte) current_ypos#38 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#12] -- register_copy jmp b7 } -//SEG695 play_spawn_current +//SEG696 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { .label _0 = 4 .label piece_idx = $21 - //SEG696 [286] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 + //SEG697 [286] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 ldx next_piece_idx - //SEG697 [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG698 [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _0 - //SEG698 [288] (byte) current_piece_char#4 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG699 [288] (byte) current_piece_char#4 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char - //SEG699 [289] (byte*) current_piece_gfx#7 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG700 [289] (byte*) current_piece_gfx#7 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _0 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG700 [290] (byte) current_xpos#102 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG701 [290] (byte) current_xpos#102 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG701 [291] (byte) current_ypos#5 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG702 [291] (byte) current_ypos#5 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG702 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#102 -- vbuz1=vbuz2 + //SEG703 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#102 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG703 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#5 -- vbuz1=vbuz2 + //SEG704 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#5 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG704 [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG705 [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 ldy _0 lda PIECES,y sta current_piece_102 lda PIECES+1,y sta current_piece_102+1 - //SEG705 [295] call play_collision - //SEG706 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG706 [295] call play_collision + //SEG707 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] play_collision_from_play_spawn_current: - //SEG707 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG708 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG709 [201] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 + //SEG708 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG709 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG710 [201] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 ldx #0 - //SEG710 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG711 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG711 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + //SEG712 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 jmp b9 - //SEG712 play_spawn_current::@9 + //SEG713 play_spawn_current::@9 b9: - //SEG713 [297] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 - //SEG714 [298] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuaa_neq_vbuc1_then_la1 + //SEG714 [297] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 + //SEG715 [298] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_PLAYFIELD bne b11_from_b9 - //SEG715 [299] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] + //SEG716 [299] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] b1_from_b9: - //SEG716 [299] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG717 [299] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over jmp b1 - //SEG717 play_spawn_current::@1 + //SEG718 play_spawn_current::@1 b1: - //SEG718 [300] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG719 [300] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: - //SEG719 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG720 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b2 - //SEG720 play_spawn_current::@2 + //SEG721 play_spawn_current::@2 b2: - //SEG721 [301] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG722 [301] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@3 -- vbuz1_eq_vbuc1_then_la1 lda piece_idx cmp #7 beq b3_from_b2 jmp breturn - //SEG722 play_spawn_current::@return + //SEG723 play_spawn_current::@return breturn: - //SEG723 [302] return + //SEG724 [302] return rts - //SEG724 [303] phi from play_spawn_current::@2 to play_spawn_current::@3 [phi:play_spawn_current::@2->play_spawn_current::@3] + //SEG725 [303] phi from play_spawn_current::@2 to play_spawn_current::@3 [phi:play_spawn_current::@2->play_spawn_current::@3] b3_from_b2: jmp b3 - //SEG725 play_spawn_current::@3 + //SEG726 play_spawn_current::@3 b3: - //SEG726 [304] call sid_rnd + //SEG727 [304] call sid_rnd jsr sid_rnd - //SEG727 [305] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG728 [305] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 jmp b10 - //SEG728 play_spawn_current::@10 + //SEG729 play_spawn_current::@10 b10: - //SEG729 [306] (byte~) play_spawn_current::$6 ← (byte) sid_rnd::return#2 - //SEG730 [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 + //SEG730 [306] (byte~) play_spawn_current::$6 ← (byte) sid_rnd::return#2 + //SEG731 [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 sta piece_idx - //SEG731 [300] phi from play_spawn_current::@10 to play_spawn_current::@2 [phi:play_spawn_current::@10->play_spawn_current::@2] + //SEG732 [300] phi from play_spawn_current::@10 to play_spawn_current::@2 [phi:play_spawn_current::@10->play_spawn_current::@2] b2_from_b10: - //SEG732 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@10->play_spawn_current::@2#0] -- register_copy + //SEG733 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@10->play_spawn_current::@2#0] -- register_copy jmp b2 - //SEG733 [308] phi from play_spawn_current::@9 to play_spawn_current::@11 [phi:play_spawn_current::@9->play_spawn_current::@11] + //SEG734 [308] phi from play_spawn_current::@9 to play_spawn_current::@11 [phi:play_spawn_current::@9->play_spawn_current::@11] b11_from_b9: jmp b11 - //SEG734 play_spawn_current::@11 + //SEG735 play_spawn_current::@11 b11: - //SEG735 [299] phi from play_spawn_current::@11 to play_spawn_current::@1 [phi:play_spawn_current::@11->play_spawn_current::@1] + //SEG736 [299] phi from play_spawn_current::@11 to play_spawn_current::@1 [phi:play_spawn_current::@11->play_spawn_current::@1] b1_from_b11: - //SEG736 [299] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@11->play_spawn_current::@1#0] -- register_copy + //SEG737 [299] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@11->play_spawn_current::@1#0] -- register_copy jmp b1 } -//SEG737 sid_rnd +//SEG738 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { - //SEG738 [309] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG739 [309] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp breturn - //SEG739 sid_rnd::@return + //SEG740 sid_rnd::@return breturn: - //SEG740 [310] return + //SEG741 [310] return rts } -//SEG741 play_update_score +//SEG742 play_update_score // Update the score based on the number of lines removed play_update_score: { .label lines_before = 4 .label add_bcd = $2b - //SEG742 [311] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 + //SEG743 [311] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_play_update_score jmp b3 - //SEG743 play_update_score::@3 + //SEG744 play_update_score::@3 b3: - //SEG744 [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 + //SEG745 [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG745 [313] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuaa_band_vbuc1 + //SEG746 [313] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuaa_band_vbuc1 and #$f0 sta lines_before - //SEG746 [314] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG747 [314] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG747 [315] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa + //SEG748 [315] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa tay lda score_add_bcd,y sta add_bcd @@ -20029,9 +20029,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG748 asm { sed } + //SEG749 asm { sed } sed - //SEG749 [317] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG750 [317] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc lines_bcd @@ -20039,7 +20039,7 @@ play_update_score: { lda #0 adc lines_bcd+1 sta lines_bcd+1 - //SEG750 [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG751 [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -20053,108 +20053,108 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG751 asm { cld } + //SEG752 asm { cld } cld - //SEG752 [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 + //SEG753 [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG753 [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuaa=vbuaa_band_vbuc1 + //SEG754 [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuaa=vbuaa_band_vbuc1 and #$f0 - //SEG754 [322] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 + //SEG755 [322] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 cmp lines_before beq breturn_from_b3 - //SEG755 [323] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] + //SEG756 [323] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] b4_from_b3: jmp b4 - //SEG756 play_update_score::@4 + //SEG757 play_update_score::@4 b4: - //SEG757 [324] call play_increase_level + //SEG758 [324] call play_increase_level jsr play_increase_level - //SEG758 [325] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] + //SEG759 [325] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] breturn_from_play_update_score: breturn_from_b3: breturn_from_b4: - //SEG759 [325] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy - //SEG760 [325] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy - //SEG761 [325] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy - //SEG762 [325] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy - //SEG763 [325] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy + //SEG760 [325] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy + //SEG761 [325] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy + //SEG762 [325] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy + //SEG763 [325] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy + //SEG764 [325] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy jmp breturn - //SEG764 play_update_score::@return + //SEG765 play_update_score::@return breturn: - //SEG765 [326] return + //SEG766 [326] return rts } -//SEG766 play_increase_level +//SEG767 play_increase_level // Increase the level play_increase_level: { - //SEG767 [327] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + //SEG768 [327] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG768 [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG769 [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 lda level cmp #$1d beq !+ bcs b2_from_play_increase_level !: jmp b5 - //SEG769 play_increase_level::@5 + //SEG770 play_increase_level::@5 b5: - //SEG770 [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG771 [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG771 [330] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] + //SEG772 [330] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] b2_from_b5: - //SEG772 [330] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy + //SEG773 [330] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG773 [330] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] + //SEG774 [330] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] b2_from_play_increase_level: - //SEG774 [330] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 + //SEG775 [330] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow jmp b2 - //SEG775 play_increase_level::@2 + //SEG776 play_increase_level::@2 b2: - //SEG776 [331] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG777 [331] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG777 [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG778 [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and level_bcd - //SEG778 [333] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuaa_neq_vbuc1_then_la1 + //SEG779 [333] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuaa_neq_vbuc1_then_la1 cmp #$a bne b3_from_b2 jmp b7 - //SEG779 play_increase_level::@7 + //SEG780 play_increase_level::@7 b7: - //SEG780 [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG781 [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 lda #6 clc adc level_bcd sta level_bcd - //SEG781 [335] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] + //SEG782 [335] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] b3_from_b2: b3_from_b7: - //SEG782 [335] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy + //SEG783 [335] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy jmp b3 - //SEG783 play_increase_level::@3 + //SEG784 play_increase_level::@3 b3: - //SEG784 asm { sed } + //SEG785 asm { sed } sed - //SEG785 [337] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] + //SEG786 [337] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] b4_from_b3: - //SEG786 [337] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuxx=vbuc1 + //SEG787 [337] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG787 [337] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] + //SEG788 [337] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] b4_from_b4: - //SEG788 [337] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy + //SEG789 [337] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy jmp b4 - //SEG789 play_increase_level::@4 + //SEG790 play_increase_level::@4 b4: - //SEG790 [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG791 [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG791 [339] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa + //SEG792 [339] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa tay clc lda score_add_bcd,y @@ -20169,23 +20169,23 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG792 [340] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx + //SEG793 [340] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx inx - //SEG793 [341] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG794 [341] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b4_from_b4 jmp b8 - //SEG794 play_increase_level::@8 + //SEG795 play_increase_level::@8 b8: - //SEG795 asm { cld } + //SEG796 asm { cld } cld jmp breturn - //SEG796 play_increase_level::@return + //SEG797 play_increase_level::@return breturn: - //SEG797 [343] return + //SEG798 [343] return rts } -//SEG798 play_remove_lines +//SEG799 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. @@ -20196,141 +20196,141 @@ play_remove_lines: { .label y = 4 .label removed = 9 .label full = $b - //SEG799 [345] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG800 [345] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] b1_from_play_remove_lines: - //SEG800 [345] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG801 [345] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG801 [345] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG802 [345] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG802 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 + //SEG803 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG803 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 + //SEG804 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 jmp b1 - //SEG804 [345] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG805 [345] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG805 [345] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG806 [345] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG807 [345] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy - //SEG808 [345] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy + //SEG806 [345] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG807 [345] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG808 [345] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG809 [345] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy jmp b1 - //SEG809 play_remove_lines::@1 + //SEG810 play_remove_lines::@1 b1: - //SEG810 [346] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG811 [346] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG811 [346] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG812 [346] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG812 [346] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG813 [346] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG813 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG814 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG814 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG815 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG815 [346] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG816 [346] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG816 [346] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG817 [346] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG818 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG819 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG817 [346] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG818 [346] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG819 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG820 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG820 play_remove_lines::@2 + //SEG821 play_remove_lines::@2 b2: - //SEG821 [347] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG822 [347] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG822 [348] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG823 [348] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG823 [349] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 + //SEG824 [349] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b18_from_b2 - //SEG824 [350] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG825 [350] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG825 [350] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG826 [350] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG826 play_remove_lines::@3 + //SEG827 play_remove_lines::@3 b3: - //SEG827 [351] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG828 [351] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG828 [352] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG829 [352] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG829 [353] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG830 [353] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG830 [354] if((byte) play_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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG831 [354] if((byte) play_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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG831 play_remove_lines::@9 + //SEG832 play_remove_lines::@9 b9: - //SEG832 [355] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG833 [355] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG833 play_remove_lines::@10 + //SEG834 play_remove_lines::@10 b10: - //SEG834 [356] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG835 [356] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG835 [357] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG836 [357] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG836 [358] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG837 [358] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG837 [358] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy - //SEG838 [358] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy + //SEG838 [358] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG839 [358] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy jmp b4 - //SEG839 play_remove_lines::@4 + //SEG840 play_remove_lines::@4 b4: - //SEG840 [359] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG841 [359] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG841 [360] if((byte) play_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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [360] if((byte) play_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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG842 [361] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG843 [361] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG843 [361] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG844 [361] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy jmp b5 - //SEG844 play_remove_lines::@5 + //SEG845 play_remove_lines::@5 b5: - //SEG845 [362] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG846 [362] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 jmp breturn - //SEG846 play_remove_lines::@return + //SEG847 play_remove_lines::@return breturn: - //SEG847 [363] return + //SEG848 [363] return rts - //SEG848 play_remove_lines::@6 + //SEG849 play_remove_lines::@6 b6: - //SEG849 [364] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG850 [364] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG850 [365] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG851 [365] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5_from_b6 - //SEG851 [366] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] + //SEG852 [366] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] b18_from_b2: jmp b18 - //SEG852 play_remove_lines::@18 + //SEG853 play_remove_lines::@18 b18: - //SEG853 [350] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] + //SEG854 [350] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] b3_from_b18: - //SEG854 [350] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy + //SEG855 [350] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG855 play_lock_current +//SEG856 play_lock_current // Lock the current piece onto the playfield play_lock_current: { .label ypos2 = $10 @@ -20342,169 +20342,169 @@ play_lock_current: { .label i_3 = 9 .label i_7 = 9 .label i_9 = 9 - //SEG856 [367] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG857 [367] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG857 [368] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG858 [368] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] b1_from_play_lock_current: - //SEG858 [368] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG859 [368] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG859 [368] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG860 [368] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG860 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG861 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG861 play_lock_current::@1 + //SEG862 play_lock_current::@1 b1: - //SEG862 [369] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG863 [369] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG863 [370] (byte) play_lock_current::col#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 + //SEG864 [370] (byte) play_lock_current::col#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG864 [371] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG865 [371] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG865 [371] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 + //SEG866 [371] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG866 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG867 [371] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG867 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG868 [371] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG868 play_lock_current::@2 + //SEG869 play_lock_current::@2 b2: - //SEG869 [372] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG870 [372] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG870 [373] if(*((byte*) current_piece_gfx#111 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG871 [373] if(*((byte*) current_piece_gfx#111 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG871 play_lock_current::@4 + //SEG872 play_lock_current::@4 b4: - //SEG872 [374] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#21 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG873 [374] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#21 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y jmp b3 - //SEG873 play_lock_current::@3 + //SEG874 play_lock_current::@3 b3: - //SEG874 [375] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG875 [375] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG875 [376] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG876 [376] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG876 [377] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG877 [377] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 jmp b5 - //SEG877 play_lock_current::@5 + //SEG878 play_lock_current::@5 b5: - //SEG878 [378] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG879 [378] (byte) play_lock_current::ypos2#1 ← (byte) play_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 - //SEG879 [379] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG880 [379] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG880 [380] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG881 [380] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG881 play_lock_current::@return + //SEG882 play_lock_current::@return breturn: - //SEG882 [381] return + //SEG883 [381] return rts - //SEG883 play_lock_current::@7 + //SEG884 play_lock_current::@7 b7: - //SEG884 [382] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG885 [382] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG885 [368] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG886 [368] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG886 [368] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG887 [368] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG888 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG887 [368] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG888 [368] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG889 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG889 play_lock_current::@8 + //SEG890 play_lock_current::@8 b8: - //SEG890 [383] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG891 [383] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG891 [371] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG892 [371] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG892 [371] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG893 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG894 [371] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG893 [371] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG894 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG895 [371] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG895 keyboard_event_pressed +//SEG896 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed keyboard_event_pressed: { .label row_bits = $a .label keycode = 9 - //SEG896 [385] (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 + //SEG897 [385] (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 - //SEG897 [386] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG898 [386] (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 - //SEG898 [387] (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 + //SEG899 [387] (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 - //SEG899 [388] (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 + //SEG900 [388] (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 - //SEG900 keyboard_event_pressed::@return + //SEG901 keyboard_event_pressed::@return breturn: - //SEG901 [389] return + //SEG902 [389] return rts } -//SEG902 keyboard_event_get +//SEG903 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - //SEG903 [390] 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 + //SEG904 [390] 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 - //SEG904 keyboard_event_get::@3 + //SEG905 keyboard_event_get::@3 b3: - //SEG905 [391] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG906 [391] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG906 [392] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG907 [392] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 ldx keyboard_events_size lda keyboard_events,x tax - //SEG907 [393] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG908 [393] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG908 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG909 [393] 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 + //SEG909 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG910 [393] 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 - //SEG910 [393] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG911 [393] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG911 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG912 [393] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 + //SEG912 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG913 [393] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 ldx #$ff jmp breturn - //SEG913 keyboard_event_get::@return + //SEG914 keyboard_event_get::@return breturn: - //SEG914 [394] return + //SEG915 [394] return rts } -//SEG915 keyboard_event_scan +//SEG916 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -20513,375 +20513,375 @@ keyboard_event_scan: { .label row_scan = $b .label keycode = $a .label row = 9 - //SEG916 [396] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG917 [396] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG917 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG918 [396] 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 + //SEG918 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG919 [396] 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 - //SEG919 [396] 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 + //SEG920 [396] 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 - //SEG920 [396] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG921 [396] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG921 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG922 [396] 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 - //SEG923 [396] 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 + //SEG922 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG923 [396] 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 + //SEG924 [396] 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 - //SEG924 keyboard_event_scan::@1 + //SEG925 keyboard_event_scan::@1 b1: - //SEG925 [397] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG926 [397] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG926 [398] call keyboard_matrix_read + //SEG927 [398] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG927 [399] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG928 [399] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b25 - //SEG928 keyboard_event_scan::@25 + //SEG929 keyboard_event_scan::@25 b25: - //SEG929 [400] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG930 [400] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG930 [401] 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 + //SEG931 [401] 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 - //SEG931 keyboard_event_scan::@13 + //SEG932 keyboard_event_scan::@13 b13: - //SEG932 [402] (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 + //SEG933 [402] (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 - //SEG933 [403] 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] + //SEG934 [403] 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: - //SEG934 [403] 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 - //SEG935 [403] 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 + //SEG935 [403] 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 + //SEG936 [403] 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 - //SEG936 keyboard_event_scan::@3 + //SEG937 keyboard_event_scan::@3 b3: - //SEG937 [404] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG938 [404] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG938 [405] 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 + //SEG939 [405] 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 - //SEG939 [406] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG940 [406] 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 - //SEG940 keyboard_event_scan::@20 + //SEG941 keyboard_event_scan::@20 b20: - //SEG941 [407] call keyboard_event_pressed - //SEG942 [384] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG942 [407] call keyboard_event_pressed + //SEG943 [384] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG943 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG944 [384] 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 - //SEG944 [408] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG945 [408] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 jmp b26 - //SEG945 keyboard_event_scan::@26 + //SEG946 keyboard_event_scan::@26 b26: - //SEG946 [409] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - //SEG947 [410] 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 + //SEG947 [409] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG948 [410] 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 - //SEG948 [411] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG949 [411] 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 - //SEG949 keyboard_event_scan::@21 + //SEG950 keyboard_event_scan::@21 b21: - //SEG950 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG951 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG951 [412] 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 + //SEG952 [412] 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 - //SEG952 [412] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG953 [412] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG953 [412] 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 + //SEG954 [412] 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 - //SEG954 keyboard_event_scan::@9 + //SEG955 keyboard_event_scan::@9 b9: - //SEG955 [413] call keyboard_event_pressed - //SEG956 [384] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG956 [413] call keyboard_event_pressed + //SEG957 [384] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG957 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG958 [384] 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 - //SEG958 [414] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG959 [414] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 jmp b27 - //SEG959 keyboard_event_scan::@27 + //SEG960 keyboard_event_scan::@27 b27: - //SEG960 [415] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - //SEG961 [416] 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 + //SEG961 [415] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG962 [416] 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 jmp b22 - //SEG962 keyboard_event_scan::@22 + //SEG963 keyboard_event_scan::@22 b22: - //SEG963 [417] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG964 [417] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_RSHIFT tax - //SEG964 [418] 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] + //SEG965 [418] 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: - //SEG965 [418] 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 + //SEG966 [418] 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 - //SEG966 keyboard_event_scan::@10 + //SEG967 keyboard_event_scan::@10 b10: - //SEG967 [419] call keyboard_event_pressed - //SEG968 [384] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG968 [419] call keyboard_event_pressed + //SEG969 [384] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG969 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG970 [384] 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 - //SEG970 [420] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG971 [420] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 jmp b28 - //SEG971 keyboard_event_scan::@28 + //SEG972 keyboard_event_scan::@28 b28: - //SEG972 [421] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - //SEG973 [422] 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 + //SEG973 [421] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG974 [422] 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 jmp b23 - //SEG974 keyboard_event_scan::@23 + //SEG975 keyboard_event_scan::@23 b23: - //SEG975 [423] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG976 [423] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_CTRL tax - //SEG976 [424] 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] + //SEG977 [424] 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: - //SEG977 [424] 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 + //SEG978 [424] 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 - //SEG978 keyboard_event_scan::@11 + //SEG979 keyboard_event_scan::@11 b11: - //SEG979 [425] call keyboard_event_pressed - //SEG980 [384] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG980 [425] call keyboard_event_pressed + //SEG981 [384] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG981 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG982 [384] 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 - //SEG982 [426] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG983 [426] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 jmp b29 - //SEG983 keyboard_event_scan::@29 + //SEG984 keyboard_event_scan::@29 b29: - //SEG984 [427] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - //SEG985 [428] 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 + //SEG985 [427] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG986 [428] 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 jmp b24 - //SEG986 keyboard_event_scan::@24 + //SEG987 keyboard_event_scan::@24 b24: - //SEG987 [429] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + //SEG988 [429] (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 - //SEG988 keyboard_event_scan::@return + //SEG989 keyboard_event_scan::@return breturn: - //SEG989 [430] return + //SEG990 [430] return rts - //SEG990 [431] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG991 [431] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG991 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG992 [431] 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 - //SEG993 [431] 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 + //SEG992 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG993 [431] 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 + //SEG994 [431] 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 - //SEG994 [431] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG995 [431] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG995 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG996 [431] 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 - //SEG997 [431] 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 + //SEG996 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG997 [431] 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 + //SEG998 [431] 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 - //SEG998 keyboard_event_scan::@4 + //SEG999 keyboard_event_scan::@4 b4: - //SEG999 [432] (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 + //SEG1000 [432] (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 - //SEG1000 [433] (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 + //SEG1001 [433] (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 - //SEG1001 [434] 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 + //SEG1002 [434] 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 - //SEG1002 keyboard_event_scan::@15 + //SEG1003 keyboard_event_scan::@15 b15: - //SEG1003 [435] 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 + //SEG1004 [435] 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 - //SEG1004 keyboard_event_scan::@16 + //SEG1005 keyboard_event_scan::@16 b16: - //SEG1005 [436] (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 + //SEG1006 [436] (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 - //SEG1006 [437] 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 + //SEG1007 [437] 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 - //SEG1007 keyboard_event_scan::@17 + //SEG1008 keyboard_event_scan::@17 b17: - //SEG1008 [438] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1009 [438] *((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 - //SEG1009 [439] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1010 [439] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG1010 [440] 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] + //SEG1011 [440] 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: - //SEG1011 [440] 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 + //SEG1012 [440] 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 - //SEG1012 keyboard_event_scan::@5 + //SEG1013 keyboard_event_scan::@5 b5: - //SEG1013 [441] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1014 [441] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1014 [442] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG1015 [442] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG1015 [443] 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 + //SEG1016 [443] 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 - //SEG1016 keyboard_event_scan::@19 + //SEG1017 keyboard_event_scan::@19 b19: - //SEG1017 [444] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1018 [444] *((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 - //SEG1018 keyboard_event_scan::@7 + //SEG1019 keyboard_event_scan::@7 b7: - //SEG1019 [445] (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 + //SEG1020 [445] (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 - //SEG1020 [446] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG1021 [446] *((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 - //SEG1021 [447] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1022 [447] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG1022 keyboard_matrix_read +//SEG1023 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG1023 [448] *((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 + //SEG1024 [448] *((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 - //SEG1024 [449] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG1025 [449] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG1025 keyboard_matrix_read::@return + //SEG1026 keyboard_matrix_read::@return breturn: - //SEG1026 [450] return + //SEG1027 [450] return rts } -//SEG1027 render_show +//SEG1028 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - //SEG1028 [451] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG1029 [451] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181_from_render_show - //SEG1029 [452] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1030 [452] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] toD0182_from_render_show: jmp toD0182 - //SEG1030 render_show::toD0182 + //SEG1031 render_show::toD0182 toD0182: - //SEG1031 [453] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG1032 [453] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] b2_from_toD0182: - //SEG1032 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 + //SEG1033 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0182_return jmp b2 - //SEG1033 render_show::@2 + //SEG1034 render_show::@2 b2: - //SEG1034 [454] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG1035 [454] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG1035 [455] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1036 [455] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1036 [456] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1037 [456] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1037 [457] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1038 [457] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing jmp breturn - //SEG1038 render_show::@return + //SEG1039 render_show::@return breturn: - //SEG1039 [458] return + //SEG1040 [458] return rts - //SEG1040 [459] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1041 [459] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] toD0181_from_render_show: jmp toD0181 - //SEG1041 render_show::toD0181 + //SEG1042 render_show::toD0181 toD0181: - //SEG1042 [453] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG1043 [453] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] b2_from_toD0181: - //SEG1043 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 + //SEG1044 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b2 } -//SEG1044 play_init +//SEG1045 play_init // Initialize play data tables play_init: { .label pli = 5 .label idx = 2 - //SEG1045 [461] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG1046 [461] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] b1_from_play_init: - //SEG1046 [461] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1047 [461] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1047 [461] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1048 [461] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1048 [461] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 + //SEG1049 [461] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1049 [461] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1050 [461] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG1050 [461] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1051 [461] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1052 [461] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1051 [461] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1052 [461] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1053 [461] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG1053 play_init::@1 + //SEG1054 play_init::@1 b1: - //SEG1054 [462] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1055 [462] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1055 [463] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1056 [463] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG1056 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG1057 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG1057 [465] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1058 [465] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -20889,41 +20889,41 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1058 [466] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1059 [466] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG1059 [467] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx + //SEG1060 [467] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG1060 [468] if((byte) play_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 play_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1061 [468] if((byte) play_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 play_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b3 - //SEG1061 play_init::@3 + //SEG1062 play_init::@3 b3: - //SEG1062 [469] *((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 + //SEG1063 [469] *((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 - //SEG1063 [470] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1064 [470] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1064 [471] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] + //SEG1065 [471] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] b2_from_b3: - //SEG1065 [471] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuxx=vbuc1 + //SEG1066 [471] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG1066 [471] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] + //SEG1067 [471] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] b2_from_b2: - //SEG1067 [471] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy + //SEG1068 [471] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy jmp b2 - //SEG1068 play_init::@2 + //SEG1069 play_init::@2 b2: - //SEG1069 [472] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG1070 [472] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG1070 [473] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa + //SEG1071 [473] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa tay lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -20933,225 +20933,225 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1071 [474] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx + //SEG1072 [474] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx inx - //SEG1072 [475] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1073 [475] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b2_from_b2 jmp breturn - //SEG1073 play_init::@return + //SEG1074 play_init::@return breturn: - //SEG1074 [476] return + //SEG1075 [476] return rts } -//SEG1075 sprites_irq_init +//SEG1076 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1076 asm { sei } + //SEG1077 asm { sei } sei - //SEG1077 [478] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1078 [478] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG1078 asm { ldaCIA1_INTERRUPT } + //SEG1079 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1079 [480] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1080 [480] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1080 [481] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1081 [481] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1081 [482] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1082 [482] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1082 [483] *((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 + //SEG1083 [483] *((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 - //SEG1083 [484] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1084 [484] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1084 [485] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1085 [485] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1085 [486] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1086 [486] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1086 asm { cli } + //SEG1087 asm { cli } cli jmp breturn - //SEG1087 sprites_irq_init::@return + //SEG1088 sprites_irq_init::@return breturn: - //SEG1088 [488] return + //SEG1089 [488] return rts } -//SEG1089 sprites_init +//SEG1090 sprites_init // Setup the sprites sprites_init: { .label xpos = 2 - //SEG1090 [489] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG1091 [489] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1091 [490] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1092 [490] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1092 [491] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1093 [491] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG1093 [492] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1094 [492] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG1094 [493] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1095 [493] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG1095 [493] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1096 [493] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1096 [493] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 + //SEG1097 [493] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1097 [493] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1098 [493] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG1098 [493] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1099 [493] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1099 [493] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1100 [493] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG1100 sprites_init::@1 + //SEG1101 sprites_init::@1 b1: - //SEG1101 [494] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1102 [494] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1102 [495] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG1103 [495] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda xpos sta SPRITES_XPOS,y - //SEG1103 [496] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1104 [496] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG1104 [497] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1105 [497] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG1105 [498] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG1106 [498] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG1106 [499] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1107 [499] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG1107 sprites_init::@return + //SEG1108 sprites_init::@return breturn: - //SEG1108 [500] return + //SEG1109 [500] return rts } -//SEG1109 render_init +//SEG1110 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 .label li_1 = 5 .label li_2 = 7 jmp vicSelectGfxBank1 - //SEG1110 render_init::vicSelectGfxBank1 + //SEG1111 render_init::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG1111 [502] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1112 [502] *((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 - //SEG1112 [503] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1113 [503] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG1113 render_init::vicSelectGfxBank1_toDd001 + //SEG1114 render_init::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG1114 render_init::vicSelectGfxBank1_@1 + //SEG1115 render_init::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG1115 [504] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1116 [504] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b3 - //SEG1116 render_init::@3 + //SEG1117 render_init::@3 b3: - //SEG1117 [505] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1118 [505] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1118 [506] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1119 [506] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1119 [507] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1120 [507] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG1120 [508] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1121 [508] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1121 [509] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1122 [509] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1122 [510] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1123 [510] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1123 [511] call render_screen_original - //SEG1124 [524] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1124 [511] call render_screen_original + //SEG1125 [524] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] render_screen_original_from_b3: - //SEG1125 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1126 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1126 [512] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] + //SEG1127 [512] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] b4_from_b3: jmp b4 - //SEG1127 render_init::@4 + //SEG1128 render_init::@4 b4: - //SEG1128 [513] call render_screen_original - //SEG1129 [524] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] + //SEG1129 [513] call render_screen_original + //SEG1130 [524] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] render_screen_original_from_b4: - //SEG1130 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1131 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1131 [514] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG1132 [514] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] b1_from_b4: - //SEG1132 [514] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1133 [514] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1133 [514] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1134 [514] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1134 [514] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuxx=vbuc1 + //SEG1135 [514] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1135 [514] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1136 [514] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG1136 [514] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1137 [514] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1138 [514] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1137 [514] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1138 [514] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1139 [514] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy jmp b1 - //SEG1139 render_init::@1 + //SEG1140 render_init::@1 b1: - //SEG1140 [515] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1141 [515] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1141 [516] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1142 [516] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1142 [517] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1143 [517] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1143 [518] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1144 [518] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1144 [519] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1145 [519] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -21159,7 +21159,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1145 [520] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1146 [520] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -21167,18 +21167,18 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1146 [521] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG1147 [521] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1147 [522] if((byte) render_init::i#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::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1148 [522] if((byte) render_init::i#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::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp breturn - //SEG1148 render_init::@return + //SEG1149 render_init::@return breturn: - //SEG1149 [523] return + //SEG1150 [523] return rts } -//SEG1150 render_screen_original +//SEG1151 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 render_screen_original: { @@ -21188,361 +21188,361 @@ render_screen_original: { .label oscr = 5 .label ocols = 7 .label y = 2 - //SEG1151 [525] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1152 [525] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] b1_from_render_screen_original: - //SEG1152 [525] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1153 [525] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1153 [525] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1154 [525] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1154 [525] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1155 [525] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1155 [525] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1156 [525] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1156 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1157 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1157 [525] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG1158 [525] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] b1_from_b7: - //SEG1158 [525] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG1159 [525] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG1160 [525] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy - //SEG1161 [525] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy - //SEG1162 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy + //SEG1159 [525] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG1160 [525] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG1161 [525] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG1162 [525] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy + //SEG1163 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy jmp b1 - //SEG1163 render_screen_original::@1 + //SEG1164 render_screen_original::@1 b1: - //SEG1164 [526] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1165 [526] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] b2_from_b1: - //SEG1165 [526] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 + //SEG1166 [526] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1166 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1167 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1167 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1168 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1168 [526] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1169 [526] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] b2_from_b2: - //SEG1169 [526] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1170 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1171 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1170 [526] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1171 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1172 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy jmp b2 - //SEG1172 render_screen_original::@2 + //SEG1173 render_screen_original::@2 b2: - //SEG1173 [527] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1174 [527] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1174 [528] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1175 [528] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1175 [529] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1176 [529] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1176 [530] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1177 [530] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1177 [531] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG1178 [531] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG1178 [532] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1179 [532] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2_from_b2 - //SEG1179 [533] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1180 [533] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] b3_from_b2: b3_from_b3: - //SEG1180 [533] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1181 [533] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1182 [533] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1183 [533] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1184 [533] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1181 [533] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1182 [533] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1183 [533] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1184 [533] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1185 [533] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy jmp b3 - //SEG1185 render_screen_original::@3 + //SEG1186 render_screen_original::@3 b3: - //SEG1186 [534] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1187 [534] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y ldy #0 sta (screen),y - //SEG1187 [535] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1188 [535] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1188 [536] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1189 [536] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1189 [537] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1190 [537] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y ldy #0 sta (cols),y - //SEG1190 [538] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1191 [538] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1191 [539] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1192 [539] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1192 [540] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG1193 [540] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG1193 [541] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1194 [541] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3_from_b3 - //SEG1194 [542] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1195 [542] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] b4_from_b3: b4_from_b4: - //SEG1195 [542] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1196 [542] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1197 [542] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1196 [542] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1197 [542] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1198 [542] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy jmp b4 - //SEG1198 render_screen_original::@4 + //SEG1199 render_screen_original::@4 b4: - //SEG1199 [543] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1200 [543] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1200 [544] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1201 [544] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1201 [545] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1202 [545] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1202 [546] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1203 [546] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1203 [547] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG1204 [547] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG1204 [548] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG1205 [548] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4_from_b4 jmp b7 - //SEG1205 render_screen_original::@7 + //SEG1206 render_screen_original::@7 b7: - //SEG1206 [549] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1207 [549] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1207 [550] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1208 [550] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b7 jmp breturn - //SEG1208 render_screen_original::@return + //SEG1209 render_screen_original::@return breturn: - //SEG1209 [551] return + //SEG1210 [551] return rts } -//SEG1210 sid_rnd_init +//SEG1211 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1211 [552] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG1212 [552] *((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 - //SEG1212 [553] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1213 [553] *((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 - //SEG1213 sid_rnd_init::@return + //SEG1214 sid_rnd_init::@return breturn: - //SEG1214 [554] return + //SEG1215 [554] return rts } -//SEG1215 sprites_irq +//SEG1216 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 .label raster_sprite_gfx_modify = $2f - //SEG1216 entry interrupt(HARDWARE_CLOBBER) + //SEG1217 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG1217 asm { cld } + //SEG1218 asm { cld } cld - //SEG1218 [556] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG1219 [556] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG1219 [557] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1220 [557] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG1220 [558] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1221 [558] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG1221 [559] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1222 [559] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG1222 [560] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1223 [560] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG1223 [561] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG1224 [561] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG1224 [562] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG1225 [562] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx stx raster_sprite_gfx_modify jmp b1 - //SEG1225 sprites_irq::@1 + //SEG1226 sprites_irq::@1 b1: - //SEG1226 [563] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1227 [563] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b1 jmp b8 - //SEG1227 sprites_irq::@8 + //SEG1228 sprites_irq::@8 b8: - //SEG1228 [564] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG1229 [564] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG1229 [565] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG1230 [565] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 jmp b9 - //SEG1230 sprites_irq::@9 + //SEG1231 sprites_irq::@9 b9: - //SEG1231 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1232 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG1232 [567] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1233 [567] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG1233 [568] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1234 [568] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1234 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1235 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1235 [570] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG1236 [570] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1236 [571] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG1237 [571] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b3 - //SEG1237 sprites_irq::@3 + //SEG1238 sprites_irq::@3 b3: - //SEG1238 [572] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1239 [572] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1239 [573] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1240 [573] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #9 beq b4 jmp b11 - //SEG1240 sprites_irq::@11 + //SEG1241 sprites_irq::@11 b11: - //SEG1241 [574] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG1242 [574] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #$a beq b5 jmp b12 - //SEG1242 sprites_irq::@12 + //SEG1243 sprites_irq::@12 b12: - //SEG1243 [575] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1244 [575] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 lda #$14 clc adc irq_raster_next sta irq_raster_next - //SEG1244 [576] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1245 [576] (byte) irq_sprite_ypos#3 ← (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 - //SEG1245 [577] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1246 [577] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG1246 [578] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + //SEG1247 [578] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] b7_from_b12: b7_from_b15: b7_from_b5: - //SEG1247 [578] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + //SEG1248 [578] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy jmp b7 - //SEG1248 sprites_irq::@7 + //SEG1249 sprites_irq::@7 b7: - //SEG1249 [579] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1250 [579] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 lda irq_raster_next sta RASTER - //SEG1250 [580] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1251 [580] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG1251 sprites_irq::@return + //SEG1252 sprites_irq::@return breturn: - //SEG1252 [581] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1253 [581] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG1253 sprites_irq::@5 + //SEG1254 sprites_irq::@5 b5: - //SEG1254 [582] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1255 [582] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1255 [583] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1256 [583] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1256 [584] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1257 [584] (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 - //SEG1257 [585] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1258 [585] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr jmp b7_from_b5 - //SEG1258 sprites_irq::@4 + //SEG1259 sprites_irq::@4 b4: - //SEG1259 [586] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1260 [586] (byte) irq_raster_next#1 ← (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 - //SEG1260 [587] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1261 [587] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG1261 [588] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG1262 [588] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] toSpritePtr2_from_b4: jmp toSpritePtr2 - //SEG1262 sprites_irq::toSpritePtr2 + //SEG1263 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b15 - //SEG1263 sprites_irq::@15 + //SEG1264 sprites_irq::@15 b15: - //SEG1264 [589] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1265 [589] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b7_from_b15 - //SEG1265 sprites_irq::@2 + //SEG1266 sprites_irq::@2 b2: - //SEG1266 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1267 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG1267 [591] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1268 [591] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG1268 [592] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG1269 [592] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1269 [593] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG1270 [593] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1270 [594] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + //SEG1271 [594] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1271 [595] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG1272 [595] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } @@ -21554,8 +21554,6 @@ sprites_irq: { keyboard_events: .fill 8, 0 // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() keyboard_scan_values: .fill 8, 0 - // Tetris Game for the Commodore 64 - // The tetris pieces // The T-piece .align $40 PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 @@ -23602,12 +23600,15 @@ reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER Score: 3365357 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tetris Game for the Commodore 64 +// The tetris game tries to match NES tetris gameplay pretty closely +// Source: https://meatfighter.com/nintendotetrisai/ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -23694,8 +23695,6 @@ Score: 3365357 .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b - // Tetris Game for the Commodore 64 - // Memory Layout and Shared Data // Address of the first screen .label PLAYFIELD_SCREEN_1 = $400 // Address of the second screen @@ -23768,306 +23767,306 @@ Score: 3365357 .label current_piece_100 = 5 .label current_piece_101 = 5 .label current_piece_102 = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 @14 -//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 @14 +//SEG5 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta render_screen_showing -//SEG5 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} -//SEG6 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} -//SEG7 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} -//SEG8 @23 -//SEG9 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} -//SEG10 @24 -//SEG11 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG6 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset .import binary "playfield-screen.imap" }} +//SEG7 kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen .var screen = LoadBinary("playfield-screen.iscr") // Load extended colors for the screen .var extended = LoadBinary("playfield-extended.col") // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8 // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4) // <<6 to move extended colors to the upper 2 bits .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 ) }} +//SEG8 kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col" }} +//SEG9 @23 +//SEG10 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory .for(var sy=0;sy<10;sy++) { .var sprite_gfx_y = sy*20 .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .var gfx_y = sprite_gfx_y + mod(2100+y-sprite_gfx_y,21) .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,gfx_y) } } .byte 0 } } }} +//SEG11 @24 +//SEG12 [6] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG12 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 +//SEG13 [7] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS+$15 sta irq_sprite_ypos -//SEG13 [8] phi from @24 to toSpritePtr1 [phi:@24->toSpritePtr1] -//SEG14 toSpritePtr1 -//SEG15 @39 -//SEG16 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 +//SEG14 [8] phi from @24 to toSpritePtr1 [phi:@24->toSpritePtr1] +//SEG15 toSpritePtr1 +//SEG16 @39 +//SEG17 [9] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuc1 lda #toSpritePtr1_return+3 sta irq_sprite_ptr -//SEG17 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG18 [10] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG18 [11] phi from @39 to @38 [phi:@39->@38] -//SEG19 @38 -//SEG20 [12] call main -//SEG21 [14] phi from @38 to main [phi:@38->main] +//SEG19 [11] phi from @39 to @38 [phi:@39->@38] +//SEG20 @38 +//SEG21 [12] call main +//SEG22 [14] phi from @38 to main [phi:@38->main] jsr main -//SEG22 [13] phi from @38 to @end [phi:@38->@end] -//SEG23 @end -//SEG24 main +//SEG23 [13] phi from @38 to @end [phi:@38->@end] +//SEG24 @end +//SEG25 main main: { - //SEG25 [15] call sid_rnd_init + //SEG26 [15] call sid_rnd_init jsr sid_rnd_init - //SEG26 main::@25 - //SEG27 asm { sei } + //SEG27 main::@25 + //SEG28 asm { sei } sei - //SEG28 [17] call render_init - //SEG29 [501] phi from main::@25 to render_init [phi:main::@25->render_init] + //SEG29 [17] call render_init + //SEG30 [501] phi from main::@25 to render_init [phi:main::@25->render_init] jsr render_init - //SEG30 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] - //SEG31 main::@26 - //SEG32 [19] call sprites_init + //SEG31 [18] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG32 main::@26 + //SEG33 [19] call sprites_init jsr sprites_init - //SEG33 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] - //SEG34 main::@27 - //SEG35 [21] call sprites_irq_init + //SEG34 [20] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG35 main::@27 + //SEG36 [21] call sprites_irq_init jsr sprites_irq_init - //SEG36 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] - //SEG37 main::@28 - //SEG38 [23] call play_init - //SEG39 [460] phi from main::@28 to play_init [phi:main::@28->play_init] + //SEG37 [22] phi from main::@27 to main::@28 [phi:main::@27->main::@28] + //SEG38 main::@28 + //SEG39 [23] call play_init + //SEG40 [460] phi from main::@28 to play_init [phi:main::@28->play_init] jsr play_init - //SEG40 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] - //SEG41 main::@29 - //SEG42 [25] call play_spawn_current - //SEG43 [285] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] - //SEG44 [285] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 + //SEG41 [24] phi from main::@28 to main::@29 [phi:main::@28->main::@29] + //SEG42 main::@29 + //SEG43 [25] call play_spawn_current + //SEG44 [285] phi from main::@29 to play_spawn_current [phi:main::@29->play_spawn_current] + //SEG45 [285] phi (byte) game_over#65 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#0] -- vbuz1=vbuc1 lda #0 sta game_over - //SEG45 [285] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#1] -- vbuz1=vbuc1 + //SEG46 [285] phi (byte) next_piece_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->play_spawn_current#1] -- vbuz1=vbuc1 sta next_piece_idx jsr play_spawn_current - //SEG46 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] - //SEG47 main::@30 - //SEG48 [27] call play_spawn_current - //SEG49 [285] phi from main::@30 to play_spawn_current [phi:main::@30->play_spawn_current] - //SEG50 [285] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@30->play_spawn_current#0] -- register_copy - //SEG51 [285] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@30->play_spawn_current#1] -- register_copy + //SEG47 [26] phi from main::@29 to main::@30 [phi:main::@29->main::@30] + //SEG48 main::@30 + //SEG49 [27] call play_spawn_current + //SEG50 [285] phi from main::@30 to play_spawn_current [phi:main::@30->play_spawn_current] + //SEG51 [285] phi (byte) game_over#65 = (byte) game_over#52 [phi:main::@30->play_spawn_current#0] -- register_copy + //SEG52 [285] phi (byte) next_piece_idx#17 = (byte) play_spawn_current::piece_idx#2 [phi:main::@30->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG52 [28] phi from main::@30 to main::@31 [phi:main::@30->main::@31] - //SEG53 main::@31 - //SEG54 [29] call render_playfield - //SEG55 [150] phi from main::@31 to render_playfield [phi:main::@31->render_playfield] - //SEG56 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_playfield#0] -- vbuxx=vbuc1 + //SEG53 [28] phi from main::@30 to main::@31 [phi:main::@30->main::@31] + //SEG54 main::@31 + //SEG55 [29] call render_playfield + //SEG56 [150] phi from main::@31 to render_playfield [phi:main::@31->render_playfield] + //SEG57 [150] phi (byte) render_screen_render#22 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@31->render_playfield#0] -- vbuxx=vbuc1 ldx #$40 jsr render_playfield - //SEG57 main::@32 - //SEG58 [30] (byte~) current_ypos#108 ← (byte) current_ypos#5 -- vbuyy=vbuz1 + //SEG58 main::@32 + //SEG59 [30] (byte~) current_ypos#108 ← (byte) current_ypos#5 -- vbuyy=vbuz1 ldy current_ypos - //SEG59 [31] (byte~) current_xpos#132 ← (byte) current_xpos#102 -- vbuz1=vbuz2 + //SEG60 [31] (byte~) current_xpos#132 ← (byte) current_xpos#102 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_132 - //SEG60 [32] (byte*~) current_piece_gfx#122 ← (byte*) current_piece_gfx#7 -- pbuz1=pbuz2 + //SEG61 [32] (byte*~) current_piece_gfx#122 ← (byte*) current_piece_gfx#7 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_122 lda current_piece_gfx+1 sta current_piece_gfx_122+1 - //SEG61 [33] (byte~) current_piece_char#110 ← (byte) current_piece_char#4 -- vbuxx=vbuz1 + //SEG62 [33] (byte~) current_piece_char#110 ← (byte) current_piece_char#4 -- vbuxx=vbuz1 ldx current_piece_char - //SEG62 [34] call render_moving - //SEG63 [129] phi from main::@32 to render_moving [phi:main::@32->render_moving] - //SEG64 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#110 [phi:main::@32->render_moving#0] -- register_copy - //SEG65 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#122 [phi:main::@32->render_moving#1] -- register_copy - //SEG66 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#132 [phi:main::@32->render_moving#2] -- register_copy - //SEG67 [129] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@32->render_moving#3] -- vbuz1=vbuc1 + //SEG63 [34] call render_moving + //SEG64 [129] phi from main::@32 to render_moving [phi:main::@32->render_moving] + //SEG65 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#110 [phi:main::@32->render_moving#0] -- register_copy + //SEG66 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#122 [phi:main::@32->render_moving#1] -- register_copy + //SEG67 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#132 [phi:main::@32->render_moving#2] -- register_copy + //SEG68 [129] phi (byte) render_screen_render#33 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@32->render_moving#3] -- vbuz1=vbuc1 lda #$40 sta render_screen_render_33 - //SEG68 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#108 [phi:main::@32->render_moving#4] -- register_copy + //SEG69 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#108 [phi:main::@32->render_moving#4] -- register_copy jsr render_moving - //SEG69 main::@33 - //SEG70 [35] (byte~) next_piece_idx#84 ← (byte) play_spawn_current::piece_idx#2 -- vbuyy=vbuz1 + //SEG70 main::@33 + //SEG71 [35] (byte~) next_piece_idx#84 ← (byte) play_spawn_current::piece_idx#2 -- vbuyy=vbuz1 ldy play_spawn_current.piece_idx - //SEG71 [36] call render_next - //SEG72 [108] phi from main::@33 to render_next [phi:main::@33->render_next] - //SEG73 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@33->render_next#0] -- register_copy - //SEG74 [108] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->render_next#1] -- vbuaa=vbuc1 + //SEG72 [36] call render_next + //SEG73 [108] phi from main::@33 to render_next [phi:main::@33->render_next] + //SEG74 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#84 [phi:main::@33->render_next#0] -- register_copy + //SEG75 [108] phi (byte) render_screen_render#15 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->render_next#1] -- vbuaa=vbuc1 lda #$40 jsr render_next - //SEG75 [37] (byte*~) current_piece#96 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG76 [37] (byte*~) current_piece#96 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._0 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG76 [38] phi from main::@33 to main::@1 [phi:main::@33->main::@1] - //SEG77 [38] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#0] -- vbuz1=vbuc1 + //SEG77 [38] phi from main::@33 to main::@1 [phi:main::@33->main::@1] + //SEG78 [38] phi (byte) level_bcd#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#0] -- vbuz1=vbuc1 lda #0 sta level_bcd - //SEG78 [38] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#1] -- vbuz1=vbuc1 + //SEG79 [38] phi (byte) level#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#1] -- vbuz1=vbuc1 sta level - //SEG79 [38] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#2] -- vduz1=vbuc1 + //SEG80 [38] phi (dword) score_bcd#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#2] -- vduz1=vbuc1 sta score_bcd sta score_bcd+1 sta score_bcd+2 sta score_bcd+3 - //SEG80 [38] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#3] -- vwuz1=vbuc1 + //SEG81 [38] phi (word) lines_bcd#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#3] -- vwuz1=vbuc1 sta lines_bcd sta lines_bcd+1 - //SEG81 [38] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#4] -- vbuz1=vbuc1 + //SEG82 [38] phi (byte) current_movedown_counter#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#4] -- vbuz1=vbuc1 sta current_movedown_counter - //SEG82 [38] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#5] -- vbuz1=vbuc1 + //SEG83 [38] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#5] -- vbuz1=vbuc1 sta keyboard_events_size - //SEG83 [38] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@33->main::@1#6] -- register_copy - //SEG84 [38] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@33->main::@1#7] -- register_copy - //SEG85 [38] phi (byte) current_ypos#10 = (byte) current_ypos#5 [phi:main::@33->main::@1#8] -- register_copy - //SEG86 [38] phi (byte) current_xpos#121 = (byte) current_xpos#102 [phi:main::@33->main::@1#9] -- register_copy - //SEG87 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#7 [phi:main::@33->main::@1#10] -- register_copy - //SEG88 [38] phi (byte) current_orientation#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#11] -- vbuz1=vbuc1 + //SEG84 [38] phi (byte) next_piece_idx#10 = (byte) play_spawn_current::piece_idx#2 [phi:main::@33->main::@1#6] -- register_copy + //SEG85 [38] phi (byte) game_over#10 = (byte) game_over#52 [phi:main::@33->main::@1#7] -- register_copy + //SEG86 [38] phi (byte) current_ypos#10 = (byte) current_ypos#5 [phi:main::@33->main::@1#8] -- register_copy + //SEG87 [38] phi (byte) current_xpos#121 = (byte) current_xpos#102 [phi:main::@33->main::@1#9] -- register_copy + //SEG88 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#7 [phi:main::@33->main::@1#10] -- register_copy + //SEG89 [38] phi (byte) current_orientation#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#11] -- vbuz1=vbuc1 sta current_orientation - //SEG89 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#4 [phi:main::@33->main::@1#12] -- register_copy - //SEG90 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#96 [phi:main::@33->main::@1#13] -- register_copy - //SEG91 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@33->main::@1#14] -- register_copy - //SEG92 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->main::@1#15] -- vbuz1=vbuc1 + //SEG90 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#4 [phi:main::@33->main::@1#12] -- register_copy + //SEG91 [38] phi (byte*) current_piece#10 = (byte*~) current_piece#96 [phi:main::@33->main::@1#13] -- register_copy + //SEG92 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#1 [phi:main::@33->main::@1#14] -- register_copy + //SEG93 [38] phi (byte) render_screen_render#18 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main::@33->main::@1#15] -- vbuz1=vbuc1 lda #$40 sta render_screen_render - //SEG93 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#16] -- vbuz1=vbuc1 + //SEG94 [38] phi (byte) render_screen_show#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@33->main::@1#16] -- vbuz1=vbuc1 lda #0 sta render_screen_show - //SEG94 [38] phi from main::@11 to main::@1 [phi:main::@11->main::@1] - //SEG95 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@11->main::@1#0] -- register_copy - //SEG96 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@11->main::@1#1] -- register_copy - //SEG97 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@11->main::@1#2] -- register_copy - //SEG98 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@11->main::@1#3] -- register_copy - //SEG99 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@11->main::@1#4] -- register_copy - //SEG100 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@11->main::@1#5] -- register_copy - //SEG101 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@11->main::@1#6] -- register_copy - //SEG102 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@11->main::@1#7] -- register_copy - //SEG103 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@11->main::@1#8] -- register_copy - //SEG104 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@11->main::@1#9] -- register_copy - //SEG105 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@11->main::@1#10] -- register_copy - //SEG106 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@11->main::@1#11] -- register_copy - //SEG107 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@11->main::@1#12] -- register_copy - //SEG108 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@11->main::@1#13] -- register_copy - //SEG109 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@11->main::@1#14] -- register_copy - //SEG110 main::@1 - //SEG111 main::@4 + //SEG95 [38] phi from main::@11 to main::@1 [phi:main::@11->main::@1] + //SEG96 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@11->main::@1#0] -- register_copy + //SEG97 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@11->main::@1#1] -- register_copy + //SEG98 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@11->main::@1#2] -- register_copy + //SEG99 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@11->main::@1#3] -- register_copy + //SEG100 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@11->main::@1#4] -- register_copy + //SEG101 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@11->main::@1#5] -- register_copy + //SEG102 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@11->main::@1#6] -- register_copy + //SEG103 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@11->main::@1#7] -- register_copy + //SEG104 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@11->main::@1#8] -- register_copy + //SEG105 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@11->main::@1#9] -- register_copy + //SEG106 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@11->main::@1#10] -- register_copy + //SEG107 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@11->main::@1#11] -- register_copy + //SEG108 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@11->main::@1#12] -- register_copy + //SEG109 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@11->main::@1#13] -- register_copy + //SEG110 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@11->main::@1#14] -- register_copy + //SEG111 main::@1 + //SEG112 main::@4 b4: - //SEG112 [39] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG113 [39] 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 - //SEG113 [40] phi from main::@4 to main::@6 [phi:main::@4->main::@6] - //SEG114 main::@6 - //SEG115 [41] call render_show + //SEG114 [40] phi from main::@4 to main::@6 [phi:main::@4->main::@6] + //SEG115 main::@6 + //SEG116 [41] call render_show jsr render_show - //SEG116 [42] phi from main::@6 to main::@35 [phi:main::@6->main::@35] - //SEG117 main::@35 - //SEG118 [43] call keyboard_event_scan - //SEG119 [395] phi from main::@35 to keyboard_event_scan [phi:main::@35->keyboard_event_scan] + //SEG117 [42] phi from main::@6 to main::@35 [phi:main::@6->main::@35] + //SEG118 main::@35 + //SEG119 [43] call keyboard_event_scan + //SEG120 [395] phi from main::@35 to keyboard_event_scan [phi:main::@35->keyboard_event_scan] jsr keyboard_event_scan - //SEG120 [44] phi from main::@35 to main::@36 [phi:main::@35->main::@36] - //SEG121 main::@36 - //SEG122 [45] call keyboard_event_get + //SEG121 [44] phi from main::@35 to main::@36 [phi:main::@35->main::@36] + //SEG122 main::@36 + //SEG123 [45] call keyboard_event_get jsr keyboard_event_get - //SEG123 [46] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - //SEG124 main::@37 - //SEG125 [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - //SEG126 [48] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 + //SEG124 [46] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG125 main::@37 + //SEG126 [47] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + //SEG127 [48] if((byte) game_over#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b7 - //SEG127 main::@9 + //SEG128 main::@9 b9: - //SEG128 [49] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG129 [49] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b9 - //SEG129 main::@7 + //SEG130 main::@7 b7: - //SEG130 [50] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx + //SEG131 [50] (byte) play_movement::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuxx stx play_movement.key_event - //SEG131 [51] call play_movement + //SEG132 [51] call play_movement jsr play_movement - //SEG132 [52] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 + //SEG133 [52] (byte) play_movement::return#3 ← (byte) play_movement::return#2 -- vbuaa=vbuz1 lda play_movement.return - //SEG133 main::@38 - //SEG134 [53] (byte) main::render#1 ← (byte) play_movement::return#3 - //SEG135 main::@11 - //SEG136 [54] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuaa_eq_0_then_la1 + //SEG134 main::@38 + //SEG135 [53] (byte) main::render#1 ← (byte) play_movement::return#3 + //SEG136 main::@11 + //SEG137 [54] if((byte) main::render#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG137 main::@23 - //SEG138 [55] (byte~) render_screen_render#70 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 + //SEG138 main::@23 + //SEG139 [55] (byte~) render_screen_render#70 ← (byte) render_screen_render#18 -- vbuxx=vbuz1 ldx render_screen_render - //SEG139 [56] call render_playfield - //SEG140 [150] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] - //SEG141 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@23->render_playfield#0] -- register_copy + //SEG140 [56] call render_playfield + //SEG141 [150] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] + //SEG142 [150] phi (byte) render_screen_render#22 = (byte~) render_screen_render#70 [phi:main::@23->render_playfield#0] -- register_copy jsr render_playfield - //SEG142 main::@39 - //SEG143 [57] (byte~) current_ypos#109 ← (byte) current_ypos#18 -- vbuyy=vbuz1 + //SEG143 main::@39 + //SEG144 [57] (byte~) current_ypos#109 ← (byte) current_ypos#18 -- vbuyy=vbuz1 ldy current_ypos - //SEG144 [58] (byte~) render_screen_render#69 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 + //SEG145 [58] (byte~) render_screen_render#69 ← (byte) render_screen_render#18 -- vbuz1=vbuz2 lda render_screen_render sta render_screen_render_69 - //SEG145 [59] (byte~) current_xpos#133 ← (byte) current_xpos#18 -- vbuz1=vbuz2 + //SEG146 [59] (byte~) current_xpos#133 ← (byte) current_xpos#18 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_133 - //SEG146 [60] (byte*~) current_piece_gfx#123 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 + //SEG147 [60] (byte*~) current_piece_gfx#123 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_123 lda current_piece_gfx+1 sta current_piece_gfx_123+1 - //SEG147 [61] (byte~) current_piece_char#111 ← (byte) current_piece_char#15 -- vbuxx=vbuz1 + //SEG148 [61] (byte~) current_piece_char#111 ← (byte) current_piece_char#15 -- vbuxx=vbuz1 ldx current_piece_char - //SEG148 [62] call render_moving - //SEG149 [129] phi from main::@39 to render_moving [phi:main::@39->render_moving] - //SEG150 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#111 [phi:main::@39->render_moving#0] -- register_copy - //SEG151 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#123 [phi:main::@39->render_moving#1] -- register_copy - //SEG152 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#133 [phi:main::@39->render_moving#2] -- register_copy - //SEG153 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#69 [phi:main::@39->render_moving#3] -- register_copy - //SEG154 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#109 [phi:main::@39->render_moving#4] -- register_copy + //SEG149 [62] call render_moving + //SEG150 [129] phi from main::@39 to render_moving [phi:main::@39->render_moving] + //SEG151 [129] phi (byte) current_piece_char#67 = (byte~) current_piece_char#111 [phi:main::@39->render_moving#0] -- register_copy + //SEG152 [129] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#123 [phi:main::@39->render_moving#1] -- register_copy + //SEG153 [129] phi (byte) current_xpos#58 = (byte~) current_xpos#133 [phi:main::@39->render_moving#2] -- register_copy + //SEG154 [129] phi (byte) render_screen_render#33 = (byte~) render_screen_render#69 [phi:main::@39->render_moving#3] -- register_copy + //SEG155 [129] phi (byte) current_ypos#12 = (byte~) current_ypos#109 [phi:main::@39->render_moving#4] -- register_copy jsr render_moving - //SEG155 main::@40 - //SEG156 [63] (byte~) render_screen_render#68 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 + //SEG156 main::@40 + //SEG157 [63] (byte~) render_screen_render#68 ← (byte) render_screen_render#18 -- vbuaa=vbuz1 lda render_screen_render - //SEG157 [64] (byte~) next_piece_idx#85 ← (byte) next_piece_idx#16 -- vbuyy=vbuz1 + //SEG158 [64] (byte~) next_piece_idx#85 ← (byte) next_piece_idx#16 -- vbuyy=vbuz1 ldy next_piece_idx - //SEG158 [65] call render_next - //SEG159 [108] phi from main::@40 to render_next [phi:main::@40->render_next] - //SEG160 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#85 [phi:main::@40->render_next#0] -- register_copy - //SEG161 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#68 [phi:main::@40->render_next#1] -- register_copy + //SEG159 [65] call render_next + //SEG160 [108] phi from main::@40 to render_next [phi:main::@40->render_next] + //SEG161 [108] phi (byte) next_piece_idx#12 = (byte~) next_piece_idx#85 [phi:main::@40->render_next#0] -- register_copy + //SEG162 [108] phi (byte) render_screen_render#15 = (byte~) render_screen_render#68 [phi:main::@40->render_next#1] -- register_copy jsr render_next - //SEG162 [66] phi from main::@40 to main::@41 [phi:main::@40->main::@41] - //SEG163 main::@41 - //SEG164 [67] call render_score + //SEG163 [66] phi from main::@40 to main::@41 [phi:main::@40->main::@41] + //SEG164 main::@41 + //SEG165 [67] call render_score jsr render_score - //SEG165 [68] phi from main::@41 to main::@42 [phi:main::@41->main::@42] - //SEG166 main::@42 - //SEG167 [69] call render_screen_swap + //SEG166 [68] phi from main::@41 to main::@42 [phi:main::@41->main::@42] + //SEG167 main::@42 + //SEG168 [69] call render_screen_swap jsr render_screen_swap - //SEG168 [38] phi from main::@42 to main::@1 [phi:main::@42->main::@1] - //SEG169 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@42->main::@1#0] -- register_copy - //SEG170 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@42->main::@1#1] -- register_copy - //SEG171 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@42->main::@1#2] -- register_copy - //SEG172 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@42->main::@1#3] -- register_copy - //SEG173 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@42->main::@1#4] -- register_copy - //SEG174 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@42->main::@1#5] -- register_copy - //SEG175 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@42->main::@1#6] -- register_copy - //SEG176 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@42->main::@1#7] -- register_copy - //SEG177 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@42->main::@1#8] -- register_copy - //SEG178 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@42->main::@1#9] -- register_copy - //SEG179 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@42->main::@1#10] -- register_copy - //SEG180 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@42->main::@1#11] -- register_copy - //SEG181 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@42->main::@1#12] -- register_copy - //SEG182 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@42->main::@1#13] -- register_copy - //SEG183 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@42->main::@1#14] -- register_copy - //SEG184 [38] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@42->main::@1#15] -- register_copy - //SEG185 [38] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@42->main::@1#16] -- register_copy + //SEG169 [38] phi from main::@42 to main::@1 [phi:main::@42->main::@1] + //SEG170 [38] phi (byte) level_bcd#11 = (byte) level_bcd#17 [phi:main::@42->main::@1#0] -- register_copy + //SEG171 [38] phi (byte) level#10 = (byte) level#17 [phi:main::@42->main::@1#1] -- register_copy + //SEG172 [38] phi (dword) score_bcd#18 = (dword) score_bcd#14 [phi:main::@42->main::@1#2] -- register_copy + //SEG173 [38] phi (word) lines_bcd#19 = (word) lines_bcd#15 [phi:main::@42->main::@1#3] -- register_copy + //SEG174 [38] phi (byte) current_movedown_counter#16 = (byte) current_movedown_counter#14 [phi:main::@42->main::@1#4] -- register_copy + //SEG175 [38] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@42->main::@1#5] -- register_copy + //SEG176 [38] phi (byte) next_piece_idx#10 = (byte) next_piece_idx#16 [phi:main::@42->main::@1#6] -- register_copy + //SEG177 [38] phi (byte) game_over#10 = (byte) game_over#15 [phi:main::@42->main::@1#7] -- register_copy + //SEG178 [38] phi (byte) current_ypos#10 = (byte) current_ypos#18 [phi:main::@42->main::@1#8] -- register_copy + //SEG179 [38] phi (byte) current_xpos#121 = (byte) current_xpos#18 [phi:main::@42->main::@1#9] -- register_copy + //SEG180 [38] phi (byte*) current_piece_gfx#111 = (byte*) current_piece_gfx#17 [phi:main::@42->main::@1#10] -- register_copy + //SEG181 [38] phi (byte) current_orientation#13 = (byte) current_orientation#17 [phi:main::@42->main::@1#11] -- register_copy + //SEG182 [38] phi (byte) current_piece_char#21 = (byte) current_piece_char#15 [phi:main::@42->main::@1#12] -- register_copy + //SEG183 [38] phi (byte*) current_piece#10 = (byte*) current_piece#15 [phi:main::@42->main::@1#13] -- register_copy + //SEG184 [38] phi (byte) current_movedown_slow#14 = (byte) current_movedown_slow#21 [phi:main::@42->main::@1#14] -- register_copy + //SEG185 [38] phi (byte) render_screen_render#18 = (byte) render_screen_render#11 [phi:main::@42->main::@1#15] -- register_copy + //SEG186 [38] phi (byte) render_screen_show#16 = (byte) render_screen_show#13 [phi:main::@42->main::@1#16] -- register_copy jmp b4 } -//SEG186 render_screen_swap +//SEG187 render_screen_swap // Swap rendering to the other screen (used for double buffering) render_screen_swap: { - //SEG187 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG188 [70] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_render eor #$40 sta render_screen_render - //SEG188 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG189 [71] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz1_bxor_vbuc1 lda render_screen_show eor #$40 sta render_screen_show - //SEG189 render_screen_swap::@return - //SEG190 [72] return + //SEG190 render_screen_swap::@return + //SEG191 [72] return rts } -//SEG191 render_score +//SEG192 render_score // Show the current score render_score: { .label score_bytes = score_bcd @@ -24075,130 +24074,130 @@ render_score: { .const lines_offset = $28*1+$16 .const level_offset = $28*$13+$1f .label screen = 5 - //SEG192 [73] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 + //SEG193 [73] if((byte) render_screen_render#18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_score::@2 -- vbuz1_eq_0_then_la1 lda render_screen_render cmp #0 beq b1 - //SEG193 [74] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] - //SEG194 render_score::@3 - //SEG195 [75] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] - //SEG196 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 + //SEG194 [74] phi from render_score to render_score::@3 [phi:render_score->render_score::@3] + //SEG195 render_score::@3 + //SEG196 [75] phi from render_score::@3 to render_score::@2 [phi:render_score::@3->render_score::@2] + //SEG197 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_score::@3->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta screen+1 jmp b2 - //SEG197 [75] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] + //SEG198 [75] phi from render_score to render_score::@2 [phi:render_score->render_score::@2] b1: - //SEG198 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 + //SEG199 [75] phi (byte*) render_score::screen#2 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_score->render_score::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta screen+1 - //SEG199 render_score::@2 + //SEG200 render_score::@2 b2: - //SEG200 [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 - //SEG201 [77] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuxx=_deref_pbuc1 + //SEG201 [76] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#2 + //SEG202 [77] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuxx=_deref_pbuc1 ldx score_bytes+2 - //SEG202 [78] call render_bcd - //SEG203 [95] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] - //SEG204 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy - //SEG205 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 + //SEG203 [78] call render_bcd + //SEG204 [95] phi from render_score::@2 to render_bcd [phi:render_score::@2->render_bcd] + //SEG205 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#0 [phi:render_score::@2->render_bcd#0] -- register_copy + //SEG206 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@2->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG206 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 + //SEG207 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0 [phi:render_score::@2->render_bcd#2] -- vwuz1=vwuc1 lda #score_offset sta render_bcd.offset+1 - //SEG207 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy + //SEG208 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#0 [phi:render_score::@2->render_bcd#3] -- register_copy jsr render_bcd - //SEG208 render_score::@5 - //SEG209 [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 - //SEG210 [80] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuxx=_deref_pbuc1 + //SEG209 render_score::@5 + //SEG210 [79] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#2 + //SEG211 [80] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuxx=_deref_pbuc1 ldx score_bytes+1 - //SEG211 [81] call render_bcd - //SEG212 [95] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] - //SEG213 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy - //SEG214 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 + //SEG212 [81] call render_bcd + //SEG213 [95] phi from render_score::@5 to render_bcd [phi:render_score::@5->render_bcd] + //SEG214 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#1 [phi:render_score::@5->render_bcd#0] -- register_copy + //SEG215 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@5->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG215 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 + //SEG216 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_score::@5->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+2 sta render_bcd.offset+1 - //SEG216 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy + //SEG217 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#1 [phi:render_score::@5->render_bcd#3] -- register_copy jsr render_bcd - //SEG217 render_score::@6 - //SEG218 [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 - //SEG219 [83] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 + //SEG218 render_score::@6 + //SEG219 [82] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#2 + //SEG220 [83] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0) -- vbuxx=_deref_pbuc1 ldx score_bytes - //SEG220 [84] call render_bcd - //SEG221 [95] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] - //SEG222 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy - //SEG223 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 + //SEG221 [84] call render_bcd + //SEG222 [95] phi from render_score::@6 to render_bcd [phi:render_score::@6->render_bcd] + //SEG223 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#2 [phi:render_score::@6->render_bcd#0] -- register_copy + //SEG224 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@6->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG224 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 + //SEG225 [95] phi (word) render_bcd::offset#6 = (const word) render_score::score_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:render_score::@6->render_bcd#2] -- vwuz1=vbuc1 lda #score_offset+4 sta render_bcd.offset+1 - //SEG225 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy + //SEG226 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#2 [phi:render_score::@6->render_bcd#3] -- register_copy jsr render_bcd - //SEG226 render_score::@7 - //SEG227 [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 + //SEG227 render_score::@7 + //SEG228 [85] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15 -- vbuxx=_hi_vwuz1 lda lines_bcd+1 tax - //SEG228 [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 - //SEG229 [87] call render_bcd - //SEG230 [95] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] - //SEG231 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy - //SEG232 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 + //SEG229 [86] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#2 + //SEG230 [87] call render_bcd + //SEG231 [95] phi from render_score::@7 to render_bcd [phi:render_score::@7->render_bcd] + //SEG232 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#3 [phi:render_score::@7->render_bcd#0] -- register_copy + //SEG233 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@7->render_bcd#1] -- vbuyy=vbuc1 ldy #1 - //SEG233 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 + //SEG234 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0 [phi:render_score::@7->render_bcd#2] -- vwuz1=vwuc1 lda #lines_offset sta render_bcd.offset+1 - //SEG234 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy + //SEG235 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#3 [phi:render_score::@7->render_bcd#3] -- register_copy jsr render_bcd - //SEG235 render_score::@8 - //SEG236 [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 + //SEG236 render_score::@8 + //SEG237 [88] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15 -- vbuxx=_lo_vwuz1 lda lines_bcd tax - //SEG237 [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 - //SEG238 [90] call render_bcd - //SEG239 [95] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] - //SEG240 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy - //SEG241 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuyy=vbuc1 + //SEG238 [89] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#2 + //SEG239 [90] call render_bcd + //SEG240 [95] phi from render_score::@8 to render_bcd [phi:render_score::@8->render_bcd] + //SEG241 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#4 [phi:render_score::@8->render_bcd#0] -- register_copy + //SEG242 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@8->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG242 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 + //SEG243 [95] phi (word) render_bcd::offset#6 = (const word) render_score::lines_offset#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:render_score::@8->render_bcd#2] -- vwuz1=vbuc1 lda #lines_offset+1 sta render_bcd.offset+1 - //SEG243 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy + //SEG244 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#4 [phi:render_score::@8->render_bcd#3] -- register_copy jsr render_bcd - //SEG244 render_score::@9 - //SEG245 [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 - //SEG246 [92] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 + //SEG245 render_score::@9 + //SEG246 [91] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#2 + //SEG247 [92] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17 -- vbuxx=vbuz1 ldx level_bcd - //SEG247 [93] call render_bcd - //SEG248 [95] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] - //SEG249 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy - //SEG250 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuyy=vbuc1 + //SEG248 [93] call render_bcd + //SEG249 [95] phi from render_score::@9 to render_bcd [phi:render_score::@9->render_bcd] + //SEG250 [95] phi (byte) render_bcd::bcd#6 = (byte) render_bcd::bcd#5 [phi:render_score::@9->render_bcd#0] -- register_copy + //SEG251 [95] phi (byte) render_bcd::only_low#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_score::@9->render_bcd#1] -- vbuyy=vbuc1 ldy #0 - //SEG251 [95] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 + //SEG252 [95] phi (word) render_bcd::offset#6 = (const word) render_score::level_offset#0 [phi:render_score::@9->render_bcd#2] -- vwuz1=vwuc1 lda #level_offset sta render_bcd.offset+1 - //SEG252 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy + //SEG253 [95] phi (byte*) render_bcd::screen#6 = (byte*) render_bcd::screen#5 [phi:render_score::@9->render_bcd#3] -- register_copy jsr render_bcd - //SEG253 render_score::@return - //SEG254 [94] return + //SEG254 render_score::@return + //SEG255 [94] return rts } -//SEG255 render_bcd +//SEG256 render_bcd // Render BCD digits on a screen. // - screen: pointer to the screen to render on // - offset: offset on the screen @@ -24209,7 +24208,7 @@ render_bcd: { .label screen = 5 .label screen_pos = 7 .label offset = 7 - //SEG256 [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 + //SEG257 [96] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6 -- pbuz1=pbuz2_plus_vwuz1 lda screen_pos clc adc screen @@ -24217,50 +24216,50 @@ render_bcd: { lda screen_pos+1 adc screen+1 sta screen_pos+1 - //SEG257 [97] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 + //SEG258 [97] if((byte) render_bcd::only_low#6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_bcd::@1 -- vbuyy_neq_0_then_la1 cpy #0 bne b1 - //SEG258 render_bcd::@2 - //SEG259 [98] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG259 render_bcd::@2 + //SEG260 [98] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG260 [99] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa + //SEG261 [99] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG261 [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa + //SEG262 [100] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG262 [101] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 + //SEG263 [101] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG263 [102] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] - //SEG264 [102] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy - //SEG265 render_bcd::@1 + //SEG264 [102] phi from render_bcd render_bcd::@2 to render_bcd::@1 [phi:render_bcd/render_bcd::@2->render_bcd::@1] + //SEG265 [102] phi (byte*) render_bcd::screen_pos#3 = (byte*) render_bcd::screen_pos#0 [phi:render_bcd/render_bcd::@2->render_bcd::@1#0] -- register_copy + //SEG266 render_bcd::@1 b1: - //SEG266 [103] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG267 [103] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG267 [104] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa + //SEG268 [104] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5 -- vbuaa=vbuc1_plus_vbuaa clc adc #ZERO_CHAR - //SEG268 [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa + //SEG269 [105] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (screen_pos),y - //SEG269 [106] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz1 + //SEG270 [106] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 -- pbuz1=_inc_pbuz1 inc screen_pos bne !+ inc screen_pos+1 !: - //SEG270 render_bcd::@return - //SEG271 [107] return + //SEG271 render_bcd::@return + //SEG272 [107] return rts } -//SEG272 render_next +//SEG273 render_next // Render the next tetromino in the "next" area render_next: { .const next_area_offset = $28*$c+$18+4 @@ -24268,92 +24267,92 @@ render_next: { .label next_piece_gfx = 5 .label screen_next_area = 7 .label l = 9 - //SEG273 [109] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@2 -- vbuaa_eq_0_then_la1 + //SEG274 [109] if((byte) render_screen_render#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b1 - //SEG274 [110] phi from render_next to render_next::@7 [phi:render_next->render_next::@7] - //SEG275 render_next::@7 - //SEG276 [111] phi from render_next::@7 to render_next::@2 [phi:render_next::@7->render_next::@2] - //SEG277 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next::@7->render_next::@2#0] -- pbuz1=pbuc1 + //SEG275 [110] phi from render_next to render_next::@7 [phi:render_next->render_next::@7] + //SEG276 render_next::@7 + //SEG277 [111] phi from render_next::@7 to render_next::@2 [phi:render_next::@7->render_next::@2] + //SEG278 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 [phi:render_next::@7->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+next_area_offset sta screen_next_area+1 jmp b2 - //SEG278 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] + //SEG279 [111] phi from render_next to render_next::@2 [phi:render_next->render_next::@2] b1: - //SEG279 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 + //SEG280 [111] phi (byte*) render_next::screen_next_area#10 = (const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 [phi:render_next->render_next::@2#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+next_area_offset sta screen_next_area+1 - //SEG280 render_next::@2 + //SEG281 render_next::@2 b2: - //SEG281 [112] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + //SEG282 [112] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG282 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG283 [113] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12) -- vbuz1=pbuc1_derefidx_vbuyy lda PIECES_NEXT_CHARS,y sta next_piece_char - //SEG283 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuxx + //SEG284 [114] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6) -- pbuz1=pptc1_derefidx_vbuxx lda PIECES,x sta next_piece_gfx lda PIECES+1,x sta next_piece_gfx+1 - //SEG284 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] - //SEG285 [115] phi (byte) render_next::l#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 + //SEG285 [115] phi from render_next::@2 to render_next::@3 [phi:render_next::@2->render_next::@3] + //SEG286 [115] phi (byte) render_next::l#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@2->render_next::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG286 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#10 [phi:render_next::@2->render_next::@3#1] -- register_copy - //SEG287 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy - //SEG288 [115] phi from render_next::@11 to render_next::@3 [phi:render_next::@11->render_next::@3] - //SEG289 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@11->render_next::@3#0] -- register_copy - //SEG290 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#3 [phi:render_next::@11->render_next::@3#1] -- register_copy - //SEG291 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@11->render_next::@3#2] -- register_copy - //SEG292 render_next::@3 + //SEG287 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#10 [phi:render_next::@2->render_next::@3#1] -- register_copy + //SEG288 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*~) render_next::next_piece_gfx#9 [phi:render_next::@2->render_next::@3#2] -- register_copy + //SEG289 [115] phi from render_next::@11 to render_next::@3 [phi:render_next::@11->render_next::@3] + //SEG290 [115] phi (byte) render_next::l#7 = (byte) render_next::l#1 [phi:render_next::@11->render_next::@3#0] -- register_copy + //SEG291 [115] phi (byte*) render_next::screen_next_area#9 = (byte*) render_next::screen_next_area#3 [phi:render_next::@11->render_next::@3#1] -- register_copy + //SEG292 [115] phi (byte*) render_next::next_piece_gfx#3 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@11->render_next::@3#2] -- register_copy + //SEG293 render_next::@3 b3: - //SEG293 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] - //SEG294 [116] phi (byte) render_next::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1 + //SEG294 [116] phi from render_next::@3 to render_next::@4 [phi:render_next::@3->render_next::@4] + //SEG295 [116] phi (byte) render_next::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_next::@3->render_next::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG295 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#9 [phi:render_next::@3->render_next::@4#1] -- register_copy - //SEG296 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy - //SEG297 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] - //SEG298 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy - //SEG299 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#2 [phi:render_next::@6->render_next::@4#1] -- register_copy - //SEG300 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy - //SEG301 render_next::@4 + //SEG296 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#9 [phi:render_next::@3->render_next::@4#1] -- register_copy + //SEG297 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#3 [phi:render_next::@3->render_next::@4#2] -- register_copy + //SEG298 [116] phi from render_next::@6 to render_next::@4 [phi:render_next::@6->render_next::@4] + //SEG299 [116] phi (byte) render_next::c#2 = (byte) render_next::c#1 [phi:render_next::@6->render_next::@4#0] -- register_copy + //SEG300 [116] phi (byte*) render_next::screen_next_area#4 = (byte*) render_next::screen_next_area#2 [phi:render_next::@6->render_next::@4#1] -- register_copy + //SEG301 [116] phi (byte*) render_next::next_piece_gfx#2 = (byte*) render_next::next_piece_gfx#1 [phi:render_next::@6->render_next::@4#2] -- register_copy + //SEG302 render_next::@4 b4: - //SEG302 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuaa=_deref_pbuz1 + //SEG303 [117] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2) -- vbuaa=_deref_pbuz1 ldy #0 lda (next_piece_gfx),y - //SEG303 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 + //SEG304 [118] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2 -- pbuz1=_inc_pbuz1 inc next_piece_gfx bne !+ inc next_piece_gfx+1 !: - //SEG304 [119] if((byte) render_next::cell#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@5 -- vbuaa_neq_0_then_la1 + //SEG305 [119] if((byte) render_next::cell#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_next::@5 -- vbuaa_neq_0_then_la1 cmp #0 bne b5 - //SEG305 render_next::@9 - //SEG306 [120] *((byte*) render_next::screen_next_area#4) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG306 render_next::@9 + //SEG307 [120] *((byte*) render_next::screen_next_area#4) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (screen_next_area),y - //SEG307 render_next::@6 + //SEG308 render_next::@6 b6: - //SEG308 [121] (byte*) render_next::screen_next_area#2 ← ++ (byte*) render_next::screen_next_area#4 -- pbuz1=_inc_pbuz1 + //SEG309 [121] (byte*) render_next::screen_next_area#2 ← ++ (byte*) render_next::screen_next_area#4 -- pbuz1=_inc_pbuz1 inc screen_next_area bne !+ inc screen_next_area+1 !: - //SEG309 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuxx=_inc_vbuxx + //SEG310 [122] (byte) render_next::c#1 ← ++ (byte) render_next::c#2 -- vbuxx=_inc_vbuxx inx - //SEG310 [123] if((byte) render_next::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG311 [123] if((byte) render_next::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b4 - //SEG311 render_next::@11 - //SEG312 [124] (byte*) render_next::screen_next_area#3 ← (byte*) render_next::screen_next_area#2 + (byte/signed byte/word/signed word/dword/signed dword) 36 -- pbuz1=pbuz1_plus_vbuc1 + //SEG312 render_next::@11 + //SEG313 [124] (byte*) render_next::screen_next_area#3 ← (byte*) render_next::screen_next_area#2 + (byte/signed byte/word/signed word/dword/signed dword) 36 -- pbuz1=pbuz1_plus_vbuc1 lda screen_next_area clc adc #$24 @@ -24361,24 +24360,24 @@ render_next: { bcc !+ inc screen_next_area+1 !: - //SEG313 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 + //SEG314 [125] (byte) render_next::l#1 ← ++ (byte) render_next::l#7 -- vbuz1=_inc_vbuz1 inc l - //SEG314 [126] if((byte) render_next::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG315 [126] if((byte) render_next::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_next::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b3 - //SEG315 render_next::@return - //SEG316 [127] return + //SEG316 render_next::@return + //SEG317 [127] return rts - //SEG317 render_next::@5 + //SEG318 render_next::@5 b5: - //SEG318 [128] *((byte*) render_next::screen_next_area#4) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 + //SEG319 [128] *((byte*) render_next::screen_next_area#4) ← (byte) render_next::next_piece_char#0 -- _deref_pbuz1=vbuz2 lda next_piece_char ldy #0 sta (screen_next_area),y jmp b6 } -//SEG319 render_moving +//SEG320 render_moving // Render the current moving piece at position (current_xpos, current_ypos) // Ignores cases where parts of the tetromino is outside the playfield (sides/bottom) since the movement collision routine prevents this. render_moving: { @@ -24388,179 +24387,179 @@ render_moving: { .label i = $d .label l = $c .label c = $f - //SEG320 [130] (byte) render_moving::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG321 [130] (byte) render_moving::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG321 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] - //SEG322 [131] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 + //SEG322 [131] phi from render_moving to render_moving::@1 [phi:render_moving->render_moving::@1] + //SEG323 [131] phi (byte) render_moving::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG323 [131] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 + //SEG324 [131] phi (byte) render_moving::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving->render_moving::@1#1] -- vbuz1=vbuc1 sta i - //SEG324 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy - //SEG325 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] - //SEG326 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy - //SEG327 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy - //SEG328 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy - //SEG329 render_moving::@1 + //SEG325 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#0 [phi:render_moving->render_moving::@1#2] -- register_copy + //SEG326 [131] phi from render_moving::@3 to render_moving::@1 [phi:render_moving::@3->render_moving::@1] + //SEG327 [131] phi (byte) render_moving::l#4 = (byte) render_moving::l#1 [phi:render_moving::@3->render_moving::@1#0] -- register_copy + //SEG328 [131] phi (byte) render_moving::i#3 = (byte) render_moving::i#8 [phi:render_moving::@3->render_moving::@1#1] -- register_copy + //SEG329 [131] phi (byte) render_moving::ypos2#2 = (byte) render_moving::ypos2#1 [phi:render_moving::@3->render_moving::@1#2] -- register_copy + //SEG330 render_moving::@1 b1: - //SEG330 [132] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG331 [132] if((byte) render_moving::ypos2#2>(byte/signed byte/word/signed word/dword/signed dword) 2) goto render_moving::@2 -- vbuz1_gt_vbuc1_then_la1 lda ypos2 cmp #2 beq !+ bcs b2 !: - //SEG331 render_moving::@6 - //SEG332 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG332 render_moving::@6 + //SEG333 [133] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc i sta i - //SEG333 [134] phi from render_moving::@5 render_moving::@6 to render_moving::@3 [phi:render_moving::@5/render_moving::@6->render_moving::@3] - //SEG334 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@6->render_moving::@3#0] -- register_copy - //SEG335 render_moving::@3 + //SEG334 [134] phi from render_moving::@5 render_moving::@6 to render_moving::@3 [phi:render_moving::@5/render_moving::@6->render_moving::@3] + //SEG335 [134] phi (byte) render_moving::i#8 = (byte) render_moving::i#2 [phi:render_moving::@5/render_moving::@6->render_moving::@3#0] -- register_copy + //SEG336 render_moving::@3 b3: - //SEG336 [135] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG337 [135] (byte) render_moving::ypos2#1 ← (byte) render_moving::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG337 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 + //SEG338 [136] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG338 [137] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG339 [137] if((byte) render_moving::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1 - //SEG339 render_moving::@return - //SEG340 [138] return + //SEG340 render_moving::@return + //SEG341 [138] return rts - //SEG341 render_moving::@2 + //SEG342 render_moving::@2 b2: - //SEG342 [139] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG343 [139] (byte~) render_moving::$2 ← (byte) render_screen_render#33 + (byte) render_moving::ypos2#2 -- vbuaa=vbuz1_plus_vbuz2 lda render_screen_render_33 clc adc ypos2 - //SEG343 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuaa + //SEG344 [140] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$2) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG344 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#58 -- vbuz1=vbuz2 + //SEG345 [141] (byte) render_moving::xpos#0 ← (byte) current_xpos#58 -- vbuz1=vbuz2 lda current_xpos_58 sta xpos - //SEG345 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] - //SEG346 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 + //SEG346 [142] phi from render_moving::@2 to render_moving::@4 [phi:render_moving::@2->render_moving::@4] + //SEG347 [142] phi (byte) render_moving::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_moving::@2->render_moving::@4#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG347 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy - //SEG348 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy - //SEG349 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] - //SEG350 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy - //SEG351 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy - //SEG352 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy - //SEG353 render_moving::@4 + //SEG348 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#0 [phi:render_moving::@2->render_moving::@4#1] -- register_copy + //SEG349 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#3 [phi:render_moving::@2->render_moving::@4#2] -- register_copy + //SEG350 [142] phi from render_moving::@5 to render_moving::@4 [phi:render_moving::@5->render_moving::@4] + //SEG351 [142] phi (byte) render_moving::c#2 = (byte) render_moving::c#1 [phi:render_moving::@5->render_moving::@4#0] -- register_copy + //SEG352 [142] phi (byte) render_moving::xpos#2 = (byte) render_moving::xpos#1 [phi:render_moving::@5->render_moving::@4#1] -- register_copy + //SEG353 [142] phi (byte) render_moving::i#4 = (byte) render_moving::i#2 [phi:render_moving::@5->render_moving::@4#2] -- register_copy + //SEG354 render_moving::@4 b4: - //SEG354 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG355 [143] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_moving::i#4) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_63),y - //SEG355 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 + //SEG356 [144] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG356 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 + //SEG357 [145] if((byte) render_moving::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_moving::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG357 render_moving::@8 - //SEG358 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#67 -- pbuz1_derefidx_vbuz2=vbuxx + //SEG358 render_moving::@8 + //SEG359 [146] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#67 -- pbuz1_derefidx_vbuz2=vbuxx ldy xpos txa sta (screen_line),y - //SEG359 render_moving::@5 + //SEG360 render_moving::@5 b5: - //SEG360 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG361 [147] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG361 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 + //SEG362 [148] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG362 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG363 [149] if((byte) render_moving::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_moving::@4 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b4 jmp b3 } -//SEG363 render_playfield +//SEG364 render_playfield // Render the static playfield on the screen (all pieces already locked into place) render_playfield: { .label screen_line = 5 .label i = $a .label c = $b .label l = 9 - //SEG364 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG365 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG365 [151] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG366 [151] phi (byte) render_playfield::i#3 = (const byte) PLAYFIELD_COLS#0*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #PLAYFIELD_COLS*2 sta i - //SEG366 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG367 [151] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #2 sta l - //SEG367 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG368 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG369 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG370 render_playfield::@1 + //SEG368 [151] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG369 [151] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG370 [151] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG371 render_playfield::@1 b1: - //SEG371 [152] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG372 [152] (byte~) render_playfield::$2 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG372 [153] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa + //SEG373 [153] (byte~) render_playfield::$3 ← (byte) render_screen_render#22 + (byte~) render_playfield::$2 -- vbuaa=vbuxx_plus_vbuaa stx $ff clc adc $ff - //SEG373 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa + //SEG374 [154] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$3) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines_1,y sta screen_line lda screen_lines_1+1,y sta screen_line+1 - //SEG374 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG375 [155] 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 + //SEG375 [155] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG376 [155] 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 - //SEG376 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG377 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy - //SEG378 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG379 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG380 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG381 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy - //SEG382 render_playfield::@2 + //SEG377 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG378 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG379 [155] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG380 [155] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG381 [155] phi (byte*) render_playfield::screen_line#2 = (byte*) render_playfield::screen_line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG382 [155] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG383 render_playfield::@2 b2: - //SEG383 [156] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG384 [156] *((byte*) render_playfield::screen_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 (screen_line),y - //SEG384 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 + //SEG385 [157] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2 -- pbuz1=_inc_pbuz1 inc screen_line bne !+ inc screen_line+1 !: - //SEG385 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG386 [158] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG386 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG387 [159] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG387 [160] 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 + //SEG388 [160] 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 - //SEG388 render_playfield::@3 - //SEG389 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG389 render_playfield::@3 + //SEG390 [161] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG390 [162] 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 + //SEG391 [162] 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 - //SEG391 render_playfield::@return - //SEG392 [163] return + //SEG392 render_playfield::@return + //SEG393 [163] return rts } -//SEG393 play_movement +//SEG394 play_movement // Perform any movement of the current piece // key_event is the next keyboard_event() og $ff if no keyboard event is pending // Returns a byte signaling whether rendering is needed. (0 no render, >0 render needed) @@ -24568,147 +24567,147 @@ play_movement: { .label render = 9 .label return = 9 .label key_event = $29 - //SEG394 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG395 [164] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG395 [165] call play_move_down + //SEG396 [165] call play_move_down jsr play_move_down - //SEG396 [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG397 [166] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa - //SEG397 play_movement::@5 - //SEG398 [167] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 - //SEG399 [168] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuaa + //SEG398 play_movement::@5 + //SEG399 [167] (byte~) play_movement::$0 ← (byte) play_move_down::return#0 + //SEG400 [168] (byte) play_movement::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_movement::$0 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG400 [169] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 + //SEG401 [169] if((byte) game_over#15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movement::@1 -- vbuz1_eq_0_then_la1 lda game_over cmp #0 beq b1 - //SEG401 [170] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] - //SEG402 [170] phi (byte) current_xpos#18 = (byte) current_xpos#21 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy - //SEG403 [170] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy - //SEG404 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy - //SEG405 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy - //SEG406 play_movement::@return + //SEG402 [170] phi from play_movement::@5 play_movement::@7 to play_movement::@return [phi:play_movement::@5/play_movement::@7->play_movement::@return] + //SEG403 [170] phi (byte) current_xpos#18 = (byte) current_xpos#21 [phi:play_movement::@5/play_movement::@7->play_movement::@return#0] -- register_copy + //SEG404 [170] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#19 [phi:play_movement::@5/play_movement::@7->play_movement::@return#1] -- register_copy + //SEG405 [170] phi (byte) current_orientation#17 = (byte) current_orientation#20 [phi:play_movement::@5/play_movement::@7->play_movement::@return#2] -- register_copy + //SEG406 [170] phi (byte) play_movement::return#2 = (byte) play_movement::render#1 [phi:play_movement::@5/play_movement::@7->play_movement::@return#3] -- register_copy + //SEG407 play_movement::@return breturn: - //SEG407 [171] return + //SEG408 [171] return rts - //SEG408 play_movement::@1 + //SEG409 play_movement::@1 b1: - //SEG409 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG410 [172] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG410 [173] call play_move_leftright + //SEG411 [173] call play_move_leftright jsr play_move_leftright - //SEG411 [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 - //SEG412 play_movement::@6 - //SEG413 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 - //SEG414 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa + //SEG412 [174] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG413 play_movement::@6 + //SEG414 [175] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0 + //SEG415 [176] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG415 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 + //SEG416 [177] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG416 [178] call play_move_rotate + //SEG417 [178] call play_move_rotate jsr play_move_rotate - //SEG417 [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 - //SEG418 play_movement::@7 - //SEG419 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 - //SEG420 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa + //SEG418 [179] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG419 play_movement::@7 + //SEG420 [180] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0 + //SEG421 [181] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4 -- vbuz1=vbuz1_plus_vbuaa clc adc return sta return jmp breturn } -//SEG421 play_move_rotate +//SEG422 play_move_rotate // Rotate the current piece based on key-presses // Return non-zero if a render is needed play_move_rotate: { .label orientation = $a - //SEG422 [182] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG423 [182] 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 - //SEG423 play_move_rotate::@6 - //SEG424 [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG424 play_move_rotate::@6 + //SEG425 [183] 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 - //SEG425 [184] 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] + //SEG426 [184] 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: - //SEG426 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG427 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG428 [184] 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 + //SEG427 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#19 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG428 [184] phi (byte) current_orientation#25 = (byte) current_orientation#20 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG429 [184] 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 - //SEG429 play_move_rotate::@return + //SEG430 play_move_rotate::@return breturn: - //SEG430 [185] return + //SEG431 [185] return rts - //SEG431 play_move_rotate::@2 + //SEG432 play_move_rotate::@2 b2: - //SEG432 [186] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG433 [186] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#20 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation - //SEG433 [187] (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 + //SEG434 [187] (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 - //SEG434 [188] 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] - //SEG435 [188] 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 - //SEG436 play_move_rotate::@4 + //SEG435 [188] 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] + //SEG436 [188] 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 + //SEG437 play_move_rotate::@4 b4: - //SEG437 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#25 -- vbuz1=vbuz2 + //SEG438 [189] (byte) play_collision::xpos#3 ← (byte) current_xpos#25 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG438 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG439 [190] (byte) play_collision::ypos#3 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG439 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG440 [191] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG440 [192] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG441 [192] (byte*~) current_piece#101 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_101 lda current_piece+1 sta current_piece_101+1 - //SEG441 [193] call play_collision - //SEG442 [201] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] - //SEG443 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy - //SEG444 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy - //SEG445 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy - //SEG446 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + //SEG442 [193] call play_collision + //SEG443 [201] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + //SEG444 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG445 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG446 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG447 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#101 [phi:play_move_rotate::@4->play_collision#3] -- register_copy jsr play_collision - //SEG447 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 - //SEG448 play_move_rotate::@14 - //SEG449 [195] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 - //SEG450 [196] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG448 [194] (byte) play_collision::return#14 ← (byte) play_collision::return#15 + //SEG449 play_move_rotate::@14 + //SEG450 [195] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#14 + //SEG451 [196] 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 - //SEG451 play_move_rotate::@11 - //SEG452 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG452 play_move_rotate::@11 + //SEG453 [197] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG453 [198] (byte*) current_piece_gfx#6 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 + //SEG454 [198] (byte*) current_piece_gfx#6 ← (byte*) current_piece#15 + (byte) current_orientation#7 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG454 [184] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] - //SEG455 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG456 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG457 [184] 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 + //SEG455 [184] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG456 [184] phi (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#6 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG457 [184] phi (byte) current_orientation#25 = (byte) current_orientation#7 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG458 [184] 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 - //SEG458 play_move_rotate::@1 + //SEG459 play_move_rotate::@1 b1: - //SEG459 [199] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG460 [199] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 - //SEG460 [200] (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 + //SEG461 [200] (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 } -//SEG461 play_collision +//SEG462 play_collision // Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries // Returns information about the type of the collision detected play_collision: { @@ -24724,7 +24723,7 @@ play_collision: { .label i_3 = $e .label i_11 = $e .label i_13 = $e - //SEG462 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx + //SEG463 [202] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -24732,540 +24731,540 @@ play_collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG463 [203] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG464 [203] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG464 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] - //SEG465 [204] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 + //SEG465 [204] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG466 [204] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG466 [204] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG467 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy - //SEG468 play_collision::@1 + //SEG468 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG469 play_collision::@1 b1: - //SEG469 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG470 [205] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG470 [206] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 + //SEG471 [206] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#6 -- vbuz1=vbuz2 lda xpos sta col - //SEG471 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] - //SEG472 [207] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 + //SEG472 [207] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG473 [207] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG473 [207] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy - //SEG474 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy - //SEG475 play_collision::@2 + //SEG474 [207] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG475 [207] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG476 play_collision::@2 b2: - //SEG476 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG477 [208] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG477 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG478 [209] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 - //SEG478 play_collision::@8 - //SEG479 [210] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG479 play_collision::@8 + //SEG480 [210] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG480 [211] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] - //SEG481 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG481 [211] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG482 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG482 play_collision::@return + //SEG483 play_collision::@return breturn: - //SEG483 [212] return + //SEG484 [212] return rts - //SEG484 play_collision::@4 + //SEG485 play_collision::@4 b4: - //SEG485 [213] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG486 [213] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG486 [214] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 + //SEG487 [214] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG487 [211] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] - //SEG488 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG488 [211] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG489 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG489 play_collision::@5 + //SEG490 play_collision::@5 b5: - //SEG490 [215] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG491 [215] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG491 [211] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] - //SEG492 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG492 [211] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG493 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG493 play_collision::@6 + //SEG494 play_collision::@6 b6: - //SEG494 [216] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG495 [216] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG495 [211] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] - //SEG496 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG496 [211] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG497 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG497 play_collision::@3 + //SEG498 play_collision::@3 b3: - //SEG498 [217] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG499 [217] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG499 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx + //SEG500 [218] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG500 [219] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG501 [219] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 - //SEG501 play_collision::@17 - //SEG502 [220] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG502 play_collision::@17 + //SEG503 [220] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG503 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG504 [221] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG504 [222] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG505 [222] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG505 [211] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] - //SEG506 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 + //SEG506 [211] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG507 [211] phi (byte) play_collision::return#15 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG507 play_collision::@20 + //SEG508 play_collision::@20 b20: - //SEG508 [223] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG509 [223] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG509 [204] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] - //SEG510 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy - //SEG511 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy - //SEG512 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy + //SEG510 [204] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG511 [204] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG512 [204] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG513 [204] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG513 play_collision::@21 + //SEG514 play_collision::@21 b21: - //SEG514 [224] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 + //SEG515 [224] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG515 [207] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] - //SEG516 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy - //SEG517 [207] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy - //SEG518 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy + //SEG516 [207] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG517 [207] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG518 [207] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG519 [207] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } -//SEG519 play_move_leftright +//SEG520 play_move_leftright // Move left/right or rotate the current piece // Return non-zero if a render is needed play_move_leftright: { - //SEG520 [225] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG521 [225] 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 - //SEG521 play_move_leftright::@6 - //SEG522 [226] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG522 play_move_leftright::@6 + //SEG523 [226] 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 - //SEG523 play_move_leftright::@7 - //SEG524 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG524 play_move_leftright::@7 + //SEG525 [227] (byte) play_collision::xpos#2 ← (byte) current_xpos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty play_collision.xpos - //SEG525 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG526 [228] (byte) play_collision::ypos#2 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG526 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG527 [229] (byte) play_collision::orientation#2 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG527 [230] (byte*~) current_piece#100 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG528 [230] (byte*~) current_piece#100 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_100 lda current_piece+1 sta current_piece_100+1 - //SEG528 [231] call play_collision - //SEG529 [201] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] - //SEG530 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy - //SEG531 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy - //SEG532 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy - //SEG533 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + //SEG529 [231] call play_collision + //SEG530 [201] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + //SEG531 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG532 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG533 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG534 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#100 [phi:play_move_leftright::@7->play_collision#3] -- register_copy jsr play_collision - //SEG534 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 - //SEG535 play_move_leftright::@15 - //SEG536 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 - //SEG537 [234] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG535 [232] (byte) play_collision::return#13 ← (byte) play_collision::return#15 + //SEG536 play_move_leftright::@15 + //SEG537 [233] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13 + //SEG538 [234] 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 - //SEG538 play_move_leftright::@8 - //SEG539 [235] (byte) current_xpos#5 ← ++ (byte) current_xpos#21 -- vbuz1=_inc_vbuz1 + //SEG539 play_move_leftright::@8 + //SEG540 [235] (byte) current_xpos#5 ← ++ (byte) current_xpos#21 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG540 [236] 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] + //SEG541 [236] 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: - //SEG541 [236] phi (byte) current_xpos#25 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG542 [236] 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 + //SEG542 [236] phi (byte) current_xpos#25 = (byte) current_xpos#7 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG543 [236] 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 - //SEG543 [236] 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] + //SEG544 [236] 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: - //SEG544 [236] phi (byte) current_xpos#25 = (byte) current_xpos#21 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG545 [236] 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 + //SEG545 [236] phi (byte) current_xpos#25 = (byte) current_xpos#21 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG546 [236] 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 - //SEG546 play_move_leftright::@return + //SEG547 play_move_leftright::@return breturn: - //SEG547 [237] return + //SEG548 [237] return rts - //SEG548 play_move_leftright::@1 + //SEG549 play_move_leftright::@1 b1: - //SEG549 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#21 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG550 [238] (byte) play_collision::xpos#1 ← (byte) current_xpos#21 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx play_collision.xpos - //SEG550 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#18 -- vbuz1=vbuz2 + //SEG551 [239] (byte) play_collision::ypos#1 ← (byte) current_ypos#18 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG551 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 + //SEG552 [240] (byte) play_collision::orientation#1 ← (byte) current_orientation#20 -- vbuxx=vbuz1 ldx current_orientation - //SEG552 [241] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 + //SEG553 [241] (byte*~) current_piece#99 ← (byte*) current_piece#15 -- pbuz1=pbuz2 lda current_piece sta current_piece_99 lda current_piece+1 sta current_piece_99+1 - //SEG553 [242] call play_collision - //SEG554 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] - //SEG555 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy - //SEG556 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy - //SEG557 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy - //SEG558 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + //SEG554 [242] call play_collision + //SEG555 [201] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG556 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG557 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG558 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG559 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#99 [phi:play_move_leftright::@1->play_collision#3] -- register_copy jsr play_collision - //SEG559 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 - //SEG560 play_move_leftright::@14 - //SEG561 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 - //SEG562 [245] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG560 [243] (byte) play_collision::return#1 ← (byte) play_collision::return#15 + //SEG561 play_move_leftright::@14 + //SEG562 [244] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + //SEG563 [245] 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 - //SEG563 play_move_leftright::@11 - //SEG564 [246] (byte) current_xpos#7 ← -- (byte) current_xpos#21 -- vbuz1=_dec_vbuz1 + //SEG564 play_move_leftright::@11 + //SEG565 [246] (byte) current_xpos#7 ← -- (byte) current_xpos#21 -- vbuz1=_dec_vbuz1 dec current_xpos jmp b2 } -//SEG565 play_move_down +//SEG566 play_move_down // Move down the current piece // Return non-zero if a render is needed play_move_down: { - //SEG566 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 + //SEG567 [247] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG567 [248] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG568 [248] 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 - //SEG568 [249] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] - //SEG569 play_move_down::@8 - //SEG570 [250] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] - //SEG571 [250] 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 + //SEG569 [249] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG570 play_move_down::@8 + //SEG571 [250] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG572 [250] 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 - //SEG572 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG573 [250] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b3: - //SEG573 [250] 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 + //SEG574 [250] 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 - //SEG574 play_move_down::@1 + //SEG575 play_move_down::@1 b1: - //SEG575 [251] call keyboard_event_pressed - //SEG576 [384] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG577 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG576 [251] call keyboard_event_pressed + //SEG577 [384] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG578 [384] 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 - //SEG578 [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 - //SEG579 play_move_down::@17 - //SEG580 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - //SEG581 [254] 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 + //SEG579 [252] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG580 play_move_down::@17 + //SEG581 [253] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG582 [254] 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 - //SEG582 play_move_down::@9 - //SEG583 [255] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG583 play_move_down::@9 + //SEG584 [255] if((byte) current_movedown_counter#12<(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 - //SEG584 play_move_down::@10 - //SEG585 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG585 play_move_down::@10 + //SEG586 [256] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG586 [257] 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] - //SEG587 [257] 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 - //SEG588 play_move_down::@2 + //SEG587 [257] 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] + //SEG588 [257] 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 + //SEG589 play_move_down::@2 b2: - //SEG589 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG590 [258] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@4 -- vbuz1_lt_vbuz2_then_la1 lda current_movedown_counter cmp current_movedown_slow bcc b4 - //SEG590 play_move_down::@11 - //SEG591 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG591 play_move_down::@11 + //SEG592 [259] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG592 [260] 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] - //SEG593 [260] 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 - //SEG594 play_move_down::@4 + //SEG593 [260] 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] + //SEG594 [260] 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 + //SEG595 play_move_down::@4 b4: - //SEG595 [261] 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 + //SEG596 [261] 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 - //SEG596 play_move_down::@12 - //SEG597 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG597 play_move_down::@12 + //SEG598 [262] (byte) play_collision::ypos#0 ← (byte) current_ypos#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty play_collision.ypos - //SEG598 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 + //SEG599 [263] (byte) play_collision::xpos#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG599 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 + //SEG600 [264] (byte) play_collision::orientation#0 ← (byte) current_orientation#13 -- vbuxx=vbuz1 ldx current_orientation - //SEG600 [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 -- pbuz1=pbuz2 + //SEG601 [265] (byte*~) current_piece#98 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece sta current_piece_98 lda current_piece+1 sta current_piece_98+1 - //SEG601 [266] call play_collision - //SEG602 [201] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] - //SEG603 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy - //SEG604 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy - //SEG605 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy - //SEG606 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_down::@12->play_collision#3] -- register_copy + //SEG602 [266] call play_collision + //SEG603 [201] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + //SEG604 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG605 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG606 [201] phi (byte) play_collision::orientation#5 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG607 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#98 [phi:play_move_down::@12->play_collision#3] -- register_copy jsr play_collision - //SEG607 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 - //SEG608 play_move_down::@18 - //SEG609 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 - //SEG610 [269] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG608 [267] (byte) play_collision::return#0 ← (byte) play_collision::return#15 + //SEG609 play_move_down::@18 + //SEG610 [268] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + //SEG611 [269] 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 - //SEG611 [270] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] - //SEG612 play_move_down::@13 - //SEG613 [271] call play_lock_current + //SEG612 [270] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG613 play_move_down::@13 + //SEG614 [271] call play_lock_current jsr play_lock_current - //SEG614 [272] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] - //SEG615 play_move_down::@19 - //SEG616 [273] call play_remove_lines - //SEG617 [344] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + //SEG615 [272] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG616 play_move_down::@19 + //SEG617 [273] call play_remove_lines + //SEG618 [344] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] jsr play_remove_lines - //SEG618 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuaa=vbuz1 + //SEG619 [274] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#7 -- vbuaa=vbuz1 lda play_remove_lines.removed - //SEG619 play_move_down::@20 - //SEG620 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 - //SEG621 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa + //SEG620 play_move_down::@20 + //SEG621 [275] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0 + //SEG622 [276] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0 -- vbuxx=vbuaa tax - //SEG622 [277] call play_update_score + //SEG623 [277] call play_update_score jsr play_update_score - //SEG623 [278] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] - //SEG624 play_move_down::@21 - //SEG625 [279] call play_spawn_current - //SEG626 [285] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] - //SEG627 [285] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy - //SEG628 [285] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@21->play_spawn_current#1] -- register_copy + //SEG624 [278] phi from play_move_down::@20 to play_move_down::@21 [phi:play_move_down::@20->play_move_down::@21] + //SEG625 play_move_down::@21 + //SEG626 [279] call play_spawn_current + //SEG627 [285] phi from play_move_down::@21 to play_spawn_current [phi:play_move_down::@21->play_spawn_current] + //SEG628 [285] phi (byte) game_over#65 = (byte) game_over#10 [phi:play_move_down::@21->play_spawn_current#0] -- register_copy + //SEG629 [285] phi (byte) next_piece_idx#17 = (byte) next_piece_idx#10 [phi:play_move_down::@21->play_spawn_current#1] -- register_copy jsr play_spawn_current - //SEG629 [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG630 [280] (byte*~) current_piece#103 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 ldy play_spawn_current._0 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG630 [281] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] - //SEG631 [281] phi (byte) next_piece_idx#31 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy - //SEG632 [281] phi (byte) game_over#28 = (byte) game_over#52 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy - //SEG633 [281] phi (byte) current_xpos#43 = (byte) current_xpos#102 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy - //SEG634 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#7 [phi:play_move_down::@21->play_move_down::@7#3] -- register_copy - //SEG635 [281] phi (byte) current_orientation#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#4] -- vbuz1=vbuc1 + //SEG631 [281] phi from play_move_down::@21 to play_move_down::@7 [phi:play_move_down::@21->play_move_down::@7] + //SEG632 [281] phi (byte) next_piece_idx#31 = (byte) play_spawn_current::piece_idx#2 [phi:play_move_down::@21->play_move_down::@7#0] -- register_copy + //SEG633 [281] phi (byte) game_over#28 = (byte) game_over#52 [phi:play_move_down::@21->play_move_down::@7#1] -- register_copy + //SEG634 [281] phi (byte) current_xpos#43 = (byte) current_xpos#102 [phi:play_move_down::@21->play_move_down::@7#2] -- register_copy + //SEG635 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#7 [phi:play_move_down::@21->play_move_down::@7#3] -- register_copy + //SEG636 [281] phi (byte) current_orientation#38 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@21->play_move_down::@7#4] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG636 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#4 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy - //SEG637 [281] phi (byte*) current_piece#29 = (byte*~) current_piece#103 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy - //SEG638 [281] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy - //SEG639 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy - //SEG640 [281] phi (byte) level#34 = (byte) level#19 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy - //SEG641 [281] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy - //SEG642 [281] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy - //SEG643 [281] phi (byte) current_ypos#38 = (byte) current_ypos#5 [phi:play_move_down::@21->play_move_down::@7#12] -- register_copy - //SEG644 play_move_down::@7 + //SEG637 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#4 [phi:play_move_down::@21->play_move_down::@7#5] -- register_copy + //SEG638 [281] phi (byte*) current_piece#29 = (byte*~) current_piece#103 [phi:play_move_down::@21->play_move_down::@7#6] -- register_copy + //SEG639 [281] phi (byte) level_bcd#32 = (byte) level_bcd#19 [phi:play_move_down::@21->play_move_down::@7#7] -- register_copy + //SEG640 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#23 [phi:play_move_down::@21->play_move_down::@7#8] -- register_copy + //SEG641 [281] phi (byte) level#34 = (byte) level#19 [phi:play_move_down::@21->play_move_down::@7#9] -- register_copy + //SEG642 [281] phi (dword) score_bcd#27 = (dword) score_bcd#16 [phi:play_move_down::@21->play_move_down::@7#10] -- register_copy + //SEG643 [281] phi (word) lines_bcd#27 = (word) lines_bcd#17 [phi:play_move_down::@21->play_move_down::@7#11] -- register_copy + //SEG644 [281] phi (byte) current_ypos#38 = (byte) current_ypos#5 [phi:play_move_down::@21->play_move_down::@7#12] -- register_copy + //SEG645 play_move_down::@7 b7: - //SEG645 [282] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] - //SEG646 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#31 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG647 [282] phi (byte) game_over#15 = (byte) game_over#28 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG648 [282] phi (byte) current_xpos#21 = (byte) current_xpos#43 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG649 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#35 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG650 [282] phi (byte) current_orientation#20 = (byte) current_orientation#38 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG651 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG652 [282] phi (byte*) current_piece#15 = (byte*) current_piece#29 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy - //SEG653 [282] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy - //SEG654 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy - //SEG655 [282] phi (byte) level#17 = (byte) level#34 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy - //SEG656 [282] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy - //SEG657 [282] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy - //SEG658 [282] phi (byte) current_ypos#18 = (byte) current_ypos#38 [phi:play_move_down::@7->play_move_down::@return#12] -- register_copy - //SEG659 [282] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuz1=vbuc1 + //SEG646 [282] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG647 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#31 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG648 [282] phi (byte) game_over#15 = (byte) game_over#28 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG649 [282] phi (byte) current_xpos#21 = (byte) current_xpos#43 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG650 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#35 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG651 [282] phi (byte) current_orientation#20 = (byte) current_orientation#38 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG652 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#29 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG653 [282] phi (byte*) current_piece#15 = (byte*) current_piece#29 [phi:play_move_down::@7->play_move_down::@return#6] -- register_copy + //SEG654 [282] phi (byte) level_bcd#17 = (byte) level_bcd#32 [phi:play_move_down::@7->play_move_down::@return#7] -- register_copy + //SEG655 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#38 [phi:play_move_down::@7->play_move_down::@return#8] -- register_copy + //SEG656 [282] phi (byte) level#17 = (byte) level#34 [phi:play_move_down::@7->play_move_down::@return#9] -- register_copy + //SEG657 [282] phi (dword) score_bcd#14 = (dword) score_bcd#27 [phi:play_move_down::@7->play_move_down::@return#10] -- register_copy + //SEG658 [282] phi (word) lines_bcd#15 = (word) lines_bcd#27 [phi:play_move_down::@7->play_move_down::@return#11] -- register_copy + //SEG659 [282] phi (byte) current_ypos#18 = (byte) current_ypos#38 [phi:play_move_down::@7->play_move_down::@return#12] -- register_copy + //SEG660 [282] phi (byte) current_movedown_counter#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#13] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG660 [282] 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#14] -- vbuxx=vbuc1 + //SEG661 [282] 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#14] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG661 [282] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG662 [282] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] b5: - //SEG662 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG663 [282] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG664 [282] phi (byte) current_xpos#21 = (byte) current_xpos#121 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG665 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#111 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG666 [282] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG667 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG668 [282] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG669 [282] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy - //SEG670 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy - //SEG671 [282] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy - //SEG672 [282] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy - //SEG673 [282] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy - //SEG674 [282] phi (byte) current_ypos#18 = (byte) current_ypos#10 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy - //SEG675 [282] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#13] -- register_copy - //SEG676 [282] 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#14] -- vbuxx=vbuc1 + //SEG663 [282] phi (byte) next_piece_idx#16 = (byte) next_piece_idx#10 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG664 [282] phi (byte) game_over#15 = (byte) game_over#10 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG665 [282] phi (byte) current_xpos#21 = (byte) current_xpos#121 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG666 [282] phi (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#111 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG667 [282] phi (byte) current_orientation#20 = (byte) current_orientation#13 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG668 [282] phi (byte) current_piece_char#15 = (byte) current_piece_char#21 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG669 [282] phi (byte*) current_piece#15 = (byte*) current_piece#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG670 [282] phi (byte) level_bcd#17 = (byte) level_bcd#11 [phi:play_move_down::@4->play_move_down::@return#7] -- register_copy + //SEG671 [282] phi (byte) current_movedown_slow#21 = (byte) current_movedown_slow#14 [phi:play_move_down::@4->play_move_down::@return#8] -- register_copy + //SEG672 [282] phi (byte) level#17 = (byte) level#10 [phi:play_move_down::@4->play_move_down::@return#9] -- register_copy + //SEG673 [282] phi (dword) score_bcd#14 = (dword) score_bcd#18 [phi:play_move_down::@4->play_move_down::@return#10] -- register_copy + //SEG674 [282] phi (word) lines_bcd#15 = (word) lines_bcd#19 [phi:play_move_down::@4->play_move_down::@return#11] -- register_copy + //SEG675 [282] phi (byte) current_ypos#18 = (byte) current_ypos#10 [phi:play_move_down::@4->play_move_down::@return#12] -- register_copy + //SEG676 [282] phi (byte) current_movedown_counter#14 = (byte) current_movedown_counter#12 [phi:play_move_down::@4->play_move_down::@return#13] -- register_copy + //SEG677 [282] 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#14] -- vbuxx=vbuc1 ldx #0 - //SEG677 play_move_down::@return + //SEG678 play_move_down::@return breturn: - //SEG678 [283] return + //SEG679 [283] return rts - //SEG679 play_move_down::@6 + //SEG680 play_move_down::@6 b6: - //SEG680 [284] (byte) current_ypos#2 ← ++ (byte) current_ypos#10 -- vbuz1=_inc_vbuz1 + //SEG681 [284] (byte) current_ypos#2 ← ++ (byte) current_ypos#10 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG681 [281] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] - //SEG682 [281] phi (byte) next_piece_idx#31 = (byte) next_piece_idx#10 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG683 [281] phi (byte) game_over#28 = (byte) game_over#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG684 [281] phi (byte) current_xpos#43 = (byte) current_xpos#121 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG685 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#111 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG686 [281] phi (byte) current_orientation#38 = (byte) current_orientation#13 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG687 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#21 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy - //SEG688 [281] phi (byte*) current_piece#29 = (byte*) current_piece#10 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy - //SEG689 [281] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy - //SEG690 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy - //SEG691 [281] phi (byte) level#34 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy - //SEG692 [281] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy - //SEG693 [281] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy - //SEG694 [281] phi (byte) current_ypos#38 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#12] -- register_copy + //SEG682 [281] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG683 [281] phi (byte) next_piece_idx#31 = (byte) next_piece_idx#10 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG684 [281] phi (byte) game_over#28 = (byte) game_over#10 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG685 [281] phi (byte) current_xpos#43 = (byte) current_xpos#121 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG686 [281] phi (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#111 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG687 [281] phi (byte) current_orientation#38 = (byte) current_orientation#13 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG688 [281] phi (byte) current_piece_char#29 = (byte) current_piece_char#21 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG689 [281] phi (byte*) current_piece#29 = (byte*) current_piece#10 [phi:play_move_down::@6->play_move_down::@7#6] -- register_copy + //SEG690 [281] phi (byte) level_bcd#32 = (byte) level_bcd#11 [phi:play_move_down::@6->play_move_down::@7#7] -- register_copy + //SEG691 [281] phi (byte) current_movedown_slow#38 = (byte) current_movedown_slow#14 [phi:play_move_down::@6->play_move_down::@7#8] -- register_copy + //SEG692 [281] phi (byte) level#34 = (byte) level#10 [phi:play_move_down::@6->play_move_down::@7#9] -- register_copy + //SEG693 [281] phi (dword) score_bcd#27 = (dword) score_bcd#18 [phi:play_move_down::@6->play_move_down::@7#10] -- register_copy + //SEG694 [281] phi (word) lines_bcd#27 = (word) lines_bcd#19 [phi:play_move_down::@6->play_move_down::@7#11] -- register_copy + //SEG695 [281] phi (byte) current_ypos#38 = (byte) current_ypos#2 [phi:play_move_down::@6->play_move_down::@7#12] -- register_copy jmp b7 } -//SEG695 play_spawn_current +//SEG696 play_spawn_current // Spawn a new piece // Moves the next piece into the current and spawns a new next piece play_spawn_current: { .label _0 = 4 .label piece_idx = $21 - //SEG696 [286] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 + //SEG697 [286] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 -- vbuxx=vbuz1 ldx next_piece_idx - //SEG697 [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG698 [287] (byte~) play_spawn_current::$0 ← (byte) play_spawn_current::current_piece_idx#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _0 - //SEG698 [288] (byte) current_piece_char#4 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG699 [288] (byte) current_piece_char#4 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_CHARS,x sta current_piece_char - //SEG699 [289] (byte*) current_piece_gfx#7 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG700 [289] (byte*) current_piece_gfx#7 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _0 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG700 [290] (byte) current_xpos#102 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG701 [290] (byte) current_xpos#102 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_X,x sta current_xpos - //SEG701 [291] (byte) current_ypos#5 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG702 [291] (byte) current_ypos#5 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_START_Y,x sta current_ypos - //SEG702 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#102 -- vbuz1=vbuz2 + //SEG703 [292] (byte) play_collision::xpos#4 ← (byte) current_xpos#102 -- vbuz1=vbuz2 lda current_xpos sta play_collision.xpos - //SEG703 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#5 -- vbuz1=vbuz2 + //SEG704 [293] (byte) play_collision::ypos#4 ← (byte) current_ypos#5 -- vbuz1=vbuz2 lda current_ypos sta play_collision.ypos - //SEG704 [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG705 [294] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$0) -- pbuz1=pptc1_derefidx_vbuz2 lda PIECES,y sta current_piece_102 lda PIECES+1,y sta current_piece_102+1 - //SEG705 [295] call play_collision - //SEG706 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] - //SEG707 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy - //SEG708 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy - //SEG709 [201] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 + //SEG706 [295] call play_collision + //SEG707 [201] phi from play_spawn_current to play_collision [phi:play_spawn_current->play_collision] + //SEG708 [201] phi (byte) play_collision::xpos#6 = (byte) play_collision::xpos#4 [phi:play_spawn_current->play_collision#0] -- register_copy + //SEG709 [201] phi (byte) play_collision::ypos#5 = (byte) play_collision::ypos#4 [phi:play_spawn_current->play_collision#1] -- register_copy + //SEG710 [201] phi (byte) play_collision::orientation#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_spawn_current->play_collision#2] -- vbuxx=vbuc1 ldx #0 - //SEG710 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_spawn_current->play_collision#3] -- register_copy + //SEG711 [201] phi (byte*) current_piece#17 = (byte*~) current_piece#102 [phi:play_spawn_current->play_collision#3] -- register_copy jsr play_collision - //SEG711 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 - //SEG712 play_spawn_current::@9 - //SEG713 [297] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 - //SEG714 [298] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuaa_neq_vbuc1_then_la1 + //SEG712 [296] (byte) play_collision::return#10 ← (byte) play_collision::return#15 + //SEG713 play_spawn_current::@9 + //SEG714 [297] (byte~) play_spawn_current::$2 ← (byte) play_collision::return#10 + //SEG715 [298] if((byte~) play_spawn_current::$2!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@11 -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_PLAYFIELD bne b1 - //SEG715 [299] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] - //SEG716 [299] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG716 [299] phi from play_spawn_current::@9 to play_spawn_current::@1 [phi:play_spawn_current::@9->play_spawn_current::@1] + //SEG717 [299] phi (byte) game_over#52 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_spawn_current::@9->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #1 sta game_over - //SEG717 play_spawn_current::@1 + //SEG718 play_spawn_current::@1 b1: - //SEG718 [300] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] - //SEG719 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 + //SEG719 [300] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG720 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current::@1->play_spawn_current::@2#0] -- vbuz1=vbuc1 lda #7 sta piece_idx - //SEG720 play_spawn_current::@2 + //SEG721 play_spawn_current::@2 b2: - //SEG721 [301] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG722 [301] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@3 -- vbuz1_eq_vbuc1_then_la1 lda piece_idx cmp #7 beq b3 - //SEG722 play_spawn_current::@return - //SEG723 [302] return + //SEG723 play_spawn_current::@return + //SEG724 [302] return rts - //SEG724 [303] phi from play_spawn_current::@2 to play_spawn_current::@3 [phi:play_spawn_current::@2->play_spawn_current::@3] - //SEG725 play_spawn_current::@3 + //SEG725 [303] phi from play_spawn_current::@2 to play_spawn_current::@3 [phi:play_spawn_current::@2->play_spawn_current::@3] + //SEG726 play_spawn_current::@3 b3: - //SEG726 [304] call sid_rnd + //SEG727 [304] call sid_rnd jsr sid_rnd - //SEG727 [305] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 - //SEG728 play_spawn_current::@10 - //SEG729 [306] (byte~) play_spawn_current::$6 ← (byte) sid_rnd::return#2 - //SEG730 [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 + //SEG728 [305] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG729 play_spawn_current::@10 + //SEG730 [306] (byte~) play_spawn_current::$6 ← (byte) sid_rnd::return#2 + //SEG731 [307] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 sta piece_idx - //SEG731 [300] phi from play_spawn_current::@10 to play_spawn_current::@2 [phi:play_spawn_current::@10->play_spawn_current::@2] - //SEG732 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@10->play_spawn_current::@2#0] -- register_copy + //SEG732 [300] phi from play_spawn_current::@10 to play_spawn_current::@2 [phi:play_spawn_current::@10->play_spawn_current::@2] + //SEG733 [300] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@10->play_spawn_current::@2#0] -- register_copy jmp b2 - //SEG733 [308] phi from play_spawn_current::@9 to play_spawn_current::@11 [phi:play_spawn_current::@9->play_spawn_current::@11] - //SEG734 play_spawn_current::@11 - //SEG735 [299] phi from play_spawn_current::@11 to play_spawn_current::@1 [phi:play_spawn_current::@11->play_spawn_current::@1] - //SEG736 [299] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@11->play_spawn_current::@1#0] -- register_copy + //SEG734 [308] phi from play_spawn_current::@9 to play_spawn_current::@11 [phi:play_spawn_current::@9->play_spawn_current::@11] + //SEG735 play_spawn_current::@11 + //SEG736 [299] phi from play_spawn_current::@11 to play_spawn_current::@1 [phi:play_spawn_current::@11->play_spawn_current::@1] + //SEG737 [299] phi (byte) game_over#52 = (byte) game_over#65 [phi:play_spawn_current::@11->play_spawn_current::@1#0] -- register_copy } -//SEG737 sid_rnd +//SEG738 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { - //SEG738 [309] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG739 [309] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG739 sid_rnd::@return - //SEG740 [310] return + //SEG740 sid_rnd::@return + //SEG741 [310] return rts } -//SEG741 play_update_score +//SEG742 play_update_score // Update the score based on the number of lines removed play_update_score: { .label lines_before = 4 .label add_bcd = $2b - //SEG742 [311] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 + //SEG743 [311] if((byte) play_update_score::removed#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_update_score::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn - //SEG743 play_update_score::@3 - //SEG744 [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 + //SEG744 play_update_score::@3 + //SEG745 [312] (byte~) play_update_score::$2 ← < (word) lines_bcd#19 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG745 [313] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuaa_band_vbuc1 + //SEG746 [313] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte/word/signed word/dword/signed dword) 240 -- vbuz1=vbuaa_band_vbuc1 and #$f0 sta lines_before - //SEG746 [314] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG747 [314] (byte~) play_update_score::$4 ← (byte) play_update_score::removed#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG747 [315] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa + //SEG748 [315] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$4) -- vduz1=pduc1_derefidx_vbuaa tay lda score_add_bcd,y sta add_bcd @@ -25275,9 +25274,9 @@ play_update_score: { sta add_bcd+2 lda score_add_bcd+3,y sta add_bcd+3 - //SEG748 asm { sed } + //SEG749 asm { sed } sed - //SEG749 [317] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG750 [317] (word) lines_bcd#30 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc lines_bcd @@ -25285,7 +25284,7 @@ play_update_score: { lda #0 adc lines_bcd+1 sta lines_bcd+1 - //SEG750 [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 + //SEG751 [318] (dword) score_bcd#30 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0 -- vduz1=vduz1_plus_vduz2 lda score_bcd clc adc add_bcd @@ -25299,88 +25298,88 @@ play_update_score: { lda score_bcd+3 adc add_bcd+3 sta score_bcd+3 - //SEG751 asm { cld } + //SEG752 asm { cld } cld - //SEG752 [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 + //SEG753 [320] (byte~) play_update_score::$5 ← < (word) lines_bcd#30 -- vbuaa=_lo_vwuz1 lda lines_bcd - //SEG753 [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuaa=vbuaa_band_vbuc1 + //SEG754 [321] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$5 & (byte/word/signed word/dword/signed dword) 240 -- vbuaa=vbuaa_band_vbuc1 and #$f0 - //SEG754 [322] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 + //SEG755 [322] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -- vbuz1_eq_vbuaa_then_la1 cmp lines_before beq breturn - //SEG755 [323] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] - //SEG756 play_update_score::@4 - //SEG757 [324] call play_increase_level + //SEG756 [323] phi from play_update_score::@3 to play_update_score::@4 [phi:play_update_score::@3->play_update_score::@4] + //SEG757 play_update_score::@4 + //SEG758 [324] call play_increase_level jsr play_increase_level - //SEG758 [325] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] - //SEG759 [325] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy - //SEG760 [325] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy - //SEG761 [325] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy - //SEG762 [325] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy - //SEG763 [325] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy - //SEG764 play_update_score::@return + //SEG759 [325] phi from play_update_score play_update_score::@3 play_update_score::@4 to play_update_score::@return [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return] + //SEG760 [325] phi (byte) level_bcd#19 = (byte) level_bcd#11 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#0] -- register_copy + //SEG761 [325] phi (byte) current_movedown_slow#23 = (byte) current_movedown_slow#14 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#1] -- register_copy + //SEG762 [325] phi (byte) level#19 = (byte) level#10 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#2] -- register_copy + //SEG763 [325] phi (dword) score_bcd#16 = (dword) score_bcd#18 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#3] -- register_copy + //SEG764 [325] phi (word) lines_bcd#17 = (word) lines_bcd#19 [phi:play_update_score/play_update_score::@3/play_update_score::@4->play_update_score::@return#4] -- register_copy + //SEG765 play_update_score::@return breturn: - //SEG765 [326] return + //SEG766 [326] return rts } -//SEG766 play_increase_level +//SEG767 play_increase_level // Increase the level play_increase_level: { - //SEG767 [327] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 + //SEG768 [327] (byte) level#21 ← ++ (byte) level#10 -- vbuz1=_inc_vbuz1 inc level - //SEG768 [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 + //SEG769 [328] if((byte) level#21>(byte/signed byte/word/signed word/dword/signed dword) 29) goto play_increase_level::@2 -- vbuz1_gt_vbuc1_then_la1 lda level cmp #$1d beq !+ bcs b1 !: - //SEG769 play_increase_level::@5 - //SEG770 [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG770 play_increase_level::@5 + //SEG771 [329] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21) -- vbuz1=pbuc1_derefidx_vbuz2 ldy level lda MOVEDOWN_SLOW_SPEEDS,y sta current_movedown_slow - //SEG771 [330] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] - //SEG772 [330] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy + //SEG772 [330] phi from play_increase_level::@5 to play_increase_level::@2 [phi:play_increase_level::@5->play_increase_level::@2] + //SEG773 [330] phi (byte) current_movedown_slow#69 = (byte) current_movedown_slow#10 [phi:play_increase_level::@5->play_increase_level::@2#0] -- register_copy jmp b2 - //SEG773 [330] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] + //SEG774 [330] phi from play_increase_level to play_increase_level::@2 [phi:play_increase_level->play_increase_level::@2] b1: - //SEG774 [330] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 + //SEG775 [330] phi (byte) current_movedown_slow#69 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_increase_level->play_increase_level::@2#0] -- vbuz1=vbuc1 lda #1 sta current_movedown_slow - //SEG775 play_increase_level::@2 + //SEG776 play_increase_level::@2 b2: - //SEG776 [331] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 + //SEG777 [331] (byte) level_bcd#21 ← ++ (byte) level_bcd#11 -- vbuz1=_inc_vbuz1 inc level_bcd - //SEG777 [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG778 [332] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and level_bcd - //SEG778 [333] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuaa_neq_vbuc1_then_la1 + //SEG779 [333] if((byte~) play_increase_level::$1!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto play_increase_level::@3 -- vbuaa_neq_vbuc1_then_la1 cmp #$a bne b3 - //SEG779 play_increase_level::@7 - //SEG780 [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 + //SEG780 play_increase_level::@7 + //SEG781 [334] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=vbuz1_plus_vbuc1 lda #6 clc adc level_bcd sta level_bcd - //SEG781 [335] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] - //SEG782 [335] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy - //SEG783 play_increase_level::@3 + //SEG782 [335] phi from play_increase_level::@2 play_increase_level::@7 to play_increase_level::@3 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3] + //SEG783 [335] phi (byte) level_bcd#64 = (byte) level_bcd#21 [phi:play_increase_level::@2/play_increase_level::@7->play_increase_level::@3#0] -- register_copy + //SEG784 play_increase_level::@3 b3: - //SEG784 asm { sed } + //SEG785 asm { sed } sed - //SEG785 [337] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] - //SEG786 [337] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuxx=vbuc1 + //SEG786 [337] phi from play_increase_level::@3 to play_increase_level::@4 [phi:play_increase_level::@3->play_increase_level::@4] + //SEG787 [337] phi (byte) play_increase_level::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_increase_level::@3->play_increase_level::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG787 [337] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] - //SEG788 [337] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy - //SEG789 play_increase_level::@4 + //SEG788 [337] phi from play_increase_level::@4 to play_increase_level::@4 [phi:play_increase_level::@4->play_increase_level::@4] + //SEG789 [337] phi (byte) play_increase_level::b#2 = (byte) play_increase_level::b#1 [phi:play_increase_level::@4->play_increase_level::@4#0] -- register_copy + //SEG790 play_increase_level::@4 b4: - //SEG790 [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG791 [338] (byte) play_increase_level::b4#0 ← (byte) play_increase_level::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG791 [339] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa + //SEG792 [339] *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) ← *((const dword[5]) score_add_bcd#0 + (byte) play_increase_level::b4#0) + *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_increase_level::b4#0) -- pduc1_derefidx_vbuaa=pduc1_derefidx_vbuaa_plus_pduc2_derefidx_vbuaa tay clc lda score_add_bcd,y @@ -25395,19 +25394,19 @@ play_increase_level: { lda score_add_bcd+3,y adc SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG792 [340] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx + //SEG793 [340] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2 -- vbuxx=_inc_vbuxx inx - //SEG793 [341] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG794 [341] if((byte) play_increase_level::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_increase_level::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b4 - //SEG794 play_increase_level::@8 - //SEG795 asm { cld } + //SEG795 play_increase_level::@8 + //SEG796 asm { cld } cld - //SEG796 play_increase_level::@return - //SEG797 [343] return + //SEG797 play_increase_level::@return + //SEG798 [343] return rts } -//SEG798 play_remove_lines +//SEG799 play_remove_lines // Look through the playfield for lines - and remove any lines found // Utilizes two cursors on the playfield - one reading cells and one writing cells // Whenever a full line is detected the writing cursor is instructed to write to the same line once more. @@ -25418,112 +25417,112 @@ play_remove_lines: { .label y = 4 .label removed = 9 .label full = $b - //SEG799 [345] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] - //SEG800 [345] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG800 [345] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG801 [345] phi (byte) play_remove_lines::removed#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta removed - //SEG801 [345] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG802 [345] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 sta y - //SEG802 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 + //SEG803 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#2] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG803 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 + //SEG804 [345] phi (byte) play_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:play_remove_lines->play_remove_lines::@1#3] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG804 [345] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] - //SEG805 [345] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy - //SEG806 [345] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy - //SEG807 [345] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy - //SEG808 [345] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy - //SEG809 play_remove_lines::@1 + //SEG805 [345] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG806 [345] phi (byte) play_remove_lines::removed#11 = (byte) play_remove_lines::removed#7 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG807 [345] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG808 [345] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG809 [345] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#3] -- register_copy + //SEG810 play_remove_lines::@1 b1: - //SEG810 [346] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] - //SEG811 [346] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG811 [346] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG812 [346] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG812 [346] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG813 [346] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG813 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy - //SEG814 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy - //SEG815 [346] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] - //SEG816 [346] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy - //SEG817 [346] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy - //SEG818 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy - //SEG819 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy - //SEG820 play_remove_lines::@2 + //SEG814 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG815 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG816 [346] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG817 [346] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG818 [346] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG819 [346] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG820 [346] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG821 play_remove_lines::@2 b2: - //SEG821 [347] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG822 [347] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG822 [348] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG823 [348] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG823 [349] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 + //SEG824 [349] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@18 -- vbuz1_neq_0_then_la1 cmp #0 bne b3 - //SEG824 [350] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] - //SEG825 [350] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG825 [350] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG826 [350] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full - //SEG826 play_remove_lines::@3 + //SEG827 play_remove_lines::@3 b3: - //SEG827 [351] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG828 [351] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG828 [352] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG829 [352] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG829 [353] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG830 [353] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG830 [354] if((byte) play_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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG831 [354] if((byte) play_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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2 - //SEG831 play_remove_lines::@9 - //SEG832 [355] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG832 play_remove_lines::@9 + //SEG833 [355] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4 - //SEG833 play_remove_lines::@10 - //SEG834 [356] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG834 play_remove_lines::@10 + //SEG835 [356] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG835 [357] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 + //SEG836 [357] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11 -- vbuz1=_inc_vbuz1 inc removed - //SEG836 [358] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] - //SEG837 [358] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy - //SEG838 [358] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy - //SEG839 play_remove_lines::@4 + //SEG837 [358] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG838 [358] phi (byte) play_remove_lines::removed#7 = (byte) play_remove_lines::removed#1 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG839 [358] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#1] -- register_copy + //SEG840 play_remove_lines::@4 b4: - //SEG840 [359] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG841 [359] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG841 [360] if((byte) play_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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG842 [360] if((byte) play_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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG842 [361] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] - //SEG843 [361] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy - //SEG844 play_remove_lines::@5 + //SEG843 [361] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG844 [361] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG845 play_remove_lines::@5 b5: - //SEG845 [362] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG846 [362] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 - //SEG846 play_remove_lines::@return - //SEG847 [363] return + //SEG847 play_remove_lines::@return + //SEG848 [363] return rts - //SEG848 play_remove_lines::@6 + //SEG849 play_remove_lines::@6 b6: - //SEG849 [364] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG850 [364] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG850 [365] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG851 [365] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5 - //SEG851 [366] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] - //SEG852 play_remove_lines::@18 - //SEG853 [350] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] - //SEG854 [350] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy + //SEG852 [366] phi from play_remove_lines::@2 to play_remove_lines::@18 [phi:play_remove_lines::@2->play_remove_lines::@18] + //SEG853 play_remove_lines::@18 + //SEG854 [350] phi from play_remove_lines::@18 to play_remove_lines::@3 [phi:play_remove_lines::@18->play_remove_lines::@3] + //SEG855 [350] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@18->play_remove_lines::@3#0] -- register_copy } -//SEG855 play_lock_current +//SEG856 play_lock_current // Lock the current piece onto the playfield play_lock_current: { .label ypos2 = $10 @@ -25535,149 +25534,149 @@ play_lock_current: { .label i_3 = 9 .label i_7 = 9 .label i_9 = 9 - //SEG856 [367] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG857 [367] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG857 [368] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] - //SEG858 [368] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 + //SEG858 [368] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG859 [368] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG859 [368] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 + //SEG860 [368] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG860 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy - //SEG861 play_lock_current::@1 + //SEG861 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG862 play_lock_current::@1 b1: - //SEG862 [369] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG863 [369] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG863 [370] (byte) play_lock_current::col#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 + //SEG864 [370] (byte) play_lock_current::col#0 ← (byte) current_xpos#121 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG864 [371] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] - //SEG865 [371] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 + //SEG865 [371] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG866 [371] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG866 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy - //SEG867 [371] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy - //SEG868 play_lock_current::@2 + //SEG867 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG868 [371] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG869 play_lock_current::@2 b2: - //SEG869 [372] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG870 [372] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG870 [373] if(*((byte*) current_piece_gfx#111 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG871 [373] if(*((byte*) current_piece_gfx#111 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 - //SEG871 play_lock_current::@4 - //SEG872 [374] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#21 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG872 play_lock_current::@4 + //SEG873 [374] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_char#21 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_char ldy col sta (playfield_line),y - //SEG873 play_lock_current::@3 + //SEG874 play_lock_current::@3 b3: - //SEG874 [375] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG875 [375] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG875 [376] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG876 [376] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG876 [377] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG877 [377] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 - //SEG877 play_lock_current::@5 - //SEG878 [378] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG878 play_lock_current::@5 + //SEG879 [378] (byte) play_lock_current::ypos2#1 ← (byte) play_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 - //SEG879 [379] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG880 [379] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG880 [380] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG881 [380] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 - //SEG881 play_lock_current::@return - //SEG882 [381] return + //SEG882 play_lock_current::@return + //SEG883 [381] return rts - //SEG883 play_lock_current::@7 + //SEG884 play_lock_current::@7 b7: - //SEG884 [382] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG885 [382] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG885 [368] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] - //SEG886 [368] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy - //SEG887 [368] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy - //SEG888 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy + //SEG886 [368] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG887 [368] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG888 [368] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG889 [368] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG889 play_lock_current::@8 + //SEG890 play_lock_current::@8 b8: - //SEG890 [383] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 + //SEG891 [383] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG891 [371] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] - //SEG892 [371] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy - //SEG893 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy - //SEG894 [371] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy + //SEG892 [371] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG893 [371] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG894 [371] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG895 [371] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } -//SEG895 keyboard_event_pressed +//SEG896 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed keyboard_event_pressed: { .label row_bits = $a .label keycode = 9 - //SEG896 [385] (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 + //SEG897 [385] (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 - //SEG897 [386] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG898 [386] (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 - //SEG898 [387] (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 + //SEG899 [387] (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 - //SEG899 [388] (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 + //SEG900 [388] (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 - //SEG900 keyboard_event_pressed::@return - //SEG901 [389] return + //SEG901 keyboard_event_pressed::@return + //SEG902 [389] return rts } -//SEG902 keyboard_event_get +//SEG903 keyboard_event_get // Get the next event from the keyboard event buffer. // Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process. // The buffer is filled by keyboard_event_scan() keyboard_event_get: { - //SEG903 [390] 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 + //SEG904 [390] 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 - //SEG904 keyboard_event_get::@3 - //SEG905 [391] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG905 keyboard_event_get::@3 + //SEG906 [391] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG906 [392] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG907 [392] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuxx=pbuc1_derefidx_vbuz1 ldx keyboard_events_size lda keyboard_events,x tax - //SEG907 [393] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG908 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG909 [393] 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 + //SEG908 [393] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG909 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG910 [393] 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 - //SEG910 [393] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG911 [393] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG911 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG912 [393] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 + //SEG912 [393] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG913 [393] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuxx=vbuc1 ldx #$ff - //SEG913 keyboard_event_get::@return + //SEG914 keyboard_event_get::@return breturn: - //SEG914 [394] return + //SEG915 [394] return rts } -//SEG915 keyboard_event_scan +//SEG916 keyboard_event_scan // Scans the entire matrix to determine which keys have been pressed/depressed. // Generates keyboard events into the event buffer. Events can be read using keyboard_event_get(). // Handles debounce and only generates events when the status of a key changes. @@ -25686,296 +25685,296 @@ keyboard_event_scan: { .label row_scan = $b .label keycode = $a .label row = 9 - //SEG916 [396] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG917 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG918 [396] 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 + //SEG917 [396] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG918 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG919 [396] 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 - //SEG919 [396] 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 + //SEG920 [396] 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 - //SEG920 [396] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG921 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG922 [396] 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 - //SEG923 [396] 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 - //SEG924 keyboard_event_scan::@1 + //SEG921 [396] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG922 [396] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG923 [396] 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 + //SEG924 [396] 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 + //SEG925 keyboard_event_scan::@1 b1: - //SEG925 [397] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG926 [397] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG926 [398] call keyboard_matrix_read + //SEG927 [398] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG927 [399] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG928 keyboard_event_scan::@25 - //SEG929 [400] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG928 [399] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG929 keyboard_event_scan::@25 + //SEG930 [400] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG930 [401] 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 + //SEG931 [401] 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 b6 - //SEG931 keyboard_event_scan::@13 - //SEG932 [402] (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 + //SEG932 keyboard_event_scan::@13 + //SEG933 [402] (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 - //SEG933 [403] 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] - //SEG934 [403] 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 - //SEG935 [403] 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 - //SEG936 keyboard_event_scan::@3 + //SEG934 [403] 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] + //SEG935 [403] 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 + //SEG936 [403] 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 + //SEG937 keyboard_event_scan::@3 b3: - //SEG937 [404] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG938 [404] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG938 [405] 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 + //SEG939 [405] 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 - //SEG939 [406] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG940 keyboard_event_scan::@20 - //SEG941 [407] call keyboard_event_pressed - //SEG942 [384] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG943 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG940 [406] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG941 keyboard_event_scan::@20 + //SEG942 [407] call keyboard_event_pressed + //SEG943 [384] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG944 [384] 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 - //SEG944 [408] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 - //SEG945 keyboard_event_scan::@26 - //SEG946 [409] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - //SEG947 [410] 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 + //SEG945 [408] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG946 keyboard_event_scan::@26 + //SEG947 [409] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG948 [410] 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 b2 - //SEG948 [411] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG949 keyboard_event_scan::@21 - //SEG950 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] - //SEG951 [412] 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 + //SEG949 [411] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG950 keyboard_event_scan::@21 + //SEG951 [412] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG952 [412] 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 - //SEG952 [412] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG953 [412] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b2: - //SEG953 [412] 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 + //SEG954 [412] 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 - //SEG954 keyboard_event_scan::@9 + //SEG955 keyboard_event_scan::@9 b9: - //SEG955 [413] call keyboard_event_pressed - //SEG956 [384] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG957 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG956 [413] call keyboard_event_pressed + //SEG957 [384] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG958 [384] 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 - //SEG958 [414] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 - //SEG959 keyboard_event_scan::@27 - //SEG960 [415] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - //SEG961 [416] 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 + //SEG959 [414] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG960 keyboard_event_scan::@27 + //SEG961 [415] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG962 [416] 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 - //SEG962 keyboard_event_scan::@22 - //SEG963 [417] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG963 keyboard_event_scan::@22 + //SEG964 [417] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_RSHIFT tax - //SEG964 [418] 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] - //SEG965 [418] 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 - //SEG966 keyboard_event_scan::@10 + //SEG965 [418] 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] + //SEG966 [418] 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 + //SEG967 keyboard_event_scan::@10 b10: - //SEG967 [419] call keyboard_event_pressed - //SEG968 [384] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG969 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG968 [419] call keyboard_event_pressed + //SEG969 [384] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG970 [384] 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 - //SEG970 [420] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 - //SEG971 keyboard_event_scan::@28 - //SEG972 [421] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - //SEG973 [422] 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 + //SEG971 [420] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG972 keyboard_event_scan::@28 + //SEG973 [421] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG974 [422] 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 - //SEG974 keyboard_event_scan::@23 - //SEG975 [423] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + //SEG975 keyboard_event_scan::@23 + //SEG976 [423] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_CTRL tax - //SEG976 [424] 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] - //SEG977 [424] 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 - //SEG978 keyboard_event_scan::@11 + //SEG977 [424] 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] + //SEG978 [424] 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 + //SEG979 keyboard_event_scan::@11 b11: - //SEG979 [425] call keyboard_event_pressed - //SEG980 [384] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG981 [384] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG980 [425] call keyboard_event_pressed + //SEG981 [384] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG982 [384] 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 - //SEG982 [426] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 - //SEG983 keyboard_event_scan::@29 - //SEG984 [427] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - //SEG985 [428] 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 + //SEG983 [426] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG984 keyboard_event_scan::@29 + //SEG985 [427] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG986 [428] 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 - //SEG986 keyboard_event_scan::@24 - //SEG987 [429] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + //SEG987 keyboard_event_scan::@24 + //SEG988 [429] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 txa ora #KEY_MODIFIER_COMMODORE - //SEG988 keyboard_event_scan::@return + //SEG989 keyboard_event_scan::@return breturn: - //SEG989 [430] return + //SEG990 [430] return rts - //SEG990 [431] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG991 [431] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b6: - //SEG991 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG992 [431] 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 - //SEG993 [431] 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 + //SEG992 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG993 [431] 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 + //SEG994 [431] 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 - //SEG994 [431] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG995 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG996 [431] 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 - //SEG997 [431] 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 - //SEG998 keyboard_event_scan::@4 + //SEG995 [431] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG996 [431] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG997 [431] 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 + //SEG998 [431] 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 + //SEG999 keyboard_event_scan::@4 b4: - //SEG999 [432] (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 + //SEG1000 [432] (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 - //SEG1000 [433] (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 + //SEG1001 [433] (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 - //SEG1001 [434] 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 + //SEG1002 [434] 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 - //SEG1002 keyboard_event_scan::@15 - //SEG1003 [435] 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 + //SEG1003 keyboard_event_scan::@15 + //SEG1004 [435] 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 - //SEG1004 keyboard_event_scan::@16 - //SEG1005 [436] (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 + //SEG1005 keyboard_event_scan::@16 + //SEG1006 [436] (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 - //SEG1006 [437] 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 + //SEG1007 [437] 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 - //SEG1007 keyboard_event_scan::@17 - //SEG1008 [438] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1008 keyboard_event_scan::@17 + //SEG1009 [438] *((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 - //SEG1009 [439] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1010 [439] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG1010 [440] 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] - //SEG1011 [440] 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 - //SEG1012 keyboard_event_scan::@5 + //SEG1011 [440] 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] + //SEG1012 [440] 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 + //SEG1013 keyboard_event_scan::@5 b5: - //SEG1013 [441] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG1014 [441] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG1014 [442] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG1015 [442] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG1015 [443] 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 + //SEG1016 [443] 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 - //SEG1016 keyboard_event_scan::@19 - //SEG1017 [444] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1017 keyboard_event_scan::@19 + //SEG1018 [444] *((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 - //SEG1018 keyboard_event_scan::@7 + //SEG1019 keyboard_event_scan::@7 b7: - //SEG1019 [445] (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 + //SEG1020 [445] (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 - //SEG1020 [446] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG1021 [446] *((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 - //SEG1021 [447] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG1022 [447] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG1022 keyboard_matrix_read +//SEG1023 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG1023 [448] *((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 + //SEG1024 [448] *((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 - //SEG1024 [449] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG1025 [449] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG1025 keyboard_matrix_read::@return - //SEG1026 [450] return + //SEG1026 keyboard_matrix_read::@return + //SEG1027 [450] return rts } -//SEG1027 render_show +//SEG1028 render_show // Update $D018 to show the current screen (used for double buffering) render_show: { .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f .const toD0182_return = (>(PLAYFIELD_SCREEN_2&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f - //SEG1028 [451] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 + //SEG1029 [451] if((byte) render_screen_show#16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_show::toD0181 -- vbuz1_eq_0_then_la1 lda render_screen_show cmp #0 beq toD0181 - //SEG1029 [452] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] - //SEG1030 render_show::toD0182 - //SEG1031 [453] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] - //SEG1032 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 + //SEG1030 [452] phi from render_show to render_show::toD0182 [phi:render_show->render_show::toD0182] + //SEG1031 render_show::toD0182 + //SEG1032 [453] phi from render_show::toD0182 to render_show::@2 [phi:render_show::toD0182->render_show::@2] + //SEG1033 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0182_return#0 [phi:render_show::toD0182->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0182_return - //SEG1033 render_show::@2 + //SEG1034 render_show::@2 b2: - //SEG1034 [454] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa + //SEG1035 [454] *((const byte*) D018#0) ← (byte) render_show::d018val#3 -- _deref_pbuc1=vbuaa sta D018 - //SEG1035 [455] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1036 [455] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy level lda PIECES_COLORS_1,y sta BGCOL2 - //SEG1036 [456] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG1037 [456] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 lda PIECES_COLORS_2,y sta BGCOL3 - //SEG1037 [457] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 + //SEG1038 [457] (byte) render_screen_showing#1 ← (byte) render_screen_show#16 -- vbuz1=vbuz2 lda render_screen_show sta render_screen_showing - //SEG1038 render_show::@return - //SEG1039 [458] return + //SEG1039 render_show::@return + //SEG1040 [458] return rts - //SEG1040 [459] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] - //SEG1041 render_show::toD0181 + //SEG1041 [459] phi from render_show to render_show::toD0181 [phi:render_show->render_show::toD0181] + //SEG1042 render_show::toD0181 toD0181: - //SEG1042 [453] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] - //SEG1043 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 + //SEG1043 [453] phi from render_show::toD0181 to render_show::@2 [phi:render_show::toD0181->render_show::@2] + //SEG1044 [453] phi (byte) render_show::d018val#3 = (const byte) render_show::toD0181_return#0 [phi:render_show::toD0181->render_show::@2#0] -- vbuaa=vbuc1 lda #toD0181_return jmp b2 } -//SEG1044 play_init +//SEG1045 play_init // Initialize play data tables play_init: { .label pli = 5 .label idx = 2 - //SEG1045 [461] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] - //SEG1046 [461] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 + //SEG1046 [461] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG1047 [461] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG1047 [461] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 + //SEG1048 [461] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG1048 [461] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 + //SEG1049 [461] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG1049 [461] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] - //SEG1050 [461] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy - //SEG1051 [461] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy - //SEG1052 [461] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy - //SEG1053 play_init::@1 + //SEG1050 [461] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG1051 [461] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG1052 [461] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG1053 [461] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG1054 play_init::@1 b1: - //SEG1054 [462] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1055 [462] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1055 [463] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1056 [463] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG1056 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG1057 [464] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG1057 [465] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1058 [465] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -25983,35 +25982,35 @@ play_init: { bcc !+ inc pli+1 !: - //SEG1058 [466] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1059 [466] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG1059 [467] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx + //SEG1060 [467] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG1060 [468] if((byte) play_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 play_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1061 [468] if((byte) play_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 play_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG1061 play_init::@3 - //SEG1062 [469] *((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 + //SEG1062 play_init::@3 + //SEG1063 [469] *((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 - //SEG1063 [470] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 + //SEG1064 [470] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0) -- vbuz1=_deref_pbuc1 lda MOVEDOWN_SLOW_SPEEDS sta current_movedown_slow - //SEG1064 [471] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] - //SEG1065 [471] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuxx=vbuc1 + //SEG1065 [471] phi from play_init::@3 to play_init::@2 [phi:play_init::@3->play_init::@2] + //SEG1066 [471] phi (byte) play_init::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init::@3->play_init::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1066 [471] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] - //SEG1067 [471] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy - //SEG1068 play_init::@2 + //SEG1067 [471] phi from play_init::@2 to play_init::@2 [phi:play_init::@2->play_init::@2] + //SEG1068 [471] phi (byte) play_init::b#2 = (byte) play_init::b#1 [phi:play_init::@2->play_init::@2#0] -- register_copy + //SEG1069 play_init::@2 b2: - //SEG1069 [472] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 + //SEG1070 [472] (byte) play_init::b4#0 ← (byte) play_init::b#2 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - //SEG1070 [473] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa + //SEG1071 [473] *((const dword[5]) score_add_bcd#0 + (byte) play_init::b4#0) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte) play_init::b4#0) -- pduc1_derefidx_vbuaa=pduc2_derefidx_vbuaa tay lda SCORE_BASE_BCD,y sta score_add_bcd,y @@ -26021,194 +26020,194 @@ play_init: { sta score_add_bcd+2,y lda SCORE_BASE_BCD+3,y sta score_add_bcd+3,y - //SEG1071 [474] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx + //SEG1072 [474] (byte) play_init::b#1 ← ++ (byte) play_init::b#2 -- vbuxx=_inc_vbuxx inx - //SEG1072 [475] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1073 [475] if((byte) play_init::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto play_init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #5 bne b2 - //SEG1073 play_init::@return - //SEG1074 [476] return + //SEG1074 play_init::@return + //SEG1075 [476] return rts } -//SEG1075 sprites_irq_init +//SEG1076 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG1076 asm { sei } + //SEG1077 asm { sei } sei - //SEG1077 [478] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1078 [478] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG1078 asm { ldaCIA1_INTERRUPT } + //SEG1079 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG1079 [480] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG1080 [480] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG1080 [481] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1081 [481] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1081 [482] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG1082 [482] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG1082 [483] *((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 + //SEG1083 [483] *((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 - //SEG1083 [484] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG1084 [484] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG1084 [485] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1085 [485] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG1085 [486] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG1086 [486] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG1086 asm { cli } + //SEG1087 asm { cli } cli - //SEG1087 sprites_irq_init::@return - //SEG1088 [488] return + //SEG1088 sprites_irq_init::@return + //SEG1089 [488] return rts } -//SEG1089 sprites_init +//SEG1090 sprites_init // Setup the sprites sprites_init: { .label xpos = 2 - //SEG1090 [489] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG1091 [489] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG1091 [490] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1092 [490] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG1092 [491] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1093 [491] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG1093 [492] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1094 [492] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //SEG1094 [493] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] - //SEG1095 [493] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG1095 [493] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG1096 [493] phi (byte) sprites_init::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG1096 [493] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 + //SEG1097 [493] phi (byte) sprites_init::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG1097 [493] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG1098 [493] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG1099 [493] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy - //SEG1100 sprites_init::@1 + //SEG1098 [493] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG1099 [493] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG1100 [493] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG1101 sprites_init::@1 b1: - //SEG1101 [494] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1102 [494] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1102 [495] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG1103 [495] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda xpos sta SPRITES_XPOS,y - //SEG1103 [496] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1104 [496] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta SPRITES_COLS,x - //SEG1104 [497] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1105 [497] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 lda #$18 clc adc xpos sta xpos - //SEG1105 [498] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx + //SEG1106 [498] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuxx=_inc_vbuxx inx - //SEG1106 [499] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1107 [499] if((byte) sprites_init::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG1107 sprites_init::@return - //SEG1108 [500] return + //SEG1108 sprites_init::@return + //SEG1109 [500] return rts } -//SEG1109 render_init +//SEG1110 render_init // Initialize rendering render_init: { .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6 .label li_1 = 5 .label li_2 = 7 - //SEG1110 render_init::vicSelectGfxBank1 - //SEG1111 [502] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1111 render_init::vicSelectGfxBank1 + //SEG1112 [502] *((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 - //SEG1112 [503] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] - //SEG1113 render_init::vicSelectGfxBank1_toDd001 - //SEG1114 render_init::vicSelectGfxBank1_@1 - //SEG1115 [504] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG1113 [503] phi from render_init::vicSelectGfxBank1 to render_init::vicSelectGfxBank1_toDd001 [phi:render_init::vicSelectGfxBank1->render_init::vicSelectGfxBank1_toDd001] + //SEG1114 render_init::vicSelectGfxBank1_toDd001 + //SEG1115 render_init::vicSelectGfxBank1_@1 + //SEG1116 [504] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG1116 render_init::@3 - //SEG1117 [505] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG1117 render_init::@3 + //SEG1118 [505] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_ECM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG1118 [506] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1119 [506] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG1119 [507] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG1120 [507] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 sta BGCOL1 - //SEG1120 [508] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1121 [508] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_1 sta BGCOL2 - //SEG1121 [509] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG1122 [509] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0) -- _deref_pbuc1=_deref_pbuc2 lda PIECES_COLORS_2 sta BGCOL3 - //SEG1122 [510] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 + //SEG1123 [510] *((const byte*) BGCOL4#0) ← (const byte) GREY#0 -- _deref_pbuc1=vbuc2 lda #GREY sta BGCOL4 - //SEG1123 [511] call render_screen_original - //SEG1124 [524] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] - //SEG1125 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1124 [511] call render_screen_original + //SEG1125 [524] phi from render_init::@3 to render_screen_original [phi:render_init::@3->render_screen_original] + //SEG1126 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_1#0 [phi:render_init::@3->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1126 [512] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] - //SEG1127 render_init::@4 - //SEG1128 [513] call render_screen_original - //SEG1129 [524] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] - //SEG1130 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 + //SEG1127 [512] phi from render_init::@3 to render_init::@4 [phi:render_init::@3->render_init::@4] + //SEG1128 render_init::@4 + //SEG1129 [513] call render_screen_original + //SEG1130 [524] phi from render_init::@4 to render_screen_original [phi:render_init::@4->render_screen_original] + //SEG1131 [524] phi (byte*) render_screen_original::screen#9 = (const byte*) PLAYFIELD_SCREEN_2#0 [phi:render_init::@4->render_screen_original#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2 sta render_screen_original.screen+1 jsr render_screen_original - //SEG1131 [514] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] - //SEG1132 [514] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 + //SEG1132 [514] phi from render_init::@4 to render_init::@1 [phi:render_init::@4->render_init::@1] + //SEG1133 [514] phi (byte*) render_init::li_2#2 = (const byte*) PLAYFIELD_SCREEN_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#0] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_2+2*$28+$10 sta li_2+1 - //SEG1133 [514] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 + //SEG1134 [514] phi (byte*) render_init::li_1#2 = (const byte*) PLAYFIELD_SCREEN_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:render_init::@4->render_init::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_1+2*$28+$10 sta li_1+1 - //SEG1134 [514] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuxx=vbuc1 + //SEG1135 [514] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@4->render_init::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG1135 [514] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] - //SEG1136 [514] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG1137 [514] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG1138 [514] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy - //SEG1139 render_init::@1 + //SEG1136 [514] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG1137 [514] phi (byte*) render_init::li_2#2 = (byte*) render_init::li_2#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG1138 [514] phi (byte*) render_init::li_1#2 = (byte*) render_init::li_1#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG1139 [514] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#2] -- register_copy + //SEG1140 render_init::@1 b1: - //SEG1140 [515] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1141 [515] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1141 [516] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1142 [516] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_1 sta screen_lines_1,y lda li_1+1 sta screen_lines_1+1,y - //SEG1142 [517] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG1143 [517] (byte~) render_init::$14 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG1143 [518] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG1144 [518] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$14) ← (byte*) render_init::li_2#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li_2 sta screen_lines_2,y lda li_2+1 sta screen_lines_2+1,y - //SEG1144 [519] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1145 [519] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_1 clc adc #$28 @@ -26216,7 +26215,7 @@ render_init: { bcc !+ inc li_1+1 !: - //SEG1145 [520] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG1146 [520] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li_2 clc adc #$28 @@ -26224,16 +26223,16 @@ render_init: { bcc !+ inc li_2+1 !: - //SEG1146 [521] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG1147 [521] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG1147 [522] if((byte) render_init::i#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::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG1148 [522] if((byte) render_init::i#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::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG1148 render_init::@return - //SEG1149 [523] return + //SEG1149 render_init::@return + //SEG1150 [523] return rts } -//SEG1150 render_screen_original +//SEG1151 render_screen_original // Copy the original screen data to the passed screen // Also copies colors to $d800 render_screen_original: { @@ -26243,317 +26242,317 @@ render_screen_original: { .label oscr = 5 .label ocols = 7 .label y = 2 - //SEG1151 [525] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] - //SEG1152 [525] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 + //SEG1152 [525] phi from render_screen_original to render_screen_original::@1 [phi:render_screen_original->render_screen_original::@1] + //SEG1153 [525] phi (byte) render_screen_original::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original->render_screen_original::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1153 [525] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 + //SEG1154 [525] phi (byte*) render_screen_original::ocols#4 = (const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#1] -- pbuz1=pbuc1 lda #PLAYFIELD_COLORS_ORIGINAL+$20*2 sta ocols+1 - //SEG1154 [525] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 + //SEG1155 [525] phi (byte*) render_screen_original::oscr#4 = (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte/signed byte/word/signed word/dword/signed dword) 32*(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:render_screen_original->render_screen_original::@1#2] -- pbuz1=pbuc1 lda #PLAYFIELD_SCREEN_ORIGINAL+$20*2 sta oscr+1 - //SEG1155 [525] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 + //SEG1156 [525] phi (byte*) render_screen_original::cols#7 = (const byte*) COLS#0 [phi:render_screen_original->render_screen_original::@1#3] -- pbuz1=pbuc1 lda #COLS sta cols+1 - //SEG1156 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy - //SEG1157 [525] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] - //SEG1158 [525] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy - //SEG1159 [525] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy - //SEG1160 [525] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy - //SEG1161 [525] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy - //SEG1162 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy - //SEG1163 render_screen_original::@1 + //SEG1157 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#9 [phi:render_screen_original->render_screen_original::@1#4] -- register_copy + //SEG1158 [525] phi from render_screen_original::@7 to render_screen_original::@1 [phi:render_screen_original::@7->render_screen_original::@1] + //SEG1159 [525] phi (byte) render_screen_original::y#6 = (byte) render_screen_original::y#1 [phi:render_screen_original::@7->render_screen_original::@1#0] -- register_copy + //SEG1160 [525] phi (byte*) render_screen_original::ocols#4 = (byte*) render_screen_original::ocols#1 [phi:render_screen_original::@7->render_screen_original::@1#1] -- register_copy + //SEG1161 [525] phi (byte*) render_screen_original::oscr#4 = (byte*) render_screen_original::oscr#1 [phi:render_screen_original::@7->render_screen_original::@1#2] -- register_copy + //SEG1162 [525] phi (byte*) render_screen_original::cols#7 = (byte*) render_screen_original::cols#3 [phi:render_screen_original::@7->render_screen_original::@1#3] -- register_copy + //SEG1163 [525] phi (byte*) render_screen_original::screen#8 = (byte*) render_screen_original::screen#10 [phi:render_screen_original::@7->render_screen_original::@1#4] -- register_copy + //SEG1164 render_screen_original::@1 b1: - //SEG1164 [526] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] - //SEG1165 [526] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 + //SEG1165 [526] phi from render_screen_original::@1 to render_screen_original::@2 [phi:render_screen_original::@1->render_screen_original::@2] + //SEG1166 [526] phi (byte) render_screen_original::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_screen_original::@1->render_screen_original::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1166 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy - //SEG1167 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy - //SEG1168 [526] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] - //SEG1169 [526] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy - //SEG1170 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy - //SEG1171 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy - //SEG1172 render_screen_original::@2 + //SEG1167 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#7 [phi:render_screen_original::@1->render_screen_original::@2#1] -- register_copy + //SEG1168 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#8 [phi:render_screen_original::@1->render_screen_original::@2#2] -- register_copy + //SEG1169 [526] phi from render_screen_original::@2 to render_screen_original::@2 [phi:render_screen_original::@2->render_screen_original::@2] + //SEG1170 [526] phi (byte) render_screen_original::x#4 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2->render_screen_original::@2#0] -- register_copy + //SEG1171 [526] phi (byte*) render_screen_original::cols#4 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2->render_screen_original::@2#1] -- register_copy + //SEG1172 [526] phi (byte*) render_screen_original::screen#5 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2->render_screen_original::@2#2] -- register_copy + //SEG1173 render_screen_original::@2 b2: - //SEG1173 [527] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1174 [527] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1174 [528] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 + //SEG1175 [528] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1175 [529] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1176 [529] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1176 [530] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 + //SEG1177 [530] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1177 [531] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx + //SEG1178 [531] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4 -- vbuxx=_inc_vbuxx inx - //SEG1178 [532] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1179 [532] if((byte) render_screen_original::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_screen_original::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2 - //SEG1179 [533] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] - //SEG1180 [533] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy - //SEG1181 [533] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy - //SEG1182 [533] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy - //SEG1183 [533] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy - //SEG1184 [533] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy - //SEG1185 render_screen_original::@3 + //SEG1180 [533] phi from render_screen_original::@2 render_screen_original::@3 to render_screen_original::@3 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3] + //SEG1181 [533] phi (byte) render_screen_original::x#5 = (byte) render_screen_original::x#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#0] -- register_copy + //SEG1182 [533] phi (byte*) render_screen_original::cols#5 = (byte*) render_screen_original::cols#1 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#1] -- register_copy + //SEG1183 [533] phi (byte*) render_screen_original::ocols#2 = (byte*) render_screen_original::ocols#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#2] -- register_copy + //SEG1184 [533] phi (byte*) render_screen_original::screen#6 = (byte*) render_screen_original::screen#2 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#3] -- register_copy + //SEG1185 [533] phi (byte*) render_screen_original::oscr#2 = (byte*) render_screen_original::oscr#4 [phi:render_screen_original::@2/render_screen_original::@3->render_screen_original::@3#4] -- register_copy + //SEG1186 render_screen_original::@3 b3: - //SEG1186 [534] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1187 [534] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (oscr),y sta (screen),y - //SEG1187 [535] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 + //SEG1188 [535] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1188 [536] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 + //SEG1189 [536] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2 -- pbuz1=_inc_pbuz1 inc oscr bne !+ inc oscr+1 !: - //SEG1189 [537] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1190 [537] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (ocols),y sta (cols),y - //SEG1190 [538] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 + //SEG1191 [538] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1191 [539] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 + //SEG1192 [539] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2 -- pbuz1=_inc_pbuz1 inc ocols bne !+ inc ocols+1 !: - //SEG1192 [540] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx + //SEG1193 [540] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5 -- vbuxx=_inc_vbuxx inx - //SEG1193 [541] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1194 [541] if((byte) render_screen_original::x#2!=(byte/signed byte/word/signed word/dword/signed dword) 36) goto render_screen_original::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$24 bne b3 - //SEG1194 [542] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] - //SEG1195 [542] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy - //SEG1196 [542] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy - //SEG1197 [542] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy - //SEG1198 render_screen_original::@4 + //SEG1195 [542] phi from render_screen_original::@3 render_screen_original::@4 to render_screen_original::@4 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4] + //SEG1196 [542] phi (byte) render_screen_original::x#6 = (byte) render_screen_original::x#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#0] -- register_copy + //SEG1197 [542] phi (byte*) render_screen_original::cols#6 = (byte*) render_screen_original::cols#2 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#1] -- register_copy + //SEG1198 [542] phi (byte*) render_screen_original::screen#7 = (byte*) render_screen_original::screen#3 [phi:render_screen_original::@3/render_screen_original::@4->render_screen_original::@4#2] -- register_copy + //SEG1199 render_screen_original::@4 b4: - //SEG1199 [543] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 + //SEG1200 [543] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0 -- _deref_pbuz1=vbuc1 lda #SPACE ldy #0 sta (screen),y - //SEG1200 [544] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 + //SEG1201 [544] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG1201 [545] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 + //SEG1202 [545] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0 -- _deref_pbuz1=vbuc1 lda #BLACK ldy #0 sta (cols),y - //SEG1202 [546] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 + //SEG1203 [546] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6 -- pbuz1=_inc_pbuz1 inc cols bne !+ inc cols+1 !: - //SEG1203 [547] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx + //SEG1204 [547] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6 -- vbuxx=_inc_vbuxx inx - //SEG1204 [548] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG1205 [548] if((byte) render_screen_original::x#3!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_screen_original::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b4 - //SEG1205 render_screen_original::@7 - //SEG1206 [549] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 + //SEG1206 render_screen_original::@7 + //SEG1207 [549] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1207 [550] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1208 [550] if((byte) render_screen_original::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render_screen_original::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1 - //SEG1208 render_screen_original::@return - //SEG1209 [551] return + //SEG1209 render_screen_original::@return + //SEG1210 [551] return rts } -//SEG1210 sid_rnd_init +//SEG1211 sid_rnd_init // Initialize SID voice 3 for random number generation sid_rnd_init: { - //SEG1211 [552] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG1212 [552] *((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 - //SEG1212 [553] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG1213 [553] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG1213 sid_rnd_init::@return - //SEG1214 [554] return + //SEG1214 sid_rnd_init::@return + //SEG1215 [554] return rts } -//SEG1215 sprites_irq +//SEG1216 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES>>6 .label raster_sprite_gfx_modify = $2f - //SEG1216 entry interrupt(HARDWARE_CLOBBER) + //SEG1217 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG1217 asm { cld } + //SEG1218 asm { cld } cld - //SEG1218 [556] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG1219 [556] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 lda irq_sprite_ypos - //SEG1219 [557] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1220 [557] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG1220 [558] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1221 [558] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG1221 [559] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1222 [559] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG1222 [560] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG1223 [560] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG1223 [561] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG1224 [561] (byte/signed word/word/dword/signed dword~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG1224 [562] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG1225 [562] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte/signed word/word/dword/signed dword~) sprites_irq::$0 -- vbuz1=vbuxx stx raster_sprite_gfx_modify - //SEG1225 sprites_irq::@1 + //SEG1226 sprites_irq::@1 b1: - //SEG1226 [563] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG1227 [563] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@1 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b1 - //SEG1227 sprites_irq::@8 - //SEG1228 [564] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG1228 sprites_irq::@8 + //SEG1229 [564] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG1229 [565] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 + //SEG1230 [565] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@2 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b2 - //SEG1230 sprites_irq::@9 - //SEG1231 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1231 sprites_irq::@9 + //SEG1232 [566] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG1232 [567] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1233 [567] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG1233 [568] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1234 [568] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG1234 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG1235 [569] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG1235 [570] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG1236 [570] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1236 [571] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG1237 [571] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 - //SEG1237 sprites_irq::@3 + //SEG1238 sprites_irq::@3 b3: - //SEG1238 [572] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG1239 [572] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG1239 [573] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG1240 [573] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda irq_cnt cmp #9 beq b4 - //SEG1240 sprites_irq::@11 - //SEG1241 [574] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG1241 sprites_irq::@11 + //SEG1242 [574] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto sprites_irq::@5 -- vbuz1_eq_vbuc1_then_la1 cmp #$a beq b5 - //SEG1242 sprites_irq::@12 - //SEG1243 [575] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1243 sprites_irq::@12 + //SEG1244 [575] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz1_plus_vbuc1 lda #$14 clc adc irq_raster_next sta irq_raster_next - //SEG1244 [576] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1245 [576] (byte) irq_sprite_ypos#3 ← (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 - //SEG1245 [577] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1246 [577] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr - //SEG1246 [578] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] - //SEG1247 [578] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy - //SEG1248 sprites_irq::@7 + //SEG1247 [578] phi from sprites_irq::@12 sprites_irq::@15 sprites_irq::@5 to sprites_irq::@7 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7] + //SEG1248 [578] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#3 [phi:sprites_irq::@12/sprites_irq::@15/sprites_irq::@5->sprites_irq::@7#0] -- register_copy + //SEG1249 sprites_irq::@7 b7: - //SEG1249 [579] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG1250 [579] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 lda irq_raster_next sta RASTER - //SEG1250 [580] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG1251 [580] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG1251 sprites_irq::@return - //SEG1252 [581] return - exit interrupt(HARDWARE_CLOBBER) + //SEG1252 sprites_irq::@return + //SEG1253 [581] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG1253 sprites_irq::@5 + //SEG1254 sprites_irq::@5 b5: - //SEG1254 [582] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG1255 [582] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG1255 [583] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG1256 [583] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG1256 [584] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1257 [584] (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 - //SEG1257 [585] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1258 [585] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz1_plus_vbuc1 lda #3 clc adc irq_sprite_ptr sta irq_sprite_ptr jmp b7 - //SEG1258 sprites_irq::@4 + //SEG1259 sprites_irq::@4 b4: - //SEG1259 [586] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + //SEG1260 [586] (byte) irq_raster_next#1 ← (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 - //SEG1260 [587] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG1261 [587] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG1261 [588] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] - //SEG1262 sprites_irq::toSpritePtr2 - //SEG1263 sprites_irq::@15 - //SEG1264 [589] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG1262 [588] phi from sprites_irq::@4 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@4->sprites_irq::toSpritePtr2] + //SEG1263 sprites_irq::toSpritePtr2 + //SEG1264 sprites_irq::@15 + //SEG1265 [589] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b7 - //SEG1265 sprites_irq::@2 + //SEG1266 sprites_irq::@2 b2: - //SEG1266 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG1267 [590] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG1267 [591] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG1268 [591] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx txa clc adc #1 - //SEG1268 [592] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG1269 [592] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG1269 [593] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa + //SEG1270 [593] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG1270 [594] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa + //SEG1271 [594] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG1271 [595] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG1272 [595] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b3 } @@ -26565,8 +26564,6 @@ sprites_irq: { keyboard_events: .fill 8, 0 // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() keyboard_scan_values: .fill 8, 0 - // Tetris Game for the Commodore 64 - // The tetris pieces // The T-piece .align $40 PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 diff --git a/src/test/ref/concat-char.asm b/src/test/ref/concat-char.asm index 858fd8f65..1c6540e63 100644 --- a/src/test/ref/concat-char.asm +++ b/src/test/ref/concat-char.asm @@ -1,7 +1,7 @@ +// Concatenate a char to a string .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Concatenate a char to a string main: { .label screen = $400 ldx #0 diff --git a/src/test/ref/concat-char.log b/src/test/ref/concat-char.log index 5aa245521..d08f7e0e4 100644 --- a/src/test/ref/concat-char.log +++ b/src/test/ref/concat-char.log @@ -129,58 +129,59 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Concatenate a char to a string +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Concatenate a char to a string +//SEG10 main main: { .label screen = $400 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG16 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda msg,y sta screen,y - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #3 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts msg: .text "cm"+'l' } @@ -199,54 +200,55 @@ Uplifting [main] best 288 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 288 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Concatenate a char to a string +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Concatenate a char to a string +//SEG10 main main: { .label screen = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta screen,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts msg: .text "cm"+'l' } @@ -298,39 +300,40 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 186 -//SEG0 Basic Upstart +//SEG0 File Comments +// Concatenate a char to a string +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Concatenate a char to a string +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta screen,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne b1 - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts msg: .text "cm"+'l' } diff --git a/src/test/ref/consolidate-array-index-problem.log b/src/test/ref/consolidate-array-index-problem.log index 308883f96..39998bef6 100644 --- a/src/test/ref/consolidate-array-index-problem.log +++ b/src/test/ref/consolidate-array-index-problem.log @@ -145,69 +145,70 @@ Allocated zp ZP_BYTE:2 [ main::x#2 main::x#1 ] Allocated zp ZP_BYTE:3 [ main::y#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const BLACK = 0 .label screen = $400 .label cols = $d800 .label y = 3 .label x = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuz1=vbuz2_plus_vbuc1 + //SEG16 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuz1=vbuz2_plus_vbuc1 lda #$c clc adc x sta y - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuz1=vbuc2 ldy y lda #'a' sta screen,y - //SEG17 [8] *((const byte*) main::cols#0 + (byte) main::y#0) ← (const byte) main::BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG18 [8] *((const byte*) main::cols#0 + (byte) main::y#0) ← (const byte) main::BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy y lda #BLACK sta cols,y - //SEG18 [9] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuz1=_inc_vbuz1 + //SEG19 [9] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG19 [10] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$b bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [11] return + //SEG22 [11] return rts } @@ -231,63 +232,64 @@ Uplifting [main] best 413 combination reg byte y [ main::x#2 main::x#1 ] reg byt Uplifting [] best 413 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const BLACK = 0 .label screen = $400 .label cols = $d800 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuxx=vbuyy_plus_vbuc1 + //SEG16 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuxx=vbuyy_plus_vbuc1 tya clc adc #$c tax - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'a' sta screen,x - //SEG17 [8] *((const byte*) main::cols#0 + (byte) main::y#0) ← (const byte) main::BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG18 [8] *((const byte*) main::cols#0 + (byte) main::y#0) ← (const byte) main::BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta cols,x - //SEG18 [9] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuyy=_inc_vbuyy + //SEG19 [9] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuyy=_inc_vbuyy iny - //SEG19 [10] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$b bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [11] return + //SEG22 [11] return rts } @@ -342,48 +344,49 @@ reg byte x [ main::y#0 ] FINAL ASSEMBLER Score: 311 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .const BLACK = 0 .label screen = $400 .label cols = $d800 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuxx=vbuyy_plus_vbuc1 + //SEG16 [6] (byte) main::y#0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuxx=vbuyy_plus_vbuc1 tya clc adc #$c tax - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'a' sta screen,x - //SEG17 [8] *((const byte*) main::cols#0 + (byte) main::y#0) ← (const byte) main::BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG18 [8] *((const byte*) main::cols#0 + (byte) main::y#0) ← (const byte) main::BLACK#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #BLACK sta cols,x - //SEG18 [9] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuyy=_inc_vbuyy + //SEG19 [9] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuyy=_inc_vbuyy iny - //SEG19 [10] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$b bne b1 - //SEG20 main::@return - //SEG21 [11] return + //SEG21 main::@return + //SEG22 [11] return rts } diff --git a/src/test/ref/consolidate-constant-problem.log b/src/test/ref/consolidate-constant-problem.log index 839cce721..0dc3b804e 100644 --- a/src/test/ref/consolidate-constant-problem.log +++ b/src/test/ref/consolidate-constant-problem.log @@ -170,52 +170,53 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { jmp b1 - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta screen+$27 - //SEG12 [6] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta screen+$26 jmp b1_1 - //SEG13 main::@1_1 + //SEG14 main::@1_1 b1_1: - //SEG14 [7] *((byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [7] *((byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta $28*1+screen+$27 - //SEG15 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta screen+$26+$28*1 jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [9] return + //SEG18 [9] return rts } @@ -233,52 +234,53 @@ Uplifting [main] best 78 combination Uplifting [] best 78 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { jmp b1 - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta screen+$27 - //SEG12 [6] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta screen+$26 jmp b1_1 - //SEG13 main::@1_1 + //SEG14 main::@1_1 b1_1: - //SEG14 [7] *((byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [7] *((byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta $28*1+screen+$27 - //SEG15 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta screen+$26+$28*1 jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [9] return + //SEG18 [9] return rts } @@ -327,34 +329,35 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 24 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 main::@1 - //SEG11 [5] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG11 main::@1 + //SEG12 [5] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta screen+$27 - //SEG12 [6] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta screen+$26 - //SEG13 main::@1_1 - //SEG14 [7] *((byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG14 main::@1_1 + //SEG15 [7] *((byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta $28*1+screen+$27 - //SEG15 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 38+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta screen+$26+$28*1 - //SEG16 main::@return - //SEG17 [9] return + //SEG17 main::@return + //SEG18 [9] return rts } diff --git a/src/test/ref/const-condition.asm b/src/test/ref/const-condition.asm index 16ffa98fe..71fa66346 100644 --- a/src/test/ref/const-condition.asm +++ b/src/test/ref/const-condition.asm @@ -1,7 +1,7 @@ +// Ensure that if()'s with constant comparisons are identified and eliminated .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Ensure that if()'s with constant comparisons are identified and eliminated main: { .label SCREEN = $400 lda #'!' diff --git a/src/test/ref/const-condition.log b/src/test/ref/const-condition.log index d5b10a7f7..c55d7ba3a 100644 --- a/src/test/ref/const-condition.log +++ b/src/test/ref/const-condition.log @@ -93,41 +93,42 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Ensure that if()'s with constant comparisons are identified and eliminated +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Ensure that if()'s with constant comparisons are identified and eliminated +//SEG10 main main: { .label SCREEN = $400 jmp b3 - //SEG10 main::@3 + //SEG11 main::@3 b3: - //SEG11 [5] *((const byte*) main::SCREEN#0) ← (byte) '!' -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← (byte) '!' -- _deref_pbuc1=vbuc2 lda #'!' sta SCREEN jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [6] return + //SEG14 [6] return rts } @@ -142,41 +143,42 @@ Uplifting [main] best 57 combination Uplifting [] best 57 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Ensure that if()'s with constant comparisons are identified and eliminated +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Ensure that if()'s with constant comparisons are identified and eliminated +//SEG10 main main: { .label SCREEN = $400 jmp b3 - //SEG10 main::@3 + //SEG11 main::@3 b3: - //SEG11 [5] *((const byte*) main::SCREEN#0) ← (byte) '!' -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← (byte) '!' -- _deref_pbuc1=vbuc2 lda #'!' sta SCREEN jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [6] return + //SEG14 [6] return rts } @@ -216,28 +218,29 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +// Ensure that if()'s with constant comparisons are identified and eliminated +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Ensure that if()'s with constant comparisons are identified and eliminated +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 - //SEG10 main::@3 - //SEG11 [5] *((const byte*) main::SCREEN#0) ← (byte) '!' -- _deref_pbuc1=vbuc2 + //SEG11 main::@3 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← (byte) '!' -- _deref_pbuc1=vbuc2 lda #'!' sta SCREEN - //SEG12 main::@return - //SEG13 [6] return + //SEG13 main::@return + //SEG14 [6] return rts } diff --git a/src/test/ref/const-identification.log b/src/test/ref/const-identification.log index 2c23779c8..9caf014ee 100644 --- a/src/test/ref/const-identification.log +++ b/src/test/ref/const-identification.log @@ -288,130 +288,131 @@ Allocated zp ZP_BYTE:5 [ plot::idx#0 ] Allocated zp ZP_BYTE:6 [ plot::$0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label plots = $1000 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) plots#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG16 [6] *((const byte*) plots#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta plots,y - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #0 sta SCREEN,y - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$28 bne b1_from_b1 - //SEG19 [10] phi from main::@1 main::@2 to main::@2 [phi:main::@1/main::@2->main::@2] + //SEG20 [10] phi from main::@1 main::@2 to main::@2 [phi:main::@1/main::@2->main::@2] b2_from_b1: b2_from_b2: jmp b2 - //SEG20 main::@2 + //SEG21 main::@2 b2: - //SEG21 [11] call line - //SEG22 [12] phi from main::@2 to line [phi:main::@2->line] + //SEG22 [11] call line + //SEG23 [12] phi from main::@2 to line [phi:main::@2->line] line_from_b2: jsr line jmp b2_from_b2 } -//SEG23 line +//SEG24 line line: { .const x0 = 0 .const x1 = $a .label x = 3 - //SEG24 [13] phi from line to line::@3 [phi:line->line::@3] + //SEG25 [13] phi from line to line::@3 [phi:line->line::@3] b3_from_line: - //SEG25 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuz1=vbuc1 + //SEG26 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuz1=vbuc1 lda #x0 sta x jmp b3 - //SEG26 [13] phi from line::@8 to line::@3 [phi:line::@8->line::@3] + //SEG27 [13] phi from line::@8 to line::@3 [phi:line::@8->line::@3] b3_from_b8: - //SEG27 [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@3#0] -- register_copy + //SEG28 [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@3#0] -- register_copy jmp b3 - //SEG28 line::@3 + //SEG29 line::@3 b3: - //SEG29 [14] (byte) plot::x#1 ← (byte) line::x#2 -- vbuz1=vbuz2 + //SEG30 [14] (byte) plot::x#1 ← (byte) line::x#2 -- vbuz1=vbuz2 lda x sta plot.x - //SEG30 [15] call plot + //SEG31 [15] call plot jsr plot jmp b8 - //SEG31 line::@8 + //SEG32 line::@8 b8: - //SEG32 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuz1=_inc_vbuz1 + //SEG33 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG33 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuz1_le_vbuc1_then_la1 + //SEG34 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuz1_le_vbuc1_then_la1 lda #x1 cmp x bcs b3_from_b8 jmp breturn - //SEG34 line::@return + //SEG35 line::@return breturn: - //SEG35 [18] return + //SEG36 [18] return rts } -//SEG36 plot +//SEG37 plot plot: { .label _0 = 6 .label x = 4 .label idx = 5 - //SEG37 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG38 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuz1=pbuc1_derefidx_vbuz2 ldy x lda plots,y sta idx - //SEG38 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_plus_1 + //SEG39 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_plus_1 ldy idx lda SCREEN,y clc adc #1 sta _0 - //SEG39 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG40 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldy idx sta SCREEN,y jmp breturn - //SEG40 plot::@return + //SEG41 plot::@return breturn: - //SEG41 [22] return + //SEG42 [22] return rts } @@ -442,112 +443,113 @@ Uplifting [main] best 3268 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 3268 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label plots = $1000 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) plots#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte*) plots#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta plots,x - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b1 - //SEG19 [10] phi from main::@1 main::@2 to main::@2 [phi:main::@1/main::@2->main::@2] + //SEG20 [10] phi from main::@1 main::@2 to main::@2 [phi:main::@1/main::@2->main::@2] b2_from_b1: b2_from_b2: jmp b2 - //SEG20 main::@2 + //SEG21 main::@2 b2: - //SEG21 [11] call line - //SEG22 [12] phi from main::@2 to line [phi:main::@2->line] + //SEG22 [11] call line + //SEG23 [12] phi from main::@2 to line [phi:main::@2->line] line_from_b2: jsr line jmp b2_from_b2 } -//SEG23 line +//SEG24 line line: { .const x0 = 0 .const x1 = $a - //SEG24 [13] phi from line to line::@3 [phi:line->line::@3] + //SEG25 [13] phi from line to line::@3 [phi:line->line::@3] b3_from_line: - //SEG25 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuxx=vbuc1 + //SEG26 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuxx=vbuc1 ldx #x0 jmp b3 - //SEG26 [13] phi from line::@8 to line::@3 [phi:line::@8->line::@3] + //SEG27 [13] phi from line::@8 to line::@3 [phi:line::@8->line::@3] b3_from_b8: - //SEG27 [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@3#0] -- register_copy + //SEG28 [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@3#0] -- register_copy jmp b3 - //SEG28 line::@3 + //SEG29 line::@3 b3: - //SEG29 [14] (byte) plot::x#1 ← (byte) line::x#2 - //SEG30 [15] call plot + //SEG30 [14] (byte) plot::x#1 ← (byte) line::x#2 + //SEG31 [15] call plot jsr plot jmp b8 - //SEG31 line::@8 + //SEG32 line::@8 b8: - //SEG32 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx + //SEG33 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuxx_le_vbuc1_then_la1 + //SEG34 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuxx_le_vbuc1_then_la1 cpx #x1 bcc b3_from_b8 beq b3_from_b8 jmp breturn - //SEG34 line::@return + //SEG35 line::@return breturn: - //SEG35 [18] return + //SEG36 [18] return rts } -//SEG36 plot +//SEG37 plot plot: { - //SEG37 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG38 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuyy=pbuc1_derefidx_vbuxx ldy plots,x - //SEG38 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 + //SEG39 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 lda SCREEN,y clc adc #1 - //SEG39 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG40 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN,y jmp breturn - //SEG40 plot::@return + //SEG41 plot::@return breturn: - //SEG41 [22] return + //SEG42 [22] return rts } @@ -634,85 +636,86 @@ reg byte a [ plot::$0 ] FINAL ASSEMBLER Score: 1963 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label plots = $1000 .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) plots#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte*) plots#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta plots,x - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1 - //SEG19 [10] phi from main::@1 main::@2 to main::@2 [phi:main::@1/main::@2->main::@2] - //SEG20 main::@2 + //SEG20 [10] phi from main::@1 main::@2 to main::@2 [phi:main::@1/main::@2->main::@2] + //SEG21 main::@2 b2: - //SEG21 [11] call line - //SEG22 [12] phi from main::@2 to line [phi:main::@2->line] + //SEG22 [11] call line + //SEG23 [12] phi from main::@2 to line [phi:main::@2->line] jsr line jmp b2 } -//SEG23 line +//SEG24 line line: { .const x0 = 0 .const x1 = $a - //SEG24 [13] phi from line to line::@3 [phi:line->line::@3] - //SEG25 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuxx=vbuc1 + //SEG25 [13] phi from line to line::@3 [phi:line->line::@3] + //SEG26 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuxx=vbuc1 ldx #x0 - //SEG26 [13] phi from line::@8 to line::@3 [phi:line::@8->line::@3] - //SEG27 [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@3#0] -- register_copy - //SEG28 line::@3 + //SEG27 [13] phi from line::@8 to line::@3 [phi:line::@8->line::@3] + //SEG28 [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@3#0] -- register_copy + //SEG29 line::@3 b3: - //SEG29 [14] (byte) plot::x#1 ← (byte) line::x#2 - //SEG30 [15] call plot + //SEG30 [14] (byte) plot::x#1 ← (byte) line::x#2 + //SEG31 [15] call plot jsr plot - //SEG31 line::@8 - //SEG32 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx + //SEG32 line::@8 + //SEG33 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuxx_le_vbuc1_then_la1 + //SEG34 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuxx_le_vbuc1_then_la1 cpx #x1 bcc b3 beq b3 - //SEG34 line::@return - //SEG35 [18] return + //SEG35 line::@return + //SEG36 [18] return rts } -//SEG36 plot +//SEG37 plot plot: { - //SEG37 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG38 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuyy=pbuc1_derefidx_vbuxx ldy plots,x - //SEG38 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 + //SEG39 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 lda SCREEN,y clc adc #1 - //SEG39 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG40 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN,y - //SEG40 plot::@return - //SEG41 [22] return + //SEG41 plot::@return + //SEG42 [22] return rts } diff --git a/src/test/ref/const-mult-div.asm b/src/test/ref/const-mult-div.asm index 4ee045b61..01c216363 100644 --- a/src/test/ref/const-mult-div.asm +++ b/src/test/ref/const-mult-div.asm @@ -1,7 +1,7 @@ +// Test a constant with multiplication and division .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test a constant with multiplication and division main: { .label screen = $400 .const b = 6*$e/3+mod($16,3) diff --git a/src/test/ref/const-mult-div.log b/src/test/ref/const-mult-div.log index f0d8e3418..ccc56d6c5 100644 --- a/src/test/ref/const-mult-div.log +++ b/src/test/ref/const-mult-div.log @@ -95,37 +95,38 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a constant with multiplication and division +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Test a constant with multiplication and division +//SEG9 main main: { .label screen = $400 .const b = 6*$e/3+mod($16,3) - //SEG9 [4] *((const byte*) main::screen#0) ← (const byte) main::b#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (const byte) main::b#0 -- _deref_pbuc1=vbuc2 lda #b sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -140,37 +141,38 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a constant with multiplication and division +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Test a constant with multiplication and division +//SEG9 main main: { .label screen = $400 .const b = 6*$e/3+mod($16,3) - //SEG9 [4] *((const byte*) main::screen#0) ← (const byte) main::b#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (const byte) main::b#0 -- _deref_pbuc1=vbuc2 lda #b sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -208,27 +210,28 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a constant with multiplication and division +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main -// Test a constant with multiplication and division +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label screen = $400 .const b = 6*$e/3+mod($16,3) - //SEG9 [4] *((const byte*) main::screen#0) ← (const byte) main::b#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (const byte) main::b#0 -- _deref_pbuc1=vbuc2 lda #b sta screen - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/const-param.asm b/src/test/ref/const-param.asm index bca0dafc6..a3a700252 100644 --- a/src/test/ref/const-param.asm +++ b/src/test/ref/const-param.asm @@ -1,7 +1,7 @@ +// Test that the compiler optimizes when the same parameter value is passed into a function in all calls .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test that the compiler optimizes when the same parameter value is passed into a function in all calls main: { .label screen = $400 .label reverse = $80 diff --git a/src/test/ref/const-param.log b/src/test/ref/const-param.log index 2d6a9710f..ce0b28428 100644 --- a/src/test/ref/const-param.log +++ b/src/test/ref/const-param.log @@ -242,114 +242,115 @@ Allocated zp ZP_BYTE:8 [ main::$2 ] Allocated zp ZP_BYTE:9 [ sum::return#3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that the compiler optimizes when the same parameter value is passed into a function in all calls +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test that the compiler optimizes when the same parameter value is passed into a function in all calls +//SEG10 main main: { .label screen = $400 .label reverse = $80 .label _0 = 4 .label _1 = 6 .label _2 = 8 - //SEG10 [5] call sum - //SEG11 [18] phi from main to sum [phi:main->sum] + //SEG11 [5] call sum + //SEG12 [18] phi from main to sum [phi:main->sum] sum_from_main: - //SEG12 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuz1=vbuc1 + //SEG13 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuz1=vbuc1 lda #'c' sta sum.b jsr sum - //SEG13 [6] (byte) sum::return#0 ← (byte) sum::return#3 -- vbuz1=vbuz2 + //SEG14 [6] (byte) sum::return#0 ← (byte) sum::return#3 -- vbuz1=vbuz2 lda sum.return_3 sta sum.return jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [7] (byte~) main::$0 ← (byte) sum::return#0 -- vbuz1=vbuz2 + //SEG16 [7] (byte~) main::$0 ← (byte) sum::return#0 -- vbuz1=vbuz2 lda sum.return sta _0 - //SEG16 [8] *((const byte*) main::screen#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 + //SEG17 [8] *((const byte*) main::screen#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 lda _0 sta screen - //SEG17 [9] call sum - //SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum] + //SEG18 [9] call sum + //SEG19 [18] phi from main::@1 to sum [phi:main::@1->sum] sum_from_b1: - //SEG19 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuz1=vbuc1 + //SEG20 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuz1=vbuc1 lda #'m' sta sum.b jsr sum - //SEG20 [10] (byte) sum::return#1 ← (byte) sum::return#3 -- vbuz1=vbuz2 + //SEG21 [10] (byte) sum::return#1 ← (byte) sum::return#3 -- vbuz1=vbuz2 lda sum.return_3 sta sum.return_1 jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [11] (byte~) main::$1 ← (byte) sum::return#1 -- vbuz1=vbuz2 + //SEG23 [11] (byte~) main::$1 ← (byte) sum::return#1 -- vbuz1=vbuz2 lda sum.return_1 sta _1 - //SEG23 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 + //SEG24 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 lda _1 sta screen+1 - //SEG24 [13] call sum - //SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum] + //SEG25 [13] call sum + //SEG26 [18] phi from main::@2 to sum [phi:main::@2->sum] sum_from_b2: - //SEG26 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuz1=vbuc1 + //SEG27 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuz1=vbuc1 lda #'l' sta sum.b jsr sum - //SEG27 [14] (byte) sum::return#2 ← (byte) sum::return#3 -- vbuz1=vbuz2 + //SEG28 [14] (byte) sum::return#2 ← (byte) sum::return#3 -- vbuz1=vbuz2 lda sum.return_3 sta sum.return_2 jmp b3 - //SEG28 main::@3 + //SEG29 main::@3 b3: - //SEG29 [15] (byte~) main::$2 ← (byte) sum::return#2 -- vbuz1=vbuz2 + //SEG30 [15] (byte~) main::$2 ← (byte) sum::return#2 -- vbuz1=vbuz2 lda sum.return_2 sta _2 - //SEG30 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuz1 + //SEG31 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuz1 lda _2 sta screen+2 jmp breturn - //SEG31 main::@return + //SEG32 main::@return breturn: - //SEG32 [17] return + //SEG33 [17] return rts } -//SEG33 sum +//SEG34 sum sum: { .label return = 3 .label return_1 = 5 .label return_2 = 7 .label return_3 = 9 .label b = 2 - //SEG34 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 -- vbuz1=vbuc1_plus_vbuz2 + //SEG35 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 -- vbuz1=vbuc1_plus_vbuz2 lda #main.reverse clc adc b sta return_3 jmp breturn - //SEG35 sum::@return + //SEG36 sum::@return breturn: - //SEG36 [20] return + //SEG37 [20] return rts } @@ -377,86 +378,87 @@ Attempting to uplift remaining variables inzp ZP_BYTE:9 [ sum::return#3 ] Uplifting [sum] best 79 combination reg byte a [ sum::return#3 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that the compiler optimizes when the same parameter value is passed into a function in all calls +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test that the compiler optimizes when the same parameter value is passed into a function in all calls +//SEG10 main main: { .label screen = $400 .label reverse = $80 - //SEG10 [5] call sum - //SEG11 [18] phi from main to sum [phi:main->sum] + //SEG11 [5] call sum + //SEG12 [18] phi from main to sum [phi:main->sum] sum_from_main: - //SEG12 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuaa=vbuc1 + //SEG13 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuaa=vbuc1 lda #'c' jsr sum - //SEG13 [6] (byte) sum::return#0 ← (byte) sum::return#3 + //SEG14 [6] (byte) sum::return#0 ← (byte) sum::return#3 jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [7] (byte~) main::$0 ← (byte) sum::return#0 - //SEG16 [8] *((const byte*) main::screen#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + //SEG16 [7] (byte~) main::$0 ← (byte) sum::return#0 + //SEG17 [8] *((const byte*) main::screen#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa sta screen - //SEG17 [9] call sum - //SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum] + //SEG18 [9] call sum + //SEG19 [18] phi from main::@1 to sum [phi:main::@1->sum] sum_from_b1: - //SEG19 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuaa=vbuc1 + //SEG20 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuaa=vbuc1 lda #'m' jsr sum - //SEG20 [10] (byte) sum::return#1 ← (byte) sum::return#3 + //SEG21 [10] (byte) sum::return#1 ← (byte) sum::return#3 jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [11] (byte~) main::$1 ← (byte) sum::return#1 - //SEG23 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG23 [11] (byte~) main::$1 ← (byte) sum::return#1 + //SEG24 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa sta screen+1 - //SEG24 [13] call sum - //SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum] + //SEG25 [13] call sum + //SEG26 [18] phi from main::@2 to sum [phi:main::@2->sum] sum_from_b2: - //SEG26 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuaa=vbuc1 + //SEG27 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuaa=vbuc1 lda #'l' jsr sum - //SEG27 [14] (byte) sum::return#2 ← (byte) sum::return#3 + //SEG28 [14] (byte) sum::return#2 ← (byte) sum::return#3 jmp b3 - //SEG28 main::@3 + //SEG29 main::@3 b3: - //SEG29 [15] (byte~) main::$2 ← (byte) sum::return#2 - //SEG30 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa + //SEG30 [15] (byte~) main::$2 ← (byte) sum::return#2 + //SEG31 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa sta screen+2 jmp breturn - //SEG31 main::@return + //SEG32 main::@return breturn: - //SEG32 [17] return + //SEG33 [17] return rts } -//SEG33 sum +//SEG34 sum sum: { - //SEG34 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 -- vbuaa=vbuc1_plus_vbuaa + //SEG35 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 -- vbuaa=vbuc1_plus_vbuaa clc adc #main.reverse jmp breturn - //SEG35 sum::@return + //SEG36 sum::@return breturn: - //SEG36 [20] return + //SEG37 [20] return rts } @@ -530,64 +532,65 @@ reg byte a [ sum::return#3 ] FINAL ASSEMBLER Score: 52 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that the compiler optimizes when the same parameter value is passed into a function in all calls +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main -// Test that the compiler optimizes when the same parameter value is passed into a function in all calls +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label screen = $400 .label reverse = $80 - //SEG10 [5] call sum - //SEG11 [18] phi from main to sum [phi:main->sum] - //SEG12 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuaa=vbuc1 + //SEG11 [5] call sum + //SEG12 [18] phi from main to sum [phi:main->sum] + //SEG13 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuaa=vbuc1 lda #'c' jsr sum - //SEG13 [6] (byte) sum::return#0 ← (byte) sum::return#3 - //SEG14 main::@1 - //SEG15 [7] (byte~) main::$0 ← (byte) sum::return#0 - //SEG16 [8] *((const byte*) main::screen#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + //SEG14 [6] (byte) sum::return#0 ← (byte) sum::return#3 + //SEG15 main::@1 + //SEG16 [7] (byte~) main::$0 ← (byte) sum::return#0 + //SEG17 [8] *((const byte*) main::screen#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa sta screen - //SEG17 [9] call sum - //SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum] - //SEG19 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuaa=vbuc1 + //SEG18 [9] call sum + //SEG19 [18] phi from main::@1 to sum [phi:main::@1->sum] + //SEG20 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuaa=vbuc1 lda #'m' jsr sum - //SEG20 [10] (byte) sum::return#1 ← (byte) sum::return#3 - //SEG21 main::@2 - //SEG22 [11] (byte~) main::$1 ← (byte) sum::return#1 - //SEG23 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG21 [10] (byte) sum::return#1 ← (byte) sum::return#3 + //SEG22 main::@2 + //SEG23 [11] (byte~) main::$1 ← (byte) sum::return#1 + //SEG24 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa sta screen+1 - //SEG24 [13] call sum - //SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum] - //SEG26 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuaa=vbuc1 + //SEG25 [13] call sum + //SEG26 [18] phi from main::@2 to sum [phi:main::@2->sum] + //SEG27 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuaa=vbuc1 lda #'l' jsr sum - //SEG27 [14] (byte) sum::return#2 ← (byte) sum::return#3 - //SEG28 main::@3 - //SEG29 [15] (byte~) main::$2 ← (byte) sum::return#2 - //SEG30 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa + //SEG28 [14] (byte) sum::return#2 ← (byte) sum::return#3 + //SEG29 main::@3 + //SEG30 [15] (byte~) main::$2 ← (byte) sum::return#2 + //SEG31 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa sta screen+2 - //SEG31 main::@return - //SEG32 [17] return + //SEG32 main::@return + //SEG33 [17] return rts } -//SEG33 sum +//SEG34 sum sum: { - //SEG34 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 -- vbuaa=vbuc1_plus_vbuaa + //SEG35 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 -- vbuaa=vbuc1_plus_vbuaa clc adc #main.reverse - //SEG35 sum::@return - //SEG36 [20] return + //SEG36 sum::@return + //SEG37 [20] return rts } diff --git a/src/test/ref/const-pointer.asm b/src/test/ref/const-pointer.asm index b984d848e..28be67cd0 100644 --- a/src/test/ref/const-pointer.asm +++ b/src/test/ref/const-pointer.asm @@ -1,7 +1,7 @@ +// Test that constant pointers are detected correctly .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test that constant pointers are detected correctly main: { .label screen = $400 lda #'*' diff --git a/src/test/ref/const-pointer.log b/src/test/ref/const-pointer.log index 989095cc4..e4f7faab2 100644 --- a/src/test/ref/const-pointer.log +++ b/src/test/ref/const-pointer.log @@ -110,41 +110,42 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that constant pointers are detected correctly +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test that constant pointers are detected correctly +//SEG10 main main: { .label screen = $400 jmp b1 - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) main::screen#0) ← (byte) '*' -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::screen#0) ← (byte) '*' -- _deref_pbuc1=vbuc2 lda #'*' sta screen jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [6] return + //SEG14 [6] return rts } @@ -159,41 +160,42 @@ Uplifting [main] best 57 combination Uplifting [] best 57 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that constant pointers are detected correctly +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test that constant pointers are detected correctly +//SEG10 main main: { .label screen = $400 jmp b1 - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) main::screen#0) ← (byte) '*' -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::screen#0) ← (byte) '*' -- _deref_pbuc1=vbuc2 lda #'*' sta screen jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [6] return + //SEG14 [6] return rts } @@ -235,28 +237,29 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that constant pointers are detected correctly +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Test that constant pointers are detected correctly +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label screen = $400 - //SEG10 main::@1 - //SEG11 [5] *((const byte*) main::screen#0) ← (byte) '*' -- _deref_pbuc1=vbuc2 + //SEG11 main::@1 + //SEG12 [5] *((const byte*) main::screen#0) ← (byte) '*' -- _deref_pbuc1=vbuc2 lda #'*' sta screen - //SEG12 main::@return - //SEG13 [6] return + //SEG13 main::@return + //SEG14 [6] return rts } diff --git a/src/test/ref/const-word-pointer.asm b/src/test/ref/const-word-pointer.asm index 87090a031..a5df2f895 100644 --- a/src/test/ref/const-word-pointer.asm +++ b/src/test/ref/const-word-pointer.asm @@ -1,8 +1,8 @@ +// Test a constant word pointers (pointing to a word placed on zeropage). +// The result when running is "CML!" on the screen. .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test a constant word pointers (pointing to a word placed on zeropage). -// The result when running is "CML!" on the screen. main: { .label screen = $400 .label wp = w diff --git a/src/test/ref/const-word-pointer.log b/src/test/ref/const-word-pointer.log index 7d2364c51..3759ba450 100644 --- a/src/test/ref/const-word-pointer.log +++ b/src/test/ref/const-word-pointer.log @@ -128,28 +128,29 @@ Allocated zp ZP_BYTE:6 [ main::$3 ] Allocated zp ZP_BYTE:7 [ main::$4 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a constant word pointers (pointing to a word placed on zeropage). +// The result when running is "CML!" on the screen. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Test a constant word pointers (pointing to a word placed on zeropage). -// The result when running is "CML!" on the screen. +//SEG9 main main: { .label screen = $400 .label wp = w @@ -158,44 +159,44 @@ main: { .label _3 = 6 .label _4 = 7 .label w = 2 - //SEG9 [4] (word) main::w#0 ← (word/signed word/dword/signed dword) 3331 -- vwuz1=vwuc1 + //SEG10 [4] (word) main::w#0 ← (word/signed word/dword/signed dword) 3331 -- vwuz1=vwuc1 lda #<$d03 sta w lda #>$d03 sta w+1 - //SEG10 [5] (byte~) main::$1 ← < *((const word*) main::wp#0) -- vbuz1=_lo__deref_pwuc1 + //SEG11 [5] (byte~) main::$1 ← < *((const word*) main::wp#0) -- vbuz1=_lo__deref_pwuc1 lda wp sta _1 - //SEG11 [6] *((const byte*) main::screen#0) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 + //SEG12 [6] *((const byte*) main::screen#0) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 lda _1 sta screen - //SEG12 [7] (byte~) main::$2 ← > *((const word*) main::wp#0) -- vbuz1=_hi__deref_pwuc1 + //SEG13 [7] (byte~) main::$2 ← > *((const word*) main::wp#0) -- vbuz1=_hi__deref_pwuc1 lda wp+1 sta _2 - //SEG13 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$2 -- _deref_pbuc1=vbuz1 + //SEG14 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$2 -- _deref_pbuc1=vbuz1 lda _2 sta screen+1 - //SEG14 [9] *((const word*) main::wp#0) ← (word/signed word/dword/signed dword) 8460 -- _deref_pwuc1=vwuc2 + //SEG15 [9] *((const word*) main::wp#0) ← (word/signed word/dword/signed dword) 8460 -- _deref_pwuc1=vwuc2 lda #<$210c sta wp lda #>$210c sta wp+1 - //SEG15 [10] (byte~) main::$3 ← < *((const word*) main::wp#0) -- vbuz1=_lo__deref_pwuc1 + //SEG16 [10] (byte~) main::$3 ← < *((const word*) main::wp#0) -- vbuz1=_lo__deref_pwuc1 lda wp sta _3 - //SEG16 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$3 -- _deref_pbuc1=vbuz1 + //SEG17 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$3 -- _deref_pbuc1=vbuz1 lda _3 sta screen+2 - //SEG17 [12] (byte~) main::$4 ← > *((const word*) main::wp#0) -- vbuz1=_hi__deref_pwuc1 + //SEG18 [12] (byte~) main::$4 ← > *((const word*) main::wp#0) -- vbuz1=_hi__deref_pwuc1 lda wp+1 sta _4 - //SEG18 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuz1 + //SEG19 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuz1 lda _4 sta screen+3 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [14] return + //SEG21 [14] return rts } @@ -217,62 +218,63 @@ Limited combination testing to 100 combinations of 256 possible. Uplifting [] best 75 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a constant word pointers (pointing to a word placed on zeropage). +// The result when running is "CML!" on the screen. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Test a constant word pointers (pointing to a word placed on zeropage). -// The result when running is "CML!" on the screen. +//SEG9 main main: { .label screen = $400 .label wp = w .label w = 2 - //SEG9 [4] (word) main::w#0 ← (word/signed word/dword/signed dword) 3331 -- vwuz1=vwuc1 + //SEG10 [4] (word) main::w#0 ← (word/signed word/dword/signed dword) 3331 -- vwuz1=vwuc1 lda #<$d03 sta w lda #>$d03 sta w+1 - //SEG10 [5] (byte~) main::$1 ← < *((const word*) main::wp#0) -- vbuaa=_lo__deref_pwuc1 + //SEG11 [5] (byte~) main::$1 ← < *((const word*) main::wp#0) -- vbuaa=_lo__deref_pwuc1 lda wp - //SEG11 [6] *((const byte*) main::screen#0) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG12 [6] *((const byte*) main::screen#0) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa sta screen - //SEG12 [7] (byte~) main::$2 ← > *((const word*) main::wp#0) -- vbuaa=_hi__deref_pwuc1 + //SEG13 [7] (byte~) main::$2 ← > *((const word*) main::wp#0) -- vbuaa=_hi__deref_pwuc1 lda wp+1 - //SEG13 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa + //SEG14 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa sta screen+1 - //SEG14 [9] *((const word*) main::wp#0) ← (word/signed word/dword/signed dword) 8460 -- _deref_pwuc1=vwuc2 + //SEG15 [9] *((const word*) main::wp#0) ← (word/signed word/dword/signed dword) 8460 -- _deref_pwuc1=vwuc2 lda #<$210c sta wp lda #>$210c sta wp+1 - //SEG15 [10] (byte~) main::$3 ← < *((const word*) main::wp#0) -- vbuaa=_lo__deref_pwuc1 + //SEG16 [10] (byte~) main::$3 ← < *((const word*) main::wp#0) -- vbuaa=_lo__deref_pwuc1 lda wp - //SEG16 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$3 -- _deref_pbuc1=vbuaa + //SEG17 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$3 -- _deref_pbuc1=vbuaa sta screen+2 - //SEG17 [12] (byte~) main::$4 ← > *((const word*) main::wp#0) -- vbuaa=_hi__deref_pwuc1 + //SEG18 [12] (byte~) main::$4 ← > *((const word*) main::wp#0) -- vbuaa=_hi__deref_pwuc1 lda wp+1 - //SEG18 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa + //SEG19 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa sta screen+3 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [14] return + //SEG21 [14] return rts } @@ -321,52 +323,53 @@ reg byte a [ main::$4 ] FINAL ASSEMBLER Score: 60 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test a constant word pointers (pointing to a word placed on zeropage). +// The result when running is "CML!" on the screen. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main -// Test a constant word pointers (pointing to a word placed on zeropage). -// The result when running is "CML!" on the screen. +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label screen = $400 .label wp = w .label w = 2 - //SEG9 [4] (word) main::w#0 ← (word/signed word/dword/signed dword) 3331 -- vwuz1=vwuc1 + //SEG10 [4] (word) main::w#0 ← (word/signed word/dword/signed dword) 3331 -- vwuz1=vwuc1 lda #<$d03 sta w lda #>$d03 sta w+1 - //SEG10 [5] (byte~) main::$1 ← < *((const word*) main::wp#0) -- vbuaa=_lo__deref_pwuc1 + //SEG11 [5] (byte~) main::$1 ← < *((const word*) main::wp#0) -- vbuaa=_lo__deref_pwuc1 lda wp - //SEG11 [6] *((const byte*) main::screen#0) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG12 [6] *((const byte*) main::screen#0) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa sta screen - //SEG12 [7] (byte~) main::$2 ← > *((const word*) main::wp#0) -- vbuaa=_hi__deref_pwuc1 + //SEG13 [7] (byte~) main::$2 ← > *((const word*) main::wp#0) -- vbuaa=_hi__deref_pwuc1 lda wp+1 - //SEG13 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa + //SEG14 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$2 -- _deref_pbuc1=vbuaa sta screen+1 - //SEG14 [9] *((const word*) main::wp#0) ← (word/signed word/dword/signed dword) 8460 -- _deref_pwuc1=vwuc2 + //SEG15 [9] *((const word*) main::wp#0) ← (word/signed word/dword/signed dword) 8460 -- _deref_pwuc1=vwuc2 lda #<$210c sta wp lda #>$210c sta wp+1 - //SEG15 [10] (byte~) main::$3 ← < *((const word*) main::wp#0) -- vbuaa=_lo__deref_pwuc1 + //SEG16 [10] (byte~) main::$3 ← < *((const word*) main::wp#0) -- vbuaa=_lo__deref_pwuc1 lda wp - //SEG16 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$3 -- _deref_pbuc1=vbuaa + //SEG17 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$3 -- _deref_pbuc1=vbuaa sta screen+2 - //SEG17 [12] (byte~) main::$4 ← > *((const word*) main::wp#0) -- vbuaa=_hi__deref_pwuc1 + //SEG18 [12] (byte~) main::$4 ← > *((const word*) main::wp#0) -- vbuaa=_hi__deref_pwuc1 lda wp+1 - //SEG18 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa + //SEG19 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa sta screen+3 - //SEG19 main::@return - //SEG20 [14] return + //SEG20 main::@return + //SEG21 [14] return rts } diff --git a/src/test/ref/constabsmin.log b/src/test/ref/constabsmin.log index 1cd9c87b5..3a1e646c0 100644 --- a/src/test/ref/constabsmin.log +++ b/src/test/ref/constabsmin.log @@ -68,35 +68,36 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -111,35 +112,36 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -175,25 +177,26 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/constant-string-concat.asm b/src/test/ref/constant-string-concat.asm index cf98f71b8..87cf43080 100644 --- a/src/test/ref/constant-string-concat.asm +++ b/src/test/ref/constant-string-concat.asm @@ -1,7 +1,7 @@ +// Concatenates string constants in different ways .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Concatenates string constants in different ways main: { .label SCREEN = $400 ldx #0 diff --git a/src/test/ref/constant-string-concat.log b/src/test/ref/constant-string-concat.log index 38026addf..e89f55adb 100644 --- a/src/test/ref/constant-string-concat.log +++ b/src/test/ref/constant-string-concat.log @@ -169,58 +169,59 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Concatenates string constants in different ways +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Concatenates string constants in different ways +//SEG10 main main: { .label SCREEN = $400 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda s5,y sta SCREEN,y - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG18 [8] 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_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts s: .text "e"+"l" s4: .text ""+'t'+'!' @@ -242,54 +243,55 @@ Uplifting [main] best 288 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 288 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Concatenates string constants in different ways +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Concatenates string constants in different ways +//SEG10 main main: { .label SCREEN = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda s5,x sta SCREEN,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts s: .text "e"+"l" s4: .text ""+'t'+'!' @@ -351,39 +353,40 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 186 -//SEG0 Basic Upstart +//SEG0 File Comments +// Concatenates string constants in different ways +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Concatenates string constants in different ways +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda s5,x sta SCREEN,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts s: .text "e"+"l" s4: .text ""+'t'+'!' diff --git a/src/test/ref/constantmin.log b/src/test/ref/constantmin.log index b3f3d96d8..f3fba5bf9 100644 --- a/src/test/ref/constantmin.log +++ b/src/test/ref/constantmin.log @@ -157,65 +157,66 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .const STAR = $51 .label VIC = $d000 .const RED = 2 .label BGCOL = VIC+$10*2+1 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label i = 2 - //SEG9 [4] *((const byte*) SCREEN#0) ← (const byte) STAR#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (const byte) STAR#0 -- _deref_pbuc1=vbuc2 lda #STAR sta SCREEN - //SEG10 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #$28 sta i jmp b1 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #STAR+1 sta SCREEN,y - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 80) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 80) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$50 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -237,61 +238,62 @@ Uplifting [main] best 275 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 275 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .const STAR = $51 .label VIC = $d000 .const RED = 2 .label BGCOL = VIC+$10*2+1 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (const byte) STAR#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (const byte) STAR#0 -- _deref_pbuc1=vbuc2 lda #STAR sta SCREEN - //SEG10 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #$28 jmp b1 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STAR+1 sta SCREEN,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 80) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 80) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$50 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -346,47 +348,48 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 173 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .const STAR = $51 .label VIC = $d000 .const RED = 2 .label BGCOL = VIC+$10*2+1 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (const byte) STAR#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (const byte) STAR#0 -- _deref_pbuc1=vbuc2 lda #STAR sta SCREEN - //SEG10 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #$28 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 main::@1 + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG17 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuxx=vbuc2 lda #STAR+1 sta SCREEN,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 80) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 80) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$50 bne b1 - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts } diff --git a/src/test/ref/constants.log b/src/test/ref/constants.log index d739d2147..806be4e45 100644 --- a/src/test/ref/constants.log +++ b/src/test/ref/constants.log @@ -1333,64 +1333,65 @@ Allocated zp ZP_BYTE:15 [ assert_byte::c#3 ] Allocated zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const GREEN = 5 .const RED = 2 .label print_char_cursor = 6 .label print_line_cursor = $a -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @24 [phi:@begin->@24] +//SEG4 [1] phi from @begin to @24 [phi:@begin->@24] b24_from_bbegin: jmp b24 -//SEG4 @24 +//SEG5 @24 b24: -//SEG5 [2] call main -//SEG6 [4] phi from @24 to main [phi:@24->main] +//SEG6 [2] call main +//SEG7 [4] phi from @24 to main [phi:@24->main] main_from_b24: jsr main -//SEG7 [3] phi from @24 to @end [phi:@24->@end] +//SEG8 [3] phi from @24 to @end [phi:@24->@end] bend_from_b24: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [68] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [68] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL - //SEG14 [7] call test_bytes - //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] + //SEG15 [7] call test_bytes + //SEG16 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] test_bytes_from_b1: jsr test_bytes - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call test_sbytes - //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] + //SEG19 [9] call test_sbytes + //SEG20 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] test_sbytes_from_b2: jsr test_sbytes jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [10] return + //SEG22 [10] return rts } -//SEG22 test_sbytes +//SEG23 test_sbytes // Test different signed byte constants test_sbytes: { .const bb = 0 @@ -1398,105 +1399,105 @@ test_sbytes: { .const bd = bc-4 .const bf = $ff&-$7f-$7f .const be = -bd - //SEG23 [12] call assert_sbyte - //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] + //SEG24 [12] call assert_sbyte + //SEG25 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] assert_sbyte_from_test_sbytes: - //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG26 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 lda #0 sta assert_sbyte.c - //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsz1=vbsc1 + //SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsz1=vbsc1 lda #bb sta assert_sbyte.b - //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] + //SEG29 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] b1_from_test_sbytes: jmp b1 - //SEG29 test_sbytes::@1 + //SEG30 test_sbytes::@1 b1: - //SEG30 [14] call assert_sbyte - //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] + //SEG31 [14] call assert_sbyte + //SEG32 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] assert_sbyte_from_b1: - //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG33 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsz1=vbsc1 + //SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsz1=vbsc1 lda #bc sta assert_sbyte.b - //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg1 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] + //SEG36 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] b2_from_b1: jmp b2 - //SEG36 test_sbytes::@2 + //SEG37 test_sbytes::@2 b2: - //SEG37 [16] call assert_sbyte - //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] + //SEG38 [16] call assert_sbyte + //SEG39 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] assert_sbyte_from_b2: - //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 + //SEG40 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 lda #-2 sta assert_sbyte.c - //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsz1=vbsc1 + //SEG41 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsz1=vbsc1 lda #bd sta assert_sbyte.b - //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG42 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg2 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] + //SEG43 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] b3_from_b2: jmp b3 - //SEG43 test_sbytes::@3 + //SEG44 test_sbytes::@3 b3: - //SEG44 [18] call assert_sbyte - //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] + //SEG45 [18] call assert_sbyte + //SEG46 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] assert_sbyte_from_b3: - //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG47 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsz1=vbsc1 + //SEG48 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsz1=vbsc1 lda #be sta assert_sbyte.b - //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG49 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg3 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] + //SEG50 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] b4_from_b3: jmp b4 - //SEG50 test_sbytes::@4 + //SEG51 test_sbytes::@4 b4: - //SEG51 [20] call assert_sbyte - //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] + //SEG52 [20] call assert_sbyte + //SEG53 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] assert_sbyte_from_b4: - //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG54 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsz1=vbsc1 + //SEG55 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsz1=vbsc1 lda #bf sta assert_sbyte.b - //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG56 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg4 sta assert_sbyte.msg+1 jsr assert_sbyte jmp breturn - //SEG56 test_sbytes::@return + //SEG57 test_sbytes::@return breturn: - //SEG57 [21] return + //SEG58 [21] return rts msg: .text "0=0@" msg1: .text "0+2=2@" @@ -1504,90 +1505,90 @@ test_sbytes: { msg3: .text "-(0+2-4)=2@" msg4: .text "-127-127=2@" } -//SEG58 assert_sbyte +//SEG59 assert_sbyte assert_sbyte: { .label msg = 2 .label b = 4 .label c = 5 - //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 -- pbuz1=pbuz2 + //SEG60 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 -- pbuz1=pbuz2 lda msg sta print_str.str lda msg+1 sta print_str.str+1 - //SEG60 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG61 [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 sta print_char_cursor+1 - //SEG61 [25] call print_str - //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str] + //SEG62 [25] call print_str + //SEG63 [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#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 + //SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG65 [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] + //SEG66 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] b5_from_assert_sbyte: jmp b5 - //SEG66 assert_sbyte::@5 + //SEG67 assert_sbyte::@5 b5: - //SEG67 [27] call print_str - //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] + //SEG68 [27] call print_str + //SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] print_str_from_b5: - //SEG69 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy - //SEG70 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 + //SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy + //SEG71 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG71 assert_sbyte::@6 + //SEG72 assert_sbyte::@6 b6: - //SEG72 [28] if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 -- vbsz1_neq_vbsz2_then_la1 + //SEG73 [28] if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 -- vbsz1_neq_vbsz2_then_la1 lda b cmp c bne b1 - //SEG73 [29] phi from assert_sbyte::@6 to assert_sbyte::@3 [phi:assert_sbyte::@6->assert_sbyte::@3] + //SEG74 [29] phi from assert_sbyte::@6 to assert_sbyte::@3 [phi:assert_sbyte::@6->assert_sbyte::@3] b3_from_b6: jmp b3 - //SEG74 assert_sbyte::@3 + //SEG75 assert_sbyte::@3 b3: - //SEG75 [30] call print_str - //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] + //SEG76 [30] call print_str + //SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] print_str_from_b3: - //SEG77 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy - //SEG78 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 + //SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy + //SEG79 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] + //SEG80 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] b2_from_b1: b2_from_b3: jmp b2 - //SEG80 assert_sbyte::@2 + //SEG81 assert_sbyte::@2 b2: - //SEG81 [32] call print_ln - //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] + //SEG82 [32] call print_ln + //SEG83 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] print_ln_from_b2: - //SEG83 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy + //SEG84 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG84 assert_sbyte::@return + //SEG85 assert_sbyte::@return breturn: - //SEG85 [33] return + //SEG86 [33] return rts - //SEG86 assert_sbyte::@1 + //SEG87 assert_sbyte::@1 b1: - //SEG87 [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG88 [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG88 [35] call print_str - //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] + //SEG89 [35] call print_str + //SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] print_str_from_b1: - //SEG90 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy - //SEG91 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 + //SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy + //SEG92 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -1598,58 +1599,58 @@ assert_sbyte: { str1: .text "fail!@" str2: .text "ok@" } -//SEG92 print_str +//SEG93 print_str // Print a zero-terminated string print_str: { .label str = 8 - //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG94 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG94 [37] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#80 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG95 [37] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#80 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG96 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG96 print_str::@1 + //SEG97 print_str::@1 b1: - //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG98 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG98 print_str::@return + //SEG99 print_str::@return breturn: - //SEG99 [39] return + //SEG100 [39] return rts - //SEG100 print_str::@2 + //SEG101 print_str::@2 b2: - //SEG101 [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG102 [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG102 [41] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG103 [41] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG104 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG104 print_ln +//SEG105 print_ln // Print a newline print_ln: { - //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG106 [44] 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: - //SEG106 [44] phi (byte*) print_line_cursor#24 = (byte*) print_line_cursor#47 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG107 [44] phi (byte*) print_line_cursor#24 = (byte*) print_line_cursor#47 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG107 print_ln::@1 + //SEG108 print_ln::@1 b1: - //SEG108 [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG109 [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -1657,7 +1658,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG109 [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG110 [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1667,180 +1668,180 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG110 print_ln::@return + //SEG111 print_ln::@return breturn: - //SEG111 [47] return + //SEG112 [47] return rts } -//SEG112 test_bytes +//SEG113 test_bytes // Test different byte constants test_bytes: { .const bb = 0 .const bc = bb+2 .const bd = bc-4 - //SEG113 [49] call assert_byte - //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] + //SEG114 [49] call assert_byte + //SEG115 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] assert_byte_from_test_bytes: - //SEG115 [55] phi (byte*) print_line_cursor#50 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 + //SEG116 [55] phi (byte*) print_line_cursor#50 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 + //SEG117 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 lda #0 sta assert_byte.c - //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuz1=vbuc1 + //SEG118 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuz1=vbuc1 lda #bb sta assert_byte.b - //SEG118 [55] phi (byte*) print_char_cursor#70 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 + //SEG119 [55] phi (byte*) print_char_cursor#70 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 + //SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 lda #msg sta assert_byte.msg+1 jsr assert_byte jmp b1 - //SEG120 test_bytes::@1 + //SEG121 test_bytes::@1 b1: - //SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG122 [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 sta print_char_cursor+1 - //SEG122 [51] call assert_byte - //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] + //SEG123 [51] call assert_byte + //SEG124 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] assert_byte_from_b1: - //SEG124 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy - //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 + //SEG125 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy + //SEG126 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 lda #2 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] -- vbuz1=vbuc1 + //SEG127 [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#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 + //SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 lda #msg1 sta assert_byte.msg+1 jsr assert_byte jmp b2 - //SEG129 test_bytes::@2 + //SEG130 test_bytes::@2 b2: - //SEG130 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG131 [52] (byte*~) print_char_cursor#94 ← (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 - //SEG131 [53] call assert_byte - //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] + //SEG132 [53] call assert_byte + //SEG133 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] assert_byte_from_b2: - //SEG133 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy - //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 + //SEG134 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy + //SEG135 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 lda #$fe sta assert_byte.c - //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuz1=vbuc1 + //SEG136 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuz1=vbuc1 lda #bd sta assert_byte.b - //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 + //SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG138 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 lda #msg2 sta assert_byte.msg+1 jsr assert_byte jmp breturn - //SEG138 test_bytes::@return + //SEG139 test_bytes::@return breturn: - //SEG139 [54] return + //SEG140 [54] return rts msg: .text "0=0@" msg1: .text "0+2=2@" msg2: .text "0+2-4=254@" } -//SEG140 assert_byte +//SEG141 assert_byte assert_byte: { .label msg = $c .label b = $e .label c = $f - //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 -- pbuz1=pbuz2 + //SEG142 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 -- pbuz1=pbuz2 lda msg sta print_str.str lda msg+1 sta print_str.str+1 - //SEG142 [57] call print_str - //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] + //SEG143 [57] call print_str + //SEG144 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] print_str_from_assert_byte: - //SEG144 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#70 [phi:assert_byte->print_str#0] -- register_copy - //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy + //SEG145 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#70 [phi:assert_byte->print_str#0] -- register_copy + //SEG146 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy jsr print_str - //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] + //SEG147 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] b5_from_assert_byte: jmp b5 - //SEG147 assert_byte::@5 + //SEG148 assert_byte::@5 b5: - //SEG148 [59] call print_str - //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] + //SEG149 [59] call print_str + //SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] print_str_from_b5: - //SEG150 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy - //SEG151 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 + //SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy + //SEG152 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG152 assert_byte::@6 + //SEG153 assert_byte::@6 b6: - //SEG153 [60] if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1 -- vbuz1_neq_vbuz2_then_la1 + //SEG154 [60] if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1 -- vbuz1_neq_vbuz2_then_la1 lda b cmp c bne b1 - //SEG154 [61] phi from assert_byte::@6 to assert_byte::@3 [phi:assert_byte::@6->assert_byte::@3] + //SEG155 [61] phi from assert_byte::@6 to assert_byte::@3 [phi:assert_byte::@6->assert_byte::@3] b3_from_b6: jmp b3 - //SEG155 assert_byte::@3 + //SEG156 assert_byte::@3 b3: - //SEG156 [62] call print_str - //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] + //SEG157 [62] call print_str + //SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] print_str_from_b3: - //SEG158 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy - //SEG159 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 + //SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy + //SEG160 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] + //SEG161 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] b2_from_b1: b2_from_b3: jmp b2 - //SEG161 assert_byte::@2 + //SEG162 assert_byte::@2 b2: - //SEG162 [64] call print_ln - //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] + //SEG163 [64] call print_ln + //SEG164 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] print_ln_from_b2: - //SEG164 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#50 [phi:assert_byte::@2->print_ln#0] -- register_copy + //SEG165 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#50 [phi:assert_byte::@2->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG165 assert_byte::@return + //SEG166 assert_byte::@return breturn: - //SEG166 [65] return + //SEG167 [65] return rts - //SEG167 assert_byte::@1 + //SEG168 assert_byte::@1 b1: - //SEG168 [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG169 [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG169 [67] call print_str - //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] + //SEG170 [67] call print_str + //SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] print_str_from_b1: - //SEG171 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy - //SEG172 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 + //SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy + //SEG173 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -1851,34 +1852,34 @@ assert_byte: { str1: .text "fail!@" str2: .text "ok@" } -//SEG173 print_cls +//SEG174 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $10 - //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG175 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG176 [69] 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 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG177 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG177 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG178 [69] 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 + //SEG179 print_cls::@1 b1: - //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG180 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG181 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG181 [72] 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 + //SEG182 [72] 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 @@ -1886,9 +1887,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG182 print_cls::@return + //SEG183 print_cls::@return breturn: - //SEG183 [73] return + //SEG184 [73] return rts } @@ -1973,64 +1974,65 @@ Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ print_char_cursor#80 print_char_curs Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const GREEN = 5 .const RED = 2 .label print_char_cursor = 5 .label print_line_cursor = 7 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @24 [phi:@begin->@24] +//SEG4 [1] phi from @begin to @24 [phi:@begin->@24] b24_from_bbegin: jmp b24 -//SEG4 @24 +//SEG5 @24 b24: -//SEG5 [2] call main -//SEG6 [4] phi from @24 to main [phi:@24->main] +//SEG6 [2] call main +//SEG7 [4] phi from @24 to main [phi:@24->main] main_from_b24: jsr main -//SEG7 [3] phi from @24 to @end [phi:@24->@end] +//SEG8 [3] phi from @24 to @end [phi:@24->@end] bend_from_b24: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [68] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [68] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL - //SEG14 [7] call test_bytes - //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] + //SEG15 [7] call test_bytes + //SEG16 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] test_bytes_from_b1: jsr test_bytes - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call test_sbytes - //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] + //SEG19 [9] call test_sbytes + //SEG20 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] test_sbytes_from_b2: jsr test_sbytes jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [10] return + //SEG22 [10] return rts } -//SEG22 test_sbytes +//SEG23 test_sbytes // Test different signed byte constants test_sbytes: { .const bb = 0 @@ -2038,100 +2040,100 @@ test_sbytes: { .const bd = bc-4 .const bf = $ff&-$7f-$7f .const be = -bd - //SEG23 [12] call assert_sbyte - //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] + //SEG24 [12] call assert_sbyte + //SEG25 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] assert_sbyte_from_test_sbytes: - //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG26 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 lda #0 sta assert_sbyte.c - //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 ldx #bb - //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] + //SEG29 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] b1_from_test_sbytes: jmp b1 - //SEG29 test_sbytes::@1 + //SEG30 test_sbytes::@1 b1: - //SEG30 [14] call assert_sbyte - //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] + //SEG31 [14] call assert_sbyte + //SEG32 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] assert_sbyte_from_b1: - //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG33 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 ldx #bc - //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg1 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] + //SEG36 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] b2_from_b1: jmp b2 - //SEG36 test_sbytes::@2 + //SEG37 test_sbytes::@2 b2: - //SEG37 [16] call assert_sbyte - //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] + //SEG38 [16] call assert_sbyte + //SEG39 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] assert_sbyte_from_b2: - //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 + //SEG40 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 lda #-2 sta assert_sbyte.c - //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG41 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1 ldx #bd - //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG42 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg2 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] + //SEG43 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] b3_from_b2: jmp b3 - //SEG43 test_sbytes::@3 + //SEG44 test_sbytes::@3 b3: - //SEG44 [18] call assert_sbyte - //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] + //SEG45 [18] call assert_sbyte + //SEG46 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] assert_sbyte_from_b3: - //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG47 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG48 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1 ldx #be - //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG49 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg3 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] + //SEG50 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] b4_from_b3: jmp b4 - //SEG50 test_sbytes::@4 + //SEG51 test_sbytes::@4 b4: - //SEG51 [20] call assert_sbyte - //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] + //SEG52 [20] call assert_sbyte + //SEG53 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] assert_sbyte_from_b4: - //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG54 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG55 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1 ldx #bf - //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG56 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg4 sta assert_sbyte.msg+1 jsr assert_sbyte jmp breturn - //SEG56 test_sbytes::@return + //SEG57 test_sbytes::@return breturn: - //SEG57 [21] return + //SEG58 [21] return rts msg: .text "0=0@" msg1: .text "0+2=2@" @@ -2139,84 +2141,84 @@ test_sbytes: { msg3: .text "-(0+2-4)=2@" msg4: .text "-127-127=2@" } -//SEG58 assert_sbyte +//SEG59 assert_sbyte assert_sbyte: { .label msg = 2 .label c = 4 - //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 - //SEG60 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG60 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + //SEG61 [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 sta print_char_cursor+1 - //SEG61 [25] call print_str - //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str] + //SEG62 [25] call print_str + //SEG63 [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#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 + //SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG65 [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] + //SEG66 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] b5_from_assert_sbyte: jmp b5 - //SEG66 assert_sbyte::@5 + //SEG67 assert_sbyte::@5 b5: - //SEG67 [27] call print_str - //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] + //SEG68 [27] call print_str + //SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] print_str_from_b5: - //SEG69 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy - //SEG70 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 + //SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy + //SEG71 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG71 assert_sbyte::@6 + //SEG72 assert_sbyte::@6 b6: - //SEG72 [28] if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 -- vbsxx_neq_vbsz1_then_la1 + //SEG73 [28] if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 -- vbsxx_neq_vbsz1_then_la1 cpx c bne b1 - //SEG73 [29] phi from assert_sbyte::@6 to assert_sbyte::@3 [phi:assert_sbyte::@6->assert_sbyte::@3] + //SEG74 [29] phi from assert_sbyte::@6 to assert_sbyte::@3 [phi:assert_sbyte::@6->assert_sbyte::@3] b3_from_b6: jmp b3 - //SEG74 assert_sbyte::@3 + //SEG75 assert_sbyte::@3 b3: - //SEG75 [30] call print_str - //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] + //SEG76 [30] call print_str + //SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] print_str_from_b3: - //SEG77 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy - //SEG78 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 + //SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy + //SEG79 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] + //SEG80 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] b2_from_b1: b2_from_b3: jmp b2 - //SEG80 assert_sbyte::@2 + //SEG81 assert_sbyte::@2 b2: - //SEG81 [32] call print_ln - //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] + //SEG82 [32] call print_ln + //SEG83 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] print_ln_from_b2: - //SEG83 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy + //SEG84 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG84 assert_sbyte::@return + //SEG85 assert_sbyte::@return breturn: - //SEG85 [33] return + //SEG86 [33] return rts - //SEG86 assert_sbyte::@1 + //SEG87 assert_sbyte::@1 b1: - //SEG87 [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG88 [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG88 [35] call print_str - //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] + //SEG89 [35] call print_str + //SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] print_str_from_b1: - //SEG90 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy - //SEG91 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 + //SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy + //SEG92 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2227,58 +2229,58 @@ assert_sbyte: { str1: .text "fail!@" str2: .text "ok@" } -//SEG92 print_str +//SEG93 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG94 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG94 [37] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#80 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG95 [37] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#80 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG96 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG96 print_str::@1 + //SEG97 print_str::@1 b1: - //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG98 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG98 print_str::@return + //SEG99 print_str::@return breturn: - //SEG99 [39] return + //SEG100 [39] return rts - //SEG100 print_str::@2 + //SEG101 print_str::@2 b2: - //SEG101 [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG102 [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG102 [41] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG103 [41] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG104 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG104 print_ln +//SEG105 print_ln // Print a newline print_ln: { - //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG106 [44] 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: - //SEG106 [44] phi (byte*) print_line_cursor#24 = (byte*) print_line_cursor#47 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG107 [44] phi (byte*) print_line_cursor#24 = (byte*) print_line_cursor#47 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG107 print_ln::@1 + //SEG108 print_ln::@1 b1: - //SEG108 [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG109 [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -2286,7 +2288,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG109 [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG110 [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -2296,171 +2298,171 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG110 print_ln::@return + //SEG111 print_ln::@return breturn: - //SEG111 [47] return + //SEG112 [47] return rts } -//SEG112 test_bytes +//SEG113 test_bytes // Test different byte constants test_bytes: { .const bb = 0 .const bc = bb+2 .const bd = bc-4 - //SEG113 [49] call assert_byte - //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] + //SEG114 [49] call assert_byte + //SEG115 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] assert_byte_from_test_bytes: - //SEG115 [55] phi (byte*) print_line_cursor#50 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 + //SEG116 [55] phi (byte*) print_line_cursor#50 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 + //SEG117 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 lda #0 sta assert_byte.c - //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuxx=vbuc1 + //SEG118 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuxx=vbuc1 ldx #bb - //SEG118 [55] phi (byte*) print_char_cursor#70 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 + //SEG119 [55] phi (byte*) print_char_cursor#70 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 + //SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 lda #msg sta assert_byte.msg+1 jsr assert_byte jmp b1 - //SEG120 test_bytes::@1 + //SEG121 test_bytes::@1 b1: - //SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG122 [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 sta print_char_cursor+1 - //SEG122 [51] call assert_byte - //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] + //SEG123 [51] call assert_byte + //SEG124 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] assert_byte_from_b1: - //SEG124 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy - //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 + //SEG125 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy + //SEG126 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 lda #2 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 + //SEG127 [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#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 + //SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 lda #msg1 sta assert_byte.msg+1 jsr assert_byte jmp b2 - //SEG129 test_bytes::@2 + //SEG130 test_bytes::@2 b2: - //SEG130 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG131 [52] (byte*~) print_char_cursor#94 ← (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 - //SEG131 [53] call assert_byte - //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] + //SEG132 [53] call assert_byte + //SEG133 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] assert_byte_from_b2: - //SEG133 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy - //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 + //SEG134 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy + //SEG135 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 lda #$fe sta assert_byte.c - //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1 + //SEG136 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1 ldx #bd - //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 + //SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG138 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 lda #msg2 sta assert_byte.msg+1 jsr assert_byte jmp breturn - //SEG138 test_bytes::@return + //SEG139 test_bytes::@return breturn: - //SEG139 [54] return + //SEG140 [54] return rts msg: .text "0=0@" msg1: .text "0+2=2@" msg2: .text "0+2-4=254@" } -//SEG140 assert_byte +//SEG141 assert_byte assert_byte: { .label msg = 2 .label c = 4 - //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 - //SEG142 [57] call print_str - //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] + //SEG142 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + //SEG143 [57] call print_str + //SEG144 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] print_str_from_assert_byte: - //SEG144 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#70 [phi:assert_byte->print_str#0] -- register_copy - //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy + //SEG145 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#70 [phi:assert_byte->print_str#0] -- register_copy + //SEG146 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy jsr print_str - //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] + //SEG147 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] b5_from_assert_byte: jmp b5 - //SEG147 assert_byte::@5 + //SEG148 assert_byte::@5 b5: - //SEG148 [59] call print_str - //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] + //SEG149 [59] call print_str + //SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] print_str_from_b5: - //SEG150 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy - //SEG151 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 + //SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy + //SEG152 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG152 assert_byte::@6 + //SEG153 assert_byte::@6 b6: - //SEG153 [60] if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1 -- vbuxx_neq_vbuz1_then_la1 + //SEG154 [60] if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1 -- vbuxx_neq_vbuz1_then_la1 cpx c bne b1 - //SEG154 [61] phi from assert_byte::@6 to assert_byte::@3 [phi:assert_byte::@6->assert_byte::@3] + //SEG155 [61] phi from assert_byte::@6 to assert_byte::@3 [phi:assert_byte::@6->assert_byte::@3] b3_from_b6: jmp b3 - //SEG155 assert_byte::@3 + //SEG156 assert_byte::@3 b3: - //SEG156 [62] call print_str - //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] + //SEG157 [62] call print_str + //SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] print_str_from_b3: - //SEG158 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy - //SEG159 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 + //SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy + //SEG160 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] + //SEG161 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] b2_from_b1: b2_from_b3: jmp b2 - //SEG161 assert_byte::@2 + //SEG162 assert_byte::@2 b2: - //SEG162 [64] call print_ln - //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] + //SEG163 [64] call print_ln + //SEG164 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] print_ln_from_b2: - //SEG164 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#50 [phi:assert_byte::@2->print_ln#0] -- register_copy + //SEG165 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#50 [phi:assert_byte::@2->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG165 assert_byte::@return + //SEG166 assert_byte::@return breturn: - //SEG166 [65] return + //SEG167 [65] return rts - //SEG167 assert_byte::@1 + //SEG168 assert_byte::@1 b1: - //SEG168 [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG169 [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG169 [67] call print_str - //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] + //SEG170 [67] call print_str + //SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] print_str_from_b1: - //SEG171 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy - //SEG172 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 + //SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy + //SEG173 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2471,34 +2473,34 @@ assert_byte: { str1: .text "fail!@" str2: .text "ok@" } -//SEG173 print_cls +//SEG174 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG175 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG176 [69] 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 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG177 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG177 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG178 [69] 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 + //SEG179 print_cls::@1 b1: - //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG180 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG181 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG181 [72] 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 + //SEG182 [72] 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 @@ -2506,9 +2508,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG182 print_cls::@return + //SEG183 print_cls::@return breturn: - //SEG183 [73] return + //SEG184 [73] return rts } @@ -2755,45 +2757,46 @@ reg byte x [ assert_byte::b#3 ] FINAL ASSEMBLER Score: 1840 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const GREEN = 5 .const RED = 2 .label print_char_cursor = 5 .label print_line_cursor = 7 -//SEG2 @begin -//SEG3 [1] phi from @begin to @24 [phi:@begin->@24] -//SEG4 @24 -//SEG5 [2] call main -//SEG6 [4] phi from @24 to main [phi:@24->main] -//SEG7 [3] phi from @24 to @end [phi:@24->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @24 [phi:@begin->@24] +//SEG5 @24 +//SEG6 [2] call main +//SEG7 [4] phi from @24 to main [phi:@24->main] +//SEG8 [3] phi from @24 to @end [phi:@24->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [68] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [68] phi from main to print_cls [phi:main->print_cls] jsr print_cls - //SEG12 main::@1 - //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG13 main::@1 + //SEG14 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL - //SEG14 [7] call test_bytes - //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] + //SEG15 [7] call test_bytes + //SEG16 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] jsr test_bytes - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 main::@2 - //SEG18 [9] call test_sbytes - //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [9] call test_sbytes + //SEG20 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] jsr test_sbytes - //SEG20 main::@return - //SEG21 [10] return + //SEG21 main::@return + //SEG22 [10] return rts } -//SEG22 test_sbytes +//SEG23 test_sbytes // Test different signed byte constants test_sbytes: { .const bb = 0 @@ -2801,81 +2804,81 @@ test_sbytes: { .const bd = bc-4 .const bf = $ff&-$7f-$7f .const be = -bd - //SEG23 [12] call assert_sbyte - //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] - //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG24 [12] call assert_sbyte + //SEG25 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] + //SEG26 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 lda #0 sta assert_sbyte.c - //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 ldx #bb - //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] - //SEG29 test_sbytes::@1 - //SEG30 [14] call assert_sbyte - //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] - //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG29 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] + //SEG30 test_sbytes::@1 + //SEG31 [14] call assert_sbyte + //SEG32 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] + //SEG33 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 ldx #bc - //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg1 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] - //SEG36 test_sbytes::@2 - //SEG37 [16] call assert_sbyte - //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] - //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 + //SEG36 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] + //SEG37 test_sbytes::@2 + //SEG38 [16] call assert_sbyte + //SEG39 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] + //SEG40 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 lda #-2 sta assert_sbyte.c - //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG41 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1 ldx #bd - //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG42 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg2 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] - //SEG43 test_sbytes::@3 - //SEG44 [18] call assert_sbyte - //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] - //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG43 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] + //SEG44 test_sbytes::@3 + //SEG45 [18] call assert_sbyte + //SEG46 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] + //SEG47 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG48 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1 ldx #be - //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG49 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg3 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] - //SEG50 test_sbytes::@4 - //SEG51 [20] call assert_sbyte - //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] - //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 + //SEG50 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] + //SEG51 test_sbytes::@4 + //SEG52 [20] call assert_sbyte + //SEG53 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] + //SEG54 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 lda #2 sta assert_sbyte.c - //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1 + //SEG55 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1 ldx #bf - //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 + //SEG56 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 lda #msg4 sta assert_sbyte.msg+1 jsr assert_sbyte - //SEG56 test_sbytes::@return - //SEG57 [21] return + //SEG57 test_sbytes::@return + //SEG58 [21] return rts msg: .text "0=0@" msg1: .text "0+2=2@" @@ -2883,66 +2886,66 @@ test_sbytes: { msg3: .text "-(0+2-4)=2@" msg4: .text "-127-127=2@" } -//SEG58 assert_sbyte +//SEG59 assert_sbyte assert_sbyte: { .label msg = 2 .label c = 4 - //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 - //SEG60 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG60 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + //SEG61 [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 sta print_char_cursor+1 - //SEG61 [25] call print_str - //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str] - //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 + //SEG62 [25] call print_str + //SEG63 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str] + //SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG65 [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] - //SEG66 assert_sbyte::@5 - //SEG67 [27] call print_str - //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] - //SEG69 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy - //SEG70 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 + //SEG66 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] + //SEG67 assert_sbyte::@5 + //SEG68 [27] call print_str + //SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] + //SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy + //SEG71 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG71 assert_sbyte::@6 - //SEG72 [28] if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 -- vbsxx_neq_vbsz1_then_la1 + //SEG72 assert_sbyte::@6 + //SEG73 [28] if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 -- vbsxx_neq_vbsz1_then_la1 cpx c bne b1 - //SEG73 [29] phi from assert_sbyte::@6 to assert_sbyte::@3 [phi:assert_sbyte::@6->assert_sbyte::@3] - //SEG74 assert_sbyte::@3 - //SEG75 [30] call print_str - //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] - //SEG77 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy - //SEG78 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 + //SEG74 [29] phi from assert_sbyte::@6 to assert_sbyte::@3 [phi:assert_sbyte::@6->assert_sbyte::@3] + //SEG75 assert_sbyte::@3 + //SEG76 [30] call print_str + //SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] + //SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy + //SEG79 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] - //SEG80 assert_sbyte::@2 + //SEG80 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] + //SEG81 assert_sbyte::@2 b2: - //SEG81 [32] call print_ln - //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] - //SEG83 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy + //SEG82 [32] call print_ln + //SEG83 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] + //SEG84 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy jsr print_ln - //SEG84 assert_sbyte::@return - //SEG85 [33] return + //SEG85 assert_sbyte::@return + //SEG86 [33] return rts - //SEG86 assert_sbyte::@1 + //SEG87 assert_sbyte::@1 b1: - //SEG87 [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG88 [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG88 [35] call print_str - //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] - //SEG90 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy - //SEG91 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 + //SEG89 [35] call print_str + //SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] + //SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy + //SEG92 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2953,49 +2956,49 @@ assert_sbyte: { str1: .text "fail!@" str2: .text "ok@" } -//SEG92 print_str +//SEG93 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG94 [37] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#80 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG96 print_str::@1 + //SEG94 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG95 [37] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#80 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG96 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG97 print_str::@1 b1: - //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG98 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG98 print_str::@return - //SEG99 [39] return + //SEG99 print_str::@return + //SEG100 [39] return rts - //SEG100 print_str::@2 + //SEG101 print_str::@2 b2: - //SEG101 [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG102 [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG102 [41] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG103 [41] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG104 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG104 print_ln +//SEG105 print_ln // Print a newline print_ln: { - //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG106 [44] phi (byte*) print_line_cursor#24 = (byte*) print_line_cursor#47 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG107 print_ln::@1 + //SEG106 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG107 [44] phi (byte*) print_line_cursor#24 = (byte*) print_line_cursor#47 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG108 print_ln::@1 b1: - //SEG108 [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG109 [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -3003,7 +3006,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG109 [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG110 [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -3012,143 +3015,143 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG110 print_ln::@return - //SEG111 [47] return + //SEG111 print_ln::@return + //SEG112 [47] return rts } -//SEG112 test_bytes +//SEG113 test_bytes // Test different byte constants test_bytes: { .const bb = 0 .const bc = bb+2 .const bd = bc-4 - //SEG113 [49] call assert_byte - //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] - //SEG115 [55] phi (byte*) print_line_cursor#50 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 + //SEG114 [49] call assert_byte + //SEG115 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] + //SEG116 [55] phi (byte*) print_line_cursor#50 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 + //SEG117 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 lda #0 sta assert_byte.c - //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuxx=vbuc1 + //SEG118 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuxx=vbuc1 ldx #bb - //SEG118 [55] phi (byte*) print_char_cursor#70 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 + //SEG119 [55] phi (byte*) print_char_cursor#70 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 + //SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 lda #msg sta assert_byte.msg+1 jsr assert_byte - //SEG120 test_bytes::@1 - //SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG121 test_bytes::@1 + //SEG122 [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 sta print_char_cursor+1 - //SEG122 [51] call assert_byte - //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] - //SEG124 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy - //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 + //SEG123 [51] call assert_byte + //SEG124 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] + //SEG125 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy + //SEG126 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 lda #2 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 + //SEG127 [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#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 + //SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 lda #msg1 sta assert_byte.msg+1 jsr assert_byte - //SEG129 test_bytes::@2 - //SEG130 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG130 test_bytes::@2 + //SEG131 [52] (byte*~) print_char_cursor#94 ← (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 - //SEG131 [53] call assert_byte - //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] - //SEG133 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy - //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 + //SEG132 [53] call assert_byte + //SEG133 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] + //SEG134 [55] phi (byte*) print_line_cursor#50 = (byte*) print_line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy + //SEG135 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 lda #$fe sta assert_byte.c - //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1 + //SEG136 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1 ldx #bd - //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 + //SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG138 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 lda #msg2 sta assert_byte.msg+1 jsr assert_byte - //SEG138 test_bytes::@return - //SEG139 [54] return + //SEG139 test_bytes::@return + //SEG140 [54] return rts msg: .text "0=0@" msg1: .text "0+2=2@" msg2: .text "0+2-4=254@" } -//SEG140 assert_byte +//SEG141 assert_byte assert_byte: { .label msg = 2 .label c = 4 - //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 - //SEG142 [57] call print_str - //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] - //SEG144 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#70 [phi:assert_byte->print_str#0] -- register_copy - //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy + //SEG142 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + //SEG143 [57] call print_str + //SEG144 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] + //SEG145 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#70 [phi:assert_byte->print_str#0] -- register_copy + //SEG146 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy jsr print_str - //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] - //SEG147 assert_byte::@5 - //SEG148 [59] call print_str - //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] - //SEG150 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy - //SEG151 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 + //SEG147 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] + //SEG148 assert_byte::@5 + //SEG149 [59] call print_str + //SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] + //SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy + //SEG152 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG152 assert_byte::@6 - //SEG153 [60] if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1 -- vbuxx_neq_vbuz1_then_la1 + //SEG153 assert_byte::@6 + //SEG154 [60] if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1 -- vbuxx_neq_vbuz1_then_la1 cpx c bne b1 - //SEG154 [61] phi from assert_byte::@6 to assert_byte::@3 [phi:assert_byte::@6->assert_byte::@3] - //SEG155 assert_byte::@3 - //SEG156 [62] call print_str - //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] - //SEG158 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy - //SEG159 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 + //SEG155 [61] phi from assert_byte::@6 to assert_byte::@3 [phi:assert_byte::@6->assert_byte::@3] + //SEG156 assert_byte::@3 + //SEG157 [62] call print_str + //SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] + //SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy + //SEG160 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] - //SEG161 assert_byte::@2 + //SEG161 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] + //SEG162 assert_byte::@2 b2: - //SEG162 [64] call print_ln - //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] - //SEG164 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#50 [phi:assert_byte::@2->print_ln#0] -- register_copy + //SEG163 [64] call print_ln + //SEG164 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] + //SEG165 [43] phi (byte*) print_line_cursor#47 = (byte*) print_line_cursor#50 [phi:assert_byte::@2->print_ln#0] -- register_copy jsr print_ln - //SEG165 assert_byte::@return - //SEG166 [65] return + //SEG166 assert_byte::@return + //SEG167 [65] return rts - //SEG167 assert_byte::@1 + //SEG168 assert_byte::@1 b1: - //SEG168 [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG169 [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG169 [67] call print_str - //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] - //SEG171 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy - //SEG172 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 + //SEG170 [67] call print_str + //SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] + //SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy + //SEG173 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -3159,38 +3162,38 @@ assert_byte: { str1: .text "fail!@" str2: .text "ok@" } -//SEG173 print_cls +//SEG174 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG175 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG176 [69] 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 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG177 [69] 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 + //SEG177 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG178 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG179 print_cls::@1 b1: - //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG180 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG181 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG181 [72] 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 + //SEG182 [72] 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 [73] return + //SEG183 print_cls::@return + //SEG184 [73] return rts } diff --git a/src/test/ref/double-assignment.asm b/src/test/ref/double-assignment.asm index 532c9818b..797651d38 100644 --- a/src/test/ref/double-assignment.asm +++ b/src/test/ref/double-assignment.asm @@ -1,7 +1,7 @@ +// Test that a double-assignment works. .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test that a double-assignment works. main: { .label screen = $400 .const a = $c diff --git a/src/test/ref/double-assignment.log b/src/test/ref/double-assignment.log index 26d848720..7db653e16 100644 --- a/src/test/ref/double-assignment.log +++ b/src/test/ref/double-assignment.log @@ -85,40 +85,41 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that a double-assignment works. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Test that a double-assignment works. +//SEG9 main main: { .label screen = $400 .const a = $c - //SEG9 [4] *((const byte*) main::screen#0) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 lda #a sta screen - //SEG10 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 lda #a sta screen+1 jmp breturn - //SEG11 main::@return + //SEG12 main::@return breturn: - //SEG12 [6] return + //SEG13 [6] return rts } @@ -134,40 +135,41 @@ Uplifting [main] best 33 combination Uplifting [] best 33 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that a double-assignment works. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Test that a double-assignment works. +//SEG9 main main: { .label screen = $400 .const a = $c - //SEG9 [4] *((const byte*) main::screen#0) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 lda #a sta screen - //SEG10 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 lda #a sta screen+1 jmp breturn - //SEG11 main::@return + //SEG12 main::@return breturn: - //SEG12 [6] return + //SEG13 [6] return rts } @@ -208,29 +210,30 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 16 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that a double-assignment works. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main -// Test that a double-assignment works. +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label screen = $400 .const a = $c - //SEG9 [4] *((const byte*) main::screen#0) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 lda #a sta screen - //SEG10 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::a#0 -- _deref_pbuc1=vbuc2 sta screen+1 - //SEG11 main::@return - //SEG12 [6] return + //SEG12 main::@return + //SEG13 [6] return rts } diff --git a/src/test/ref/double-import.log b/src/test/ref/double-import.log index 0bc0b9a3d..e8e32b2aa 100644 --- a/src/test/ref/double-import.log +++ b/src/test/ref/double-import.log @@ -73,36 +73,37 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const RED = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -117,36 +118,37 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const RED = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -184,26 +186,27 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const RED = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/dword.log b/src/test/ref/dword.log index adaabc657..50f073041 100644 --- a/src/test/ref/dword.log +++ b/src/test/ref/dword.log @@ -142,47 +142,48 @@ Allocated zp ZP_DWORD:3 [ main::b#0 ] Allocated zp ZP_BYTE:7 [ main::c#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const a = $ee6b2800 .label SCREEN = $400 .label b = 3 .label c = 7 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (dword) main::b#0 ← (const dword) main::a#0 + (byte) main::i#2 -- vduz1=vduc1_plus_vbuz2 + //SEG16 [6] (dword) main::b#0 ← (const dword) main::a#0 + (byte) main::i#2 -- vduz1=vduc1_plus_vbuz2 lda i clc adc #a>>$10 adc #0 sta b+3 - //SEG16 [7] (byte) main::c#0 ← ((byte)) (dword) main::b#0 -- vbuz1=_byte_vduz2 + //SEG17 [7] (byte) main::c#0 ← ((byte)) (dword) main::b#0 -- vbuz1=_byte_vduz2 lda b sta c - //SEG17 [8] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG18 [8] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy i sta SCREEN,y - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$65 bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [11] return + //SEG22 [11] return rts } @@ -235,44 +236,45 @@ Uplifting [] best 573 combination Allocated (was zp ZP_DWORD:3) zp ZP_DWORD:2 [ main::b#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const a = $ee6b2800 .label SCREEN = $400 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (dword) main::b#0 ← (const dword) main::a#0 + (byte) main::i#2 -- vduz1=vduc1_plus_vbuxx + //SEG16 [6] (dword) main::b#0 ← (const dword) main::a#0 + (byte) main::i#2 -- vduz1=vduc1_plus_vbuxx txa clc adc #a>>$10 adc #0 sta b+3 - //SEG16 [7] (byte) main::c#0 ← ((byte)) (dword) main::b#0 -- vbuaa=_byte_vduz1 + //SEG17 [7] (byte) main::c#0 ← ((byte)) (dword) main::b#0 -- vbuaa=_byte_vduz1 lda b - //SEG17 [8] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG18 [8] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [11] return + //SEG22 [11] return rts } @@ -354,31 +356,32 @@ reg byte a [ main::c#0 ] FINAL ASSEMBLER Score: 471 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .const a = $ee6b2800 .label SCREEN = $400 .label b = 2 - //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 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (dword) main::b#0 ← (const dword) main::a#0 + (byte) main::i#2 -- vduz1=vduc1_plus_vbuxx + //SEG16 [6] (dword) main::b#0 ← (const dword) main::a#0 + (byte) main::i#2 -- vduz1=vduc1_plus_vbuxx txa clc adc #a>>$10 adc #0 sta b+3 - //SEG16 [7] (byte) main::c#0 ← ((byte)) (dword) main::b#0 -- vbuaa=_byte_vduz1 + //SEG17 [7] (byte) main::c#0 ← ((byte)) (dword) main::b#0 -- vbuaa=_byte_vduz1 lda b - //SEG17 [8] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG18 [8] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1 - //SEG20 main::@return - //SEG21 [11] return + //SEG21 main::@return + //SEG22 [11] return rts } diff --git a/src/test/ref/emptyblock-error.asm b/src/test/ref/emptyblock-error.asm index d492f3e1e..af52bf501 100644 --- a/src/test/ref/emptyblock-error.asm +++ b/src/test/ref/emptyblock-error.asm @@ -1,8 +1,8 @@ +// Error cleaning up unused blocks .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" .label B = $1000 -// Error cleaning up unused blocks main: { lda #0 b2: diff --git a/src/test/ref/emptyblock-error.log b/src/test/ref/emptyblock-error.log index 9310c863b..53a084011 100644 --- a/src/test/ref/emptyblock-error.log +++ b/src/test/ref/emptyblock-error.log @@ -303,94 +303,95 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ a#1 a#12 a#5 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Error cleaning up unused blocks +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label B = $1000 .label a = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Error cleaning up unused blocks +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 + //SEG13 main::@1 b1: - //SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG14 main::@2 + //SEG15 main::@2 b2: - //SEG15 [7] call menu - //SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu] + //SEG16 [7] call menu + //SEG17 [8] phi from main::@2 to menu [phi:main::@2->menu] menu_from_b2: jsr menu - //SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG18 [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 + //SEG19 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } -//SEG19 menu +//SEG20 menu menu: { - //SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2] + //SEG21 [9] phi from menu to menu::@2 [phi:menu->menu::@2] b2_from_menu: jmp b2 - //SEG21 menu::@2 + //SEG22 menu::@2 b2: - //SEG22 [10] call mode - //SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode] + //SEG23 [10] call mode + //SEG24 [12] phi from menu::@2 to mode [phi:menu::@2->mode] mode_from_b2: jsr mode jmp breturn - //SEG24 menu::@return + //SEG25 menu::@return breturn: - //SEG25 [11] return + //SEG26 [11] return rts } -//SEG26 mode +//SEG27 mode mode: { - //SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1] + //SEG28 [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 + //SEG29 [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] + //SEG30 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1] b1_from_b2: jmp b1 - //SEG30 mode::@1 + //SEG31 mode::@1 b1: jmp b2 - //SEG31 mode::@2 + //SEG32 mode::@2 b2: - //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 + //SEG33 [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 b1_from_b2 jmp b7 - //SEG33 mode::@7 + //SEG34 mode::@7 b7: - //SEG34 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuz1=_deref_pbuc1 + //SEG35 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuz1=_deref_pbuc1 lda B sta a jmp b1_from_b7 @@ -412,92 +413,93 @@ Uplifting [menu] best 18376 combination Uplifting [mode] best 18376 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Error cleaning up unused blocks +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label B = $1000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Error cleaning up unused blocks +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 + //SEG13 main::@1 b1: - //SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG14 main::@2 + //SEG15 main::@2 b2: - //SEG15 [7] call menu - //SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu] + //SEG16 [7] call menu + //SEG17 [8] phi from main::@2 to menu [phi:main::@2->menu] menu_from_b2: jsr menu - //SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG18 [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 + //SEG19 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } -//SEG19 menu +//SEG20 menu menu: { - //SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2] + //SEG21 [9] phi from menu to menu::@2 [phi:menu->menu::@2] b2_from_menu: jmp b2 - //SEG21 menu::@2 + //SEG22 menu::@2 b2: - //SEG22 [10] call mode - //SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode] + //SEG23 [10] call mode + //SEG24 [12] phi from menu::@2 to mode [phi:menu::@2->mode] mode_from_b2: jsr mode jmp breturn - //SEG24 menu::@return + //SEG25 menu::@return breturn: - //SEG25 [11] return + //SEG26 [11] return rts } -//SEG26 mode +//SEG27 mode mode: { - //SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1] + //SEG28 [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 + //SEG29 [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] + //SEG30 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1] b1_from_b2: jmp b1 - //SEG30 mode::@1 + //SEG31 mode::@1 b1: jmp b2 - //SEG31 mode::@2 + //SEG32 mode::@2 b2: - //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 + //SEG33 [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 b1_from_b2 jmp b7 - //SEG33 mode::@7 + //SEG34 mode::@7 b7: - //SEG34 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1 + //SEG35 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1 lda B jmp b1_from_b7 } @@ -579,61 +581,62 @@ reg byte a [ a#1 a#12 a#5 ] FINAL ASSEMBLER Score: 8868 -//SEG0 Basic Upstart +//SEG0 File Comments +// Error cleaning up unused blocks +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label B = $1000 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main -// Error cleaning up unused blocks +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 main main: { - //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 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 + //SEG13 main::@1 + //SEG14 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG15 main::@2 b2: - //SEG15 [7] call menu - //SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu] + //SEG16 [7] call menu + //SEG17 [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 + //SEG18 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG19 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy jmp b2 } -//SEG19 menu +//SEG20 menu menu: { - //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] + //SEG21 [9] phi from menu to menu::@2 [phi:menu->menu::@2] + //SEG22 menu::@2 + //SEG23 [10] call mode + //SEG24 [12] phi from menu::@2 to mode [phi:menu::@2->mode] jsr mode - //SEG24 menu::@return - //SEG25 [11] return + //SEG25 menu::@return + //SEG26 [11] return rts } -//SEG26 mode +//SEG27 mode mode: { - //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 + //SEG28 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1] + //SEG29 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy + //SEG30 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1] + //SEG31 mode::@1 + //SEG32 mode::@2 b2: - //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 + //SEG33 [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 + //SEG34 mode::@7 + //SEG35 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1 jmp b2 } diff --git a/src/test/ref/examples/3d/3d.asm b/src/test/ref/examples/3d/3d.asm index e3067c2b5..5ca405466 100644 --- a/src/test/ref/examples/3d/3d.asm +++ b/src/test/ref/examples/3d/3d.asm @@ -1,3 +1,7 @@ +// 3D Rotation using a Rotation Matrix +// Based on: +// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt +// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/examples/3d/3d.log b/src/test/ref/examples/3d/3d.log index 92a8f1974..9bc47b7f0 100644 --- a/src/test/ref/examples/3d/3d.log +++ b/src/test/ref/examples/3d/3d.log @@ -5656,11 +5656,16 @@ Allocated zp ZP_WORD:114 [ debug_print_init::$91 ] Allocated zp ZP_WORD:116 [ debug_print_init::$92 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// 3D Rotation using a Rotation Matrix +// Based on: +// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt +// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label RASTER = $d012 @@ -5695,236 +5700,236 @@ INITIAL ASM .label COSQ = SINQ+$40 .label sx = 2 .label sy = 3 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b33 -//SEG3 @33 +//SEG4 @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) }} -//SEG7 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .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))); } } } }} -//SEG8 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG9 kickasm(location (const signed byte*) SINQ#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 round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG10 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} -//SEG11 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} -//SEG12 kickasm(location (const byte*) SINQ_LO#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)) } } }} -//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 +//SEG5 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) } } }} +//SEG6 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) } } }} +//SEG7 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) }} +//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .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))); } } } }} +//SEG9 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} +//SEG10 kickasm(location (const signed byte*) SINQ#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 round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} +//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} +//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} +//SEG13 kickasm(location (const byte*) SINQ_LO#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 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)) } } }} +//SEG15 [11] call main jsr main -//SEG15 [12] phi from @33 to @end [phi:@33->@end] +//SEG16 [12] phi from @33 to @end [phi:@33->@end] bend_from_b33: jmp bend -//SEG16 @end +//SEG17 @end bend: -//SEG17 main +//SEG18 main main: { - //SEG18 asm { sei } + //SEG19 asm { sei } sei - //SEG19 [14] call sprites_init + //SEG20 [14] call sprites_init jsr sprites_init jmp b1 - //SEG20 main::@1 + //SEG21 main::@1 b1: - //SEG21 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG22 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr1 sta psp1+1 - //SEG22 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG23 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG23 [17] call debug_print_init - //SEG24 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] + //SEG24 [17] call debug_print_init + //SEG25 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] debug_print_init_from_b1: jsr debug_print_init - //SEG25 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [19] call anim - //SEG28 [21] phi from main::@2 to anim [phi:main::@2->anim] + //SEG28 [19] call anim + //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim] anim_from_b2: jsr anim jmp breturn - //SEG29 main::@return + //SEG30 main::@return breturn: - //SEG30 [20] return + //SEG31 [20] return rts } -//SEG31 anim +//SEG32 anim anim: { .label _8 = $1d .label _10 = $1e .label i2 = $1c .label i = 4 - //SEG32 [22] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG33 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 + //SEG34 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 lda #0 sta sy - //SEG34 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 + //SEG35 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 lda #0 sta sx jmp b1 - //SEG35 anim::@1 + //SEG36 anim::@1 b1: jmp b4 - //SEG36 anim::@4 + //SEG37 anim::@4 b4: - //SEG37 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b7 - //SEG38 anim::@7 + //SEG39 anim::@7 b7: - //SEG39 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 jmp b10 - //SEG40 anim::@10 + //SEG41 anim::@10 b10: - //SEG41 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fd bne b10 jmp b12 - //SEG42 anim::@12 + //SEG43 anim::@12 b12: - //SEG43 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG44 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 + //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 lda sx sta calculate_matrix.sx - //SEG45 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 + //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 lda sy sta calculate_matrix.sy - //SEG46 [29] call calculate_matrix + //SEG47 [29] call calculate_matrix jsr calculate_matrix - //SEG47 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27] + //SEG48 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27] b27_from_b12: jmp b27 - //SEG48 anim::@27 + //SEG49 anim::@27 b27: - //SEG49 [31] call store_matrix + //SEG50 [31] call store_matrix jsr store_matrix - //SEG50 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13] + //SEG51 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13] b13_from_b27: - //SEG51 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 + //SEG52 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 lda #0 sta i jmp b13 - //SEG52 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13] + //SEG53 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13] b13_from_b29: - //SEG53 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy + //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy jmp b13 - //SEG54 anim::@13 + //SEG55 anim::@13 b13: - //SEG55 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG56 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta rotate_matrix.x - //SEG57 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda ys,y sta rotate_matrix.y - //SEG58 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda zs,y sta rotate_matrix.z - //SEG59 [37] call rotate_matrix + //SEG60 [37] call rotate_matrix jsr rotate_matrix jmp b29 - //SEG60 anim::@29 + //SEG61 anim::@29 b29: - //SEG61 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda xr sta xrs,y - //SEG62 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda yr sta yrs,y - //SEG63 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda zr sta zrs,y - //SEG64 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda pp sta pps,y - //SEG65 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda xp sta xps,y - //SEG66 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda yp sta yps,y - //SEG67 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta i2 - //SEG68 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 + //SEG69 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 lda #$80 clc adc xp sta _8 - //SEG69 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuz1=vbuz2 lda _8 ldy i2 sta SPRITES_XPOS,y - //SEG70 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 + //SEG71 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 lda #$80 clc adc yp sta _10 - //SEG71 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuz2 lda _10 ldy i2 sta SPRITES_YPOS,y - //SEG72 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 + //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG73 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 + //SEG74 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b13_from_b29 jmp b25 - //SEG74 anim::@25 + //SEG75 anim::@25 b25: - //SEG75 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_GREY sta BORDERCOL - //SEG76 [52] call debug_print + //SEG77 [52] call debug_print jsr debug_print jmp b30 - //SEG77 anim::@30 + //SEG78 anim::@30 b30: - //SEG78 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG79 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 + //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 inc sx inc sx - //SEG80 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 + //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 lda sy sec sbc #3 sta sy - //SEG81 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1] + //SEG82 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1] b1_from_b30: - //SEG82 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy - //SEG83 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy + //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy + //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy jmp b1 } -//SEG84 debug_print +//SEG85 debug_print debug_print: { .const print_sbyte_pos1_row = 0 .const print_sbyte_pos1_col = $25 @@ -5964,279 +5969,279 @@ debug_print: { .label print_sbyte_pos12_sb = $29 .label c = 5 .label i = 6 - //SEG85 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 + //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 lda sx sta print_sbyte_pos1_sb jmp print_sbyte_pos1 - //SEG86 debug_print::print_sbyte_pos1 + //SEG87 debug_print::print_sbyte_pos1 print_sbyte_pos1: - //SEG87 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 -- vbsz1=vbsz2 + //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos1_sb sta print_sbyte_at.b - //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] + //SEG89 [58] call print_sbyte_at + //SEG90 [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_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 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG92 [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 jmp b3 - //SEG92 debug_print::@3 + //SEG93 debug_print::@3 b3: - //SEG93 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 + //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 lda sy sta print_sbyte_pos2_sb jmp print_sbyte_pos2 - //SEG94 debug_print::print_sbyte_pos2 + //SEG95 debug_print::print_sbyte_pos2 print_sbyte_pos2: - //SEG95 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsz1=vbsz2 + //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos2_sb sta print_sbyte_at.b - //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] + //SEG97 [61] call print_sbyte_at + //SEG98 [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_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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG100 [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 - //SEG100 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] + //SEG101 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] print_sbyte_pos3_from_print_sbyte_pos2: jmp print_sbyte_pos3 - //SEG101 debug_print::print_sbyte_pos3 + //SEG102 debug_print::print_sbyte_pos3 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] + //SEG103 [63] call print_sbyte_at + //SEG104 [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_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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG106 [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 sta print_sbyte_at.b jsr print_sbyte_at jmp b5 - //SEG106 debug_print::@5 + //SEG107 debug_print::@5 b5: - //SEG107 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsz1=_deref_pbsc1 + //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsz1=_deref_pbsc1 lda rotation_matrix sta print_sbyte_pos4_sb jmp print_sbyte_pos4 - //SEG108 debug_print::print_sbyte_pos4 + //SEG109 debug_print::print_sbyte_pos4 print_sbyte_pos4: - //SEG109 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsz1=vbsz2 + //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos4_sb sta print_sbyte_at.b - //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] + //SEG111 [66] call print_sbyte_at + //SEG112 [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_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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG114 [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 jmp b6 - //SEG114 debug_print::@6 + //SEG115 debug_print::@6 b6: - //SEG115 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsz1=_deref_pbsc1 + //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsz1=_deref_pbsc1 lda rotation_matrix+1 sta print_sbyte_pos5_sb jmp print_sbyte_pos5 - //SEG116 debug_print::print_sbyte_pos5 + //SEG117 debug_print::print_sbyte_pos5 print_sbyte_pos5: - //SEG117 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 -- vbsz1=vbsz2 + //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos5_sb sta print_sbyte_at.b - //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] + //SEG119 [69] call print_sbyte_at + //SEG120 [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_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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG122 [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 jmp b7 - //SEG122 debug_print::@7 + //SEG123 debug_print::@7 b7: - //SEG123 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsz1=_deref_pbsc1 + //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsz1=_deref_pbsc1 lda rotation_matrix+2 sta print_sbyte_pos6_sb jmp print_sbyte_pos6 - //SEG124 debug_print::print_sbyte_pos6 + //SEG125 debug_print::print_sbyte_pos6 print_sbyte_pos6: - //SEG125 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 -- vbsz1=vbsz2 + //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos6_sb sta print_sbyte_at.b - //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] + //SEG127 [72] call print_sbyte_at + //SEG128 [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_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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG130 [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 jmp b8 - //SEG130 debug_print::@8 + //SEG131 debug_print::@8 b8: - //SEG131 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsz1=_deref_pbsc1 + //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsz1=_deref_pbsc1 lda rotation_matrix+3 sta print_sbyte_pos7_sb jmp print_sbyte_pos7 - //SEG132 debug_print::print_sbyte_pos7 + //SEG133 debug_print::print_sbyte_pos7 print_sbyte_pos7: - //SEG133 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 -- vbsz1=vbsz2 + //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos7_sb sta print_sbyte_at.b - //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] + //SEG135 [75] call print_sbyte_at + //SEG136 [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_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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG138 [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 jmp b9 - //SEG138 debug_print::@9 + //SEG139 debug_print::@9 b9: - //SEG139 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsz1=_deref_pbsc1 + //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsz1=_deref_pbsc1 lda rotation_matrix+4 sta print_sbyte_pos8_sb jmp print_sbyte_pos8 - //SEG140 debug_print::print_sbyte_pos8 + //SEG141 debug_print::print_sbyte_pos8 print_sbyte_pos8: - //SEG141 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 -- vbsz1=vbsz2 + //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos8_sb sta print_sbyte_at.b - //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] + //SEG143 [78] call print_sbyte_at + //SEG144 [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_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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG146 [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 jmp b10 - //SEG146 debug_print::@10 + //SEG147 debug_print::@10 b10: - //SEG147 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsz1=_deref_pbsc1 + //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsz1=_deref_pbsc1 lda rotation_matrix+5 sta print_sbyte_pos9_sb jmp print_sbyte_pos9 - //SEG148 debug_print::print_sbyte_pos9 + //SEG149 debug_print::print_sbyte_pos9 print_sbyte_pos9: - //SEG149 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 -- vbsz1=vbsz2 + //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos9_sb sta print_sbyte_at.b - //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] + //SEG151 [81] call print_sbyte_at + //SEG152 [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_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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG154 [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 jmp b11 - //SEG154 debug_print::@11 + //SEG155 debug_print::@11 b11: - //SEG155 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsz1=_deref_pbsc1 + //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsz1=_deref_pbsc1 lda rotation_matrix+6 sta print_sbyte_pos10_sb jmp print_sbyte_pos10 - //SEG156 debug_print::print_sbyte_pos10 + //SEG157 debug_print::print_sbyte_pos10 print_sbyte_pos10: - //SEG157 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 -- vbsz1=vbsz2 + //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos10_sb sta print_sbyte_at.b - //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] + //SEG159 [84] call print_sbyte_at + //SEG160 [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_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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG162 [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 jmp b12 - //SEG162 debug_print::@12 + //SEG163 debug_print::@12 b12: - //SEG163 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsz1=_deref_pbsc1 + //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsz1=_deref_pbsc1 lda rotation_matrix+7 sta print_sbyte_pos11_sb jmp print_sbyte_pos11 - //SEG164 debug_print::print_sbyte_pos11 + //SEG165 debug_print::print_sbyte_pos11 print_sbyte_pos11: - //SEG165 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 -- vbsz1=vbsz2 + //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos11_sb sta print_sbyte_at.b - //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] + //SEG167 [87] call print_sbyte_at + //SEG168 [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_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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG170 [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 jmp b13 - //SEG170 debug_print::@13 + //SEG171 debug_print::@13 b13: - //SEG171 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsz1=_deref_pbsc1 + //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsz1=_deref_pbsc1 lda rotation_matrix+8 sta print_sbyte_pos12_sb jmp print_sbyte_pos12 - //SEG172 debug_print::print_sbyte_pos12 + //SEG173 debug_print::print_sbyte_pos12 print_sbyte_pos12: - //SEG173 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 -- vbsz1=vbsz2 + //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos12_sb sta print_sbyte_at.b - //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] + //SEG175 [90] call print_sbyte_at + //SEG176 [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_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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG178 [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 - //SEG178 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] + //SEG179 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] b1_from_print_sbyte_pos12: - //SEG179 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 + //SEG180 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG180 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 + //SEG181 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 lda #4 sta c jmp b1 - //SEG181 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1] + //SEG182 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1] b1_from_b32: - //SEG182 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy - //SEG183 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy + //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy + //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy jmp b1 - //SEG184 debug_print::@1 + //SEG185 debug_print::@1 b1: - //SEG185 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG186 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xrs,y sta print_sbyte_at.b - //SEG187 [94] call print_sbyte_at - //SEG188 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] + //SEG188 [94] call print_sbyte_at + //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG189 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy - //SEG190 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy + //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy + //SEG191 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b27 - //SEG191 debug_print::@27 + //SEG192 debug_print::@27 b27: - //SEG192 [95] (byte*) print_sbyte_at::at#16 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG193 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda yrs,y sta print_sbyte_at.b - //SEG194 [97] call print_sbyte_at - //SEG195 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at] + //SEG195 [97] call print_sbyte_at + //SEG196 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at] print_sbyte_at_from_b27: - //SEG196 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy - //SEG197 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy + //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy + //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b28 - //SEG198 debug_print::@28 + //SEG199 debug_print::@28 b28: - //SEG199 [98] (byte*) print_sbyte_at::at#17 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG200 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda zrs,y sta print_sbyte_at.b - //SEG201 [100] call print_sbyte_at - //SEG202 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at] + //SEG202 [100] call print_sbyte_at + //SEG203 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at] print_sbyte_at_from_b28: - //SEG203 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy - //SEG204 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy + //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy + //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b29 - //SEG205 debug_print::@29 + //SEG206 debug_print::@29 b29: - //SEG206 [101] (byte*) print_sbyte_at::at#18 ← (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) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (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) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*3 adc #0 sta print_sbyte_at.at+1 - //SEG207 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda pps,y sta print_sbyte_at.b - //SEG208 [103] call print_sbyte_at - //SEG209 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at] + //SEG209 [103] call print_sbyte_at + //SEG210 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at] print_sbyte_at_from_b29: - //SEG210 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy - //SEG211 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy + //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy + //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b30 - //SEG212 debug_print::@30 + //SEG213 debug_print::@30 b30: - //SEG213 [104] (byte*) print_sbyte_at::at#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) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG214 [104] (byte*) print_sbyte_at::at#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) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*4 adc #0 sta print_sbyte_at.at+1 - //SEG214 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xps,y sta print_sbyte_at.b - //SEG215 [106] call print_sbyte_at - //SEG216 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at] + //SEG216 [106] call print_sbyte_at + //SEG217 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at] print_sbyte_at_from_b30: - //SEG217 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy - //SEG218 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy + //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy + //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b31 - //SEG219 debug_print::@31 + //SEG220 debug_print::@31 b31: - //SEG220 [107] (byte*) print_sbyte_at::at#20 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*5 adc #0 sta print_sbyte_at.at+1 - //SEG221 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda yps,y sta print_sbyte_at.b - //SEG222 [109] call print_sbyte_at - //SEG223 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at] + //SEG223 [109] call print_sbyte_at + //SEG224 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at] print_sbyte_at_from_b31: - //SEG224 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy - //SEG225 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy + //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy + //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b32 - //SEG226 debug_print::@32 + //SEG227 debug_print::@32 b32: - //SEG227 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc c sta c - //SEG228 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 + //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG229 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG230 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b32 jmp breturn - //SEG230 debug_print::@return + //SEG231 debug_print::@return breturn: - //SEG231 [113] return + //SEG232 [113] return rts } -//SEG232 print_sbyte_at +//SEG233 print_sbyte_at // Print a signed byte as hex at a specific screen position print_sbyte_at: { .label b = 9 .label at = 7 - //SEG233 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 jmp b3 - //SEG234 print_sbyte_at::@3 + //SEG235 print_sbyte_at::@3 b3: - //SEG235 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 + //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG236 [117] call print_char_at - //SEG237 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG237 [117] call print_char_at + //SEG238 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from_b3: - //SEG238 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG239 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG239 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG240 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG240 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] + //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] b2_from_b3: b2_from_b5: - //SEG241 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy + //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy jmp b2 - //SEG242 print_sbyte_at::@2 + //SEG243 print_sbyte_at::@2 b2: - //SEG243 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 + //SEG244 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 lda at clc adc #1 @@ -6418,32 +6423,32 @@ print_sbyte_at: { lda at+1 adc #0 sta print_byte_at.at+1 - //SEG244 [120] call print_byte_at + //SEG245 [120] call print_byte_at jsr print_byte_at jmp breturn - //SEG245 print_sbyte_at::@return + //SEG246 print_sbyte_at::@return breturn: - //SEG246 [121] return + //SEG247 [121] return rts - //SEG247 print_sbyte_at::@1 + //SEG248 print_sbyte_at::@1 b1: - //SEG248 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 + //SEG249 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG249 [123] call print_char_at - //SEG250 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG250 [123] call print_char_at + //SEG251 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from_b1: - //SEG251 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG252 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG252 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG253 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at jmp b5 - //SEG253 print_sbyte_at::@5 + //SEG254 print_sbyte_at::@5 b5: - //SEG254 [124] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsz1=_neg_vbsz1 + //SEG255 [124] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -6451,57 +6456,57 @@ print_sbyte_at: { sta b jmp b2_from_b5 } -//SEG255 print_char_at +//SEG256 print_char_at // Print a single char print_char_at: { .label at = $b .label ch = $a - //SEG256 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG257 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y jmp breturn - //SEG257 print_char_at::@return + //SEG258 print_char_at::@return breturn: - //SEG258 [127] return + //SEG259 [127] return rts } -//SEG259 print_byte_at +//SEG260 print_byte_at // Print a byte as HEX at a specific position print_byte_at: { .label _0 = $2c .label _2 = $2d .label at = $2a - //SEG260 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG261 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda print_sbyte_at.b lsr lsr lsr lsr sta _0 - //SEG261 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG262 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char_at.ch - //SEG262 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 + //SEG263 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG263 [131] call print_char_at - //SEG264 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG264 [131] call print_char_at + //SEG265 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] print_char_at_from_print_byte_at: - //SEG265 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG266 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG266 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG267 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at jmp b1 - //SEG267 print_byte_at::@1 + //SEG268 print_byte_at::@1 b1: - //SEG268 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG269 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and print_sbyte_at.b sta _2 - //SEG269 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 + //SEG270 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 lda at clc adc #1 @@ -6509,23 +6514,23 @@ print_byte_at: { lda at+1 adc #0 sta print_char_at.at+1 - //SEG270 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG271 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char_at.ch - //SEG271 [135] call print_char_at - //SEG272 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG272 [135] call print_char_at + //SEG273 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from_b1: - //SEG273 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG274 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG274 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG275 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at jmp breturn - //SEG275 print_byte_at::@return + //SEG276 print_byte_at::@return breturn: - //SEG276 [136] return + //SEG277 [136] return rts } -//SEG277 rotate_matrix +//SEG278 rotate_matrix // Rotate a 3D point (x,y,z) using the rotation matrix // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. @@ -6534,16 +6539,16 @@ rotate_matrix: { .label x = $19 .label y = $1a .label z = $1b - //SEG278 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 + //SEG279 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 lda x sta xr - //SEG279 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 + //SEG280 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 lda y sta yr - //SEG280 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 + //SEG281 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 lda z sta zr - //SEG281 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } + //SEG282 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } ldx zr C1: lda mulf_sqr1,x @@ -6631,17 +6636,17 @@ rotate_matrix: { sbc (psp2),y sta xp jmp breturn - //SEG282 rotate_matrix::@return + //SEG283 rotate_matrix::@return breturn: - //SEG283 [141] return + //SEG284 [141] return rts } -//SEG284 store_matrix +//SEG285 store_matrix // Store the rotation matrix into the rotation routine rotate() // After this each call to rotate() will rotate a point with the matrix // Implemented in assembler to utilize seriously fast multiplication store_matrix: { - //SEG285 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } + //SEG286 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } lda rotation_matrix+0 sta rotate_matrix.A1+1 eor #$ff @@ -6679,12 +6684,12 @@ store_matrix: { eor #$ff sta rotate_matrix.I2+1 jmp breturn - //SEG286 store_matrix::@return + //SEG287 store_matrix::@return breturn: - //SEG287 [143] return + //SEG288 [143] return rts } -//SEG288 calculate_matrix +//SEG289 calculate_matrix // Prepare the 3x3 rotation matrix into rotation_matrix[] // Angles sx, sy, sz are based on 2*PI=$100 // Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt @@ -6726,248 +6731,248 @@ calculate_matrix: { .label t8 = $35 .label t9 = $36 .label t10 = $37 - //SEG289 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 + //SEG290 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 lda sy sec sbc #sz sta t1 - //SEG290 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsz1=vbsz2_plus_vbsc1 + //SEG291 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsz1=vbsz2_plus_vbsc1 lda #sz clc adc sy sta t2 - //SEG291 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsz2_plus_vbsc1 + //SEG292 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsz2_plus_vbsc1 lda #sz clc adc sx sta t3 - //SEG292 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 + //SEG293 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 lda sx sec sbc #sz sta t4 - //SEG293 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsz2_plus_vbsz3 + //SEG294 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsz2_plus_vbsz3 lda sx clc adc t2 sta t5 - //SEG294 [149] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_minus_vbsz3 + //SEG295 [149] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_minus_vbsz3 lda sx sec sbc t1 sta t6 - //SEG295 [150] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_plus_vbsz3 + //SEG296 [150] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_plus_vbsz3 lda sx clc adc t1 sta t7 - //SEG296 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 + //SEG297 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 lda t2 sec sbc sx sta t8 - //SEG297 [152] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 + //SEG298 [152] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 lda sy sec sbc sx sta t9 - //SEG298 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsz3 + //SEG299 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsz3 lda sy clc adc sx sta t10 - //SEG299 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG300 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 ldx t1 ldy t2 clc lda COSH,x adc COSH,y sta _10 - //SEG300 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsz1 + //SEG301 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsz1 lda _10 sta rotation_matrix - //SEG301 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG302 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 ldx t1 ldy t2 sec lda SINH,x sbc SINH,y sta _11 - //SEG302 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsz1 + //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsz1 lda _11 sta rotation_matrix+1 - //SEG303 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz2 + //SEG304 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz2 ldy sy clc lda SINH,y adc SINH,y sta _12 - //SEG304 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsz1 + //SEG305 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsz1 lda _12 sta rotation_matrix+2 - //SEG305 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG306 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 ldx t3 ldy t4 sec lda SINH,x sbc SINH,y sta _13 - //SEG306 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG307 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _13 ldy t6 clc adc COSQ,y sta _14 - //SEG307 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG308 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _14 ldy t5 sec sbc COSQ,y sta _15 - //SEG308 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG309 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _15 ldy t8 clc adc COSQ,y sta _16 - //SEG309 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG310 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _16 ldy t7 sec sbc COSQ,y sta _17 - //SEG310 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsz1 + //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsz1 lda _17 sta rotation_matrix+3 - //SEG311 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG312 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 ldx t3 ldy t4 clc lda COSH,x adc COSH,y sta _18 - //SEG312 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG313 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _18 ldy t5 clc adc SINQ,y sta _19 - //SEG313 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG314 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _19 ldy t6 sec sbc SINQ,y sta _20 - //SEG314 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG315 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _20 ldy t7 sec sbc SINQ,y sta _21 - //SEG315 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG316 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _21 ldy t8 sec sbc SINQ,y sta _22 - //SEG316 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsz1 + //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsz1 lda _22 sta rotation_matrix+4 - //SEG317 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG318 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 ldx t9 ldy t10 sec lda SINH,x sbc SINH,y sta _23 - //SEG318 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsz1 + //SEG319 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsz1 lda _23 sta rotation_matrix+5 - //SEG319 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG320 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 ldx t4 ldy t3 sec lda COSH,x sbc COSH,y sta _24 - //SEG320 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG321 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _24 ldy t6 clc adc SINQ,y sta _25 - //SEG321 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG322 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _25 ldy t5 sec sbc SINQ,y sta _26 - //SEG322 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG323 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _26 ldy t8 sec sbc SINQ,y sta _27 - //SEG323 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG324 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _27 ldy t7 sec sbc SINQ,y sta _28 - //SEG324 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsz1 + //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsz1 lda _28 sta rotation_matrix+6 - //SEG325 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG326 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 ldx t3 ldy t4 clc lda SINH,x adc SINH,y sta _29 - //SEG326 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG327 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _29 ldy t6 clc adc COSQ,y sta _30 - //SEG327 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG328 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _30 ldy t5 sec sbc COSQ,y sta _31 - //SEG328 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG329 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _31 ldy t7 clc adc COSQ,y sta _32 - //SEG329 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG330 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _32 ldy t8 sec sbc COSQ,y sta _33 - //SEG330 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsz1 + //SEG331 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsz1 lda _33 sta rotation_matrix+7 - //SEG331 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG332 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 ldx t9 ldy t10 clc lda COSH,x adc COSH,y sta _34 - //SEG332 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsz1 + //SEG333 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsz1 lda _34 sta rotation_matrix+8 jmp breturn - //SEG333 calculate_matrix::@return + //SEG334 calculate_matrix::@return breturn: - //SEG334 [188] return + //SEG335 [188] return rts } -//SEG335 debug_print_init +//SEG336 debug_print_init debug_print_init: { .label COLS = $d800 .label at_line = SCREEN+$10*$28 @@ -6994,255 +6999,255 @@ debug_print_init: { .label j = $f .label c = $d .label i = $e - //SEG336 [190] call print_cls - //SEG337 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] + //SEG337 [190] call print_cls + //SEG338 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] print_cls_from_debug_print_init: jsr print_cls - //SEG338 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5] + //SEG339 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5] b5_from_debug_print_init: jmp b5 - //SEG339 debug_print_init::@5 + //SEG340 debug_print_init::@5 b5: - //SEG340 [192] call print_str_at - //SEG341 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] + //SEG341 [192] call print_str_at + //SEG342 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] print_str_at_from_b5: - //SEG342 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 + //SEG343 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$22 sta print_str_at.at+1 - //SEG343 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 + //SEG344 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG344 [193] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] + //SEG345 [193] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] b6_from_b5: jmp b6 - //SEG345 debug_print_init::@6 + //SEG346 debug_print_init::@6 b6: - //SEG346 [194] call print_str_at - //SEG347 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] + //SEG347 [194] call print_str_at + //SEG348 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] print_str_at_from_b6: - //SEG348 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 + //SEG349 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*1+$22 sta print_str_at.at+1 - //SEG349 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 + //SEG350 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG350 [195] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] + //SEG351 [195] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] b7_from_b6: jmp b7 - //SEG351 debug_print_init::@7 + //SEG352 debug_print_init::@7 b7: - //SEG352 [196] call print_str_at - //SEG353 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] + //SEG353 [196] call print_str_at + //SEG354 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] print_str_at_from_b7: - //SEG354 [260] phi (byte*) print_str_at::at#15 = (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 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 + //SEG355 [260] phi (byte*) print_str_at::at#15 = (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 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*2+$22 sta print_str_at.at+1 - //SEG355 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 + //SEG356 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG356 [197] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] + //SEG357 [197] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] b8_from_b7: jmp b8 - //SEG357 debug_print_init::@8 + //SEG358 debug_print_init::@8 b8: - //SEG358 [198] call print_str_at - //SEG359 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] + //SEG359 [198] call print_str_at + //SEG360 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] print_str_at_from_b8: - //SEG360 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 + //SEG361 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$10 sta print_str_at.at+1 - //SEG361 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 + //SEG362 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG362 [199] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] + //SEG363 [199] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] b9_from_b8: jmp b9 - //SEG363 debug_print_init::@9 + //SEG364 debug_print_init::@9 b9: - //SEG364 [200] call print_str_at - //SEG365 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] + //SEG365 [200] call print_str_at + //SEG366 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] print_str_at_from_b9: - //SEG366 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 + //SEG367 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$11 sta print_str_at.at+1 - //SEG367 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 + //SEG368 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 lda #str4 sta print_str_at.str+1 jsr print_str_at - //SEG368 [201] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] + //SEG369 [201] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] b10_from_b9: jmp b10 - //SEG369 debug_print_init::@10 + //SEG370 debug_print_init::@10 b10: - //SEG370 [202] call print_str_at - //SEG371 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] + //SEG371 [202] call print_str_at + //SEG372 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] print_str_at_from_b10: - //SEG372 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 + //SEG373 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$12 sta print_str_at.at+1 - //SEG373 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 + //SEG374 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 lda #str5 sta print_str_at.str+1 jsr print_str_at - //SEG374 [203] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] + //SEG375 [203] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] b11_from_b10: jmp b11 - //SEG375 debug_print_init::@11 + //SEG376 debug_print_init::@11 b11: - //SEG376 [204] call print_str_at - //SEG377 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] + //SEG377 [204] call print_str_at + //SEG378 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] print_str_at_from_b11: - //SEG378 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 + //SEG379 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$13 sta print_str_at.at+1 - //SEG379 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 + //SEG380 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 lda #str6 sta print_str_at.str+1 jsr print_str_at - //SEG380 [205] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] + //SEG381 [205] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] b12_from_b11: jmp b12 - //SEG381 debug_print_init::@12 + //SEG382 debug_print_init::@12 b12: - //SEG382 [206] call print_str_at - //SEG383 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] + //SEG383 [206] call print_str_at + //SEG384 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] print_str_at_from_b12: - //SEG384 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 + //SEG385 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$14 sta print_str_at.at+1 - //SEG385 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 + //SEG386 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 lda #str7 sta print_str_at.str+1 jsr print_str_at - //SEG386 [207] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] + //SEG387 [207] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] b13_from_b12: jmp b13 - //SEG387 debug_print_init::@13 + //SEG388 debug_print_init::@13 b13: - //SEG388 [208] call print_str_at - //SEG389 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] + //SEG389 [208] call print_str_at + //SEG390 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] print_str_at_from_b13: - //SEG390 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG391 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$15 sta print_str_at.at+1 - //SEG391 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG392 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str8 sta print_str_at.str+1 jsr print_str_at - //SEG392 [209] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] + //SEG393 [209] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] b14_from_b13: jmp b14 - //SEG393 debug_print_init::@14 + //SEG394 debug_print_init::@14 b14: - //SEG394 [210] call print_str_at - //SEG395 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] + //SEG395 [210] call print_str_at + //SEG396 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] print_str_at_from_b14: - //SEG396 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 + //SEG397 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$16 sta print_str_at.at+1 - //SEG397 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 + //SEG398 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 lda #str9 sta print_str_at.str+1 jsr print_str_at - //SEG398 [211] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] + //SEG399 [211] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] b15_from_b14: jmp b15 - //SEG399 debug_print_init::@15 + //SEG400 debug_print_init::@15 b15: - //SEG400 [212] call print_str_at - //SEG401 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] + //SEG401 [212] call print_str_at + //SEG402 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] print_str_at_from_b15: - //SEG402 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 + //SEG403 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$17 sta print_str_at.at+1 - //SEG403 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 + //SEG404 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 lda #str10 sta print_str_at.str+1 jsr print_str_at - //SEG404 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16] + //SEG405 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16] b16_from_b15: jmp b16 - //SEG405 debug_print_init::@16 + //SEG406 debug_print_init::@16 b16: - //SEG406 [214] call print_str_at - //SEG407 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at] + //SEG407 [214] call print_str_at + //SEG408 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at] print_str_at_from_b16: - //SEG408 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 + //SEG409 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$18 sta print_str_at.at+1 - //SEG409 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 + //SEG410 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 lda #str11 sta print_str_at.str+1 jsr print_str_at - //SEG410 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1] + //SEG411 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1] b1_from_b16: - //SEG411 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 + //SEG412 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG412 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 + //SEG413 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 lda #4 sta c jmp b1 - //SEG413 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] + //SEG414 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] b1_from_b3: - //SEG414 [215] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy - //SEG415 [215] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy + //SEG415 [215] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy + //SEG416 [215] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy jmp b1 - //SEG416 debug_print_init::@1 + //SEG417 debug_print_init::@1 b1: - //SEG417 [216] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG418 [216] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG418 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG419 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta print_sbyte_at.b - //SEG419 [218] call print_sbyte_at - //SEG420 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] + //SEG420 [218] call print_sbyte_at + //SEG421 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG421 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy - //SEG422 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy + //SEG422 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy + //SEG423 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b18 - //SEG423 debug_print_init::@18 + //SEG424 debug_print_init::@18 b18: - //SEG424 [219] (byte*) print_sbyte_at::at#1 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG425 [219] (byte*) print_sbyte_at::at#1 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG425 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG426 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda ys,y sta print_sbyte_at.b - //SEG426 [221] call print_sbyte_at - //SEG427 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at] + //SEG427 [221] call print_sbyte_at + //SEG428 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at] print_sbyte_at_from_b18: - //SEG428 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy - //SEG429 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy + //SEG429 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy + //SEG430 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b19 - //SEG430 debug_print_init::@19 + //SEG431 debug_print_init::@19 b19: - //SEG431 [222] (byte*) print_sbyte_at::at#2 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG432 [222] (byte*) print_sbyte_at::at#2 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG432 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG433 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda zs,y sta print_sbyte_at.b - //SEG433 [224] call print_sbyte_at - //SEG434 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at] + //SEG434 [224] call print_sbyte_at + //SEG435 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at] print_sbyte_at_from_b19: - //SEG435 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy - //SEG436 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy + //SEG436 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy + //SEG437 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG437 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2] + //SEG438 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2] b2_from_b19: - //SEG438 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuz1=vbuc1 + //SEG439 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG439 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] + //SEG440 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] b2_from_b2: - //SEG440 [225] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy + //SEG441 [225] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy jmp b2 - //SEG441 debug_print_init::@2 + //SEG442 debug_print_init::@2 b2: - //SEG442 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG443 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 lda #8 clc adc i sta col - //SEG443 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG444 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols adc #0 sta _59+1 - //SEG444 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG445 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _59 @@ -7335,11 +7340,11 @@ debug_print_init: { lda #0 adc _59+1 sta _60+1 - //SEG445 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG446 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_60),y - //SEG446 [230] (byte*~) debug_print_init::$63 ← (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) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG447 [230] (byte*~) debug_print_init::$63 ← (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) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*1 adc #0 sta _63+1 - //SEG447 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG448 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _63 @@ -7355,11 +7360,11 @@ debug_print_init: { lda #0 adc _63+1 sta _64+1 - //SEG448 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG449 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_64),y - //SEG449 [233] (byte*~) debug_print_init::$67 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG450 [233] (byte*~) debug_print_init::$67 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*2 adc #0 sta _67+1 - //SEG450 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG451 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _67 @@ -7375,11 +7380,11 @@ debug_print_init: { lda #0 adc _67+1 sta _68+1 - //SEG451 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG452 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_68),y - //SEG452 [236] (byte*~) debug_print_init::$71 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG453 [236] (byte*~) debug_print_init::$71 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*3 adc #0 sta _71+1 - //SEG453 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG454 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _71 @@ -7395,11 +7400,11 @@ debug_print_init: { lda #0 adc _71+1 sta _72+1 - //SEG454 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG455 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_72),y - //SEG455 [239] (byte*~) debug_print_init::$75 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG456 [239] (byte*~) debug_print_init::$75 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*4 adc #0 sta _75+1 - //SEG456 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG457 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _75 @@ -7415,11 +7420,11 @@ debug_print_init: { lda #0 adc _75+1 sta _76+1 - //SEG457 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG458 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_76),y - //SEG458 [242] (byte*~) debug_print_init::$79 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG459 [242] (byte*~) debug_print_init::$79 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*5 adc #0 sta _79+1 - //SEG459 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG460 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _79 @@ -7435,11 +7440,11 @@ debug_print_init: { lda #0 adc _79+1 sta _80+1 - //SEG460 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG461 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_80),y - //SEG461 [245] (byte*~) debug_print_init::$83 ← (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) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG462 [245] (byte*~) debug_print_init::$83 ← (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) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*6 adc #0 sta _83+1 - //SEG462 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG463 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _83 @@ -7455,11 +7460,11 @@ debug_print_init: { lda #0 adc _83+1 sta _84+1 - //SEG463 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG464 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_84),y - //SEG464 [248] (byte*~) debug_print_init::$87 ← (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) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG465 [248] (byte*~) debug_print_init::$87 ← (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) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*7 adc #0 sta _87+1 - //SEG465 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG466 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _87 @@ -7475,11 +7480,11 @@ debug_print_init: { lda #0 adc _87+1 sta _88+1 - //SEG466 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG467 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_88),y - //SEG467 [251] (byte*~) debug_print_init::$91 ← (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) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG468 [251] (byte*~) debug_print_init::$91 ← (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) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*8 adc #0 sta _91+1 - //SEG468 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG469 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 lda j clc adc _91 @@ -7495,34 +7500,34 @@ debug_print_init: { lda #0 adc _91+1 sta _92+1 - //SEG469 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG470 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_92),y - //SEG470 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG471 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG471 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG472 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #4 bne b2_from_b2 jmp b3 - //SEG472 debug_print_init::@3 + //SEG473 debug_print_init::@3 b3: - //SEG473 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG474 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc c sta c - //SEG474 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG475 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG475 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG476 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b3 jmp breturn - //SEG476 debug_print_init::@return + //SEG477 debug_print_init::@return breturn: - //SEG477 [259] return + //SEG478 [259] return rts str: .text "sx@" str1: .text "sy@" @@ -7537,76 +7542,76 @@ debug_print_init: { str10: .text "xp@" str11: .text "yp@" } -//SEG478 print_str_at +//SEG479 print_str_at // Print a string at a specific screen position print_str_at: { .label at = $12 .label str = $10 - //SEG479 [261] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG480 [261] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] b1_from_print_str_at: b1_from_b2: - //SEG480 [261] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG481 [261] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG481 [261] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG482 [261] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 - //SEG482 print_str_at::@1 + //SEG483 print_str_at::@1 b1: - //SEG483 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG484 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG484 print_str_at::@return + //SEG485 print_str_at::@return breturn: - //SEG485 [263] return + //SEG486 [263] return rts - //SEG486 print_str_at::@2 + //SEG487 print_str_at::@2 b2: - //SEG487 [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG488 [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (at),y - //SEG488 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 + //SEG489 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG489 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 + //SEG490 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG490 print_cls +//SEG491 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $14 - //SEG491 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG492 [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_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG493 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 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] + //SEG494 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG494 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG495 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG495 print_cls::@1 + //SEG496 print_cls::@1 b1: - //SEG496 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG497 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG497 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG498 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG499 [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_line_cursor+$3e8 bne b1_from_b1 @@ -7614,50 +7619,50 @@ print_cls: { cmp #sprites_init::@1] + //SEG504 [274] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG504 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG505 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG505 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG506 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG506 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG507 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy jmp b1 - //SEG507 sprites_init::@1 + //SEG508 sprites_init::@1 b1: - //SEG508 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG509 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_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 - //SEG509 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG510 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #GREEN sta SPRITES_COLS,y - //SEG510 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG511 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG511 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG512 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b1 jmp breturn - //SEG512 sprites_init::@return + //SEG513 sprites_init::@return breturn: - //SEG513 [279] return + //SEG514 [279] return rts } print_hextab: .text "0123456789abcdef" @@ -8429,11 +8434,16 @@ Allocated (was zp ZP_BYTE:54) zp ZP_BYTE:15 [ calculate_matrix::t9#0 ] Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:16 [ calculate_matrix::t10#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// 3D Rotation using a Rotation Matrix +// Based on: +// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt +// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label RASTER = $d012 @@ -8468,223 +8478,223 @@ ASSEMBLER BEFORE OPTIMIZATION .label COSQ = SINQ+$40 .label sx = 2 .label sy = 3 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b33 -//SEG3 @33 +//SEG4 @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) }} -//SEG7 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .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))); } } } }} -//SEG8 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG9 kickasm(location (const signed byte*) SINQ#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 round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG10 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} -//SEG11 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} -//SEG12 kickasm(location (const byte*) SINQ_LO#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)) } } }} -//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 +//SEG5 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) } } }} +//SEG6 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) } } }} +//SEG7 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) }} +//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .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))); } } } }} +//SEG9 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} +//SEG10 kickasm(location (const signed byte*) SINQ#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 round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} +//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} +//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} +//SEG13 kickasm(location (const byte*) SINQ_LO#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 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)) } } }} +//SEG15 [11] call main jsr main -//SEG15 [12] phi from @33 to @end [phi:@33->@end] +//SEG16 [12] phi from @33 to @end [phi:@33->@end] bend_from_b33: jmp bend -//SEG16 @end +//SEG17 @end bend: -//SEG17 main +//SEG18 main main: { - //SEG18 asm { sei } + //SEG19 asm { sei } sei - //SEG19 [14] call sprites_init + //SEG20 [14] call sprites_init jsr sprites_init jmp b1 - //SEG20 main::@1 + //SEG21 main::@1 b1: - //SEG21 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG22 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr1 sta psp1+1 - //SEG22 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG23 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG23 [17] call debug_print_init - //SEG24 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] + //SEG24 [17] call debug_print_init + //SEG25 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] debug_print_init_from_b1: jsr debug_print_init - //SEG25 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [19] call anim - //SEG28 [21] phi from main::@2 to anim [phi:main::@2->anim] + //SEG28 [19] call anim + //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim] anim_from_b2: jsr anim jmp breturn - //SEG29 main::@return + //SEG30 main::@return breturn: - //SEG30 [20] return + //SEG31 [20] return rts } -//SEG31 anim +//SEG32 anim anim: { .label i = 4 - //SEG32 [22] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG33 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 + //SEG34 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 lda #0 sta sy - //SEG34 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 + //SEG35 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 lda #0 sta sx jmp b1 - //SEG35 anim::@1 + //SEG36 anim::@1 b1: jmp b4 - //SEG36 anim::@4 + //SEG37 anim::@4 b4: - //SEG37 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b7 - //SEG38 anim::@7 + //SEG39 anim::@7 b7: - //SEG39 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 jmp b10 - //SEG40 anim::@10 + //SEG41 anim::@10 b10: - //SEG41 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fd bne b10 jmp b12 - //SEG42 anim::@12 + //SEG43 anim::@12 b12: - //SEG43 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG44 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 + //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 ldx sx - //SEG45 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 - //SEG46 [29] call calculate_matrix + //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 + //SEG47 [29] call calculate_matrix jsr calculate_matrix - //SEG47 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27] + //SEG48 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27] b27_from_b12: jmp b27 - //SEG48 anim::@27 + //SEG49 anim::@27 b27: - //SEG49 [31] call store_matrix + //SEG50 [31] call store_matrix jsr store_matrix - //SEG50 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13] + //SEG51 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13] b13_from_b27: - //SEG51 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 + //SEG52 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 lda #0 sta i jmp b13 - //SEG52 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13] + //SEG53 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13] b13_from_b29: - //SEG53 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy + //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy jmp b13 - //SEG54 anim::@13 + //SEG55 anim::@13 b13: - //SEG55 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG56 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta rotate_matrix.x - //SEG57 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsyy=pbsc1_derefidx_vbuz1 + //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsyy=pbsc1_derefidx_vbuz1 ldx i ldy ys,x - //SEG58 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda zs,x tax - //SEG59 [37] call rotate_matrix + //SEG60 [37] call rotate_matrix jsr rotate_matrix jmp b29 - //SEG60 anim::@29 + //SEG61 anim::@29 b29: - //SEG61 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda xr sta xrs,y - //SEG62 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda yr sta yrs,y - //SEG63 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda zr sta zrs,y - //SEG64 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda pp sta pps,y - //SEG65 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda xp sta xps,y - //SEG66 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda yp sta yps,y - //SEG67 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 + //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG68 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 + //SEG69 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 lda #$80 clc adc xp - //SEG69 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG70 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 + //SEG71 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 lda #$80 clc adc yp - //SEG71 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_YPOS,x - //SEG72 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 + //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG73 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 + //SEG74 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b13_from_b29 jmp b25 - //SEG74 anim::@25 + //SEG75 anim::@25 b25: - //SEG75 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_GREY sta BORDERCOL - //SEG76 [52] call debug_print + //SEG77 [52] call debug_print jsr debug_print jmp b30 - //SEG77 anim::@30 + //SEG78 anim::@30 b30: - //SEG78 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG79 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 + //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 inc sx inc sx - //SEG80 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 + //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 lda sy sec sbc #3 sta sy - //SEG81 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1] + //SEG82 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1] b1_from_b30: - //SEG82 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy - //SEG83 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy + //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy + //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy jmp b1 } -//SEG84 debug_print +//SEG85 debug_print debug_print: { .const print_sbyte_pos1_row = 0 .const print_sbyte_pos1_col = $25 @@ -8713,247 +8723,247 @@ debug_print: { .label at_line = SCREEN+$13*$28 .label c = 4 .label i = 5 - //SEG85 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 + //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 ldx sx jmp print_sbyte_pos1 - //SEG86 debug_print::print_sbyte_pos1 + //SEG87 debug_print::print_sbyte_pos1 print_sbyte_pos1: - //SEG87 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 - //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] + //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 + //SEG89 [58] call print_sbyte_at + //SEG90 [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_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 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG92 [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 jmp b3 - //SEG92 debug_print::@3 + //SEG93 debug_print::@3 b3: - //SEG93 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsaa=vbsz1 + //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsaa=vbsz1 lda sy jmp print_sbyte_pos2 - //SEG94 debug_print::print_sbyte_pos2 + //SEG95 debug_print::print_sbyte_pos2 print_sbyte_pos2: - //SEG95 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsxx=vbsaa + //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsxx=vbsaa 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] + //SEG97 [61] call print_sbyte_at + //SEG98 [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_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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG100 [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 - //SEG100 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] + //SEG101 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] print_sbyte_pos3_from_print_sbyte_pos2: jmp print_sbyte_pos3 - //SEG101 debug_print::print_sbyte_pos3 + //SEG102 debug_print::print_sbyte_pos3 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] + //SEG103 [63] call print_sbyte_at + //SEG104 [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_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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG106 [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 jsr print_sbyte_at jmp b5 - //SEG106 debug_print::@5 + //SEG107 debug_print::@5 b5: - //SEG107 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsaa=_deref_pbsc1 + //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsaa=_deref_pbsc1 lda rotation_matrix jmp print_sbyte_pos4 - //SEG108 debug_print::print_sbyte_pos4 + //SEG109 debug_print::print_sbyte_pos4 print_sbyte_pos4: - //SEG109 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsxx=vbsaa + //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsxx=vbsaa 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] + //SEG111 [66] call print_sbyte_at + //SEG112 [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_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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG114 [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 jmp b6 - //SEG114 debug_print::@6 + //SEG115 debug_print::@6 b6: - //SEG115 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsxx=_deref_pbsc1 + //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+1 jmp print_sbyte_pos5 - //SEG116 debug_print::print_sbyte_pos5 + //SEG117 debug_print::print_sbyte_pos5 print_sbyte_pos5: - //SEG117 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 - //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] + //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 + //SEG119 [69] call print_sbyte_at + //SEG120 [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_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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG122 [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 jmp b7 - //SEG122 debug_print::@7 + //SEG123 debug_print::@7 b7: - //SEG123 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsxx=_deref_pbsc1 + //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+2 jmp print_sbyte_pos6 - //SEG124 debug_print::print_sbyte_pos6 + //SEG125 debug_print::print_sbyte_pos6 print_sbyte_pos6: - //SEG125 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 - //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] + //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 + //SEG127 [72] call print_sbyte_at + //SEG128 [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_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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG130 [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 jmp b8 - //SEG130 debug_print::@8 + //SEG131 debug_print::@8 b8: - //SEG131 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsxx=_deref_pbsc1 + //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+3 jmp print_sbyte_pos7 - //SEG132 debug_print::print_sbyte_pos7 + //SEG133 debug_print::print_sbyte_pos7 print_sbyte_pos7: - //SEG133 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 - //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] + //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 + //SEG135 [75] call print_sbyte_at + //SEG136 [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_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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG138 [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 jmp b9 - //SEG138 debug_print::@9 + //SEG139 debug_print::@9 b9: - //SEG139 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsxx=_deref_pbsc1 + //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+4 jmp print_sbyte_pos8 - //SEG140 debug_print::print_sbyte_pos8 + //SEG141 debug_print::print_sbyte_pos8 print_sbyte_pos8: - //SEG141 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 - //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] + //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 + //SEG143 [78] call print_sbyte_at + //SEG144 [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_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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG146 [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 jmp b10 - //SEG146 debug_print::@10 + //SEG147 debug_print::@10 b10: - //SEG147 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsxx=_deref_pbsc1 + //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+5 jmp print_sbyte_pos9 - //SEG148 debug_print::print_sbyte_pos9 + //SEG149 debug_print::print_sbyte_pos9 print_sbyte_pos9: - //SEG149 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 - //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] + //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 + //SEG151 [81] call print_sbyte_at + //SEG152 [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_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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG154 [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 jmp b11 - //SEG154 debug_print::@11 + //SEG155 debug_print::@11 b11: - //SEG155 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsxx=_deref_pbsc1 + //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+6 jmp print_sbyte_pos10 - //SEG156 debug_print::print_sbyte_pos10 + //SEG157 debug_print::print_sbyte_pos10 print_sbyte_pos10: - //SEG157 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 - //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] + //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 + //SEG159 [84] call print_sbyte_at + //SEG160 [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_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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG162 [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 jmp b12 - //SEG162 debug_print::@12 + //SEG163 debug_print::@12 b12: - //SEG163 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsxx=_deref_pbsc1 + //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+7 jmp print_sbyte_pos11 - //SEG164 debug_print::print_sbyte_pos11 + //SEG165 debug_print::print_sbyte_pos11 print_sbyte_pos11: - //SEG165 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 - //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] + //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 + //SEG167 [87] call print_sbyte_at + //SEG168 [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_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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG170 [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 jmp b13 - //SEG170 debug_print::@13 + //SEG171 debug_print::@13 b13: - //SEG171 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsxx=_deref_pbsc1 + //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+8 jmp print_sbyte_pos12 - //SEG172 debug_print::print_sbyte_pos12 + //SEG173 debug_print::print_sbyte_pos12 print_sbyte_pos12: - //SEG173 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 - //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] + //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 + //SEG175 [90] call print_sbyte_at + //SEG176 [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_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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG178 [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 - //SEG178 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] + //SEG179 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] b1_from_print_sbyte_pos12: - //SEG179 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 + //SEG180 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG180 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 + //SEG181 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 lda #4 sta c jmp b1 - //SEG181 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1] + //SEG182 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1] b1_from_b32: - //SEG182 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy - //SEG183 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy + //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy + //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy jmp b1 - //SEG184 debug_print::@1 + //SEG185 debug_print::@1 b1: - //SEG185 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG186 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda xrs,x tax - //SEG187 [94] call print_sbyte_at - //SEG188 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] + //SEG188 [94] call print_sbyte_at + //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG189 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy - //SEG190 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy + //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy + //SEG191 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b27 - //SEG191 debug_print::@27 + //SEG192 debug_print::@27 b27: - //SEG192 [95] (byte*) print_sbyte_at::at#16 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG193 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda yrs,x tax - //SEG194 [97] call print_sbyte_at - //SEG195 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at] + //SEG195 [97] call print_sbyte_at + //SEG196 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at] print_sbyte_at_from_b27: - //SEG196 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy - //SEG197 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy + //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy + //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b28 - //SEG198 debug_print::@28 + //SEG199 debug_print::@28 b28: - //SEG199 [98] (byte*) print_sbyte_at::at#17 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG200 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda zrs,x tax - //SEG201 [100] call print_sbyte_at - //SEG202 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at] + //SEG202 [100] call print_sbyte_at + //SEG203 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at] print_sbyte_at_from_b28: - //SEG203 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy - //SEG204 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy + //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy + //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b29 - //SEG205 debug_print::@29 + //SEG206 debug_print::@29 b29: - //SEG206 [101] (byte*) print_sbyte_at::at#18 ← (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) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (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) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*3 adc #0 sta print_sbyte_at.at+1 - //SEG207 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda pps,x tax - //SEG208 [103] call print_sbyte_at - //SEG209 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at] + //SEG209 [103] call print_sbyte_at + //SEG210 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at] print_sbyte_at_from_b29: - //SEG210 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy - //SEG211 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy + //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy + //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b30 - //SEG212 debug_print::@30 + //SEG213 debug_print::@30 b30: - //SEG213 [104] (byte*) print_sbyte_at::at#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) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG214 [104] (byte*) print_sbyte_at::at#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) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*4 adc #0 sta print_sbyte_at.at+1 - //SEG214 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda xps,x tax - //SEG215 [106] call print_sbyte_at - //SEG216 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at] + //SEG216 [106] call print_sbyte_at + //SEG217 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at] print_sbyte_at_from_b30: - //SEG217 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy - //SEG218 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy + //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy + //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b31 - //SEG219 debug_print::@31 + //SEG220 debug_print::@31 b31: - //SEG220 [107] (byte*) print_sbyte_at::at#20 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*5 adc #0 sta print_sbyte_at.at+1 - //SEG221 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda yps,x tax - //SEG222 [109] call print_sbyte_at - //SEG223 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at] + //SEG223 [109] call print_sbyte_at + //SEG224 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at] print_sbyte_at_from_b31: - //SEG224 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy - //SEG225 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy + //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy + //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b32 - //SEG226 debug_print::@32 + //SEG227 debug_print::@32 b32: - //SEG227 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc c sta c - //SEG228 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 + //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG229 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG230 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b32 jmp breturn - //SEG230 debug_print::@return + //SEG231 debug_print::@return breturn: - //SEG231 [113] return + //SEG232 [113] return rts } -//SEG232 print_sbyte_at +//SEG233 print_sbyte_at // Print a signed byte as hex at a specific screen position print_sbyte_at: { .label at = 6 - //SEG233 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 + //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1 jmp b3 - //SEG234 print_sbyte_at::@3 + //SEG235 print_sbyte_at::@3 b3: - //SEG235 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 - //SEG236 [117] call print_char_at - //SEG237 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 + //SEG237 [117] call print_char_at + //SEG238 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from_b3: - //SEG238 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG239 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG239 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG240 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG240 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] + //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] b2_from_b3: b2_from_b5: - //SEG241 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy + //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy jmp b2 - //SEG242 print_sbyte_at::@2 + //SEG243 print_sbyte_at::@2 b2: - //SEG243 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG244 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc print_byte_at.at bne !+ inc print_byte_at.at+1 !: - //SEG244 [120] call print_byte_at + //SEG245 [120] call print_byte_at jsr print_byte_at jmp breturn - //SEG245 print_sbyte_at::@return + //SEG246 print_sbyte_at::@return breturn: - //SEG246 [121] return + //SEG247 [121] return rts - //SEG247 print_sbyte_at::@1 + //SEG248 print_sbyte_at::@1 b1: - //SEG248 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 - //SEG249 [123] call print_char_at - //SEG250 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG249 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 + //SEG250 [123] call print_char_at + //SEG251 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from_b1: - //SEG251 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG252 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG252 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG253 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at jmp b5 - //SEG253 print_sbyte_at::@5 + //SEG254 print_sbyte_at::@5 b5: - //SEG254 [124] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx + //SEG255 [124] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -9156,86 +9166,86 @@ print_sbyte_at: { tax jmp b2_from_b5 } -//SEG255 print_char_at +//SEG256 print_char_at // Print a single char print_char_at: { .label at = 6 .label ch = 8 - //SEG256 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG257 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y jmp breturn - //SEG257 print_char_at::@return + //SEG258 print_char_at::@return breturn: - //SEG258 [127] return + //SEG259 [127] return rts } -//SEG259 print_byte_at +//SEG260 print_byte_at // Print a byte as HEX at a specific position print_byte_at: { .label at = 6 - //SEG260 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG261 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG261 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG262 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda print_hextab,y sta print_char_at.ch - //SEG262 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - //SEG263 [131] call print_char_at - //SEG264 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG263 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + //SEG264 [131] call print_char_at + //SEG265 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] print_char_at_from_print_byte_at: - //SEG265 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG266 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG266 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG267 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at jmp b1 - //SEG267 print_byte_at::@1 + //SEG268 print_byte_at::@1 b1: - //SEG268 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuxx=vbuxx_band_vbuc1 + //SEG269 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuxx=vbuxx_band_vbuc1 txa and #$f tax - //SEG269 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG270 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc print_char_at.at bne !+ inc print_char_at.at+1 !: - //SEG270 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG271 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuxx lda print_hextab,x sta print_char_at.ch - //SEG271 [135] call print_char_at - //SEG272 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG272 [135] call print_char_at + //SEG273 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from_b1: - //SEG273 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG274 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG274 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG275 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at jmp breturn - //SEG275 print_byte_at::@return + //SEG276 print_byte_at::@return breturn: - //SEG276 [136] return + //SEG277 [136] return rts } -//SEG277 rotate_matrix +//SEG278 rotate_matrix // Rotate a 3D point (x,y,z) using the rotation matrix // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. // Implemented in assembler to utilize seriously fast multiplication rotate_matrix: { .label x = 5 - //SEG278 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 + //SEG279 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 lda x sta xr - //SEG279 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsyy + //SEG280 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsyy tya sta yr - //SEG280 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsxx + //SEG281 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsxx txa sta zr - //SEG281 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } + //SEG282 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } ldx zr C1: lda mulf_sqr1,x @@ -9323,17 +9333,17 @@ rotate_matrix: { sbc (psp2),y sta xp jmp breturn - //SEG282 rotate_matrix::@return + //SEG283 rotate_matrix::@return breturn: - //SEG283 [141] return + //SEG284 [141] return rts } -//SEG284 store_matrix +//SEG285 store_matrix // Store the rotation matrix into the rotation routine rotate() // After this each call to rotate() will rotate a point with the matrix // Implemented in assembler to utilize seriously fast multiplication store_matrix: { - //SEG285 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } + //SEG286 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } lda rotation_matrix+0 sta rotate_matrix.A1+1 eor #$ff @@ -9371,12 +9381,12 @@ store_matrix: { eor #$ff sta rotate_matrix.I2+1 jmp breturn - //SEG286 store_matrix::@return + //SEG287 store_matrix::@return breturn: - //SEG287 [143] return + //SEG288 [143] return rts } -//SEG288 calculate_matrix +//SEG289 calculate_matrix // Prepare the 3x3 rotation matrix into rotation_matrix[] // Angles sx, sy, sz are based on 2*PI=$100 // Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt @@ -9391,199 +9401,199 @@ calculate_matrix: { .label t8 = $e .label t9 = $f .label t10 = $10 - //SEG289 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 + //SEG290 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 lda sy sec sbc #sz sta t1 - //SEG290 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsyy=vbsz1_plus_vbsc1 + //SEG291 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsyy=vbsz1_plus_vbsc1 lda #sz clc adc sy tay - //SEG291 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsxx_plus_vbsc1 + //SEG292 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsxx_plus_vbsc1 txa clc adc #sz sta t3 - //SEG292 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsxx_minus_vbsc1 + //SEG293 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsxx_minus_vbsc1 txa sec sbc #sz sta t4 - //SEG293 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsyy + //SEG294 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsyy txa sty $ff clc adc $ff sta t5 - //SEG294 [149] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 + //SEG295 [149] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 txa sec sbc t1 sta t6 - //SEG295 [150] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 + //SEG296 [150] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 txa clc adc t1 sta t7 - //SEG296 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsyy_minus_vbsxx + //SEG297 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsyy_minus_vbsxx tya stx $ff sec sbc $ff sta t8 - //SEG297 [152] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx + //SEG298 [152] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx txa eor #$ff sec adc sy sta t9 - //SEG298 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsxx + //SEG299 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsxx txa clc adc sy sta t10 - //SEG299 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsyy + //SEG300 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsyy ldx t1 clc lda COSH,x adc COSH,y - //SEG300 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa + //SEG301 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa sta rotation_matrix - //SEG301 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsyy + //SEG302 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsyy ldx t1 sec lda SINH,x sbc SINH,y - //SEG302 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa + //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa sta rotation_matrix+1 - //SEG303 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 + //SEG304 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 ldy sy clc lda SINH,y adc SINH,y - //SEG304 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa + //SEG305 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa sta rotation_matrix+2 - //SEG305 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG306 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldx t3 ldy t4 sec lda SINH,x sbc SINH,y - //SEG306 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG307 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc COSQ,y - //SEG307 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG308 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc COSQ,y - //SEG308 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG309 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t8 clc adc COSQ,y - //SEG309 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG310 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc COSQ,y - //SEG310 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa + //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa sta rotation_matrix+3 - //SEG311 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG312 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldx t3 ldy t4 clc lda COSH,x adc COSH,y - //SEG312 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG313 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t5 clc adc SINQ,y - //SEG313 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG314 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t6 sec sbc SINQ,y - //SEG314 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG315 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc SINQ,y - //SEG315 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG316 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc SINQ,y - //SEG316 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa + //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa sta rotation_matrix+4 - //SEG317 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG318 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldx t9 ldy t10 sec lda SINH,x sbc SINH,y - //SEG318 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa + //SEG319 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa sta rotation_matrix+5 - //SEG319 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG320 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldx t4 ldy t3 sec lda COSH,x sbc COSH,y - //SEG320 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG321 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc SINQ,y - //SEG321 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG322 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc SINQ,y - //SEG322 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG323 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc SINQ,y - //SEG323 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG324 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc SINQ,y - //SEG324 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa + //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa sta rotation_matrix+6 - //SEG325 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG326 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldx t3 ldy t4 clc lda SINH,x adc SINH,y - //SEG326 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG327 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc COSQ,y - //SEG327 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG328 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc COSQ,y - //SEG328 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG329 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t7 clc adc COSQ,y - //SEG329 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG330 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc COSQ,y - //SEG330 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa + //SEG331 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa sta rotation_matrix+7 - //SEG331 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG332 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldx t9 ldy t10 clc lda COSH,x adc COSH,y - //SEG332 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa + //SEG333 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa sta rotation_matrix+8 jmp breturn - //SEG333 calculate_matrix::@return + //SEG334 calculate_matrix::@return breturn: - //SEG334 [188] return + //SEG335 [188] return rts } -//SEG335 debug_print_init +//SEG336 debug_print_init debug_print_init: { .label COLS = $d800 .label at_line = SCREEN+$10*$28 @@ -9609,255 +9619,255 @@ debug_print_init: { .label col = 4 .label c = 2 .label i = 3 - //SEG336 [190] call print_cls - //SEG337 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] + //SEG337 [190] call print_cls + //SEG338 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] print_cls_from_debug_print_init: jsr print_cls - //SEG338 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5] + //SEG339 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5] b5_from_debug_print_init: jmp b5 - //SEG339 debug_print_init::@5 + //SEG340 debug_print_init::@5 b5: - //SEG340 [192] call print_str_at - //SEG341 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] + //SEG341 [192] call print_str_at + //SEG342 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] print_str_at_from_b5: - //SEG342 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 + //SEG343 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$22 sta print_str_at.at+1 - //SEG343 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 + //SEG344 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG344 [193] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] + //SEG345 [193] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] b6_from_b5: jmp b6 - //SEG345 debug_print_init::@6 + //SEG346 debug_print_init::@6 b6: - //SEG346 [194] call print_str_at - //SEG347 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] + //SEG347 [194] call print_str_at + //SEG348 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] print_str_at_from_b6: - //SEG348 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 + //SEG349 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*1+$22 sta print_str_at.at+1 - //SEG349 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 + //SEG350 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG350 [195] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] + //SEG351 [195] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] b7_from_b6: jmp b7 - //SEG351 debug_print_init::@7 + //SEG352 debug_print_init::@7 b7: - //SEG352 [196] call print_str_at - //SEG353 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] + //SEG353 [196] call print_str_at + //SEG354 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] print_str_at_from_b7: - //SEG354 [260] phi (byte*) print_str_at::at#15 = (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 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 + //SEG355 [260] phi (byte*) print_str_at::at#15 = (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 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*2+$22 sta print_str_at.at+1 - //SEG355 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 + //SEG356 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG356 [197] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] + //SEG357 [197] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] b8_from_b7: jmp b8 - //SEG357 debug_print_init::@8 + //SEG358 debug_print_init::@8 b8: - //SEG358 [198] call print_str_at - //SEG359 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] + //SEG359 [198] call print_str_at + //SEG360 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] print_str_at_from_b8: - //SEG360 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 + //SEG361 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$10 sta print_str_at.at+1 - //SEG361 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 + //SEG362 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG362 [199] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] + //SEG363 [199] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] b9_from_b8: jmp b9 - //SEG363 debug_print_init::@9 + //SEG364 debug_print_init::@9 b9: - //SEG364 [200] call print_str_at - //SEG365 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] + //SEG365 [200] call print_str_at + //SEG366 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] print_str_at_from_b9: - //SEG366 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 + //SEG367 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$11 sta print_str_at.at+1 - //SEG367 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 + //SEG368 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 lda #str4 sta print_str_at.str+1 jsr print_str_at - //SEG368 [201] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] + //SEG369 [201] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] b10_from_b9: jmp b10 - //SEG369 debug_print_init::@10 + //SEG370 debug_print_init::@10 b10: - //SEG370 [202] call print_str_at - //SEG371 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] + //SEG371 [202] call print_str_at + //SEG372 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] print_str_at_from_b10: - //SEG372 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 + //SEG373 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$12 sta print_str_at.at+1 - //SEG373 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 + //SEG374 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 lda #str5 sta print_str_at.str+1 jsr print_str_at - //SEG374 [203] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] + //SEG375 [203] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] b11_from_b10: jmp b11 - //SEG375 debug_print_init::@11 + //SEG376 debug_print_init::@11 b11: - //SEG376 [204] call print_str_at - //SEG377 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] + //SEG377 [204] call print_str_at + //SEG378 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] print_str_at_from_b11: - //SEG378 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 + //SEG379 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$13 sta print_str_at.at+1 - //SEG379 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 + //SEG380 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 lda #str6 sta print_str_at.str+1 jsr print_str_at - //SEG380 [205] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] + //SEG381 [205] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] b12_from_b11: jmp b12 - //SEG381 debug_print_init::@12 + //SEG382 debug_print_init::@12 b12: - //SEG382 [206] call print_str_at - //SEG383 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] + //SEG383 [206] call print_str_at + //SEG384 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] print_str_at_from_b12: - //SEG384 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 + //SEG385 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$14 sta print_str_at.at+1 - //SEG385 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 + //SEG386 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 lda #str7 sta print_str_at.str+1 jsr print_str_at - //SEG386 [207] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] + //SEG387 [207] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] b13_from_b12: jmp b13 - //SEG387 debug_print_init::@13 + //SEG388 debug_print_init::@13 b13: - //SEG388 [208] call print_str_at - //SEG389 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] + //SEG389 [208] call print_str_at + //SEG390 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] print_str_at_from_b13: - //SEG390 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG391 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$15 sta print_str_at.at+1 - //SEG391 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG392 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str8 sta print_str_at.str+1 jsr print_str_at - //SEG392 [209] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] + //SEG393 [209] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] b14_from_b13: jmp b14 - //SEG393 debug_print_init::@14 + //SEG394 debug_print_init::@14 b14: - //SEG394 [210] call print_str_at - //SEG395 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] + //SEG395 [210] call print_str_at + //SEG396 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] print_str_at_from_b14: - //SEG396 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 + //SEG397 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$16 sta print_str_at.at+1 - //SEG397 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 + //SEG398 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 lda #str9 sta print_str_at.str+1 jsr print_str_at - //SEG398 [211] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] + //SEG399 [211] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] b15_from_b14: jmp b15 - //SEG399 debug_print_init::@15 + //SEG400 debug_print_init::@15 b15: - //SEG400 [212] call print_str_at - //SEG401 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] + //SEG401 [212] call print_str_at + //SEG402 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] print_str_at_from_b15: - //SEG402 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 + //SEG403 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$17 sta print_str_at.at+1 - //SEG403 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 + //SEG404 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 lda #str10 sta print_str_at.str+1 jsr print_str_at - //SEG404 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16] + //SEG405 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16] b16_from_b15: jmp b16 - //SEG405 debug_print_init::@16 + //SEG406 debug_print_init::@16 b16: - //SEG406 [214] call print_str_at - //SEG407 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at] + //SEG407 [214] call print_str_at + //SEG408 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at] print_str_at_from_b16: - //SEG408 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 + //SEG409 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$18 sta print_str_at.at+1 - //SEG409 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 + //SEG410 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 lda #str11 sta print_str_at.str+1 jsr print_str_at - //SEG410 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1] + //SEG411 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1] b1_from_b16: - //SEG411 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 + //SEG412 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG412 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 + //SEG413 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 lda #4 sta c jmp b1 - //SEG413 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] + //SEG414 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] b1_from_b3: - //SEG414 [215] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy - //SEG415 [215] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy + //SEG415 [215] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy + //SEG416 [215] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy jmp b1 - //SEG416 debug_print_init::@1 + //SEG417 debug_print_init::@1 b1: - //SEG417 [216] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG418 [216] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG418 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG419 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda xs,x tax - //SEG419 [218] call print_sbyte_at - //SEG420 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] + //SEG420 [218] call print_sbyte_at + //SEG421 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG421 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy - //SEG422 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy + //SEG422 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy + //SEG423 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b18 - //SEG423 debug_print_init::@18 + //SEG424 debug_print_init::@18 b18: - //SEG424 [219] (byte*) print_sbyte_at::at#1 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG425 [219] (byte*) print_sbyte_at::at#1 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG425 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG426 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda ys,x tax - //SEG426 [221] call print_sbyte_at - //SEG427 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at] + //SEG427 [221] call print_sbyte_at + //SEG428 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at] print_sbyte_at_from_b18: - //SEG428 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy - //SEG429 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy + //SEG429 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy + //SEG430 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b19 - //SEG430 debug_print_init::@19 + //SEG431 debug_print_init::@19 b19: - //SEG431 [222] (byte*) print_sbyte_at::at#2 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG432 [222] (byte*) print_sbyte_at::at#2 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG432 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG433 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda zs,x tax - //SEG433 [224] call print_sbyte_at - //SEG434 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at] + //SEG434 [224] call print_sbyte_at + //SEG435 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at] print_sbyte_at_from_b19: - //SEG435 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy - //SEG436 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy + //SEG436 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy + //SEG437 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG437 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2] + //SEG438 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2] b2_from_b19: - //SEG438 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuxx=vbuc1 + //SEG439 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG439 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] + //SEG440 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] b2_from_b2: - //SEG440 [225] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy + //SEG441 [225] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy jmp b2 - //SEG441 debug_print_init::@2 + //SEG442 debug_print_init::@2 b2: - //SEG442 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG443 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 lda #8 clc adc i sta col - //SEG443 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG444 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols adc #0 sta _59+1 - //SEG444 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG445 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _60 @@ -9949,11 +9959,11 @@ debug_print_init: { lda #0 adc _60+1 sta _60+1 - //SEG445 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG446 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_60),y - //SEG446 [230] (byte*~) debug_print_init::$63 ← (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) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG447 [230] (byte*~) debug_print_init::$63 ← (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) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*1 adc #0 sta _63+1 - //SEG447 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG448 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _64 @@ -9969,11 +9979,11 @@ debug_print_init: { lda #0 adc _64+1 sta _64+1 - //SEG448 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG449 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_64),y - //SEG449 [233] (byte*~) debug_print_init::$67 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG450 [233] (byte*~) debug_print_init::$67 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*2 adc #0 sta _67+1 - //SEG450 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG451 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _68 @@ -9989,11 +9999,11 @@ debug_print_init: { lda #0 adc _68+1 sta _68+1 - //SEG451 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG452 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_68),y - //SEG452 [236] (byte*~) debug_print_init::$71 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG453 [236] (byte*~) debug_print_init::$71 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*3 adc #0 sta _71+1 - //SEG453 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG454 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _72 @@ -10009,11 +10019,11 @@ debug_print_init: { lda #0 adc _72+1 sta _72+1 - //SEG454 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG455 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_72),y - //SEG455 [239] (byte*~) debug_print_init::$75 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG456 [239] (byte*~) debug_print_init::$75 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*4 adc #0 sta _75+1 - //SEG456 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG457 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _76 @@ -10029,11 +10039,11 @@ debug_print_init: { lda #0 adc _76+1 sta _76+1 - //SEG457 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG458 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_76),y - //SEG458 [242] (byte*~) debug_print_init::$79 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG459 [242] (byte*~) debug_print_init::$79 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*5 adc #0 sta _79+1 - //SEG459 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG460 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _80 @@ -10049,11 +10059,11 @@ debug_print_init: { lda #0 adc _80+1 sta _80+1 - //SEG460 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG461 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_80),y - //SEG461 [245] (byte*~) debug_print_init::$83 ← (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) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG462 [245] (byte*~) debug_print_init::$83 ← (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) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*6 adc #0 sta _83+1 - //SEG462 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG463 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _84 @@ -10069,11 +10079,11 @@ debug_print_init: { lda #0 adc _84+1 sta _84+1 - //SEG463 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG464 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_84),y - //SEG464 [248] (byte*~) debug_print_init::$87 ← (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) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG465 [248] (byte*~) debug_print_init::$87 ← (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) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*7 adc #0 sta _87+1 - //SEG465 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG466 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _88 @@ -10089,11 +10099,11 @@ debug_print_init: { lda #0 adc _88+1 sta _88+1 - //SEG466 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG467 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_88),y - //SEG467 [251] (byte*~) debug_print_init::$91 ← (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) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG468 [251] (byte*~) debug_print_init::$91 ← (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) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*8 adc #0 sta _91+1 - //SEG468 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG469 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _92 @@ -10109,33 +10119,33 @@ debug_print_init: { lda #0 adc _92+1 sta _92+1 - //SEG469 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG470 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_92),y - //SEG470 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuxx=_inc_vbuxx + //SEG471 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG471 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG472 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2_from_b2 jmp b3 - //SEG472 debug_print_init::@3 + //SEG473 debug_print_init::@3 b3: - //SEG473 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG474 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc c sta c - //SEG474 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG475 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG475 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG476 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b3 jmp breturn - //SEG476 debug_print_init::@return + //SEG477 debug_print_init::@return breturn: - //SEG477 [259] return + //SEG478 [259] return rts str: .text "sx@" str1: .text "sy@" @@ -10150,76 +10160,76 @@ debug_print_init: { str10: .text "xp@" str11: .text "yp@" } -//SEG478 print_str_at +//SEG479 print_str_at // Print a string at a specific screen position print_str_at: { .label at = 9 .label str = 6 - //SEG479 [261] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG480 [261] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] b1_from_print_str_at: b1_from_b2: - //SEG480 [261] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG481 [261] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG481 [261] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG482 [261] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 - //SEG482 print_str_at::@1 + //SEG483 print_str_at::@1 b1: - //SEG483 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG484 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG484 print_str_at::@return + //SEG485 print_str_at::@return breturn: - //SEG485 [263] return + //SEG486 [263] return rts - //SEG486 print_str_at::@2 + //SEG487 print_str_at::@2 b2: - //SEG487 [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG488 [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (at),y - //SEG488 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 + //SEG489 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG489 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 + //SEG490 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG490 print_cls +//SEG491 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 6 - //SEG491 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG492 [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_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG493 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 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] + //SEG494 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG494 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG495 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG495 print_cls::@1 + //SEG496 print_cls::@1 b1: - //SEG496 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG497 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG497 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG498 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG499 [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_line_cursor+$3e8 bne b1_from_b1 @@ -10227,45 +10237,45 @@ print_cls: { cmp #sprites_init::@1] + //SEG504 [274] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG504 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 + //SEG505 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG505 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG506 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG506 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG507 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy jmp b1 - //SEG507 sprites_init::@1 + //SEG508 sprites_init::@1 b1: - //SEG508 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG509 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_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 - //SEG509 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG510 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG510 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx + //SEG511 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG511 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG512 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b1 jmp breturn - //SEG512 sprites_init::@return + //SEG513 sprites_init::@return breturn: - //SEG513 [279] return + //SEG514 [279] return rts } print_hextab: .text "0123456789abcdef" @@ -10661,9 +10671,9 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [306] bne b1 to beq -Fixing long branch [993] bne b2 to beq -Fixing long branch [1003] bne b1 to beq +Fixing long branch [310] bne b1 to beq +Fixing long branch [997] bne b2 to beq +Fixing long branch [1007] bne b1 to beq FINAL SYMBOL TABLE (label) @33 @@ -11289,11 +11299,16 @@ reg byte a [ calculate_matrix::$34 ] FINAL ASSEMBLER Score: 85538 -//SEG0 Basic Upstart +//SEG0 File Comments +// 3D Rotation using a Rotation Matrix +// Based on: +// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt +// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label RASTER = $d012 @@ -11328,178 +11343,178 @@ Score: 85538 .label COSQ = SINQ+$40 .label sx = 2 .label sy = 3 -//SEG2 @begin -//SEG3 @33 -//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) }} -//SEG7 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .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))); } } } }} -//SEG8 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG9 kickasm(location (const signed byte*) SINQ#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 round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG10 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} -//SEG11 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} -//SEG12 kickasm(location (const byte*) SINQ_LO#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)) } } }} -//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 -//SEG15 [12] phi from @33 to @end [phi:@33->@end] -//SEG16 @end -//SEG17 main +//SEG3 @begin +//SEG4 @33 +//SEG5 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) } } }} +//SEG6 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) } } }} +//SEG7 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) }} +//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .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))); } } } }} +//SEG9 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} +//SEG10 kickasm(location (const signed byte*) SINQ#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 round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} +//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} +//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .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)) } } }} +//SEG13 kickasm(location (const byte*) SINQ_LO#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 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)) } } }} +//SEG15 [11] call main +//SEG16 [12] phi from @33 to @end [phi:@33->@end] +//SEG17 @end +//SEG18 main main: { - //SEG18 asm { sei } + //SEG19 asm { sei } sei - //SEG19 [14] call sprites_init + //SEG20 [14] call sprites_init jsr sprites_init - //SEG20 main::@1 - //SEG21 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG21 main::@1 + //SEG22 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr1 sta psp1+1 - //SEG22 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG23 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG23 [17] call debug_print_init - //SEG24 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] + //SEG24 [17] call debug_print_init + //SEG25 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] jsr debug_print_init - //SEG25 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG26 main::@2 - //SEG27 [19] call anim - //SEG28 [21] phi from main::@2 to anim [phi:main::@2->anim] + //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG27 main::@2 + //SEG28 [19] call anim + //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim] jsr anim - //SEG29 main::@return - //SEG30 [20] return + //SEG30 main::@return + //SEG31 [20] return rts } -//SEG31 anim +//SEG32 anim anim: { .label i = 4 - //SEG32 [22] phi from anim to anim::@1 [phi:anim->anim::@1] - //SEG33 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 + //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG34 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 lda #0 sta sy - //SEG34 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 + //SEG35 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 sta sx - //SEG35 anim::@1 - //SEG36 anim::@4 + //SEG36 anim::@1 + //SEG37 anim::@4 b4: - //SEG37 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG38 anim::@7 + //SEG39 anim::@7 b7: - //SEG39 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 - //SEG40 anim::@10 + //SEG41 anim::@10 b10: - //SEG41 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fd bne b10 - //SEG42 anim::@12 - //SEG43 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG43 anim::@12 + //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG44 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 + //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 ldx sx - //SEG45 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 - //SEG46 [29] call calculate_matrix + //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 + //SEG47 [29] call calculate_matrix jsr calculate_matrix - //SEG47 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27] - //SEG48 anim::@27 - //SEG49 [31] call store_matrix + //SEG48 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27] + //SEG49 anim::@27 + //SEG50 [31] call store_matrix jsr store_matrix - //SEG50 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13] - //SEG51 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 + //SEG51 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13] + //SEG52 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG52 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13] - //SEG53 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy - //SEG54 anim::@13 + //SEG53 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13] + //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy + //SEG55 anim::@13 b13: - //SEG55 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG56 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta rotate_matrix.x - //SEG57 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsyy=pbsc1_derefidx_vbuz1 + //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsyy=pbsc1_derefidx_vbuz1 ldx i ldy ys,x - //SEG58 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 lda zs,x tax - //SEG59 [37] call rotate_matrix + //SEG60 [37] call rotate_matrix jsr rotate_matrix - //SEG60 anim::@29 - //SEG61 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG61 anim::@29 + //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda xr sta xrs,y - //SEG62 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda yr sta yrs,y - //SEG63 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda zr sta zrs,y - //SEG64 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda pp sta pps,y - //SEG65 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda xp sta xps,y - //SEG66 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda yp sta yps,y - //SEG67 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 + //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 tya asl tax - //SEG68 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 + //SEG69 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 lda #$80 clc adc xp - //SEG69 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG70 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 + //SEG71 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 lda #$80 clc adc yp - //SEG71 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_YPOS,x - //SEG72 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 + //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG73 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 + //SEG74 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b13 - //SEG74 anim::@25 - //SEG75 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG75 anim::@25 + //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_GREY sta BORDERCOL - //SEG76 [52] call debug_print + //SEG77 [52] call debug_print jsr debug_print - //SEG77 anim::@30 - //SEG78 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG78 anim::@30 + //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG79 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 + //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 inc sx inc sx - //SEG80 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 + //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 lda sy sec sbc #3 sta sy - //SEG81 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1] - //SEG82 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy - //SEG83 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy + //SEG82 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1] + //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy + //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy jmp b4 } -//SEG84 debug_print +//SEG85 debug_print debug_print: { .const print_sbyte_pos1_row = 0 .const print_sbyte_pos1_col = $25 @@ -11528,186 +11543,186 @@ debug_print: { .label at_line = SCREEN+$13*$28 .label c = 4 .label i = 5 - //SEG85 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 + //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 ldx sx - //SEG86 debug_print::print_sbyte_pos1 - //SEG87 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG87 debug_print::print_sbyte_pos1 + //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 + //SEG89 [58] call print_sbyte_at + //SEG90 [114] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] + //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG92 [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 - //SEG92 debug_print::@3 - //SEG93 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsaa=vbsz1 + //SEG93 debug_print::@3 + //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsaa=vbsz1 lda sy - //SEG94 debug_print::print_sbyte_pos2 - //SEG95 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsxx=vbsaa + //SEG95 debug_print::print_sbyte_pos2 + //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsxx=vbsaa 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_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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG97 [61] call print_sbyte_at + //SEG98 [114] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] + //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG100 [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 - //SEG100 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] - //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_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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG101 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] + //SEG102 debug_print::print_sbyte_pos3 + //SEG103 [63] call print_sbyte_at + //SEG104 [114] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] + //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG106 [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 jsr print_sbyte_at - //SEG106 debug_print::@5 - //SEG107 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsaa=_deref_pbsc1 + //SEG107 debug_print::@5 + //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsaa=_deref_pbsc1 lda rotation_matrix - //SEG108 debug_print::print_sbyte_pos4 - //SEG109 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsxx=vbsaa + //SEG109 debug_print::print_sbyte_pos4 + //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsxx=vbsaa 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_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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG111 [66] call print_sbyte_at + //SEG112 [114] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] + //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG114 [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 - //SEG114 debug_print::@6 - //SEG115 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsxx=_deref_pbsc1 + //SEG115 debug_print::@6 + //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+1 - //SEG116 debug_print::print_sbyte_pos5 - //SEG117 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG117 debug_print::print_sbyte_pos5 + //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 + //SEG119 [69] call print_sbyte_at + //SEG120 [114] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] + //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG122 [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 - //SEG122 debug_print::@7 - //SEG123 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsxx=_deref_pbsc1 + //SEG123 debug_print::@7 + //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+2 - //SEG124 debug_print::print_sbyte_pos6 - //SEG125 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG125 debug_print::print_sbyte_pos6 + //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 + //SEG127 [72] call print_sbyte_at + //SEG128 [114] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] + //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG130 [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 - //SEG130 debug_print::@8 - //SEG131 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsxx=_deref_pbsc1 + //SEG131 debug_print::@8 + //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+3 - //SEG132 debug_print::print_sbyte_pos7 - //SEG133 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG133 debug_print::print_sbyte_pos7 + //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 + //SEG135 [75] call print_sbyte_at + //SEG136 [114] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] + //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG138 [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 - //SEG138 debug_print::@9 - //SEG139 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsxx=_deref_pbsc1 + //SEG139 debug_print::@9 + //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+4 - //SEG140 debug_print::print_sbyte_pos8 - //SEG141 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG141 debug_print::print_sbyte_pos8 + //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 + //SEG143 [78] call print_sbyte_at + //SEG144 [114] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] + //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG146 [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 - //SEG146 debug_print::@10 - //SEG147 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsxx=_deref_pbsc1 + //SEG147 debug_print::@10 + //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+5 - //SEG148 debug_print::print_sbyte_pos9 - //SEG149 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG149 debug_print::print_sbyte_pos9 + //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 + //SEG151 [81] call print_sbyte_at + //SEG152 [114] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] + //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG154 [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 - //SEG154 debug_print::@11 - //SEG155 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsxx=_deref_pbsc1 + //SEG155 debug_print::@11 + //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+6 - //SEG156 debug_print::print_sbyte_pos10 - //SEG157 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG157 debug_print::print_sbyte_pos10 + //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 + //SEG159 [84] call print_sbyte_at + //SEG160 [114] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] + //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG162 [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 - //SEG162 debug_print::@12 - //SEG163 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsxx=_deref_pbsc1 + //SEG163 debug_print::@12 + //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+7 - //SEG164 debug_print::print_sbyte_pos11 - //SEG165 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG165 debug_print::print_sbyte_pos11 + //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 + //SEG167 [87] call print_sbyte_at + //SEG168 [114] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] + //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG170 [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 - //SEG170 debug_print::@13 - //SEG171 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsxx=_deref_pbsc1 + //SEG171 debug_print::@13 + //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+8 - //SEG172 debug_print::print_sbyte_pos12 - //SEG173 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 - //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_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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG173 debug_print::print_sbyte_pos12 + //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 + //SEG175 [90] call print_sbyte_at + //SEG176 [114] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] + //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 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 + //SEG178 [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 - //SEG178 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] - //SEG179 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 + //SEG179 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] + //SEG180 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG180 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 + //SEG181 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 lda #4 sta c - //SEG181 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1] - //SEG182 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy - //SEG183 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy - //SEG184 debug_print::@1 + //SEG182 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1] + //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy + //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy + //SEG185 debug_print::@1 b1: - //SEG185 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG186 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda xrs,x tax - //SEG187 [94] call print_sbyte_at - //SEG188 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] - //SEG189 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy - //SEG190 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy + //SEG188 [94] call print_sbyte_at + //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] + //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy + //SEG191 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG191 debug_print::@27 - //SEG192 [95] (byte*) print_sbyte_at::at#16 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG192 debug_print::@27 + //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG193 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda yrs,x tax - //SEG194 [97] call print_sbyte_at - //SEG195 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at] - //SEG196 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy - //SEG197 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy + //SEG195 [97] call print_sbyte_at + //SEG196 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at] + //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy + //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG198 debug_print::@28 - //SEG199 [98] (byte*) print_sbyte_at::at#17 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG199 debug_print::@28 + //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG200 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda zrs,x tax - //SEG201 [100] call print_sbyte_at - //SEG202 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at] - //SEG203 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy - //SEG204 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy + //SEG202 [100] call print_sbyte_at + //SEG203 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at] + //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy + //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG205 debug_print::@29 - //SEG206 [101] (byte*) print_sbyte_at::at#18 ← (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) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG206 debug_print::@29 + //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (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) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*3 adc #0 sta print_sbyte_at.at+1 - //SEG207 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda pps,x tax - //SEG208 [103] call print_sbyte_at - //SEG209 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at] - //SEG210 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy - //SEG211 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy + //SEG209 [103] call print_sbyte_at + //SEG210 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at] + //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy + //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG212 debug_print::@30 - //SEG213 [104] (byte*) print_sbyte_at::at#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) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG213 debug_print::@30 + //SEG214 [104] (byte*) print_sbyte_at::at#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) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*4 adc #0 sta print_sbyte_at.at+1 - //SEG214 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda xps,x tax - //SEG215 [106] call print_sbyte_at - //SEG216 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at] - //SEG217 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy - //SEG218 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy + //SEG216 [106] call print_sbyte_at + //SEG217 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at] + //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy + //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG219 debug_print::@31 - //SEG220 [107] (byte*) print_sbyte_at::at#20 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG220 debug_print::@31 + //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (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 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*5 adc #0 sta print_sbyte_at.at+1 - //SEG221 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda yps,x tax - //SEG222 [109] call print_sbyte_at - //SEG223 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at] - //SEG224 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy - //SEG225 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy + //SEG223 [109] call print_sbyte_at + //SEG224 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at] + //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy + //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG226 debug_print::@32 - //SEG227 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG227 debug_print::@32 + //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc c sta c - //SEG228 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 + //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG229 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG230 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 beq !b1+ jmp b1 !b1: - //SEG230 debug_print::@return - //SEG231 [113] return + //SEG231 debug_print::@return + //SEG232 [113] return rts } -//SEG232 print_sbyte_at +//SEG233 print_sbyte_at // Print a signed byte as hex at a specific screen position print_sbyte_at: { .label at = 6 - //SEG233 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 + //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1 - //SEG234 print_sbyte_at::@3 - //SEG235 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 - //SEG236 [117] call print_char_at - //SEG237 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] - //SEG238 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG239 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG235 print_sbyte_at::@3 + //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 + //SEG237 [117] call print_char_at + //SEG238 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG239 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG240 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG240 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] - //SEG241 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy - //SEG242 print_sbyte_at::@2 + //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] + //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy + //SEG243 print_sbyte_at::@2 b2: - //SEG243 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG244 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc print_byte_at.at bne !+ inc print_byte_at.at+1 !: - //SEG244 [120] call print_byte_at + //SEG245 [120] call print_byte_at jsr print_byte_at - //SEG245 print_sbyte_at::@return - //SEG246 [121] return + //SEG246 print_sbyte_at::@return + //SEG247 [121] return rts - //SEG247 print_sbyte_at::@1 + //SEG248 print_sbyte_at::@1 b1: - //SEG248 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 - //SEG249 [123] call print_char_at - //SEG250 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] - //SEG251 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG252 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG249 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 + //SEG250 [123] call print_char_at + //SEG251 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG252 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG253 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at - //SEG253 print_sbyte_at::@5 - //SEG254 [124] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx + //SEG254 print_sbyte_at::@5 + //SEG255 [124] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -11881,78 +11896,78 @@ print_sbyte_at: { tax jmp b2 } -//SEG255 print_char_at +//SEG256 print_char_at // Print a single char print_char_at: { .label at = 6 .label ch = 8 - //SEG256 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG257 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y - //SEG257 print_char_at::@return - //SEG258 [127] return + //SEG258 print_char_at::@return + //SEG259 [127] return rts } -//SEG259 print_byte_at +//SEG260 print_byte_at // Print a byte as HEX at a specific position print_byte_at: { .label at = 6 - //SEG260 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG261 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG261 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG262 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda print_hextab,y sta print_char_at.ch - //SEG262 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - //SEG263 [131] call print_char_at - //SEG264 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] - //SEG265 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG266 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG263 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + //SEG264 [131] call print_char_at + //SEG265 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG266 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG267 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at - //SEG267 print_byte_at::@1 - //SEG268 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuxx=vbuxx_band_vbuc1 + //SEG268 print_byte_at::@1 + //SEG269 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuxx=vbuxx_band_vbuc1 txa and #$f tax - //SEG269 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG270 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc print_char_at.at bne !+ inc print_char_at.at+1 !: - //SEG270 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG271 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuxx lda print_hextab,x sta print_char_at.ch - //SEG271 [135] call print_char_at - //SEG272 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] - //SEG273 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG274 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG272 [135] call print_char_at + //SEG273 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG274 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG275 [125] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at - //SEG275 print_byte_at::@return - //SEG276 [136] return + //SEG276 print_byte_at::@return + //SEG277 [136] return rts } -//SEG277 rotate_matrix +//SEG278 rotate_matrix // Rotate a 3D point (x,y,z) using the rotation matrix // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. // Implemented in assembler to utilize seriously fast multiplication rotate_matrix: { .label x = 5 - //SEG278 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 + //SEG279 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 lda x sta xr - //SEG279 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsyy + //SEG280 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsyy tya sta yr - //SEG280 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsxx + //SEG281 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsxx txa sta zr - //SEG281 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } + //SEG282 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } tax C1: lda mulf_sqr1,x @@ -12039,16 +12054,16 @@ rotate_matrix: { sec sbc (psp2),y sta xp - //SEG282 rotate_matrix::@return - //SEG283 [141] return + //SEG283 rotate_matrix::@return + //SEG284 [141] return rts } -//SEG284 store_matrix +//SEG285 store_matrix // Store the rotation matrix into the rotation routine rotate() // After this each call to rotate() will rotate a point with the matrix // Implemented in assembler to utilize seriously fast multiplication store_matrix: { - //SEG285 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } + //SEG286 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } lda rotation_matrix+0 sta rotate_matrix.A1+1 eor #$ff @@ -12085,11 +12100,11 @@ store_matrix: { sta rotate_matrix.I1+1 eor #$ff sta rotate_matrix.I2+1 - //SEG286 store_matrix::@return - //SEG287 [143] return + //SEG287 store_matrix::@return + //SEG288 [143] return rts } -//SEG288 calculate_matrix +//SEG289 calculate_matrix // Prepare the 3x3 rotation matrix into rotation_matrix[] // Angles sx, sy, sz are based on 2*PI=$100 // Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt @@ -12104,195 +12119,195 @@ calculate_matrix: { .label t8 = $e .label t9 = $f .label t10 = $10 - //SEG289 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 + //SEG290 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 lda sy sec sbc #sz sta t1 - //SEG290 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsyy=vbsz1_plus_vbsc1 + //SEG291 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsyy=vbsz1_plus_vbsc1 lda #sz clc adc sy tay - //SEG291 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsxx_plus_vbsc1 + //SEG292 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsxx_plus_vbsc1 txa clc adc #sz sta t3 - //SEG292 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsxx_minus_vbsc1 + //SEG293 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsxx_minus_vbsc1 txa sec sbc #sz sta t4 - //SEG293 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsyy + //SEG294 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsyy txa sty $ff clc adc $ff sta t5 - //SEG294 [149] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 + //SEG295 [149] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 txa sec sbc t1 sta t6 - //SEG295 [150] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 + //SEG296 [150] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 txa clc adc t1 sta t7 - //SEG296 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsyy_minus_vbsxx + //SEG297 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsyy_minus_vbsxx tya stx $ff sec sbc $ff sta t8 - //SEG297 [152] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx + //SEG298 [152] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx txa eor #$ff sec adc sy sta t9 - //SEG298 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsxx + //SEG299 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsxx txa clc adc sy sta t10 - //SEG299 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsyy + //SEG300 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsyy ldx t1 clc lda COSH,x adc COSH,y - //SEG300 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa + //SEG301 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa sta rotation_matrix - //SEG301 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsyy + //SEG302 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsyy sec lda SINH,x sbc SINH,y - //SEG302 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa + //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa sta rotation_matrix+1 - //SEG303 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 + //SEG304 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 ldy sy clc lda SINH,y adc SINH,y - //SEG304 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa + //SEG305 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa sta rotation_matrix+2 - //SEG305 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG306 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldx t3 ldy t4 sec lda SINH,x sbc SINH,y - //SEG306 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG307 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc COSQ,y - //SEG307 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG308 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc COSQ,y - //SEG308 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG309 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t8 clc adc COSQ,y - //SEG309 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG310 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc COSQ,y - //SEG310 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa + //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa sta rotation_matrix+3 - //SEG311 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG312 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldy t4 clc lda COSH,x adc COSH,y - //SEG312 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG313 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t5 clc adc SINQ,y - //SEG313 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG314 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t6 sec sbc SINQ,y - //SEG314 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG315 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc SINQ,y - //SEG315 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG316 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc SINQ,y - //SEG316 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa + //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa sta rotation_matrix+4 - //SEG317 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG318 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldx t9 ldy t10 sec lda SINH,x sbc SINH,y - //SEG318 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa + //SEG319 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa sta rotation_matrix+5 - //SEG319 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG320 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldx t4 ldy t3 sec lda COSH,x sbc COSH,y - //SEG320 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG321 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc SINQ,y - //SEG321 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG322 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc SINQ,y - //SEG322 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG323 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc SINQ,y - //SEG323 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG324 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc SINQ,y - //SEG324 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa + //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa sta rotation_matrix+6 - //SEG325 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG326 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldx t3 ldy t4 clc lda SINH,x adc SINH,y - //SEG326 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG327 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc COSQ,y - //SEG327 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG328 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc COSQ,y - //SEG328 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG329 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t7 clc adc COSQ,y - //SEG329 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG330 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc COSQ,y - //SEG330 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa + //SEG331 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa sta rotation_matrix+7 - //SEG331 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG332 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldx t9 ldy t10 clc lda COSH,x adc COSH,y - //SEG332 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa + //SEG333 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa sta rotation_matrix+8 - //SEG333 calculate_matrix::@return - //SEG334 [188] return + //SEG334 calculate_matrix::@return + //SEG335 [188] return rts } -//SEG335 debug_print_init +//SEG336 debug_print_init debug_print_init: { .label COLS = $d800 .label at_line = SCREEN+$10*$28 @@ -12318,202 +12333,202 @@ debug_print_init: { .label col = 4 .label c = 2 .label i = 3 - //SEG336 [190] call print_cls - //SEG337 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] + //SEG337 [190] call print_cls + //SEG338 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] jsr print_cls - //SEG338 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5] - //SEG339 debug_print_init::@5 - //SEG340 [192] call print_str_at - //SEG341 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] - //SEG342 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 + //SEG339 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5] + //SEG340 debug_print_init::@5 + //SEG341 [192] call print_str_at + //SEG342 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] + //SEG343 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$22 sta print_str_at.at+1 - //SEG343 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 + //SEG344 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG344 [193] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] - //SEG345 debug_print_init::@6 - //SEG346 [194] call print_str_at - //SEG347 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] - //SEG348 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 + //SEG345 [193] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] + //SEG346 debug_print_init::@6 + //SEG347 [194] call print_str_at + //SEG348 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] + //SEG349 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*1+$22 sta print_str_at.at+1 - //SEG349 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 + //SEG350 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG350 [195] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] - //SEG351 debug_print_init::@7 - //SEG352 [196] call print_str_at - //SEG353 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] - //SEG354 [260] phi (byte*) print_str_at::at#15 = (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 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 + //SEG351 [195] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] + //SEG352 debug_print_init::@7 + //SEG353 [196] call print_str_at + //SEG354 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] + //SEG355 [260] phi (byte*) print_str_at::at#15 = (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 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*2+$22 sta print_str_at.at+1 - //SEG355 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 + //SEG356 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG356 [197] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] - //SEG357 debug_print_init::@8 - //SEG358 [198] call print_str_at - //SEG359 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] - //SEG360 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 + //SEG357 [197] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] + //SEG358 debug_print_init::@8 + //SEG359 [198] call print_str_at + //SEG360 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] + //SEG361 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$10 sta print_str_at.at+1 - //SEG361 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 + //SEG362 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG362 [199] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] - //SEG363 debug_print_init::@9 - //SEG364 [200] call print_str_at - //SEG365 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] - //SEG366 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 + //SEG363 [199] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] + //SEG364 debug_print_init::@9 + //SEG365 [200] call print_str_at + //SEG366 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] + //SEG367 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$11 sta print_str_at.at+1 - //SEG367 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 + //SEG368 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 lda #str4 sta print_str_at.str+1 jsr print_str_at - //SEG368 [201] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] - //SEG369 debug_print_init::@10 - //SEG370 [202] call print_str_at - //SEG371 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] - //SEG372 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 + //SEG369 [201] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] + //SEG370 debug_print_init::@10 + //SEG371 [202] call print_str_at + //SEG372 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] + //SEG373 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$12 sta print_str_at.at+1 - //SEG373 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 + //SEG374 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 lda #str5 sta print_str_at.str+1 jsr print_str_at - //SEG374 [203] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] - //SEG375 debug_print_init::@11 - //SEG376 [204] call print_str_at - //SEG377 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] - //SEG378 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 + //SEG375 [203] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] + //SEG376 debug_print_init::@11 + //SEG377 [204] call print_str_at + //SEG378 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] + //SEG379 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$13 sta print_str_at.at+1 - //SEG379 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 + //SEG380 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 lda #str6 sta print_str_at.str+1 jsr print_str_at - //SEG380 [205] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] - //SEG381 debug_print_init::@12 - //SEG382 [206] call print_str_at - //SEG383 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] - //SEG384 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 + //SEG381 [205] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] + //SEG382 debug_print_init::@12 + //SEG383 [206] call print_str_at + //SEG384 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] + //SEG385 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$14 sta print_str_at.at+1 - //SEG385 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 + //SEG386 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 lda #str7 sta print_str_at.str+1 jsr print_str_at - //SEG386 [207] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] - //SEG387 debug_print_init::@13 - //SEG388 [208] call print_str_at - //SEG389 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] - //SEG390 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG387 [207] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] + //SEG388 debug_print_init::@13 + //SEG389 [208] call print_str_at + //SEG390 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] + //SEG391 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$15 sta print_str_at.at+1 - //SEG391 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG392 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str8 sta print_str_at.str+1 jsr print_str_at - //SEG392 [209] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] - //SEG393 debug_print_init::@14 - //SEG394 [210] call print_str_at - //SEG395 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] - //SEG396 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 + //SEG393 [209] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] + //SEG394 debug_print_init::@14 + //SEG395 [210] call print_str_at + //SEG396 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] + //SEG397 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$16 sta print_str_at.at+1 - //SEG397 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 + //SEG398 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 lda #str9 sta print_str_at.str+1 jsr print_str_at - //SEG398 [211] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] - //SEG399 debug_print_init::@15 - //SEG400 [212] call print_str_at - //SEG401 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] - //SEG402 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 + //SEG399 [211] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] + //SEG400 debug_print_init::@15 + //SEG401 [212] call print_str_at + //SEG402 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] + //SEG403 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$17 sta print_str_at.at+1 - //SEG403 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 + //SEG404 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 lda #str10 sta print_str_at.str+1 jsr print_str_at - //SEG404 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16] - //SEG405 debug_print_init::@16 - //SEG406 [214] call print_str_at - //SEG407 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at] - //SEG408 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 + //SEG405 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16] + //SEG406 debug_print_init::@16 + //SEG407 [214] call print_str_at + //SEG408 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at] + //SEG409 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$18 sta print_str_at.at+1 - //SEG409 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 + //SEG410 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 lda #str11 sta print_str_at.str+1 jsr print_str_at - //SEG410 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1] - //SEG411 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 + //SEG411 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1] + //SEG412 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG412 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 + //SEG413 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 lda #4 sta c - //SEG413 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] - //SEG414 [215] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy - //SEG415 [215] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy - //SEG416 debug_print_init::@1 + //SEG414 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] + //SEG415 [215] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy + //SEG416 [215] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy + //SEG417 debug_print_init::@1 b1: - //SEG417 [216] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG418 [216] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG418 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG419 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda xs,x tax - //SEG419 [218] call print_sbyte_at - //SEG420 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] - //SEG421 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy - //SEG422 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy + //SEG420 [218] call print_sbyte_at + //SEG421 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] + //SEG422 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy + //SEG423 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG423 debug_print_init::@18 - //SEG424 [219] (byte*) print_sbyte_at::at#1 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG424 debug_print_init::@18 + //SEG425 [219] (byte*) print_sbyte_at::at#1 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG425 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG426 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda ys,x tax - //SEG426 [221] call print_sbyte_at - //SEG427 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at] - //SEG428 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy - //SEG429 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy + //SEG427 [221] call print_sbyte_at + //SEG428 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at] + //SEG429 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy + //SEG430 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG430 debug_print_init::@19 - //SEG431 [222] (byte*) print_sbyte_at::at#2 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG431 debug_print_init::@19 + //SEG432 [222] (byte*) print_sbyte_at::at#2 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG432 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG433 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldx i lda zs,x tax - //SEG433 [224] call print_sbyte_at - //SEG434 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at] - //SEG435 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy - //SEG436 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy + //SEG434 [224] call print_sbyte_at + //SEG435 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at] + //SEG436 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy + //SEG437 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG437 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2] - //SEG438 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuxx=vbuc1 + //SEG438 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2] + //SEG439 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG439 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] - //SEG440 [225] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy - //SEG441 debug_print_init::@2 + //SEG440 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] + //SEG441 [225] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy + //SEG442 debug_print_init::@2 b2: - //SEG442 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG443 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 lda #8 clc adc i sta col - //SEG443 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG444 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols adc #0 sta _59+1 - //SEG444 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG445 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _60 @@ -12594,11 +12609,11 @@ debug_print_init: { lda #0 adc _60+1 sta _60+1 - //SEG445 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG446 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col ldy #0 sta (_60),y - //SEG446 [230] (byte*~) debug_print_init::$63 ← (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) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG447 [230] (byte*~) debug_print_init::$63 ← (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) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*1 adc #0 sta _63+1 - //SEG447 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG448 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _64 @@ -12614,10 +12629,10 @@ debug_print_init: { tya adc _64+1 sta _64+1 - //SEG448 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG449 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col sta (_64),y - //SEG449 [233] (byte*~) debug_print_init::$67 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG450 [233] (byte*~) debug_print_init::$67 ← (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) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*2 adc #0 sta _67+1 - //SEG450 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG451 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _68 @@ -12633,10 +12648,10 @@ debug_print_init: { tya adc _68+1 sta _68+1 - //SEG451 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG452 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col sta (_68),y - //SEG452 [236] (byte*~) debug_print_init::$71 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG453 [236] (byte*~) debug_print_init::$71 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*3 adc #0 sta _71+1 - //SEG453 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG454 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _72 @@ -12652,10 +12667,10 @@ debug_print_init: { tya adc _72+1 sta _72+1 - //SEG454 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG455 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col sta (_72),y - //SEG455 [239] (byte*~) debug_print_init::$75 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG456 [239] (byte*~) debug_print_init::$75 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*4 adc #0 sta _75+1 - //SEG456 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG457 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _76 @@ -12671,10 +12686,10 @@ debug_print_init: { tya adc _76+1 sta _76+1 - //SEG457 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG458 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col sta (_76),y - //SEG458 [242] (byte*~) debug_print_init::$79 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG459 [242] (byte*~) debug_print_init::$79 ← (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 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*5 adc #0 sta _79+1 - //SEG459 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG460 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _80 @@ -12690,10 +12705,10 @@ debug_print_init: { tya adc _80+1 sta _80+1 - //SEG460 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG461 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col sta (_80),y - //SEG461 [245] (byte*~) debug_print_init::$83 ← (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) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG462 [245] (byte*~) debug_print_init::$83 ← (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) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*6 adc #0 sta _83+1 - //SEG462 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG463 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _84 @@ -12709,10 +12724,10 @@ debug_print_init: { tya adc _84+1 sta _84+1 - //SEG463 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG464 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col sta (_84),y - //SEG464 [248] (byte*~) debug_print_init::$87 ← (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) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG465 [248] (byte*~) debug_print_init::$87 ← (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) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*7 adc #0 sta _87+1 - //SEG465 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG466 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _88 @@ -12728,10 +12743,10 @@ debug_print_init: { tya adc _88+1 sta _88+1 - //SEG466 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG467 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col sta (_88),y - //SEG467 [251] (byte*~) debug_print_init::$91 ← (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) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG468 [251] (byte*~) debug_print_init::$91 ← (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) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*8 adc #0 sta _91+1 - //SEG468 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx + //SEG469 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx txa clc adc _92 @@ -12747,32 +12762,32 @@ debug_print_init: { tya adc _92+1 sta _92+1 - //SEG469 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 + //SEG470 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 lda col sta (_92),y - //SEG470 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuxx=_inc_vbuxx + //SEG471 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG471 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG472 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 beq !b2+ jmp b2 !b2: - //SEG472 debug_print_init::@3 - //SEG473 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG473 debug_print_init::@3 + //SEG474 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 lda #4 clc adc c sta c - //SEG474 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG475 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG475 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG476 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 beq !b1+ jmp b1 !b1: - //SEG476 debug_print_init::@return - //SEG477 [259] return + //SEG477 debug_print_init::@return + //SEG478 [259] return rts str: .text "sx@" str1: .text "sy@" @@ -12787,104 +12802,104 @@ debug_print_init: { str10: .text "xp@" str11: .text "yp@" } -//SEG478 print_str_at +//SEG479 print_str_at // Print a string at a specific screen position print_str_at: { .label at = 9 .label str = 6 - //SEG479 [261] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] - //SEG480 [261] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG481 [261] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy - //SEG482 print_str_at::@1 + //SEG480 [261] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG481 [261] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG482 [261] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG483 print_str_at::@1 b1: - //SEG483 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG484 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG484 print_str_at::@return - //SEG485 [263] return + //SEG485 print_str_at::@return + //SEG486 [263] return rts - //SEG486 print_str_at::@2 + //SEG487 print_str_at::@2 b2: - //SEG487 [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG488 [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (at),y - //SEG488 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 + //SEG489 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG489 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 + //SEG490 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG490 print_cls +//SEG491 print_cls // Clear the screen. Also resets current line/char cursor. 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_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG492 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG493 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 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 - //SEG495 print_cls::@1 + //SEG494 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG495 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG496 print_cls::@1 b1: - //SEG496 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG497 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG497 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG498 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG499 [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_line_cursor+$3e8 bne b1 lda sc cmp #sprites_init::@1] - //SEG504 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 + //SEG504 [274] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG505 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG505 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG506 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG507 sprites_init::@1 + //SEG506 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG507 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG508 sprites_init::@1 b1: - //SEG508 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG509 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_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 - //SEG509 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG510 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG510 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx + //SEG511 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG511 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG512 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG512 sprites_init::@return - //SEG513 [279] return + //SEG513 sprites_init::@return + //SEG514 [279] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/examples/3d/perspective.asm b/src/test/ref/examples/3d/perspective.asm index fcb382b47..5ba771fe6 100644 --- a/src/test/ref/examples/3d/perspective.asm +++ b/src/test/ref/examples/3d/perspective.asm @@ -1,3 +1,7 @@ +// 3D Rotation using a Rotation Matrix +// Based on: +// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt +// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/examples/3d/perspective.log b/src/test/ref/examples/3d/perspective.log index 7520b1316..c8751d300 100644 --- a/src/test/ref/examples/3d/perspective.log +++ b/src/test/ref/examples/3d/perspective.log @@ -1927,11 +1927,16 @@ Allocated zp ZP_BYTE:23 [ mulf_init::$8 ] Allocated zp ZP_BYTE:24 [ mulf_init::$10 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// 3D Rotation using a Rotation Matrix +// Based on: +// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt +// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label xr = $f0 .label yr = $f1 .label zr = $f2 @@ -1940,233 +1945,233 @@ INITIAL ASM .label PERSP_Z = $2400 .label print_char_cursor = 8 .label print_line_cursor = 2 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b27 -//SEG3 @27 +//SEG4 @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 +//SEG5 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))); } } } }} +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @27 to @end [phi:@27->@end] +//SEG7 [3] phi from @27 to @end [phi:@27->@end] bend_from_b27: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] call mulf_init - //SEG11 [85] phi from main to mulf_init [phi:main->mulf_init] + //SEG11 [5] call mulf_init + //SEG12 [85] phi from main to mulf_init [phi:main->mulf_init] mulf_init_from_main: jsr mulf_init jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] *((const word*) psp1#0) ← ((word))(const byte[512]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG14 [6] *((const word*) psp1#0) ← ((word))(const byte[512]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr1 sta psp1+1 - //SEG14 [7] *((const word*) psp2#0) ← ((word))(const byte[512]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG15 [7] *((const word*) psp2#0) ← ((word))(const byte[512]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG15 [8] call print_cls - //SEG16 [79] phi from main::@1 to print_cls [phi:main::@1->print_cls] + //SEG16 [8] call print_cls + //SEG17 [79] phi from main::@1 to print_cls [phi:main::@1->print_cls] print_cls_from_b1: jsr print_cls - //SEG17 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [10] call do_perspective - //SEG20 [12] phi from main::@2 to do_perspective [phi:main::@2->do_perspective] + //SEG20 [10] call do_perspective + //SEG21 [12] phi from main::@2 to do_perspective [phi:main::@2->do_perspective] do_perspective_from_b2: jsr do_perspective jmp breturn - //SEG21 main::@return + //SEG22 main::@return breturn: - //SEG22 [11] return + //SEG23 [11] return rts } -//SEG23 do_perspective +//SEG24 do_perspective do_perspective: { .label y = -$47 .label x = $39 .label z = $36 - //SEG24 [13] call print_str - //SEG25 [44] phi from do_perspective to print_str [phi:do_perspective->print_str] + //SEG25 [13] call print_str + //SEG26 [44] phi from do_perspective to print_str [phi:do_perspective->print_str] print_str_from_do_perspective: - //SEG26 [44] phi (byte*) print_char_cursor#74 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:do_perspective->print_str#0] -- pbuz1=pbuc1 + //SEG27 [44] phi (byte*) print_char_cursor#74 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:do_perspective->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG27 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str [phi:do_perspective->print_str#1] -- pbuz1=pbuc1 + //SEG28 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str [phi:do_perspective->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG28 [14] phi from do_perspective to do_perspective::@1 [phi:do_perspective->do_perspective::@1] + //SEG29 [14] phi from do_perspective to do_perspective::@1 [phi:do_perspective->do_perspective::@1] b1_from_do_perspective: jmp b1 - //SEG29 do_perspective::@1 + //SEG30 do_perspective::@1 b1: - //SEG30 [15] call print_sbyte - //SEG31 [68] phi from do_perspective::@1 to print_sbyte [phi:do_perspective::@1->print_sbyte] + //SEG31 [15] call print_sbyte + //SEG32 [68] phi from do_perspective::@1 to print_sbyte [phi:do_perspective::@1->print_sbyte] print_sbyte_from_b1: - //SEG32 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::x#0 [phi:do_perspective::@1->print_sbyte#0] -- vbsz1=vbsc1 + //SEG33 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::x#0 [phi:do_perspective::@1->print_sbyte#0] -- vbsz1=vbsc1 lda #x sta print_sbyte.b jsr print_sbyte - //SEG33 [16] phi from do_perspective::@1 to do_perspective::@2 [phi:do_perspective::@1->do_perspective::@2] + //SEG34 [16] phi from do_perspective::@1 to do_perspective::@2 [phi:do_perspective::@1->do_perspective::@2] b2_from_b1: jmp b2 - //SEG34 do_perspective::@2 + //SEG35 do_perspective::@2 b2: - //SEG35 [17] call print_str - //SEG36 [44] phi from do_perspective::@2 to print_str [phi:do_perspective::@2->print_str] + //SEG36 [17] call print_str + //SEG37 [44] phi from do_perspective::@2 to print_str [phi:do_perspective::@2->print_str] print_str_from_b2: - //SEG37 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@2->print_str#0] -- register_copy - //SEG38 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@2->print_str#1] -- pbuz1=pbuc1 + //SEG38 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@2->print_str#0] -- register_copy + //SEG39 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG39 [18] phi from do_perspective::@2 to do_perspective::@3 [phi:do_perspective::@2->do_perspective::@3] + //SEG40 [18] phi from do_perspective::@2 to do_perspective::@3 [phi:do_perspective::@2->do_perspective::@3] b3_from_b2: jmp b3 - //SEG40 do_perspective::@3 + //SEG41 do_perspective::@3 b3: - //SEG41 [19] call print_sbyte - //SEG42 [68] phi from do_perspective::@3 to print_sbyte [phi:do_perspective::@3->print_sbyte] + //SEG42 [19] call print_sbyte + //SEG43 [68] phi from do_perspective::@3 to print_sbyte [phi:do_perspective::@3->print_sbyte] print_sbyte_from_b3: - //SEG43 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::y#0 [phi:do_perspective::@3->print_sbyte#0] -- vbsz1=vbsc1 + //SEG44 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::y#0 [phi:do_perspective::@3->print_sbyte#0] -- vbsz1=vbsc1 lda #y sta print_sbyte.b jsr print_sbyte - //SEG44 [20] phi from do_perspective::@3 to do_perspective::@4 [phi:do_perspective::@3->do_perspective::@4] + //SEG45 [20] phi from do_perspective::@3 to do_perspective::@4 [phi:do_perspective::@3->do_perspective::@4] b4_from_b3: jmp b4 - //SEG45 do_perspective::@4 + //SEG46 do_perspective::@4 b4: - //SEG46 [21] call print_str - //SEG47 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] + //SEG47 [21] call print_str + //SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] print_str_from_b4: - //SEG48 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy - //SEG49 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 + //SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy + //SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG50 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] + //SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] b5_from_b4: jmp b5 - //SEG51 do_perspective::@5 + //SEG52 do_perspective::@5 b5: - //SEG52 [23] call print_sbyte - //SEG53 [68] phi from do_perspective::@5 to print_sbyte [phi:do_perspective::@5->print_sbyte] + //SEG53 [23] call print_sbyte + //SEG54 [68] phi from do_perspective::@5 to print_sbyte [phi:do_perspective::@5->print_sbyte] print_sbyte_from_b5: - //SEG54 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::z#0 [phi:do_perspective::@5->print_sbyte#0] -- vbsz1=vbsc1 + //SEG55 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::z#0 [phi:do_perspective::@5->print_sbyte#0] -- vbsz1=vbsc1 lda #z sta print_sbyte.b jsr print_sbyte - //SEG55 [24] phi from do_perspective::@5 to do_perspective::@6 [phi:do_perspective::@5->do_perspective::@6] + //SEG56 [24] phi from do_perspective::@5 to do_perspective::@6 [phi:do_perspective::@5->do_perspective::@6] b6_from_b5: jmp b6 - //SEG56 do_perspective::@6 + //SEG57 do_perspective::@6 b6: - //SEG57 [25] call print_str - //SEG58 [44] phi from do_perspective::@6 to print_str [phi:do_perspective::@6->print_str] + //SEG58 [25] call print_str + //SEG59 [44] phi from do_perspective::@6 to print_str [phi:do_perspective::@6->print_str] print_str_from_b6: - //SEG59 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@6->print_str#0] -- register_copy - //SEG60 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str3 [phi:do_perspective::@6->print_str#1] -- pbuz1=pbuc1 + //SEG60 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@6->print_str#0] -- register_copy + //SEG61 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str3 [phi:do_perspective::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG61 [26] phi from do_perspective::@6 to do_perspective::@7 [phi:do_perspective::@6->do_perspective::@7] + //SEG62 [26] phi from do_perspective::@6 to do_perspective::@7 [phi:do_perspective::@6->do_perspective::@7] b7_from_b6: jmp b7 - //SEG62 do_perspective::@7 + //SEG63 do_perspective::@7 b7: - //SEG63 [27] call perspective + //SEG64 [27] call perspective jsr perspective jmp b8 - //SEG64 do_perspective::@8 + //SEG65 do_perspective::@8 b8: - //SEG65 [28] (byte~) print_byte::b#6 ← (byte)*((const signed byte*) xr#0) -- vbuz1=_deref_pbuc1 + //SEG66 [28] (byte~) print_byte::b#6 ← (byte)*((const signed byte*) xr#0) -- vbuz1=_deref_pbuc1 lda xr sta print_byte.b - //SEG66 [29] call print_byte - //SEG67 [51] phi from do_perspective::@8 to print_byte [phi:do_perspective::@8->print_byte] + //SEG67 [29] call print_byte + //SEG68 [51] phi from do_perspective::@8 to print_byte [phi:do_perspective::@8->print_byte] print_byte_from_b8: - //SEG68 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@8->print_byte#0] -- register_copy - //SEG69 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#6 [phi:do_perspective::@8->print_byte#1] -- register_copy + //SEG69 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@8->print_byte#0] -- register_copy + //SEG70 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#6 [phi:do_perspective::@8->print_byte#1] -- register_copy jsr print_byte - //SEG70 [30] phi from do_perspective::@8 to do_perspective::@9 [phi:do_perspective::@8->do_perspective::@9] + //SEG71 [30] phi from do_perspective::@8 to do_perspective::@9 [phi:do_perspective::@8->do_perspective::@9] b9_from_b8: jmp b9 - //SEG71 do_perspective::@9 + //SEG72 do_perspective::@9 b9: - //SEG72 [31] call print_str - //SEG73 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] + //SEG73 [31] call print_str + //SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] print_str_from_b9: - //SEG74 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy - //SEG75 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 + //SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy + //SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b10 - //SEG76 do_perspective::@10 + //SEG77 do_perspective::@10 b10: - //SEG77 [32] (byte~) print_byte::b#5 ← (byte)*((const signed byte*) yr#0) -- vbuz1=_deref_pbuc1 + //SEG78 [32] (byte~) print_byte::b#5 ← (byte)*((const signed byte*) yr#0) -- vbuz1=_deref_pbuc1 lda yr sta print_byte.b - //SEG78 [33] call print_byte - //SEG79 [51] phi from do_perspective::@10 to print_byte [phi:do_perspective::@10->print_byte] + //SEG79 [33] call print_byte + //SEG80 [51] phi from do_perspective::@10 to print_byte [phi:do_perspective::@10->print_byte] print_byte_from_b10: - //SEG80 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@10->print_byte#0] -- register_copy - //SEG81 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#5 [phi:do_perspective::@10->print_byte#1] -- register_copy + //SEG81 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@10->print_byte#0] -- register_copy + //SEG82 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#5 [phi:do_perspective::@10->print_byte#1] -- register_copy jsr print_byte - //SEG82 [34] phi from do_perspective::@10 to do_perspective::@11 [phi:do_perspective::@10->do_perspective::@11] + //SEG83 [34] phi from do_perspective::@10 to do_perspective::@11 [phi:do_perspective::@10->do_perspective::@11] b11_from_b10: jmp b11 - //SEG83 do_perspective::@11 + //SEG84 do_perspective::@11 b11: - //SEG84 [35] call print_str - //SEG85 [44] phi from do_perspective::@11 to print_str [phi:do_perspective::@11->print_str] + //SEG85 [35] call print_str + //SEG86 [44] phi from do_perspective::@11 to print_str [phi:do_perspective::@11->print_str] print_str_from_b11: - //SEG86 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@11->print_str#0] -- register_copy - //SEG87 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str5 [phi:do_perspective::@11->print_str#1] -- pbuz1=pbuc1 + //SEG87 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@11->print_str#0] -- register_copy + //SEG88 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str5 [phi:do_perspective::@11->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str - //SEG88 [36] phi from do_perspective::@11 to do_perspective::@12 [phi:do_perspective::@11->do_perspective::@12] + //SEG89 [36] phi from do_perspective::@11 to do_perspective::@12 [phi:do_perspective::@11->do_perspective::@12] b12_from_b11: jmp b12 - //SEG89 do_perspective::@12 + //SEG90 do_perspective::@12 b12: - //SEG90 [37] call print_ln - //SEG91 [39] phi from do_perspective::@12 to print_ln [phi:do_perspective::@12->print_ln] + //SEG91 [37] call print_ln + //SEG92 [39] phi from do_perspective::@12 to print_ln [phi:do_perspective::@12->print_ln] print_ln_from_b12: jsr print_ln jmp breturn - //SEG92 do_perspective::@return + //SEG93 do_perspective::@return breturn: - //SEG93 [38] return + //SEG94 [38] return rts str: .text "(@" str1: .text ",@" @@ -2175,24 +2180,24 @@ do_perspective: { str4: .text ",@" str5: .text ")@" } -//SEG94 print_ln +//SEG95 print_ln // Print a newline print_ln: { - //SEG95 [40] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] + //SEG96 [40] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] b1_from_print_ln: - //SEG96 [40] phi (byte*) print_line_cursor#11 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 + //SEG97 [40] phi (byte*) print_line_cursor#11 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jmp b1 - //SEG97 [40] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] + //SEG98 [40] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] b1_from_b1: - //SEG98 [40] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy + //SEG99 [40] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG99 print_ln::@1 + //SEG100 print_ln::@1 b1: - //SEG100 [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG101 [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -2200,7 +2205,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG101 [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG102 [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -2210,131 +2215,131 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG102 print_ln::@return + //SEG103 print_ln::@return breturn: - //SEG103 [43] return + //SEG104 [43] return rts } -//SEG104 print_str +//SEG105 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG105 [45] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG106 [45] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG106 [45] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG107 [45] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG107 [45] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG108 [45] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG108 print_str::@1 + //SEG109 print_str::@1 b1: - //SEG109 [46] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG110 [46] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG110 print_str::@return + //SEG111 print_str::@return breturn: - //SEG111 [47] return + //SEG112 [47] return rts - //SEG112 print_str::@2 + //SEG113 print_str::@2 b2: - //SEG113 [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) -- _deref_pbuz1=_deref_pbuz2 + //SEG114 [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG114 [49] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG115 [49] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG115 [50] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 -- pbuz1=_inc_pbuz1 + //SEG116 [50] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG116 print_byte +//SEG117 print_byte // Print a byte as HEX print_byte: { .label _0 = $12 .label _2 = $13 .label b = 6 - //SEG117 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG118 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG118 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG119 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG119 [54] call print_char - //SEG120 [59] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG120 [54] call print_char + //SEG121 [59] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG121 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#69 [phi:print_byte->print_char#0] -- register_copy - //SEG122 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG122 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#69 [phi:print_byte->print_char#0] -- register_copy + //SEG123 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG123 print_byte::@1 + //SEG124 print_byte::@1 b1: - //SEG124 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG125 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG125 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG126 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG126 [57] call print_char - //SEG127 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG127 [57] call print_char + //SEG128 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG128 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG129 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG129 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG130 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG130 print_byte::@return + //SEG131 print_byte::@return breturn: - //SEG131 [58] return + //SEG132 [58] return rts } -//SEG132 print_char +//SEG133 print_char // Print a single char print_char: { .label ch = 7 - //SEG133 [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + //SEG134 [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG134 [61] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG135 [61] (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 - //SEG135 print_char::@return + //SEG136 print_char::@return breturn: - //SEG136 [62] return + //SEG137 [62] return rts } -//SEG137 perspective +//SEG138 perspective // Apply perspective to a 3d-point. Result is returned in (*xr,*yr) // Implemented in assembler to utilize seriously fast multiplication perspective: { - //SEG138 [63] *((const signed byte*) xr#0) ← (const signed byte) do_perspective::x#0 -- _deref_pbsc1=vbsc2 + //SEG139 [63] *((const signed byte*) xr#0) ← (const signed byte) do_perspective::x#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.x sta xr - //SEG139 [64] *((const signed byte*) yr#0) ← (const signed byte) do_perspective::y#0 -- _deref_pbsc1=vbsc2 + //SEG140 [64] *((const signed byte*) yr#0) ← (const signed byte) do_perspective::y#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.y sta yr - //SEG140 [65] *((const signed byte*) zr#0) ← (const signed byte) do_perspective::z#0 -- _deref_pbsc1=vbsc2 + //SEG141 [65] *((const signed byte*) zr#0) ← (const signed byte) do_perspective::z#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.z sta zr - //SEG141 asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr } + //SEG142 asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr } lda zr sta PP+1 PP: @@ -2355,69 +2360,69 @@ perspective: { adc #$80 sta xr jmp breturn - //SEG142 perspective::@return + //SEG143 perspective::@return breturn: - //SEG143 [67] return + //SEG144 [67] return rts } -//SEG144 print_sbyte +//SEG145 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = $a - //SEG145 [69] if((signed byte) print_sbyte::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG146 [69] if((signed byte) print_sbyte::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG146 [70] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG147 [70] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG147 print_sbyte::@3 + //SEG148 print_sbyte::@3 b3: - //SEG148 [71] call print_char - //SEG149 [59] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG149 [71] call print_char + //SEG150 [59] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG150 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG151 [59] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG151 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG152 [59] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG152 [72] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG153 [72] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG153 [72] phi (signed byte) print_sbyte::b#6 = (signed byte) print_sbyte::b#4 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG154 [72] phi (signed byte) print_sbyte::b#6 = (signed byte) print_sbyte::b#4 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG154 print_sbyte::@2 + //SEG155 print_sbyte::@2 b2: - //SEG155 [73] (byte~) print_byte::b#7 ← (byte)(signed byte) print_sbyte::b#6 -- vbuz1=vbuz2 + //SEG156 [73] (byte~) print_byte::b#7 ← (byte)(signed byte) print_sbyte::b#6 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG156 [74] call print_byte - //SEG157 [51] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG157 [74] call print_byte + //SEG158 [51] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG158 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#12 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG159 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#7 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG159 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#12 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG160 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#7 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG160 print_sbyte::@return + //SEG161 print_sbyte::@return breturn: - //SEG161 [75] return + //SEG162 [75] return rts - //SEG162 [76] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG163 [76] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG163 print_sbyte::@1 + //SEG164 print_sbyte::@1 b1: - //SEG164 [77] call print_char - //SEG165 [59] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG165 [77] call print_char + //SEG166 [59] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG166 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG167 [59] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG167 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG168 [59] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b5 - //SEG168 print_sbyte::@5 + //SEG169 print_sbyte::@5 b5: - //SEG169 [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 -- vbsz1=_neg_vbsz1 + //SEG170 [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -2425,34 +2430,34 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG170 print_cls +//SEG171 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $b - //SEG171 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG172 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG172 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG173 [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 - //SEG173 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG174 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG174 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG175 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG175 print_cls::@1 + //SEG176 print_cls::@1 b1: - //SEG176 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG177 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG177 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG178 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG178 [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 + //SEG179 [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 @@ -2460,12 +2465,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG179 print_cls::@return + //SEG180 print_cls::@return breturn: - //SEG180 [84] return + //SEG181 [84] return rts } -//SEG181 mulf_init +//SEG182 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x) and g(x) = f(1-x) mulf_init: { .label _2 = $15 @@ -2476,88 +2481,88 @@ mulf_init: { .label sqr = $d .label add = $10 .label i = $f - //SEG182 [86] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG183 [86] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG183 [86] phi (signed word) mulf_init::add#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#0] -- vwsz1=vbuc1 + //SEG184 [86] phi (signed word) mulf_init::add#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#0] -- vwsz1=vbuc1 lda #<1 sta add lda #>1 sta add+1 - //SEG184 [86] phi (byte) mulf_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#1] -- vbuz1=vbuc1 + //SEG185 [86] phi (byte) mulf_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG185 [86] phi (signed word) mulf_init::sqr#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#2] -- vwsz1=vbuc1 + //SEG186 [86] phi (signed word) mulf_init::sqr#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#2] -- vwsz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 jmp b1 - //SEG186 [86] phi from mulf_init::@1 to mulf_init::@1 [phi:mulf_init::@1->mulf_init::@1] + //SEG187 [86] phi from mulf_init::@1 to mulf_init::@1 [phi:mulf_init::@1->mulf_init::@1] b1_from_b1: - //SEG187 [86] phi (signed word) mulf_init::add#2 = (signed word) mulf_init::add#1 [phi:mulf_init::@1->mulf_init::@1#0] -- register_copy - //SEG188 [86] phi (byte) mulf_init::i#2 = (byte) mulf_init::i#1 [phi:mulf_init::@1->mulf_init::@1#1] -- register_copy - //SEG189 [86] phi (signed word) mulf_init::sqr#2 = (signed word) mulf_init::sqr#1 [phi:mulf_init::@1->mulf_init::@1#2] -- register_copy + //SEG188 [86] phi (signed word) mulf_init::add#2 = (signed word) mulf_init::add#1 [phi:mulf_init::@1->mulf_init::@1#0] -- register_copy + //SEG189 [86] phi (byte) mulf_init::i#2 = (byte) mulf_init::i#1 [phi:mulf_init::@1->mulf_init::@1#1] -- register_copy + //SEG190 [86] phi (signed word) mulf_init::sqr#2 = (signed word) mulf_init::sqr#1 [phi:mulf_init::@1->mulf_init::@1#2] -- register_copy jmp b1 - //SEG190 mulf_init::@1 + //SEG191 mulf_init::@1 b1: - //SEG191 [87] (byte) mulf_init::val#0 ← > (signed word) mulf_init::sqr#2 -- vbuz1=_hi_vwsz2 + //SEG192 [87] (byte) mulf_init::val#0 ← > (signed word) mulf_init::sqr#2 -- vbuz1=_hi_vwsz2 lda sqr+1 sta val - //SEG192 [88] *((const byte[512]) mulf_sqr1#0 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG193 [88] *((const byte[512]) mulf_sqr1#0 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda val ldy i sta mulf_sqr1,y - //SEG193 [89] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG194 [89] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda val ldy i sta mulf_sqr1+$100,y - //SEG194 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuz1=_neg_vbuz2 + //SEG195 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuz1=_neg_vbuz2 lda i eor #$ff clc adc #1 sta _2 - //SEG195 [91] *((const byte[512]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG196 [91] *((const byte[512]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda val ldy _2 sta mulf_sqr1,y - //SEG196 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuz1=_neg_vbuz2 + //SEG197 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuz1=_neg_vbuz2 lda i eor #$ff clc adc #1 sta _4 - //SEG197 [93] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG198 [93] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda val ldy _4 sta mulf_sqr1+$100,y - //SEG198 [94] *((const byte[512]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG199 [94] *((const byte[512]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda val ldy i sta mulf_sqr2+1,y - //SEG199 [95] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG200 [95] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda val ldy i sta mulf_sqr2+$100+1,y - //SEG200 [96] (byte/signed word/word/dword/signed dword~) mulf_init::$8 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG201 [96] (byte/signed word/word/dword/signed dword~) mulf_init::$8 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuz1=vbuc1_minus_vbuz2 lda #1 sec sbc i sta _8 - //SEG201 [97] *((const byte[512]) mulf_sqr2#0 + (byte/signed word/word/dword/signed dword~) mulf_init::$8) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG202 [97] *((const byte[512]) mulf_sqr2#0 + (byte/signed word/word/dword/signed dword~) mulf_init::$8) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda val ldy _8 sta mulf_sqr2,y - //SEG202 [98] (byte/signed word/word/dword/signed dword~) mulf_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG203 [98] (byte/signed word/word/dword/signed dword~) mulf_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuz1=vbuc1_minus_vbuz2 lda #1 sec sbc i sta _10 - //SEG203 [99] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256 + (byte/signed word/word/dword/signed dword~) mulf_init::$10) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG204 [99] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256 + (byte/signed word/word/dword/signed dword~) mulf_init::$10) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda val ldy _10 sta mulf_sqr2+$100,y - //SEG204 [100] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 -- vwsz1=vwsz1_plus_vwsz2 + //SEG205 [100] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 -- vwsz1=vwsz1_plus_vwsz2 lda sqr clc adc add @@ -2565,7 +2570,7 @@ mulf_init: { lda sqr+1 adc add+1 sta sqr+1 - //SEG205 [101] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwsz1=vwsz1_plus_2 + //SEG206 [101] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwsz1=vwsz1_plus_2 lda add clc adc #2 @@ -2573,16 +2578,16 @@ mulf_init: { bcc !+ inc add+1 !: - //SEG206 [102] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG207 [102] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG207 [103] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) 129) goto mulf_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG208 [103] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) 129) goto mulf_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$81 bne b1_from_b1 jmp breturn - //SEG208 mulf_init::@return + //SEG209 mulf_init::@return breturn: - //SEG209 [104] return + //SEG210 [104] return rts } print_hextab: .text "0123456789abcdef" @@ -2736,11 +2741,16 @@ Allocated (was zp ZP_WORD:8) zp ZP_WORD:4 [ print_char_cursor#44 print_char_curs Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:6 [ mulf_init::val#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// 3D Rotation using a Rotation Matrix +// Based on: +// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt +// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label xr = $f0 .label yr = $f1 .label zr = $f2 @@ -2749,228 +2759,228 @@ ASSEMBLER BEFORE OPTIMIZATION .label PERSP_Z = $2400 .label print_char_cursor = 4 .label print_line_cursor = 2 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b27 -//SEG3 @27 +//SEG4 @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 +//SEG5 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))); } } } }} +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @27 to @end [phi:@27->@end] +//SEG7 [3] phi from @27 to @end [phi:@27->@end] bend_from_b27: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] call mulf_init - //SEG11 [85] phi from main to mulf_init [phi:main->mulf_init] + //SEG11 [5] call mulf_init + //SEG12 [85] phi from main to mulf_init [phi:main->mulf_init] mulf_init_from_main: jsr mulf_init jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] *((const word*) psp1#0) ← ((word))(const byte[512]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG14 [6] *((const word*) psp1#0) ← ((word))(const byte[512]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr1 sta psp1+1 - //SEG14 [7] *((const word*) psp2#0) ← ((word))(const byte[512]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG15 [7] *((const word*) psp2#0) ← ((word))(const byte[512]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG15 [8] call print_cls - //SEG16 [79] phi from main::@1 to print_cls [phi:main::@1->print_cls] + //SEG16 [8] call print_cls + //SEG17 [79] phi from main::@1 to print_cls [phi:main::@1->print_cls] print_cls_from_b1: jsr print_cls - //SEG17 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [10] call do_perspective - //SEG20 [12] phi from main::@2 to do_perspective [phi:main::@2->do_perspective] + //SEG20 [10] call do_perspective + //SEG21 [12] phi from main::@2 to do_perspective [phi:main::@2->do_perspective] do_perspective_from_b2: jsr do_perspective jmp breturn - //SEG21 main::@return + //SEG22 main::@return breturn: - //SEG22 [11] return + //SEG23 [11] return rts } -//SEG23 do_perspective +//SEG24 do_perspective do_perspective: { .label y = -$47 .label x = $39 .label z = $36 - //SEG24 [13] call print_str - //SEG25 [44] phi from do_perspective to print_str [phi:do_perspective->print_str] + //SEG25 [13] call print_str + //SEG26 [44] phi from do_perspective to print_str [phi:do_perspective->print_str] print_str_from_do_perspective: - //SEG26 [44] phi (byte*) print_char_cursor#74 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:do_perspective->print_str#0] -- pbuz1=pbuc1 + //SEG27 [44] phi (byte*) print_char_cursor#74 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:do_perspective->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG27 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str [phi:do_perspective->print_str#1] -- pbuz1=pbuc1 + //SEG28 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str [phi:do_perspective->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG28 [14] phi from do_perspective to do_perspective::@1 [phi:do_perspective->do_perspective::@1] + //SEG29 [14] phi from do_perspective to do_perspective::@1 [phi:do_perspective->do_perspective::@1] b1_from_do_perspective: jmp b1 - //SEG29 do_perspective::@1 + //SEG30 do_perspective::@1 b1: - //SEG30 [15] call print_sbyte - //SEG31 [68] phi from do_perspective::@1 to print_sbyte [phi:do_perspective::@1->print_sbyte] + //SEG31 [15] call print_sbyte + //SEG32 [68] phi from do_perspective::@1 to print_sbyte [phi:do_perspective::@1->print_sbyte] print_sbyte_from_b1: - //SEG32 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::x#0 [phi:do_perspective::@1->print_sbyte#0] -- vbsxx=vbsc1 + //SEG33 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::x#0 [phi:do_perspective::@1->print_sbyte#0] -- vbsxx=vbsc1 ldx #x jsr print_sbyte - //SEG33 [16] phi from do_perspective::@1 to do_perspective::@2 [phi:do_perspective::@1->do_perspective::@2] + //SEG34 [16] phi from do_perspective::@1 to do_perspective::@2 [phi:do_perspective::@1->do_perspective::@2] b2_from_b1: jmp b2 - //SEG34 do_perspective::@2 + //SEG35 do_perspective::@2 b2: - //SEG35 [17] call print_str - //SEG36 [44] phi from do_perspective::@2 to print_str [phi:do_perspective::@2->print_str] + //SEG36 [17] call print_str + //SEG37 [44] phi from do_perspective::@2 to print_str [phi:do_perspective::@2->print_str] print_str_from_b2: - //SEG37 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@2->print_str#0] -- register_copy - //SEG38 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@2->print_str#1] -- pbuz1=pbuc1 + //SEG38 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@2->print_str#0] -- register_copy + //SEG39 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG39 [18] phi from do_perspective::@2 to do_perspective::@3 [phi:do_perspective::@2->do_perspective::@3] + //SEG40 [18] phi from do_perspective::@2 to do_perspective::@3 [phi:do_perspective::@2->do_perspective::@3] b3_from_b2: jmp b3 - //SEG40 do_perspective::@3 + //SEG41 do_perspective::@3 b3: - //SEG41 [19] call print_sbyte - //SEG42 [68] phi from do_perspective::@3 to print_sbyte [phi:do_perspective::@3->print_sbyte] + //SEG42 [19] call print_sbyte + //SEG43 [68] phi from do_perspective::@3 to print_sbyte [phi:do_perspective::@3->print_sbyte] print_sbyte_from_b3: - //SEG43 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::y#0 [phi:do_perspective::@3->print_sbyte#0] -- vbsxx=vbsc1 + //SEG44 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::y#0 [phi:do_perspective::@3->print_sbyte#0] -- vbsxx=vbsc1 ldx #y jsr print_sbyte - //SEG44 [20] phi from do_perspective::@3 to do_perspective::@4 [phi:do_perspective::@3->do_perspective::@4] + //SEG45 [20] phi from do_perspective::@3 to do_perspective::@4 [phi:do_perspective::@3->do_perspective::@4] b4_from_b3: jmp b4 - //SEG45 do_perspective::@4 + //SEG46 do_perspective::@4 b4: - //SEG46 [21] call print_str - //SEG47 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] + //SEG47 [21] call print_str + //SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] print_str_from_b4: - //SEG48 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy - //SEG49 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 + //SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy + //SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG50 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] + //SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] b5_from_b4: jmp b5 - //SEG51 do_perspective::@5 + //SEG52 do_perspective::@5 b5: - //SEG52 [23] call print_sbyte - //SEG53 [68] phi from do_perspective::@5 to print_sbyte [phi:do_perspective::@5->print_sbyte] + //SEG53 [23] call print_sbyte + //SEG54 [68] phi from do_perspective::@5 to print_sbyte [phi:do_perspective::@5->print_sbyte] print_sbyte_from_b5: - //SEG54 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::z#0 [phi:do_perspective::@5->print_sbyte#0] -- vbsxx=vbsc1 + //SEG55 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::z#0 [phi:do_perspective::@5->print_sbyte#0] -- vbsxx=vbsc1 ldx #z jsr print_sbyte - //SEG55 [24] phi from do_perspective::@5 to do_perspective::@6 [phi:do_perspective::@5->do_perspective::@6] + //SEG56 [24] phi from do_perspective::@5 to do_perspective::@6 [phi:do_perspective::@5->do_perspective::@6] b6_from_b5: jmp b6 - //SEG56 do_perspective::@6 + //SEG57 do_perspective::@6 b6: - //SEG57 [25] call print_str - //SEG58 [44] phi from do_perspective::@6 to print_str [phi:do_perspective::@6->print_str] + //SEG58 [25] call print_str + //SEG59 [44] phi from do_perspective::@6 to print_str [phi:do_perspective::@6->print_str] print_str_from_b6: - //SEG59 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@6->print_str#0] -- register_copy - //SEG60 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str3 [phi:do_perspective::@6->print_str#1] -- pbuz1=pbuc1 + //SEG60 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@6->print_str#0] -- register_copy + //SEG61 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str3 [phi:do_perspective::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG61 [26] phi from do_perspective::@6 to do_perspective::@7 [phi:do_perspective::@6->do_perspective::@7] + //SEG62 [26] phi from do_perspective::@6 to do_perspective::@7 [phi:do_perspective::@6->do_perspective::@7] b7_from_b6: jmp b7 - //SEG62 do_perspective::@7 + //SEG63 do_perspective::@7 b7: - //SEG63 [27] call perspective + //SEG64 [27] call perspective jsr perspective jmp b8 - //SEG64 do_perspective::@8 + //SEG65 do_perspective::@8 b8: - //SEG65 [28] (byte~) print_byte::b#6 ← (byte)*((const signed byte*) xr#0) -- vbuxx=_deref_pbuc1 + //SEG66 [28] (byte~) print_byte::b#6 ← (byte)*((const signed byte*) xr#0) -- vbuxx=_deref_pbuc1 ldx xr - //SEG66 [29] call print_byte - //SEG67 [51] phi from do_perspective::@8 to print_byte [phi:do_perspective::@8->print_byte] + //SEG67 [29] call print_byte + //SEG68 [51] phi from do_perspective::@8 to print_byte [phi:do_perspective::@8->print_byte] print_byte_from_b8: - //SEG68 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@8->print_byte#0] -- register_copy - //SEG69 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#6 [phi:do_perspective::@8->print_byte#1] -- register_copy + //SEG69 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@8->print_byte#0] -- register_copy + //SEG70 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#6 [phi:do_perspective::@8->print_byte#1] -- register_copy jsr print_byte - //SEG70 [30] phi from do_perspective::@8 to do_perspective::@9 [phi:do_perspective::@8->do_perspective::@9] + //SEG71 [30] phi from do_perspective::@8 to do_perspective::@9 [phi:do_perspective::@8->do_perspective::@9] b9_from_b8: jmp b9 - //SEG71 do_perspective::@9 + //SEG72 do_perspective::@9 b9: - //SEG72 [31] call print_str - //SEG73 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] + //SEG73 [31] call print_str + //SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] print_str_from_b9: - //SEG74 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy - //SEG75 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 + //SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy + //SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b10 - //SEG76 do_perspective::@10 + //SEG77 do_perspective::@10 b10: - //SEG77 [32] (byte~) print_byte::b#5 ← (byte)*((const signed byte*) yr#0) -- vbuxx=_deref_pbuc1 + //SEG78 [32] (byte~) print_byte::b#5 ← (byte)*((const signed byte*) yr#0) -- vbuxx=_deref_pbuc1 ldx yr - //SEG78 [33] call print_byte - //SEG79 [51] phi from do_perspective::@10 to print_byte [phi:do_perspective::@10->print_byte] + //SEG79 [33] call print_byte + //SEG80 [51] phi from do_perspective::@10 to print_byte [phi:do_perspective::@10->print_byte] print_byte_from_b10: - //SEG80 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@10->print_byte#0] -- register_copy - //SEG81 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#5 [phi:do_perspective::@10->print_byte#1] -- register_copy + //SEG81 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@10->print_byte#0] -- register_copy + //SEG82 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#5 [phi:do_perspective::@10->print_byte#1] -- register_copy jsr print_byte - //SEG82 [34] phi from do_perspective::@10 to do_perspective::@11 [phi:do_perspective::@10->do_perspective::@11] + //SEG83 [34] phi from do_perspective::@10 to do_perspective::@11 [phi:do_perspective::@10->do_perspective::@11] b11_from_b10: jmp b11 - //SEG83 do_perspective::@11 + //SEG84 do_perspective::@11 b11: - //SEG84 [35] call print_str - //SEG85 [44] phi from do_perspective::@11 to print_str [phi:do_perspective::@11->print_str] + //SEG85 [35] call print_str + //SEG86 [44] phi from do_perspective::@11 to print_str [phi:do_perspective::@11->print_str] print_str_from_b11: - //SEG86 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@11->print_str#0] -- register_copy - //SEG87 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str5 [phi:do_perspective::@11->print_str#1] -- pbuz1=pbuc1 + //SEG87 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@11->print_str#0] -- register_copy + //SEG88 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str5 [phi:do_perspective::@11->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str - //SEG88 [36] phi from do_perspective::@11 to do_perspective::@12 [phi:do_perspective::@11->do_perspective::@12] + //SEG89 [36] phi from do_perspective::@11 to do_perspective::@12 [phi:do_perspective::@11->do_perspective::@12] b12_from_b11: jmp b12 - //SEG89 do_perspective::@12 + //SEG90 do_perspective::@12 b12: - //SEG90 [37] call print_ln - //SEG91 [39] phi from do_perspective::@12 to print_ln [phi:do_perspective::@12->print_ln] + //SEG91 [37] call print_ln + //SEG92 [39] phi from do_perspective::@12 to print_ln [phi:do_perspective::@12->print_ln] print_ln_from_b12: jsr print_ln jmp breturn - //SEG92 do_perspective::@return + //SEG93 do_perspective::@return breturn: - //SEG93 [38] return + //SEG94 [38] return rts str: .text "(@" str1: .text ",@" @@ -2979,24 +2989,24 @@ do_perspective: { str4: .text ",@" str5: .text ")@" } -//SEG94 print_ln +//SEG95 print_ln // Print a newline print_ln: { - //SEG95 [40] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] + //SEG96 [40] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] b1_from_print_ln: - //SEG96 [40] phi (byte*) print_line_cursor#11 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 + //SEG97 [40] phi (byte*) print_line_cursor#11 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jmp b1 - //SEG97 [40] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] + //SEG98 [40] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] b1_from_b1: - //SEG98 [40] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy + //SEG99 [40] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG99 print_ln::@1 + //SEG100 print_ln::@1 b1: - //SEG100 [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG101 [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -3004,7 +3014,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG101 [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG102 [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -3014,122 +3024,122 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG102 print_ln::@return + //SEG103 print_ln::@return breturn: - //SEG103 [43] return + //SEG104 [43] return rts } -//SEG104 print_str +//SEG105 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG105 [45] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG106 [45] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG106 [45] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG107 [45] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG107 [45] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG108 [45] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG108 print_str::@1 + //SEG109 print_str::@1 b1: - //SEG109 [46] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG110 [46] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG110 print_str::@return + //SEG111 print_str::@return breturn: - //SEG111 [47] return + //SEG112 [47] return rts - //SEG112 print_str::@2 + //SEG113 print_str::@2 b2: - //SEG113 [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) -- _deref_pbuz1=_deref_pbuz2 + //SEG114 [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG114 [49] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG115 [49] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG115 [50] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 -- pbuz1=_inc_pbuz1 + //SEG116 [50] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG116 print_byte +//SEG117 print_byte // Print a byte as HEX print_byte: { - //SEG117 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG118 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG118 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG119 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG119 [54] call print_char - //SEG120 [59] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG120 [54] call print_char + //SEG121 [59] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG121 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#69 [phi:print_byte->print_char#0] -- register_copy - //SEG122 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG122 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#69 [phi:print_byte->print_char#0] -- register_copy + //SEG123 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG123 print_byte::@1 + //SEG124 print_byte::@1 b1: - //SEG124 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG125 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG125 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG126 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG126 [57] call print_char - //SEG127 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG127 [57] call print_char + //SEG128 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG128 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG129 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG129 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG130 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG130 print_byte::@return + //SEG131 print_byte::@return breturn: - //SEG131 [58] return + //SEG132 [58] return rts } -//SEG132 print_char +//SEG133 print_char // Print a single char print_char: { - //SEG133 [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG134 [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG134 [61] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG135 [61] (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 - //SEG135 print_char::@return + //SEG136 print_char::@return breturn: - //SEG136 [62] return + //SEG137 [62] return rts } -//SEG137 perspective +//SEG138 perspective // Apply perspective to a 3d-point. Result is returned in (*xr,*yr) // Implemented in assembler to utilize seriously fast multiplication perspective: { - //SEG138 [63] *((const signed byte*) xr#0) ← (const signed byte) do_perspective::x#0 -- _deref_pbsc1=vbsc2 + //SEG139 [63] *((const signed byte*) xr#0) ← (const signed byte) do_perspective::x#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.x sta xr - //SEG139 [64] *((const signed byte*) yr#0) ← (const signed byte) do_perspective::y#0 -- _deref_pbsc1=vbsc2 + //SEG140 [64] *((const signed byte*) yr#0) ← (const signed byte) do_perspective::y#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.y sta yr - //SEG140 [65] *((const signed byte*) zr#0) ← (const signed byte) do_perspective::z#0 -- _deref_pbsc1=vbsc2 + //SEG141 [65] *((const signed byte*) zr#0) ← (const signed byte) do_perspective::z#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.z sta zr - //SEG141 asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr } + //SEG142 asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr } lda zr sta PP+1 PP: @@ -3150,64 +3160,64 @@ perspective: { adc #$80 sta xr jmp breturn - //SEG142 perspective::@return + //SEG143 perspective::@return breturn: - //SEG143 [67] return + //SEG144 [67] return rts } -//SEG144 print_sbyte +//SEG145 print_sbyte // Print a signed byte as HEX print_sbyte: { - //SEG145 [69] if((signed byte) print_sbyte::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + //SEG146 [69] if((signed byte) print_sbyte::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1_from_print_sbyte - //SEG146 [70] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG147 [70] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG147 print_sbyte::@3 + //SEG148 print_sbyte::@3 b3: - //SEG148 [71] call print_char - //SEG149 [59] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG149 [71] call print_char + //SEG150 [59] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG150 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG151 [59] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG151 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG152 [59] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG152 [72] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG153 [72] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG153 [72] phi (signed byte) print_sbyte::b#6 = (signed byte) print_sbyte::b#4 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG154 [72] phi (signed byte) print_sbyte::b#6 = (signed byte) print_sbyte::b#4 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG154 print_sbyte::@2 + //SEG155 print_sbyte::@2 b2: - //SEG155 [73] (byte~) print_byte::b#7 ← (byte)(signed byte) print_sbyte::b#6 - //SEG156 [74] call print_byte - //SEG157 [51] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG156 [73] (byte~) print_byte::b#7 ← (byte)(signed byte) print_sbyte::b#6 + //SEG157 [74] call print_byte + //SEG158 [51] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG158 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#12 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG159 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#7 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG159 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#12 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG160 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#7 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG160 print_sbyte::@return + //SEG161 print_sbyte::@return breturn: - //SEG161 [75] return + //SEG162 [75] return rts - //SEG162 [76] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG163 [76] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG163 print_sbyte::@1 + //SEG164 print_sbyte::@1 b1: - //SEG164 [77] call print_char - //SEG165 [59] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG165 [77] call print_char + //SEG166 [59] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG166 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG167 [59] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG167 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG168 [59] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b5 - //SEG168 print_sbyte::@5 + //SEG169 print_sbyte::@5 b5: - //SEG169 [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 -- vbsxx=_neg_vbsxx + //SEG170 [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -3215,34 +3225,34 @@ print_sbyte: { tax jmp b2_from_b5 } -//SEG170 print_cls +//SEG171 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG171 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG172 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG172 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG173 [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 - //SEG173 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG174 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG174 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG175 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG175 print_cls::@1 + //SEG176 print_cls::@1 b1: - //SEG176 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG177 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG177 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG178 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG178 [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 + //SEG179 [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 @@ -3250,92 +3260,92 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG179 print_cls::@return + //SEG180 print_cls::@return breturn: - //SEG180 [84] return + //SEG181 [84] return rts } -//SEG181 mulf_init +//SEG182 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x) and g(x) = f(1-x) mulf_init: { .label val = 6 .label sqr = 2 .label add = 4 - //SEG182 [86] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG183 [86] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG183 [86] phi (signed word) mulf_init::add#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#0] -- vwsz1=vbuc1 + //SEG184 [86] phi (signed word) mulf_init::add#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#0] -- vwsz1=vbuc1 lda #<1 sta add lda #>1 sta add+1 - //SEG184 [86] phi (byte) mulf_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#1] -- vbuxx=vbuc1 + //SEG185 [86] phi (byte) mulf_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG185 [86] phi (signed word) mulf_init::sqr#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#2] -- vwsz1=vbuc1 + //SEG186 [86] phi (signed word) mulf_init::sqr#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#2] -- vwsz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 jmp b1 - //SEG186 [86] phi from mulf_init::@1 to mulf_init::@1 [phi:mulf_init::@1->mulf_init::@1] + //SEG187 [86] phi from mulf_init::@1 to mulf_init::@1 [phi:mulf_init::@1->mulf_init::@1] b1_from_b1: - //SEG187 [86] phi (signed word) mulf_init::add#2 = (signed word) mulf_init::add#1 [phi:mulf_init::@1->mulf_init::@1#0] -- register_copy - //SEG188 [86] phi (byte) mulf_init::i#2 = (byte) mulf_init::i#1 [phi:mulf_init::@1->mulf_init::@1#1] -- register_copy - //SEG189 [86] phi (signed word) mulf_init::sqr#2 = (signed word) mulf_init::sqr#1 [phi:mulf_init::@1->mulf_init::@1#2] -- register_copy + //SEG188 [86] phi (signed word) mulf_init::add#2 = (signed word) mulf_init::add#1 [phi:mulf_init::@1->mulf_init::@1#0] -- register_copy + //SEG189 [86] phi (byte) mulf_init::i#2 = (byte) mulf_init::i#1 [phi:mulf_init::@1->mulf_init::@1#1] -- register_copy + //SEG190 [86] phi (signed word) mulf_init::sqr#2 = (signed word) mulf_init::sqr#1 [phi:mulf_init::@1->mulf_init::@1#2] -- register_copy jmp b1 - //SEG190 mulf_init::@1 + //SEG191 mulf_init::@1 b1: - //SEG191 [87] (byte) mulf_init::val#0 ← > (signed word) mulf_init::sqr#2 -- vbuz1=_hi_vwsz2 + //SEG192 [87] (byte) mulf_init::val#0 ← > (signed word) mulf_init::sqr#2 -- vbuz1=_hi_vwsz2 lda sqr+1 sta val - //SEG192 [88] *((const byte[512]) mulf_sqr1#0 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG193 [88] *((const byte[512]) mulf_sqr1#0 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda val sta mulf_sqr1,x - //SEG193 [89] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG194 [89] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda val sta mulf_sqr1+$100,x - //SEG194 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx + //SEG195 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx txa eor #$ff clc adc #1 - //SEG195 [91] *((const byte[512]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG196 [91] *((const byte[512]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda val sta mulf_sqr1,y - //SEG196 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx + //SEG197 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx txa eor #$ff clc adc #1 - //SEG197 [93] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG198 [93] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda val sta mulf_sqr1+$100,y - //SEG198 [94] *((const byte[512]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG199 [94] *((const byte[512]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda val sta mulf_sqr2+1,x - //SEG199 [95] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG200 [95] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda val sta mulf_sqr2+$100+1,x - //SEG200 [96] (byte/signed word/word/dword/signed dword~) mulf_init::$8 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuaa=vbuc1_minus_vbuxx + //SEG201 [96] (byte/signed word/word/dword/signed dword~) mulf_init::$8 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuaa=vbuc1_minus_vbuxx txa eor #$ff clc adc #1+1 - //SEG201 [97] *((const byte[512]) mulf_sqr2#0 + (byte/signed word/word/dword/signed dword~) mulf_init::$8) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG202 [97] *((const byte[512]) mulf_sqr2#0 + (byte/signed word/word/dword/signed dword~) mulf_init::$8) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda val sta mulf_sqr2,y - //SEG202 [98] (byte/signed word/word/dword/signed dword~) mulf_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuaa=vbuc1_minus_vbuxx + //SEG203 [98] (byte/signed word/word/dword/signed dword~) mulf_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuaa=vbuc1_minus_vbuxx txa eor #$ff clc adc #1+1 - //SEG203 [99] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256 + (byte/signed word/word/dword/signed dword~) mulf_init::$10) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG204 [99] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256 + (byte/signed word/word/dword/signed dword~) mulf_init::$10) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda val sta mulf_sqr2+$100,y - //SEG204 [100] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 -- vwsz1=vwsz1_plus_vwsz2 + //SEG205 [100] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 -- vwsz1=vwsz1_plus_vwsz2 lda sqr clc adc add @@ -3343,7 +3353,7 @@ mulf_init: { lda sqr+1 adc add+1 sta sqr+1 - //SEG205 [101] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwsz1=vwsz1_plus_2 + //SEG206 [101] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwsz1=vwsz1_plus_2 lda add clc adc #2 @@ -3351,15 +3361,15 @@ mulf_init: { bcc !+ inc add+1 !: - //SEG206 [102] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 -- vbuxx=_inc_vbuxx + //SEG207 [102] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG207 [103] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) 129) goto mulf_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG208 [103] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) 129) goto mulf_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$81 bne b1_from_b1 jmp breturn - //SEG208 mulf_init::@return + //SEG209 mulf_init::@return breturn: - //SEG209 [104] return + //SEG210 [104] return rts } print_hextab: .text "0123456789abcdef" @@ -3759,11 +3769,16 @@ reg byte a [ mulf_init::$10 ] FINAL ASSEMBLER Score: 3781 -//SEG0 Basic Upstart +//SEG0 File Comments +// 3D Rotation using a Rotation Matrix +// Based on: +// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt +// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label xr = $f0 .label yr = $f1 .label zr = $f2 @@ -3772,163 +3787,163 @@ Score: 3781 .label PERSP_Z = $2400 .label print_char_cursor = 4 .label print_line_cursor = 2 -//SEG2 @begin -//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 -//SEG6 [3] phi from @27 to @end [phi:@27->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 @27 +//SEG5 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))); } } } }} +//SEG6 [2] call main +//SEG7 [3] phi from @27 to @end [phi:@27->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] call mulf_init - //SEG11 [85] phi from main to mulf_init [phi:main->mulf_init] + //SEG11 [5] call mulf_init + //SEG12 [85] phi from main to mulf_init [phi:main->mulf_init] jsr mulf_init - //SEG12 main::@1 - //SEG13 [6] *((const word*) psp1#0) ← ((word))(const byte[512]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG13 main::@1 + //SEG14 [6] *((const word*) psp1#0) ← ((word))(const byte[512]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr1 sta psp1+1 - //SEG14 [7] *((const word*) psp2#0) ← ((word))(const byte[512]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG15 [7] *((const word*) psp2#0) ← ((word))(const byte[512]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG15 [8] call print_cls - //SEG16 [79] phi from main::@1 to print_cls [phi:main::@1->print_cls] + //SEG16 [8] call print_cls + //SEG17 [79] phi from main::@1 to print_cls [phi:main::@1->print_cls] jsr print_cls - //SEG17 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG18 main::@2 - //SEG19 [10] call do_perspective - //SEG20 [12] phi from main::@2 to do_perspective [phi:main::@2->do_perspective] + //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 main::@2 + //SEG20 [10] call do_perspective + //SEG21 [12] phi from main::@2 to do_perspective [phi:main::@2->do_perspective] jsr do_perspective - //SEG21 main::@return - //SEG22 [11] return + //SEG22 main::@return + //SEG23 [11] return rts } -//SEG23 do_perspective +//SEG24 do_perspective do_perspective: { .label y = -$47 .label x = $39 .label z = $36 - //SEG24 [13] call print_str - //SEG25 [44] phi from do_perspective to print_str [phi:do_perspective->print_str] - //SEG26 [44] phi (byte*) print_char_cursor#74 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:do_perspective->print_str#0] -- pbuz1=pbuc1 + //SEG25 [13] call print_str + //SEG26 [44] phi from do_perspective to print_str [phi:do_perspective->print_str] + //SEG27 [44] phi (byte*) print_char_cursor#74 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:do_perspective->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG27 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str [phi:do_perspective->print_str#1] -- pbuz1=pbuc1 + //SEG28 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str [phi:do_perspective->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG28 [14] phi from do_perspective to do_perspective::@1 [phi:do_perspective->do_perspective::@1] - //SEG29 do_perspective::@1 - //SEG30 [15] call print_sbyte - //SEG31 [68] phi from do_perspective::@1 to print_sbyte [phi:do_perspective::@1->print_sbyte] - //SEG32 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::x#0 [phi:do_perspective::@1->print_sbyte#0] -- vbsxx=vbsc1 + //SEG29 [14] phi from do_perspective to do_perspective::@1 [phi:do_perspective->do_perspective::@1] + //SEG30 do_perspective::@1 + //SEG31 [15] call print_sbyte + //SEG32 [68] phi from do_perspective::@1 to print_sbyte [phi:do_perspective::@1->print_sbyte] + //SEG33 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::x#0 [phi:do_perspective::@1->print_sbyte#0] -- vbsxx=vbsc1 ldx #x jsr print_sbyte - //SEG33 [16] phi from do_perspective::@1 to do_perspective::@2 [phi:do_perspective::@1->do_perspective::@2] - //SEG34 do_perspective::@2 - //SEG35 [17] call print_str - //SEG36 [44] phi from do_perspective::@2 to print_str [phi:do_perspective::@2->print_str] - //SEG37 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@2->print_str#0] -- register_copy - //SEG38 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@2->print_str#1] -- pbuz1=pbuc1 + //SEG34 [16] phi from do_perspective::@1 to do_perspective::@2 [phi:do_perspective::@1->do_perspective::@2] + //SEG35 do_perspective::@2 + //SEG36 [17] call print_str + //SEG37 [44] phi from do_perspective::@2 to print_str [phi:do_perspective::@2->print_str] + //SEG38 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@2->print_str#0] -- register_copy + //SEG39 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG39 [18] phi from do_perspective::@2 to do_perspective::@3 [phi:do_perspective::@2->do_perspective::@3] - //SEG40 do_perspective::@3 - //SEG41 [19] call print_sbyte - //SEG42 [68] phi from do_perspective::@3 to print_sbyte [phi:do_perspective::@3->print_sbyte] - //SEG43 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::y#0 [phi:do_perspective::@3->print_sbyte#0] -- vbsxx=vbsc1 + //SEG40 [18] phi from do_perspective::@2 to do_perspective::@3 [phi:do_perspective::@2->do_perspective::@3] + //SEG41 do_perspective::@3 + //SEG42 [19] call print_sbyte + //SEG43 [68] phi from do_perspective::@3 to print_sbyte [phi:do_perspective::@3->print_sbyte] + //SEG44 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::y#0 [phi:do_perspective::@3->print_sbyte#0] -- vbsxx=vbsc1 ldx #y jsr print_sbyte - //SEG44 [20] phi from do_perspective::@3 to do_perspective::@4 [phi:do_perspective::@3->do_perspective::@4] - //SEG45 do_perspective::@4 - //SEG46 [21] call print_str - //SEG47 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] - //SEG48 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy - //SEG49 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 + //SEG45 [20] phi from do_perspective::@3 to do_perspective::@4 [phi:do_perspective::@3->do_perspective::@4] + //SEG46 do_perspective::@4 + //SEG47 [21] call print_str + //SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] + //SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy + //SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG50 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] - //SEG51 do_perspective::@5 - //SEG52 [23] call print_sbyte - //SEG53 [68] phi from do_perspective::@5 to print_sbyte [phi:do_perspective::@5->print_sbyte] - //SEG54 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::z#0 [phi:do_perspective::@5->print_sbyte#0] -- vbsxx=vbsc1 + //SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] + //SEG52 do_perspective::@5 + //SEG53 [23] call print_sbyte + //SEG54 [68] phi from do_perspective::@5 to print_sbyte [phi:do_perspective::@5->print_sbyte] + //SEG55 [68] phi (signed byte) print_sbyte::b#4 = (const signed byte) do_perspective::z#0 [phi:do_perspective::@5->print_sbyte#0] -- vbsxx=vbsc1 ldx #z jsr print_sbyte - //SEG55 [24] phi from do_perspective::@5 to do_perspective::@6 [phi:do_perspective::@5->do_perspective::@6] - //SEG56 do_perspective::@6 - //SEG57 [25] call print_str - //SEG58 [44] phi from do_perspective::@6 to print_str [phi:do_perspective::@6->print_str] - //SEG59 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@6->print_str#0] -- register_copy - //SEG60 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str3 [phi:do_perspective::@6->print_str#1] -- pbuz1=pbuc1 + //SEG56 [24] phi from do_perspective::@5 to do_perspective::@6 [phi:do_perspective::@5->do_perspective::@6] + //SEG57 do_perspective::@6 + //SEG58 [25] call print_str + //SEG59 [44] phi from do_perspective::@6 to print_str [phi:do_perspective::@6->print_str] + //SEG60 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@6->print_str#0] -- register_copy + //SEG61 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str3 [phi:do_perspective::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG61 [26] phi from do_perspective::@6 to do_perspective::@7 [phi:do_perspective::@6->do_perspective::@7] - //SEG62 do_perspective::@7 - //SEG63 [27] call perspective + //SEG62 [26] phi from do_perspective::@6 to do_perspective::@7 [phi:do_perspective::@6->do_perspective::@7] + //SEG63 do_perspective::@7 + //SEG64 [27] call perspective jsr perspective - //SEG64 do_perspective::@8 - //SEG65 [28] (byte~) print_byte::b#6 ← (byte)*((const signed byte*) xr#0) -- vbuxx=_deref_pbuc1 + //SEG65 do_perspective::@8 + //SEG66 [28] (byte~) print_byte::b#6 ← (byte)*((const signed byte*) xr#0) -- vbuxx=_deref_pbuc1 ldx xr - //SEG66 [29] call print_byte - //SEG67 [51] phi from do_perspective::@8 to print_byte [phi:do_perspective::@8->print_byte] - //SEG68 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@8->print_byte#0] -- register_copy - //SEG69 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#6 [phi:do_perspective::@8->print_byte#1] -- register_copy + //SEG67 [29] call print_byte + //SEG68 [51] phi from do_perspective::@8 to print_byte [phi:do_perspective::@8->print_byte] + //SEG69 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@8->print_byte#0] -- register_copy + //SEG70 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#6 [phi:do_perspective::@8->print_byte#1] -- register_copy jsr print_byte - //SEG70 [30] phi from do_perspective::@8 to do_perspective::@9 [phi:do_perspective::@8->do_perspective::@9] - //SEG71 do_perspective::@9 - //SEG72 [31] call print_str - //SEG73 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] - //SEG74 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy - //SEG75 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 + //SEG71 [30] phi from do_perspective::@8 to do_perspective::@9 [phi:do_perspective::@8->do_perspective::@9] + //SEG72 do_perspective::@9 + //SEG73 [31] call print_str + //SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] + //SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy + //SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG76 do_perspective::@10 - //SEG77 [32] (byte~) print_byte::b#5 ← (byte)*((const signed byte*) yr#0) -- vbuxx=_deref_pbuc1 + //SEG77 do_perspective::@10 + //SEG78 [32] (byte~) print_byte::b#5 ← (byte)*((const signed byte*) yr#0) -- vbuxx=_deref_pbuc1 ldx yr - //SEG78 [33] call print_byte - //SEG79 [51] phi from do_perspective::@10 to print_byte [phi:do_perspective::@10->print_byte] - //SEG80 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@10->print_byte#0] -- register_copy - //SEG81 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#5 [phi:do_perspective::@10->print_byte#1] -- register_copy + //SEG79 [33] call print_byte + //SEG80 [51] phi from do_perspective::@10 to print_byte [phi:do_perspective::@10->print_byte] + //SEG81 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#2 [phi:do_perspective::@10->print_byte#0] -- register_copy + //SEG82 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#5 [phi:do_perspective::@10->print_byte#1] -- register_copy jsr print_byte - //SEG82 [34] phi from do_perspective::@10 to do_perspective::@11 [phi:do_perspective::@10->do_perspective::@11] - //SEG83 do_perspective::@11 - //SEG84 [35] call print_str - //SEG85 [44] phi from do_perspective::@11 to print_str [phi:do_perspective::@11->print_str] - //SEG86 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@11->print_str#0] -- register_copy - //SEG87 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str5 [phi:do_perspective::@11->print_str#1] -- pbuz1=pbuc1 + //SEG83 [34] phi from do_perspective::@10 to do_perspective::@11 [phi:do_perspective::@10->do_perspective::@11] + //SEG84 do_perspective::@11 + //SEG85 [35] call print_str + //SEG86 [44] phi from do_perspective::@11 to print_str [phi:do_perspective::@11->print_str] + //SEG87 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@11->print_str#0] -- register_copy + //SEG88 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str5 [phi:do_perspective::@11->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str - //SEG88 [36] phi from do_perspective::@11 to do_perspective::@12 [phi:do_perspective::@11->do_perspective::@12] - //SEG89 do_perspective::@12 - //SEG90 [37] call print_ln - //SEG91 [39] phi from do_perspective::@12 to print_ln [phi:do_perspective::@12->print_ln] + //SEG89 [36] phi from do_perspective::@11 to do_perspective::@12 [phi:do_perspective::@11->do_perspective::@12] + //SEG90 do_perspective::@12 + //SEG91 [37] call print_ln + //SEG92 [39] phi from do_perspective::@12 to print_ln [phi:do_perspective::@12->print_ln] jsr print_ln - //SEG92 do_perspective::@return - //SEG93 [38] return + //SEG93 do_perspective::@return + //SEG94 [38] return rts str: .text "(@" str1: .text ",@" @@ -3937,20 +3952,20 @@ do_perspective: { str4: .text ",@" str5: .text ")@" } -//SEG94 print_ln +//SEG95 print_ln // Print a newline print_ln: { - //SEG95 [40] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] - //SEG96 [40] phi (byte*) print_line_cursor#11 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 + //SEG96 [40] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] + //SEG97 [40] phi (byte*) print_line_cursor#11 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG97 [40] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] - //SEG98 [40] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy - //SEG99 print_ln::@1 + //SEG98 [40] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] + //SEG99 [40] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy + //SEG100 print_ln::@1 b1: - //SEG100 [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG101 [41] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -3958,7 +3973,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG101 [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG102 [42] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -3967,107 +3982,107 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG102 print_ln::@return - //SEG103 [43] return + //SEG103 print_ln::@return + //SEG104 [43] return rts } -//SEG104 print_str +//SEG105 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG105 [45] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG106 [45] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG107 [45] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG108 print_str::@1 + //SEG106 [45] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG107 [45] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG108 [45] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG109 print_str::@1 b1: - //SEG109 [46] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG110 [46] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG110 print_str::@return - //SEG111 [47] return + //SEG111 print_str::@return + //SEG112 [47] return rts - //SEG112 print_str::@2 + //SEG113 print_str::@2 b2: - //SEG113 [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) -- _deref_pbuz1=_deref_pbuz2 + //SEG114 [48] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#7) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG114 [49] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG115 [49] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG115 [50] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 -- pbuz1=_inc_pbuz1 + //SEG116 [50] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG116 print_byte +//SEG117 print_byte // Print a byte as HEX print_byte: { - //SEG117 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG118 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG118 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG119 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG119 [54] call print_char - //SEG120 [59] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG121 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#69 [phi:print_byte->print_char#0] -- register_copy - //SEG122 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG120 [54] call print_char + //SEG121 [59] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG122 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#69 [phi:print_byte->print_char#0] -- register_copy + //SEG123 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG123 print_byte::@1 - //SEG124 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG124 print_byte::@1 + //SEG125 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG125 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG126 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG126 [57] call print_char - //SEG127 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG128 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG129 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG127 [57] call print_char + //SEG128 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG129 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG130 [59] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG130 print_byte::@return - //SEG131 [58] return + //SEG131 print_byte::@return + //SEG132 [58] return rts } -//SEG132 print_char +//SEG133 print_char // Print a single char print_char: { - //SEG133 [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG134 [60] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG134 [61] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG135 [61] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG135 print_char::@return - //SEG136 [62] return + //SEG136 print_char::@return + //SEG137 [62] return rts } -//SEG137 perspective +//SEG138 perspective // Apply perspective to a 3d-point. Result is returned in (*xr,*yr) // Implemented in assembler to utilize seriously fast multiplication perspective: { - //SEG138 [63] *((const signed byte*) xr#0) ← (const signed byte) do_perspective::x#0 -- _deref_pbsc1=vbsc2 + //SEG139 [63] *((const signed byte*) xr#0) ← (const signed byte) do_perspective::x#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.x sta xr - //SEG139 [64] *((const signed byte*) yr#0) ← (const signed byte) do_perspective::y#0 -- _deref_pbsc1=vbsc2 + //SEG140 [64] *((const signed byte*) yr#0) ← (const signed byte) do_perspective::y#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.y sta yr - //SEG140 [65] *((const signed byte*) zr#0) ← (const signed byte) do_perspective::z#0 -- _deref_pbsc1=vbsc2 + //SEG141 [65] *((const signed byte*) zr#0) ← (const signed byte) do_perspective::z#0 -- _deref_pbsc1=vbsc2 lda #do_perspective.z sta zr - //SEG141 asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr } + //SEG142 asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr } sta PP+1 PP: lda PERSP_Z @@ -4086,48 +4101,48 @@ perspective: { sbc (psp2),y adc #$80 sta xr - //SEG142 perspective::@return - //SEG143 [67] return + //SEG143 perspective::@return + //SEG144 [67] return rts } -//SEG144 print_sbyte +//SEG145 print_sbyte // Print a signed byte as HEX print_sbyte: { - //SEG145 [69] if((signed byte) print_sbyte::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + //SEG146 [69] if((signed byte) print_sbyte::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1 - //SEG146 [70] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG147 print_sbyte::@3 - //SEG148 [71] call print_char - //SEG149 [59] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG150 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG151 [59] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG147 [70] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG148 print_sbyte::@3 + //SEG149 [71] call print_char + //SEG150 [59] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG151 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG152 [59] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG152 [72] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] - //SEG153 [72] phi (signed byte) print_sbyte::b#6 = (signed byte) print_sbyte::b#4 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy - //SEG154 print_sbyte::@2 + //SEG153 [72] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG154 [72] phi (signed byte) print_sbyte::b#6 = (signed byte) print_sbyte::b#4 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG155 print_sbyte::@2 b2: - //SEG155 [73] (byte~) print_byte::b#7 ← (byte)(signed byte) print_sbyte::b#6 - //SEG156 [74] call print_byte - //SEG157 [51] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG158 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#12 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG159 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#7 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG156 [73] (byte~) print_byte::b#7 ← (byte)(signed byte) print_sbyte::b#6 + //SEG157 [74] call print_byte + //SEG158 [51] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG159 [51] phi (byte*) print_char_cursor#69 = (byte*) print_char_cursor#12 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG160 [51] phi (byte) print_byte::b#3 = (byte~) print_byte::b#7 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG160 print_sbyte::@return - //SEG161 [75] return + //SEG161 print_sbyte::@return + //SEG162 [75] return rts - //SEG162 [76] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG163 print_sbyte::@1 + //SEG163 [76] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG164 print_sbyte::@1 b1: - //SEG164 [77] call print_char - //SEG165 [59] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG166 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG167 [59] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG165 [77] call print_char + //SEG166 [59] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG167 [59] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG168 [59] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG168 print_sbyte::@5 - //SEG169 [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 -- vbsxx=_neg_vbsxx + //SEG169 print_sbyte::@5 + //SEG170 [78] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#4 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -4135,111 +4150,111 @@ print_sbyte: { tax jmp b2 } -//SEG170 print_cls +//SEG171 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG171 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG172 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG172 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG173 [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 - //SEG173 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG174 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG175 print_cls::@1 + //SEG174 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG175 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG176 print_cls::@1 b1: - //SEG176 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG177 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG177 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG178 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG178 [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 + //SEG179 [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 - //SEG179 print_cls::@return - //SEG180 [84] return + //SEG180 print_cls::@return + //SEG181 [84] return rts } -//SEG181 mulf_init +//SEG182 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x) and g(x) = f(1-x) mulf_init: { .label val = 6 .label sqr = 2 .label add = 4 - //SEG182 [86] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG183 [86] phi (signed word) mulf_init::add#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#0] -- vwsz1=vbuc1 + //SEG183 [86] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG184 [86] phi (signed word) mulf_init::add#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#0] -- vwsz1=vbuc1 lda #<1 sta add lda #>1 sta add+1 - //SEG184 [86] phi (byte) mulf_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#1] -- vbuxx=vbuc1 + //SEG185 [86] phi (byte) mulf_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#1] -- vbuxx=vbuc1 tax - //SEG185 [86] phi (signed word) mulf_init::sqr#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#2] -- vwsz1=vbuc1 + //SEG186 [86] phi (signed word) mulf_init::sqr#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#2] -- vwsz1=vbuc1 sta sqr sta sqr+1 - //SEG186 [86] phi from mulf_init::@1 to mulf_init::@1 [phi:mulf_init::@1->mulf_init::@1] - //SEG187 [86] phi (signed word) mulf_init::add#2 = (signed word) mulf_init::add#1 [phi:mulf_init::@1->mulf_init::@1#0] -- register_copy - //SEG188 [86] phi (byte) mulf_init::i#2 = (byte) mulf_init::i#1 [phi:mulf_init::@1->mulf_init::@1#1] -- register_copy - //SEG189 [86] phi (signed word) mulf_init::sqr#2 = (signed word) mulf_init::sqr#1 [phi:mulf_init::@1->mulf_init::@1#2] -- register_copy - //SEG190 mulf_init::@1 + //SEG187 [86] phi from mulf_init::@1 to mulf_init::@1 [phi:mulf_init::@1->mulf_init::@1] + //SEG188 [86] phi (signed word) mulf_init::add#2 = (signed word) mulf_init::add#1 [phi:mulf_init::@1->mulf_init::@1#0] -- register_copy + //SEG189 [86] phi (byte) mulf_init::i#2 = (byte) mulf_init::i#1 [phi:mulf_init::@1->mulf_init::@1#1] -- register_copy + //SEG190 [86] phi (signed word) mulf_init::sqr#2 = (signed word) mulf_init::sqr#1 [phi:mulf_init::@1->mulf_init::@1#2] -- register_copy + //SEG191 mulf_init::@1 b1: - //SEG191 [87] (byte) mulf_init::val#0 ← > (signed word) mulf_init::sqr#2 -- vbuz1=_hi_vwsz2 + //SEG192 [87] (byte) mulf_init::val#0 ← > (signed word) mulf_init::sqr#2 -- vbuz1=_hi_vwsz2 lda sqr+1 sta val - //SEG192 [88] *((const byte[512]) mulf_sqr1#0 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG193 [88] *((const byte[512]) mulf_sqr1#0 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 sta mulf_sqr1,x - //SEG193 [89] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG194 [89] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 sta mulf_sqr1+$100,x - //SEG194 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx + //SEG195 [90] (byte~) mulf_init::$2 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx txa eor #$ff clc adc #1 - //SEG195 [91] *((const byte[512]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG196 [91] *((const byte[512]) mulf_sqr1#0 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda val sta mulf_sqr1,y - //SEG196 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx + //SEG197 [92] (byte~) mulf_init::$4 ← - (byte) mulf_init::i#2 -- vbuaa=_neg_vbuxx txa eor #$ff clc adc #1 - //SEG197 [93] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG198 [93] *((const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 + (byte~) mulf_init::$4) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda val sta mulf_sqr1+$100,y - //SEG198 [94] *((const byte[512]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG199 [94] *((const byte[512]) mulf_sqr2#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 sta mulf_sqr2+1,x - //SEG199 [95] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG200 [95] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 sta mulf_sqr2+$100+1,x - //SEG200 [96] (byte/signed word/word/dword/signed dword~) mulf_init::$8 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuaa=vbuc1_minus_vbuxx + //SEG201 [96] (byte/signed word/word/dword/signed dword~) mulf_init::$8 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuaa=vbuc1_minus_vbuxx txa eor #$ff clc adc #1+1 - //SEG201 [97] *((const byte[512]) mulf_sqr2#0 + (byte/signed word/word/dword/signed dword~) mulf_init::$8) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG202 [97] *((const byte[512]) mulf_sqr2#0 + (byte/signed word/word/dword/signed dword~) mulf_init::$8) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda val sta mulf_sqr2,y - //SEG202 [98] (byte/signed word/word/dword/signed dword~) mulf_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuaa=vbuc1_minus_vbuxx + //SEG203 [98] (byte/signed word/word/dword/signed dword~) mulf_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) mulf_init::i#2 -- vbuaa=vbuc1_minus_vbuxx txa eor #$ff clc adc #1+1 - //SEG203 [99] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256 + (byte/signed word/word/dword/signed dword~) mulf_init::$10) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 + //SEG204 [99] *((const byte[512]) mulf_sqr2#0+(word/signed word/dword/signed dword) 256 + (byte/signed word/word/dword/signed dword~) mulf_init::$10) ← (byte) mulf_init::val#0 -- pbuc1_derefidx_vbuaa=vbuz1 tay lda val sta mulf_sqr2+$100,y - //SEG204 [100] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 -- vwsz1=vwsz1_plus_vwsz2 + //SEG205 [100] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2 -- vwsz1=vwsz1_plus_vwsz2 lda sqr clc adc add @@ -4247,7 +4262,7 @@ mulf_init: { lda sqr+1 adc add+1 sta sqr+1 - //SEG205 [101] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwsz1=vwsz1_plus_2 + //SEG206 [101] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwsz1=vwsz1_plus_2 lda add clc adc #2 @@ -4255,13 +4270,13 @@ mulf_init: { bcc !+ inc add+1 !: - //SEG206 [102] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 -- vbuxx=_inc_vbuxx + //SEG207 [102] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG207 [103] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) 129) goto mulf_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG208 [103] if((byte) mulf_init::i#1!=(byte/word/signed word/dword/signed dword) 129) goto mulf_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$81 bne b1 - //SEG208 mulf_init::@return - //SEG209 [104] return + //SEG209 mulf_init::@return + //SEG210 [104] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.asm b/src/test/ref/examples/bresenham/bitmap-bresenham.asm index 4cad90b27..ba4d5de41 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.asm +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.asm @@ -410,8 +410,6 @@ bitmap_init: { bne b3 rts } - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.log b/src/test/ref/examples/bresenham/bitmap-bresenham.log index d67711351..09dca87b6 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.log +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.log @@ -2827,11 +2827,12 @@ Allocated zp ZP_BYTE:67 [ bitmap_init::$9 ] Allocated zp ZP_BYTE:68 [ bitmap_init::$10 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label D011 = $d011 @@ -2842,115 +2843,115 @@ INITIAL ASM .label SCREEN = $400 .label BITMAP = $2000 .const lines_cnt = 8 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] +//SEG4 [1] phi from @begin to @15 [phi:@begin->@15] b15_from_bbegin: jmp b15 -//SEG4 @15 +//SEG5 @15 b15: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @15 to @end [phi:@15->@end] +//SEG7 [3] phi from @15 to @end [phi:@15->@end] bend_from_b15: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG10 [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG11 [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 -- _deref_pbuc1=vbuc2 + //SEG12 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG12 [7] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY - //SEG13 [8] call bitmap_init - //SEG14 [171] phi from main to bitmap_init [phi:main->bitmap_init] + //SEG14 [8] call bitmap_init + //SEG15 [171] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init - //SEG15 [9] phi from main to main::@3 [phi:main->main::@3] + //SEG16 [9] phi from main to main::@3 [phi:main->main::@3] b3_from_main: jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [10] call bitmap_clear + //SEG18 [10] call bitmap_clear jsr bitmap_clear - //SEG18 [11] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG19 [11] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG19 main::@4 + //SEG20 main::@4 b4: - //SEG20 [12] call init_screen - //SEG21 [154] phi from main::@4 to init_screen [phi:main::@4->init_screen] + //SEG21 [12] call init_screen + //SEG22 [154] phi from main::@4 to init_screen [phi:main::@4->init_screen] init_screen_from_b4: jsr init_screen - //SEG22 [13] phi from main::@1 main::@4 to main::@1 [phi:main::@1/main::@4->main::@1] + //SEG23 [13] phi from main::@1 main::@4 to main::@1 [phi:main::@1/main::@4->main::@1] b1_from_b1: b1_from_b4: jmp b1 - //SEG23 main::@1 + //SEG24 main::@1 b1: - //SEG24 [14] call lines - //SEG25 [15] phi from main::@1 to lines [phi:main::@1->lines] + //SEG25 [14] call lines + //SEG26 [15] phi from main::@1 to lines [phi:main::@1->lines] lines_from_b1: jsr lines jmp b1_from_b1 } -//SEG26 lines +//SEG27 lines lines: { .label l = 2 - //SEG27 [16] phi from lines to lines::@1 [phi:lines->lines::@1] + //SEG28 [16] phi from lines to lines::@1 [phi:lines->lines::@1] b1_from_lines: - //SEG28 [16] phi (byte) lines::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lines->lines::@1#0] -- vbuz1=vbuc1 + //SEG29 [16] phi (byte) lines::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lines->lines::@1#0] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG29 [16] phi from lines::@3 to lines::@1 [phi:lines::@3->lines::@1] + //SEG30 [16] phi from lines::@3 to lines::@1 [phi:lines::@3->lines::@1] b1_from_b3: - //SEG30 [16] phi (byte) lines::l#2 = (byte) lines::l#1 [phi:lines::@3->lines::@1#0] -- register_copy + //SEG31 [16] phi (byte) lines::l#2 = (byte) lines::l#1 [phi:lines::@3->lines::@1#0] -- register_copy jmp b1 - //SEG31 lines::@1 + //SEG32 lines::@1 b1: - //SEG32 [17] (byte) bitmap_line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG33 [17] (byte) bitmap_line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG33 [18] (byte) bitmap_line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG34 [18] (byte) bitmap_line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x+1,y sta bitmap_line.x1 - //SEG34 [19] (byte) bitmap_line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG35 [19] (byte) bitmap_line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y,y sta bitmap_line.y0 - //SEG35 [20] (byte) bitmap_line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG36 [20] (byte) bitmap_line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y+1,y sta bitmap_line.y1 - //SEG36 [21] call bitmap_line + //SEG37 [21] call bitmap_line jsr bitmap_line jmp b3 - //SEG37 lines::@3 + //SEG38 lines::@3 b3: - //SEG38 [22] (byte) lines::l#1 ← ++ (byte) lines::l#2 -- vbuz1=_inc_vbuz1 + //SEG39 [22] (byte) lines::l#1 ← ++ (byte) lines::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG39 [23] if((byte) lines::l#1<(const byte) lines_cnt#0) goto lines::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG40 [23] if((byte) lines::l#1<(const byte) lines_cnt#0) goto lines::@1 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b1_from_b3 jmp breturn - //SEG40 lines::@return + //SEG41 lines::@return breturn: - //SEG41 [24] return + //SEG42 [24] return rts } -//SEG42 bitmap_line +//SEG43 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = $2f @@ -2963,305 +2964,305 @@ bitmap_line: { .label y0 = $2a .label y1 = $2b .label yd_10 = $31 - //SEG43 [25] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG44 [25] 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 - //SEG44 bitmap_line::@15 + //SEG45 bitmap_line::@15 b15: - //SEG45 [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG46 [26] (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 - //SEG46 [27] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuz2_then_la1 + //SEG47 [27] 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 - //SEG47 bitmap_line::@16 + //SEG48 bitmap_line::@16 b16: - //SEG48 [28] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG49 [28] (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 - //SEG49 [29] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG50 [29] 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 - //SEG50 bitmap_line::@17 + //SEG51 bitmap_line::@17 b17: - //SEG51 [30] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG52 [30] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxi.y - //SEG52 [31] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG53 [31] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_ydxi.x - //SEG53 [32] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG54 [32] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y1 - //SEG54 [33] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 + //SEG55 [33] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 lda yd_1 sta bitmap_line_ydxi.yd - //SEG55 [34] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG56 [34] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_ydxi.xd - //SEG56 [35] call bitmap_line_ydxi - //SEG57 [109] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG57 [35] call bitmap_line_ydxi + //SEG58 [109] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] bitmap_line_ydxi_from_b17: - //SEG58 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG59 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG60 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG61 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG62 [109] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG59 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG60 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG61 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG62 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG63 [109] 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 - //SEG63 bitmap_line::@return + //SEG64 bitmap_line::@return breturn: - //SEG64 [36] return + //SEG65 [36] return rts - //SEG65 bitmap_line::@3 + //SEG66 bitmap_line::@3 b3: - //SEG66 [37] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG67 [37] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG67 [38] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG68 [38] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_xdyi.y - //SEG68 [39] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG69 [39] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x1 - //SEG69 [40] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG70 [40] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_xdyi.xd - //SEG70 [41] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 + //SEG71 [41] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 lda yd_1 sta bitmap_line_xdyi.yd - //SEG71 [42] call bitmap_line_xdyi - //SEG72 [87] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG72 [42] call bitmap_line_xdyi + //SEG73 [87] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] bitmap_line_xdyi_from_b3: - //SEG73 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG74 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG75 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG76 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG77 [87] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG74 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG75 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG76 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG77 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG78 [87] 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 - //SEG78 bitmap_line::@2 + //SEG79 bitmap_line::@2 b2: - //SEG79 [43] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG80 [43] (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 - //SEG80 [44] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG81 [44] 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 - //SEG81 bitmap_line::@20 + //SEG82 bitmap_line::@20 b20: - //SEG82 [45] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG83 [45] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG83 [46] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG84 [46] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_ydxd.x - //SEG84 [47] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG85 [47] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxd.y1 - //SEG85 [48] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 + //SEG86 [48] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 lda yd sta bitmap_line_ydxd.yd - //SEG86 [49] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG87 [49] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_ydxd.xd - //SEG87 [50] call bitmap_line_ydxd - //SEG88 [139] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG88 [50] call bitmap_line_ydxd + //SEG89 [139] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] bitmap_line_ydxd_from_b20: - //SEG89 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG90 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG91 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG92 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG93 [139] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG90 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG91 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG92 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG93 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG94 [139] 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 - //SEG94 bitmap_line::@6 + //SEG95 bitmap_line::@6 b6: - //SEG95 [51] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG96 [51] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG96 [52] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG97 [52] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_xdyd.y - //SEG97 [53] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG98 [53] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG98 [54] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG99 [54] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_xdyd.xd - //SEG99 [55] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 + //SEG100 [55] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 lda yd sta bitmap_line_xdyd.yd - //SEG100 [56] call bitmap_line_xdyd - //SEG101 [124] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG101 [56] call bitmap_line_xdyd + //SEG102 [124] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] bitmap_line_xdyd_from_b6: - //SEG102 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG103 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG104 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG105 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG106 [124] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG103 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG104 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG105 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG106 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG107 [124] 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 - //SEG107 bitmap_line::@1 + //SEG108 bitmap_line::@1 b1: - //SEG108 [57] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG109 [57] (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 - //SEG109 [58] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuz2_then_la1 + //SEG110 [58] 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 - //SEG110 bitmap_line::@23 + //SEG111 bitmap_line::@23 b23: - //SEG111 [59] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG112 [59] (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 - //SEG112 [60] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG113 [60] 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 - //SEG113 bitmap_line::@24 + //SEG114 bitmap_line::@24 b24: - //SEG114 [61] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG115 [61] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxd.y - //SEG115 [62] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG116 [62] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_ydxd.x - //SEG116 [63] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG117 [63] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y1 - //SEG117 [64] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 + //SEG118 [64] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 lda yd_3 sta bitmap_line_ydxd.yd - //SEG118 [65] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG119 [65] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_ydxd.xd - //SEG119 [66] call bitmap_line_ydxd - //SEG120 [139] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG120 [66] call bitmap_line_ydxd + //SEG121 [139] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] bitmap_line_ydxd_from_b24: - //SEG121 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG122 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG123 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG124 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG125 [139] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG122 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG123 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG124 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG125 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG126 [139] 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 - //SEG126 bitmap_line::@10 + //SEG127 bitmap_line::@10 b10: - //SEG127 [67] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG128 [67] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG128 [68] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG129 [68] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_xdyd.y - //SEG129 [69] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG130 [69] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x1 - //SEG130 [70] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG131 [70] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_xdyd.xd - //SEG131 [71] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 + //SEG132 [71] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 lda yd_3 sta bitmap_line_xdyd.yd - //SEG132 [72] call bitmap_line_xdyd - //SEG133 [124] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG133 [72] call bitmap_line_xdyd + //SEG134 [124] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] bitmap_line_xdyd_from_b10: - //SEG134 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG135 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG136 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG137 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG138 [124] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG135 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG136 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG137 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG138 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG139 [124] 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 - //SEG139 bitmap_line::@9 + //SEG140 bitmap_line::@9 b9: - //SEG140 [73] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG141 [73] (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 - //SEG141 [74] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG142 [74] 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 - //SEG142 bitmap_line::@27 + //SEG143 bitmap_line::@27 b27: - //SEG143 [75] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG144 [75] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG144 [76] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG145 [76] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_ydxi.x - //SEG145 [77] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG146 [77] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxi.y1 - //SEG146 [78] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 + //SEG147 [78] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 lda yd_10 sta bitmap_line_ydxi.yd - //SEG147 [79] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG148 [79] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_ydxi.xd - //SEG148 [80] call bitmap_line_ydxi - //SEG149 [109] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG149 [80] call bitmap_line_ydxi + //SEG150 [109] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] bitmap_line_ydxi_from_b27: - //SEG150 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG151 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG152 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG153 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG154 [109] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG151 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG152 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG153 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG154 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG155 [109] 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 - //SEG155 bitmap_line::@13 + //SEG156 bitmap_line::@13 b13: - //SEG156 [81] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG157 [81] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG157 [82] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG158 [82] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_xdyi.y - //SEG158 [83] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG159 [83] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG159 [84] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG160 [84] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_xdyi.xd - //SEG160 [85] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 + //SEG161 [85] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 lda yd_10 sta bitmap_line_xdyi.yd - //SEG161 [86] call bitmap_line_xdyi - //SEG162 [87] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG162 [86] call bitmap_line_xdyi + //SEG163 [87] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] bitmap_line_xdyi_from_b13: - //SEG163 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG164 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG165 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG166 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG167 [87] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG164 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG165 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG166 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG167 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG168 [87] 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 } -//SEG168 bitmap_line_xdyi +//SEG169 bitmap_line_xdyi bitmap_line_xdyi: { .label _6 = $32 .label x = 6 @@ -3270,78 +3271,78 @@ bitmap_line_xdyi: { .label xd = 4 .label yd = 3 .label e = 8 - //SEG169 [88] (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 + //SEG170 [88] (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 - //SEG170 [89] 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] + //SEG171 [89] 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: - //SEG171 [89] 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 - //SEG172 [89] 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 - //SEG173 [89] 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 + //SEG172 [89] 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 + //SEG173 [89] 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 + //SEG174 [89] 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 - //SEG174 bitmap_line_xdyi::@1 + //SEG175 bitmap_line_xdyi::@1 b1: - //SEG175 [90] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 + //SEG176 [90] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG176 [91] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 + //SEG177 [91] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG177 [92] call bitmap_plot - //SEG178 [102] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG178 [92] call bitmap_plot + //SEG179 [102] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG179 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG180 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG180 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG181 [102] 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 - //SEG181 bitmap_line_xdyi::@5 + //SEG182 bitmap_line_xdyi::@5 b5: - //SEG182 [93] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG183 [93] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG183 [94] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG184 [94] (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 - //SEG184 [95] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG185 [95] 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 - //SEG185 bitmap_line_xdyi::@3 + //SEG186 bitmap_line_xdyi::@3 b3: - //SEG186 [96] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG187 [96] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG187 [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG188 [97] (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 - //SEG188 [98] 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] + //SEG189 [98] 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: - //SEG189 [98] 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 - //SEG190 [98] 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 + //SEG190 [98] 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 + //SEG191 [98] 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 - //SEG191 bitmap_line_xdyi::@2 + //SEG192 bitmap_line_xdyi::@2 b2: - //SEG192 [99] (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 + //SEG193 [99] (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 - //SEG193 [100] 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 + //SEG194 [100] 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 - //SEG194 bitmap_line_xdyi::@return + //SEG195 bitmap_line_xdyi::@return breturn: - //SEG195 [101] return + //SEG196 [101] return rts } -//SEG196 bitmap_plot +//SEG197 bitmap_plot bitmap_plot: { .label _0 = $37 .label _1 = $39 @@ -3349,19 +3350,19 @@ bitmap_plot: { .label plotter_y = $35 .label x = 9 .label y = $a - //SEG197 [103] (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 + //SEG198 [103] (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 - //SEG198 [104] (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 + //SEG199 [104] (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 - //SEG199 [105] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG200 [105] (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 @@ -3369,23 +3370,23 @@ bitmap_plot: { lda plotter_x+1 adc plotter_y+1 sta _0+1 - //SEG200 [106] (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 + //SEG201 [106] (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 - //SEG201 [107] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 + //SEG202 [107] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 lda _1 ldy #0 sta (_0),y jmp breturn - //SEG202 bitmap_plot::@return + //SEG203 bitmap_plot::@return breturn: - //SEG203 [108] return + //SEG204 [108] return rts } -//SEG204 bitmap_line_ydxi +//SEG205 bitmap_line_ydxi bitmap_line_ydxi: { .label _6 = $3a .label y = $f @@ -3394,78 +3395,78 @@ bitmap_line_ydxi: { .label yd = $c .label xd = $b .label e = $10 - //SEG205 [110] (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 + //SEG206 [110] (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 - //SEG206 [111] 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] + //SEG207 [111] 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: - //SEG207 [111] 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 - //SEG208 [111] 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 - //SEG209 [111] 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 + //SEG208 [111] 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 + //SEG209 [111] 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 + //SEG210 [111] 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 - //SEG210 bitmap_line_ydxi::@1 + //SEG211 bitmap_line_ydxi::@1 b1: - //SEG211 [112] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 + //SEG212 [112] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG212 [113] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 + //SEG213 [113] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG213 [114] call bitmap_plot - //SEG214 [102] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG214 [114] call bitmap_plot + //SEG215 [102] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG215 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG216 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG216 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG217 [102] 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 - //SEG217 bitmap_line_ydxi::@5 + //SEG218 bitmap_line_ydxi::@5 b5: - //SEG218 [115] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG219 [115] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG219 [116] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG220 [116] (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 - //SEG220 [117] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG221 [117] 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 - //SEG221 bitmap_line_ydxi::@3 + //SEG222 bitmap_line_ydxi::@3 b3: - //SEG222 [118] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 + //SEG223 [118] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG223 [119] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG224 [119] (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 - //SEG224 [120] 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] + //SEG225 [120] 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: - //SEG225 [120] 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 - //SEG226 [120] 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 + //SEG226 [120] 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 + //SEG227 [120] 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 - //SEG227 bitmap_line_ydxi::@2 + //SEG228 bitmap_line_ydxi::@2 b2: - //SEG228 [121] (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 + //SEG229 [121] (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 - //SEG229 [122] 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 + //SEG230 [122] 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 - //SEG230 bitmap_line_ydxi::@return + //SEG231 bitmap_line_ydxi::@return breturn: - //SEG231 [123] return + //SEG232 [123] return rts } -//SEG232 bitmap_line_xdyd +//SEG233 bitmap_line_xdyd bitmap_line_xdyd: { .label _6 = $3b .label x = $14 @@ -3474,78 +3475,78 @@ bitmap_line_xdyd: { .label xd = $12 .label yd = $11 .label e = $16 - //SEG233 [125] (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 + //SEG234 [125] (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 - //SEG234 [126] 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] + //SEG235 [126] 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: - //SEG235 [126] 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 - //SEG236 [126] 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 - //SEG237 [126] 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 + //SEG236 [126] 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 + //SEG237 [126] 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 + //SEG238 [126] 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 - //SEG238 bitmap_line_xdyd::@1 + //SEG239 bitmap_line_xdyd::@1 b1: - //SEG239 [127] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 + //SEG240 [127] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG240 [128] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 + //SEG241 [128] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG241 [129] call bitmap_plot - //SEG242 [102] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG242 [129] call bitmap_plot + //SEG243 [102] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG243 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG244 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG244 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG245 [102] 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 - //SEG245 bitmap_line_xdyd::@5 + //SEG246 bitmap_line_xdyd::@5 b5: - //SEG246 [130] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG247 [130] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG247 [131] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG248 [131] (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 - //SEG248 [132] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG249 [132] 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 - //SEG249 bitmap_line_xdyd::@3 + //SEG250 bitmap_line_xdyd::@3 b3: - //SEG250 [133] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG251 [133] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG251 [134] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG252 [134] (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 - //SEG252 [135] 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] + //SEG253 [135] 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: - //SEG253 [135] 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 - //SEG254 [135] 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 + //SEG254 [135] 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 + //SEG255 [135] 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 - //SEG255 bitmap_line_xdyd::@2 + //SEG256 bitmap_line_xdyd::@2 b2: - //SEG256 [136] (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 + //SEG257 [136] (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 - //SEG257 [137] 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 + //SEG258 [137] 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 - //SEG258 bitmap_line_xdyd::@return + //SEG259 bitmap_line_xdyd::@return breturn: - //SEG259 [138] return + //SEG260 [138] return rts } -//SEG260 bitmap_line_ydxd +//SEG261 bitmap_line_ydxd bitmap_line_ydxd: { .label _6 = $3c .label y = $1b @@ -3554,104 +3555,104 @@ bitmap_line_ydxd: { .label yd = $18 .label xd = $17 .label e = $1c - //SEG261 [140] (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 + //SEG262 [140] (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 - //SEG262 [141] 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] + //SEG263 [141] 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: - //SEG263 [141] 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 - //SEG264 [141] 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 - //SEG265 [141] 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 + //SEG264 [141] 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 + //SEG265 [141] 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 + //SEG266 [141] 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 - //SEG266 bitmap_line_ydxd::@1 + //SEG267 bitmap_line_ydxd::@1 b1: - //SEG267 [142] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 + //SEG268 [142] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG268 [143] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 + //SEG269 [143] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG269 [144] call bitmap_plot - //SEG270 [102] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG270 [144] call bitmap_plot + //SEG271 [102] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG271 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG272 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG272 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG273 [102] 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 - //SEG273 bitmap_line_ydxd::@5 + //SEG274 bitmap_line_ydxd::@5 b5: - //SEG274 [145] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG275 [145] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG275 [146] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG276 [146] (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 - //SEG276 [147] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG277 [147] 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 - //SEG277 bitmap_line_ydxd::@3 + //SEG278 bitmap_line_ydxd::@3 b3: - //SEG278 [148] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 + //SEG279 [148] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec x - //SEG279 [149] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG280 [149] (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 - //SEG280 [150] 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] + //SEG281 [150] 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: - //SEG281 [150] 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 - //SEG282 [150] 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 + //SEG282 [150] 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 + //SEG283 [150] 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 - //SEG283 bitmap_line_ydxd::@2 + //SEG284 bitmap_line_ydxd::@2 b2: - //SEG284 [151] (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 + //SEG285 [151] (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 - //SEG285 [152] 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 + //SEG286 [152] 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 - //SEG286 bitmap_line_ydxd::@return + //SEG287 bitmap_line_ydxd::@return breturn: - //SEG287 [153] return + //SEG288 [153] return rts } -//SEG288 init_screen +//SEG289 init_screen init_screen: { .label c = $1d - //SEG289 [155] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG290 [155] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG290 [155] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG291 [155] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b1 - //SEG291 [155] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG292 [155] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG292 [155] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG293 [155] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG293 init_screen::@1 + //SEG294 init_screen::@1 b1: - //SEG294 [156] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG295 [156] *((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 - //SEG295 [157] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG296 [157] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG296 [158] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG297 [158] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b1_from_b1 @@ -3659,87 +3660,87 @@ init_screen: { cmp #bitmap_clear::@1] + //SEG303 [162] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG303 [162] 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 + //SEG304 [162] 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 - //SEG304 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG305 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG305 [162] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG306 [162] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG306 [162] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG307 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG307 [162] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG308 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG308 bitmap_clear::@1 + //SEG309 bitmap_clear::@1 b1: - //SEG309 [163] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG310 [163] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG310 [163] 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 + //SEG311 [163] 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 - //SEG311 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG312 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG312 [163] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG313 [163] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG313 [163] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG314 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG314 [163] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG315 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG315 bitmap_clear::@2 + //SEG316 bitmap_clear::@2 b2: - //SEG316 [164] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG317 [164] *((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 - //SEG317 [165] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG318 [165] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG318 [166] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG319 [166] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG319 [167] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG320 [167] 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 - //SEG320 bitmap_clear::@3 + //SEG321 bitmap_clear::@3 b3: - //SEG321 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG322 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG322 [169] 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 + //SEG323 [169] 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 - //SEG323 bitmap_clear::@return + //SEG324 bitmap_clear::@return breturn: - //SEG324 [170] return + //SEG325 [170] return rts } -//SEG325 bitmap_init +//SEG326 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _0 = $3f @@ -3752,110 +3753,110 @@ bitmap_init: { .label x = $23 .label y = $25 .label yoffs = $26 - //SEG326 [172] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG327 [172] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG327 [172] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + //SEG328 [172] 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 - //SEG328 [172] 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 + //SEG329 [172] 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 - //SEG329 [172] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG330 [172] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG330 [172] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG331 [172] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG331 [172] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG332 [172] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG332 bitmap_init::@1 + //SEG333 bitmap_init::@1 b1: - //SEG333 [173] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 + //SEG334 [173] (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 - //SEG334 [174] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG335 [174] *((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 - //SEG335 [175] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG336 [175] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy x lda #>BITMAP sta bitmap_plot_xhi,y - //SEG336 [176] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG337 [176] *((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 - //SEG337 [177] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG338 [177] (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 - //SEG338 [178] 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 + //SEG339 [178] 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 - //SEG339 [179] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG340 [179] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG340 [179] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + //SEG341 [179] 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 - //SEG341 bitmap_init::@2 + //SEG342 bitmap_init::@2 b2: - //SEG342 [180] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG343 [180] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG343 [181] 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 + //SEG344 [181] 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 - //SEG344 [182] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG345 [182] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG345 [182] 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 + //SEG346 [182] 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 - //SEG346 [182] 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 + //SEG347 [182] 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 - //SEG347 [182] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG348 [182] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG348 [182] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG349 [182] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG349 [182] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG350 [182] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG350 bitmap_init::@3 + //SEG351 bitmap_init::@3 b3: - //SEG351 [183] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG352 [183] (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 - //SEG352 [184] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG353 [184] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG353 [185] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 + //SEG354 [185] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora _7 sta _8 - //SEG354 [186] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG355 [186] *((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 - //SEG355 [187] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG356 [187] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG356 [188] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG357 [188] *((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 - //SEG357 [189] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG358 [189] (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 - //SEG358 [190] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG359 [190] 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 - //SEG359 bitmap_init::@7 + //SEG360 bitmap_init::@7 b7: - //SEG360 [191] (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 + //SEG361 [191] (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 @@ -3863,36 +3864,34 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG361 [192] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG362 [192] 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: - //SEG362 [192] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG363 [192] 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 - //SEG363 bitmap_init::@4 + //SEG364 bitmap_init::@4 b4: - //SEG364 [193] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG365 [193] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG365 [194] 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 + //SEG366 [194] 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 - //SEG366 bitmap_init::@return + //SEG367 bitmap_init::@return breturn: - //SEG367 [195] return + //SEG368 [195] return rts - //SEG368 [196] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG369 [196] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG369 bitmap_init::@10 + //SEG370 bitmap_init::@10 b10: - //SEG370 [179] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG371 [179] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG371 [179] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG372 [179] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 @@ -4253,11 +4252,12 @@ Allocated (was zp ZP_WORD:29) zp ZP_WORD:9 [ init_screen::c#2 init_screen::c#1 b Allocated (was zp ZP_WORD:53) zp ZP_WORD:11 [ bitmap_plot::plotter_y#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label D011 = $d011 @@ -4268,114 +4268,114 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 .label BITMAP = $2000 .const lines_cnt = 8 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] +//SEG4 [1] phi from @begin to @15 [phi:@begin->@15] b15_from_bbegin: jmp b15 -//SEG4 @15 +//SEG5 @15 b15: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @15 to @end [phi:@15->@end] +//SEG7 [3] phi from @15 to @end [phi:@15->@end] bend_from_b15: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG10 [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL - //SEG11 [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 -- _deref_pbuc1=vbuc2 + //SEG12 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG12 [7] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY - //SEG13 [8] call bitmap_init - //SEG14 [171] phi from main to bitmap_init [phi:main->bitmap_init] + //SEG14 [8] call bitmap_init + //SEG15 [171] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init - //SEG15 [9] phi from main to main::@3 [phi:main->main::@3] + //SEG16 [9] phi from main to main::@3 [phi:main->main::@3] b3_from_main: jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [10] call bitmap_clear + //SEG18 [10] call bitmap_clear jsr bitmap_clear - //SEG18 [11] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG19 [11] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG19 main::@4 + //SEG20 main::@4 b4: - //SEG20 [12] call init_screen - //SEG21 [154] phi from main::@4 to init_screen [phi:main::@4->init_screen] + //SEG21 [12] call init_screen + //SEG22 [154] phi from main::@4 to init_screen [phi:main::@4->init_screen] init_screen_from_b4: jsr init_screen - //SEG22 [13] phi from main::@1 main::@4 to main::@1 [phi:main::@1/main::@4->main::@1] + //SEG23 [13] phi from main::@1 main::@4 to main::@1 [phi:main::@1/main::@4->main::@1] b1_from_b1: b1_from_b4: jmp b1 - //SEG23 main::@1 + //SEG24 main::@1 b1: - //SEG24 [14] call lines - //SEG25 [15] phi from main::@1 to lines [phi:main::@1->lines] + //SEG25 [14] call lines + //SEG26 [15] phi from main::@1 to lines [phi:main::@1->lines] lines_from_b1: jsr lines jmp b1_from_b1 } -//SEG26 lines +//SEG27 lines lines: { .label l = 2 - //SEG27 [16] phi from lines to lines::@1 [phi:lines->lines::@1] + //SEG28 [16] phi from lines to lines::@1 [phi:lines->lines::@1] b1_from_lines: - //SEG28 [16] phi (byte) lines::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lines->lines::@1#0] -- vbuz1=vbuc1 + //SEG29 [16] phi (byte) lines::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lines->lines::@1#0] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG29 [16] phi from lines::@3 to lines::@1 [phi:lines::@3->lines::@1] + //SEG30 [16] phi from lines::@3 to lines::@1 [phi:lines::@3->lines::@1] b1_from_b3: - //SEG30 [16] phi (byte) lines::l#2 = (byte) lines::l#1 [phi:lines::@3->lines::@1#0] -- register_copy + //SEG31 [16] phi (byte) lines::l#2 = (byte) lines::l#1 [phi:lines::@3->lines::@1#0] -- register_copy jmp b1 - //SEG31 lines::@1 + //SEG32 lines::@1 b1: - //SEG32 [17] (byte) bitmap_line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG33 [17] (byte) bitmap_line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG33 [18] (byte) bitmap_line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG34 [18] (byte) bitmap_line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x+1,y sta bitmap_line.x1 - //SEG34 [19] (byte) bitmap_line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG35 [19] (byte) bitmap_line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y,y sta bitmap_line.y0 - //SEG35 [20] (byte) bitmap_line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG36 [20] (byte) bitmap_line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 ldx l ldy lines_y+1,x - //SEG36 [21] call bitmap_line + //SEG37 [21] call bitmap_line jsr bitmap_line jmp b3 - //SEG37 lines::@3 + //SEG38 lines::@3 b3: - //SEG38 [22] (byte) lines::l#1 ← ++ (byte) lines::l#2 -- vbuz1=_inc_vbuz1 + //SEG39 [22] (byte) lines::l#1 ← ++ (byte) lines::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG39 [23] if((byte) lines::l#1<(const byte) lines_cnt#0) goto lines::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG40 [23] if((byte) lines::l#1<(const byte) lines_cnt#0) goto lines::@1 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b1_from_b3 jmp breturn - //SEG40 lines::@return + //SEG41 lines::@return breturn: - //SEG41 [24] return + //SEG42 [24] return rts } -//SEG42 bitmap_line +//SEG43 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = 4 @@ -4383,253 +4383,253 @@ bitmap_line: { .label x0 = 5 .label x1 = 8 .label y0 = 6 - //SEG43 [25] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG44 [25] 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 - //SEG44 bitmap_line::@15 + //SEG45 bitmap_line::@15 b15: - //SEG45 [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG46 [26] (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 - //SEG46 [27] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 + //SEG47 [27] 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 - //SEG47 bitmap_line::@16 + //SEG48 bitmap_line::@16 b16: - //SEG48 [28] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG49 [28] (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 - //SEG49 [29] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG50 [29] 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 - //SEG50 bitmap_line::@17 + //SEG51 bitmap_line::@17 b17: - //SEG51 [30] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG52 [30] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y - //SEG52 [31] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG53 [31] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG53 [32] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 - //SEG54 [33] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG55 [34] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG56 [35] call bitmap_line_ydxi - //SEG57 [109] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG54 [32] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + //SEG55 [33] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG56 [34] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG57 [35] call bitmap_line_ydxi + //SEG58 [109] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] bitmap_line_ydxi_from_b17: - //SEG58 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG59 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG60 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG61 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG62 [109] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG59 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG60 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG61 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG62 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG63 [109] 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 - //SEG63 bitmap_line::@return + //SEG64 bitmap_line::@return breturn: - //SEG64 [36] return + //SEG65 [36] return rts - //SEG65 bitmap_line::@3 + //SEG66 bitmap_line::@3 b3: - //SEG66 [37] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG67 [37] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG67 [38] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG68 [38] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyi.y - //SEG68 [39] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 - //SEG69 [40] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG70 [41] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG71 [42] call bitmap_line_xdyi - //SEG72 [87] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG69 [39] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + //SEG70 [40] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG71 [41] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG72 [42] call bitmap_line_xdyi + //SEG73 [87] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] bitmap_line_xdyi_from_b3: - //SEG73 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG74 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG75 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG76 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG77 [87] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG74 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG75 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG76 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG77 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG78 [87] 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 - //SEG78 bitmap_line::@2 + //SEG79 bitmap_line::@2 b2: - //SEG79 [43] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG80 [43] (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 - //SEG80 [44] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG81 [44] 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 - //SEG81 bitmap_line::@20 + //SEG82 bitmap_line::@20 b20: - //SEG82 [45] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG83 [45] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG83 [46] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG84 [46] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG84 [47] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG85 [47] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y1 - //SEG85 [48] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG86 [49] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG87 [50] call bitmap_line_ydxd - //SEG88 [139] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG86 [48] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG87 [49] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG88 [50] call bitmap_line_ydxd + //SEG89 [139] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] bitmap_line_ydxd_from_b20: - //SEG89 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG90 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG91 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG92 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG93 [139] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG90 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG91 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG92 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG93 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG94 [139] 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 - //SEG94 bitmap_line::@6 + //SEG95 bitmap_line::@6 b6: - //SEG95 [51] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG96 [51] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG96 [52] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG97 [52] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyd.y - //SEG97 [53] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG98 [53] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG98 [54] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG99 [55] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG100 [56] call bitmap_line_xdyd - //SEG101 [124] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG99 [54] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG100 [55] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG101 [56] call bitmap_line_xdyd + //SEG102 [124] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] bitmap_line_xdyd_from_b6: - //SEG102 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG103 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG104 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG105 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG106 [124] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG103 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG104 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG105 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG106 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG107 [124] 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 - //SEG107 bitmap_line::@1 + //SEG108 bitmap_line::@1 b1: - //SEG108 [57] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG109 [57] (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 - //SEG109 [58] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 + //SEG110 [58] 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 - //SEG110 bitmap_line::@23 + //SEG111 bitmap_line::@23 b23: - //SEG111 [59] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG112 [59] (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 - //SEG112 [60] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG113 [60] 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 - //SEG113 bitmap_line::@24 + //SEG114 bitmap_line::@24 b24: - //SEG114 [61] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG115 [61] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y - //SEG115 [62] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG116 [62] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG116 [63] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 - //SEG117 [64] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG118 [65] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG119 [66] call bitmap_line_ydxd - //SEG120 [139] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG117 [63] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + //SEG118 [64] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG119 [65] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG120 [66] call bitmap_line_ydxd + //SEG121 [139] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] bitmap_line_ydxd_from_b24: - //SEG121 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG122 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG123 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG124 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG125 [139] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG122 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG123 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG124 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG125 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG126 [139] 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 - //SEG126 bitmap_line::@10 + //SEG127 bitmap_line::@10 b10: - //SEG127 [67] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG128 [67] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG128 [68] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - //SEG129 [69] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 - //SEG130 [70] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG131 [71] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG132 [72] call bitmap_line_xdyd - //SEG133 [124] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG129 [68] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + //SEG130 [69] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + //SEG131 [70] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG132 [71] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG133 [72] call bitmap_line_xdyd + //SEG134 [124] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] bitmap_line_xdyd_from_b10: - //SEG134 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG135 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG136 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG137 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG138 [124] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG135 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG136 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG137 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG138 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG139 [124] 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 - //SEG139 bitmap_line::@9 + //SEG140 bitmap_line::@9 b9: - //SEG140 [73] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG141 [73] (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 - //SEG141 [74] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG142 [74] 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 - //SEG142 bitmap_line::@27 + //SEG143 bitmap_line::@27 b27: - //SEG143 [75] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG144 [75] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG144 [76] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG145 [76] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG145 [77] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG146 [77] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y1 - //SEG146 [78] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG147 [79] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG148 [80] call bitmap_line_ydxi - //SEG149 [109] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG147 [78] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG148 [79] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG149 [80] call bitmap_line_ydxi + //SEG150 [109] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] bitmap_line_ydxi_from_b27: - //SEG150 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG151 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG152 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG153 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG154 [109] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG151 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG152 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG153 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG154 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG155 [109] 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 - //SEG155 bitmap_line::@13 + //SEG156 bitmap_line::@13 b13: - //SEG156 [81] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG157 [81] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG157 [82] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - //SEG158 [83] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG158 [82] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + //SEG159 [83] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG159 [84] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG160 [85] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG161 [86] call bitmap_line_xdyi - //SEG162 [87] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG160 [84] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG161 [85] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG162 [86] call bitmap_line_xdyi + //SEG163 [87] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] bitmap_line_xdyi_from_b13: - //SEG163 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG164 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG165 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG166 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG167 [87] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG164 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG165 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG166 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG167 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG168 [87] 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 } -//SEG168 bitmap_line_xdyi +//SEG169 bitmap_line_xdyi bitmap_line_xdyi: { .label _6 = 8 .label y = 6 @@ -4637,89 +4637,89 @@ bitmap_line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG169 [88] (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 + //SEG170 [88] (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 - //SEG170 [89] 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] + //SEG171 [89] 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: - //SEG171 [89] 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 - //SEG172 [89] 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 - //SEG173 [89] 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 + //SEG172 [89] 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 + //SEG173 [89] 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 + //SEG174 [89] 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 - //SEG174 bitmap_line_xdyi::@1 + //SEG175 bitmap_line_xdyi::@1 b1: - //SEG175 [90] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 - //SEG176 [91] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 + //SEG176 [90] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 + //SEG177 [91] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy y - //SEG177 [92] call bitmap_plot - //SEG178 [102] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG178 [92] call bitmap_plot + //SEG179 [102] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG179 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG180 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG180 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG181 [102] 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 - //SEG181 bitmap_line_xdyi::@5 + //SEG182 bitmap_line_xdyi::@5 b5: - //SEG182 [93] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuxx=_inc_vbuxx + //SEG183 [93] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG183 [94] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG184 [94] (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 - //SEG184 [95] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG185 [95] 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 - //SEG185 bitmap_line_xdyi::@3 + //SEG186 bitmap_line_xdyi::@3 b3: - //SEG186 [96] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG187 [96] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG187 [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG188 [97] (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 - //SEG188 [98] 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] + //SEG189 [98] 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: - //SEG189 [98] 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 - //SEG190 [98] 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 + //SEG190 [98] 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 + //SEG191 [98] 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 - //SEG191 bitmap_line_xdyi::@2 + //SEG192 bitmap_line_xdyi::@2 b2: - //SEG192 [99] (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 + //SEG193 [99] (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 - //SEG193 [100] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuxx_neq_vbuz1_then_la1 + //SEG194 [100] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuxx_neq_vbuz1_then_la1 cpx _6 bne b1_from_b2 jmp breturn - //SEG194 bitmap_line_xdyi::@return + //SEG195 bitmap_line_xdyi::@return breturn: - //SEG195 [101] return + //SEG196 [101] return rts } -//SEG196 bitmap_plot +//SEG197 bitmap_plot bitmap_plot: { .label _0 = 9 .label plotter_x = 9 .label plotter_y = $b - //SEG197 [103] (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 + //SEG198 [103] (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 - //SEG198 [104] (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 + //SEG199 [104] (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 - //SEG199 [105] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG200 [105] (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 @@ -4727,93 +4727,93 @@ bitmap_plot: { lda _0+1 adc plotter_y+1 sta _0+1 - //SEG200 [106] (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 + //SEG201 [106] (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 - //SEG201 [107] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa + //SEG202 [107] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (_0),y jmp breturn - //SEG202 bitmap_plot::@return + //SEG203 bitmap_plot::@return breturn: - //SEG203 [108] return + //SEG204 [108] return rts } -//SEG204 bitmap_line_ydxi +//SEG205 bitmap_line_ydxi bitmap_line_ydxi: { .label y = 7 .label y1 = 6 .label yd = 3 .label xd = 4 .label e = 5 - //SEG205 [110] (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 + //SEG206 [110] (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 - //SEG206 [111] 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] + //SEG207 [111] 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: - //SEG207 [111] 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 - //SEG208 [111] 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 - //SEG209 [111] 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 + //SEG208 [111] 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 + //SEG209 [111] 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 + //SEG210 [111] 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 - //SEG210 bitmap_line_ydxi::@1 + //SEG211 bitmap_line_ydxi::@1 b1: - //SEG211 [112] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - //SEG212 [113] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 + //SEG212 [112] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + //SEG213 [113] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy y - //SEG213 [114] call bitmap_plot - //SEG214 [102] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG214 [114] call bitmap_plot + //SEG215 [102] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG215 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG216 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG216 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG217 [102] 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 - //SEG217 bitmap_line_ydxi::@5 + //SEG218 bitmap_line_ydxi::@5 b5: - //SEG218 [115] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG219 [115] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG219 [116] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG220 [116] (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 - //SEG220 [117] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG221 [117] 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 - //SEG221 bitmap_line_ydxi::@3 + //SEG222 bitmap_line_ydxi::@3 b3: - //SEG222 [118] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx + //SEG223 [118] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG223 [119] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG224 [119] (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 - //SEG224 [120] 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] + //SEG225 [120] 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: - //SEG225 [120] 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 - //SEG226 [120] 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 + //SEG226 [120] 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 + //SEG227 [120] 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 - //SEG227 bitmap_line_ydxi::@2 + //SEG228 bitmap_line_ydxi::@2 b2: - //SEG228 [121] (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 -- vbuyy=vbuz1_plus_1 + //SEG229 [121] (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 -- vbuyy=vbuz1_plus_1 ldy y1 iny - //SEG229 [122] 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_vbuyy_then_la1 + //SEG230 [122] 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_vbuyy_then_la1 cpy y bne b1_from_b2 jmp breturn - //SEG230 bitmap_line_ydxi::@return + //SEG231 bitmap_line_ydxi::@return breturn: - //SEG231 [123] return + //SEG232 [123] return rts } -//SEG232 bitmap_line_xdyd +//SEG233 bitmap_line_xdyd bitmap_line_xdyd: { .label _6 = 7 .label y = 6 @@ -4821,173 +4821,173 @@ bitmap_line_xdyd: { .label xd = 4 .label yd = 3 .label e = 5 - //SEG233 [125] (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 + //SEG234 [125] (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 - //SEG234 [126] 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] + //SEG235 [126] 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: - //SEG235 [126] 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 - //SEG236 [126] 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 - //SEG237 [126] 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 + //SEG236 [126] 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 + //SEG237 [126] 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 + //SEG238 [126] 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 - //SEG238 bitmap_line_xdyd::@1 + //SEG239 bitmap_line_xdyd::@1 b1: - //SEG239 [127] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 - //SEG240 [128] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 + //SEG240 [127] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 + //SEG241 [128] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy y - //SEG241 [129] call bitmap_plot - //SEG242 [102] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG242 [129] call bitmap_plot + //SEG243 [102] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG243 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG244 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG244 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG245 [102] 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 - //SEG245 bitmap_line_xdyd::@5 + //SEG246 bitmap_line_xdyd::@5 b5: - //SEG246 [130] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuxx=_inc_vbuxx + //SEG247 [130] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuxx=_inc_vbuxx inx - //SEG247 [131] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG248 [131] (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 - //SEG248 [132] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG249 [132] 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 - //SEG249 bitmap_line_xdyd::@3 + //SEG250 bitmap_line_xdyd::@3 b3: - //SEG250 [133] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG251 [133] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG251 [134] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG252 [134] (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 - //SEG252 [135] 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] + //SEG253 [135] 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: - //SEG253 [135] 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 - //SEG254 [135] 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 + //SEG254 [135] 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 + //SEG255 [135] 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 - //SEG255 bitmap_line_xdyd::@2 + //SEG256 bitmap_line_xdyd::@2 b2: - //SEG256 [136] (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 + //SEG257 [136] (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 - //SEG257 [137] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuxx_neq_vbuz1_then_la1 + //SEG258 [137] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuxx_neq_vbuz1_then_la1 cpx _6 bne b1_from_b2 jmp breturn - //SEG258 bitmap_line_xdyd::@return + //SEG259 bitmap_line_xdyd::@return breturn: - //SEG259 [138] return + //SEG260 [138] return rts } -//SEG260 bitmap_line_ydxd +//SEG261 bitmap_line_ydxd bitmap_line_ydxd: { .label y = 7 .label y1 = 6 .label yd = 3 .label xd = 4 .label e = 5 - //SEG261 [140] (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 + //SEG262 [140] (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 - //SEG262 [141] 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] + //SEG263 [141] 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: - //SEG263 [141] 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 - //SEG264 [141] 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 - //SEG265 [141] 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 + //SEG264 [141] 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 + //SEG265 [141] 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 + //SEG266 [141] 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 - //SEG266 bitmap_line_ydxd::@1 + //SEG267 bitmap_line_ydxd::@1 b1: - //SEG267 [142] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - //SEG268 [143] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 + //SEG268 [142] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + //SEG269 [143] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy y - //SEG269 [144] call bitmap_plot - //SEG270 [102] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG270 [144] call bitmap_plot + //SEG271 [102] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG271 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG272 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG272 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG273 [102] 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 - //SEG273 bitmap_line_ydxd::@5 + //SEG274 bitmap_line_ydxd::@5 b5: - //SEG274 [145] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG275 [145] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG275 [146] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG276 [146] (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 - //SEG276 [147] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG277 [147] 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 - //SEG277 bitmap_line_ydxd::@3 + //SEG278 bitmap_line_ydxd::@3 b3: - //SEG278 [148] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx + //SEG279 [148] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx dex - //SEG279 [149] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG280 [149] (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 - //SEG280 [150] 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] + //SEG281 [150] 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: - //SEG281 [150] 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 - //SEG282 [150] 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 + //SEG282 [150] 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 + //SEG283 [150] 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 - //SEG283 bitmap_line_ydxd::@2 + //SEG284 bitmap_line_ydxd::@2 b2: - //SEG284 [151] (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 -- vbuyy=vbuz1_plus_1 + //SEG285 [151] (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 -- vbuyy=vbuz1_plus_1 ldy y1 iny - //SEG285 [152] 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_vbuyy_then_la1 + //SEG286 [152] 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_vbuyy_then_la1 cpy y bne b1_from_b2 jmp breturn - //SEG286 bitmap_line_ydxd::@return + //SEG287 bitmap_line_ydxd::@return breturn: - //SEG287 [153] return + //SEG288 [153] return rts } -//SEG288 init_screen +//SEG289 init_screen init_screen: { .label c = 9 - //SEG289 [155] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG290 [155] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG290 [155] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG291 [155] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b1 - //SEG291 [155] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG292 [155] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG292 [155] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG293 [155] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG293 init_screen::@1 + //SEG294 init_screen::@1 b1: - //SEG294 [156] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG295 [156] *((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 - //SEG295 [157] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG296 [157] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG296 [158] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG297 [158] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b1_from_b1 @@ -4995,169 +4995,169 @@ init_screen: { cmp #bitmap_clear::@1] + //SEG302 [161] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG303 [162] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG303 [162] 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 + //SEG304 [162] 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 - //SEG304 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG305 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG305 [162] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG306 [162] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG306 [162] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG307 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG307 [162] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG308 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG308 bitmap_clear::@1 + //SEG309 bitmap_clear::@1 b1: - //SEG309 [163] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG310 [163] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG310 [163] 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 + //SEG311 [163] 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 - //SEG311 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG312 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG312 [163] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG313 [163] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG313 [163] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG314 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG314 [163] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG315 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG315 bitmap_clear::@2 + //SEG316 bitmap_clear::@2 b2: - //SEG316 [164] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG317 [164] *((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 - //SEG317 [165] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG318 [165] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG318 [166] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG319 [166] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG319 [167] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG320 [167] 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 - //SEG320 bitmap_clear::@3 + //SEG321 bitmap_clear::@3 b3: - //SEG321 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG322 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG322 [169] 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 + //SEG323 [169] 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 - //SEG323 bitmap_clear::@return + //SEG324 bitmap_clear::@return breturn: - //SEG324 [170] return + //SEG325 [170] return rts } -//SEG325 bitmap_init +//SEG326 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _6 = 2 .label yoffs = 9 - //SEG326 [172] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG327 [172] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG327 [172] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 + //SEG328 [172] 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 - //SEG328 [172] 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 + //SEG329 [172] 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 - //SEG329 [172] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG330 [172] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG330 [172] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG331 [172] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG331 [172] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG332 [172] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG332 bitmap_init::@1 + //SEG333 bitmap_init::@1 b1: - //SEG333 [173] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG334 [173] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG334 [174] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG335 [174] *((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 - //SEG335 [175] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG336 [175] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta bitmap_plot_xhi,x - //SEG336 [176] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG337 [176] *((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 - //SEG337 [177] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG338 [177] (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 - //SEG338 [178] 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 + //SEG339 [178] 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 - //SEG339 [179] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG340 [179] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG340 [179] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 + //SEG341 [179] 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 - //SEG341 bitmap_init::@2 + //SEG342 bitmap_init::@2 b2: - //SEG342 [180] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG343 [180] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG343 [181] 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 + //SEG344 [181] 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 - //SEG344 [182] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG345 [182] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG345 [182] 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 + //SEG346 [182] 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 - //SEG346 [182] 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 + //SEG347 [182] 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 - //SEG347 [182] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG348 [182] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG348 [182] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG349 [182] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG349 [182] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG350 [182] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG350 bitmap_init::@3 + //SEG351 bitmap_init::@3 b3: - //SEG351 [183] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG352 [183] (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 - //SEG352 [184] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG353 [184] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG353 [185] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG354 [185] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG354 [186] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG355 [186] *((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 - //SEG355 [187] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG356 [187] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG356 [188] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG357 [188] *((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 - //SEG357 [189] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG358 [189] (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 - //SEG358 [190] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG359 [190] 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 - //SEG359 bitmap_init::@7 + //SEG360 bitmap_init::@7 b7: - //SEG360 [191] (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 + //SEG361 [191] (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 @@ -5165,35 +5165,33 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG361 [192] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG362 [192] 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: - //SEG362 [192] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG363 [192] 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 - //SEG363 bitmap_init::@4 + //SEG364 bitmap_init::@4 b4: - //SEG364 [193] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG365 [193] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG365 [194] 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 + //SEG366 [194] 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 - //SEG366 bitmap_init::@return + //SEG367 bitmap_init::@return breturn: - //SEG367 [195] return + //SEG368 [195] return rts - //SEG368 [196] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG369 [196] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG369 bitmap_init::@10 + //SEG370 bitmap_init::@10 b10: - //SEG370 [179] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG371 [179] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG371 [179] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG372 [179] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 @@ -5804,11 +5802,12 @@ reg byte a [ bitmap_init::$10 ] FINAL ASSEMBLER Score: 221043 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label D011 = $d011 @@ -5819,83 +5818,83 @@ Score: 221043 .label SCREEN = $400 .label BITMAP = $2000 .const lines_cnt = 8 -//SEG2 @begin -//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] -//SEG4 @15 -//SEG5 [2] call main -//SEG6 [3] phi from @15 to @end [phi:@15->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @15 [phi:@begin->@15] +//SEG5 @15 +//SEG6 [2] call main +//SEG7 [3] phi from @15 to @end [phi:@15->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL - //SEG10 [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta BGCOL - //SEG11 [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 -- _deref_pbuc1=vbuc2 + //SEG12 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG12 [7] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY - //SEG13 [8] call bitmap_init - //SEG14 [171] phi from main to bitmap_init [phi:main->bitmap_init] + //SEG14 [8] call bitmap_init + //SEG15 [171] phi from main to bitmap_init [phi:main->bitmap_init] jsr bitmap_init - //SEG15 [9] phi from main to main::@3 [phi:main->main::@3] - //SEG16 main::@3 - //SEG17 [10] call bitmap_clear + //SEG16 [9] phi from main to main::@3 [phi:main->main::@3] + //SEG17 main::@3 + //SEG18 [10] call bitmap_clear jsr bitmap_clear - //SEG18 [11] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG19 main::@4 - //SEG20 [12] call init_screen - //SEG21 [154] phi from main::@4 to init_screen [phi:main::@4->init_screen] + //SEG19 [11] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG20 main::@4 + //SEG21 [12] call init_screen + //SEG22 [154] phi from main::@4 to init_screen [phi:main::@4->init_screen] jsr init_screen - //SEG22 [13] phi from main::@1 main::@4 to main::@1 [phi:main::@1/main::@4->main::@1] - //SEG23 main::@1 + //SEG23 [13] phi from main::@1 main::@4 to main::@1 [phi:main::@1/main::@4->main::@1] + //SEG24 main::@1 b1: - //SEG24 [14] call lines - //SEG25 [15] phi from main::@1 to lines [phi:main::@1->lines] + //SEG25 [14] call lines + //SEG26 [15] phi from main::@1 to lines [phi:main::@1->lines] jsr lines jmp b1 } -//SEG26 lines +//SEG27 lines lines: { .label l = 2 - //SEG27 [16] phi from lines to lines::@1 [phi:lines->lines::@1] - //SEG28 [16] phi (byte) lines::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lines->lines::@1#0] -- vbuz1=vbuc1 + //SEG28 [16] phi from lines to lines::@1 [phi:lines->lines::@1] + //SEG29 [16] phi (byte) lines::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lines->lines::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG29 [16] phi from lines::@3 to lines::@1 [phi:lines::@3->lines::@1] - //SEG30 [16] phi (byte) lines::l#2 = (byte) lines::l#1 [phi:lines::@3->lines::@1#0] -- register_copy - //SEG31 lines::@1 + //SEG30 [16] phi from lines::@3 to lines::@1 [phi:lines::@3->lines::@1] + //SEG31 [16] phi (byte) lines::l#2 = (byte) lines::l#1 [phi:lines::@3->lines::@1#0] -- register_copy + //SEG32 lines::@1 b1: - //SEG32 [17] (byte) bitmap_line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG33 [17] (byte) bitmap_line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG33 [18] (byte) bitmap_line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG34 [18] (byte) bitmap_line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_x+1,y sta bitmap_line.x1 - //SEG34 [19] (byte) bitmap_line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG35 [19] (byte) bitmap_line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_y,y sta bitmap_line.y0 - //SEG35 [20] (byte) bitmap_line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG36 [20] (byte) bitmap_line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lines::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 ldx l ldy lines_y+1,x - //SEG36 [21] call bitmap_line + //SEG37 [21] call bitmap_line jsr bitmap_line - //SEG37 lines::@3 - //SEG38 [22] (byte) lines::l#1 ← ++ (byte) lines::l#2 -- vbuz1=_inc_vbuz1 + //SEG38 lines::@3 + //SEG39 [22] (byte) lines::l#1 ← ++ (byte) lines::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG39 [23] if((byte) lines::l#1<(const byte) lines_cnt#0) goto lines::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG40 [23] if((byte) lines::l#1<(const byte) lines_cnt#0) goto lines::@1 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b1 - //SEG40 lines::@return - //SEG41 [24] return + //SEG41 lines::@return + //SEG42 [24] return rts } -//SEG42 bitmap_line +//SEG43 bitmap_line // Draw a line on the bitmap bitmap_line: { .label xd = 4 @@ -5903,225 +5902,225 @@ bitmap_line: { .label x0 = 5 .label x1 = 8 .label y0 = 6 - //SEG43 [25] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG44 [25] 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 - //SEG44 bitmap_line::@15 - //SEG45 [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG45 bitmap_line::@15 + //SEG46 [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 sec sbc x1 sta xd - //SEG46 [27] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 + //SEG47 [27] 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 !: - //SEG47 bitmap_line::@16 - //SEG48 [28] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG48 bitmap_line::@16 + //SEG49 [28] (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 - //SEG49 [29] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG50 [29] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b3 - //SEG50 bitmap_line::@17 - //SEG51 [30] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG51 bitmap_line::@17 + //SEG52 [30] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y - //SEG52 [31] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG53 [31] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG53 [32] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 - //SEG54 [33] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG55 [34] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG56 [35] call bitmap_line_ydxi - //SEG57 [109] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] - //SEG58 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG59 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG60 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG61 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG62 [109] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG54 [32] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + //SEG55 [33] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG56 [34] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG57 [35] call bitmap_line_ydxi + //SEG58 [109] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG59 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG60 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG61 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG62 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG63 [109] 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 - //SEG63 bitmap_line::@return + //SEG64 bitmap_line::@return breturn: - //SEG64 [36] return + //SEG65 [36] return rts - //SEG65 bitmap_line::@3 + //SEG66 bitmap_line::@3 b3: - //SEG66 [37] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG67 [37] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG67 [38] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG68 [38] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyi.y - //SEG68 [39] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 - //SEG69 [40] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 - //SEG70 [41] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 - //SEG71 [42] call bitmap_line_xdyi - //SEG72 [87] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] - //SEG73 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG74 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG75 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG76 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG77 [87] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG69 [39] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + //SEG70 [40] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG71 [41] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG72 [42] call bitmap_line_xdyi + //SEG73 [87] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG74 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG75 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG76 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG77 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG78 [87] 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 - //SEG78 bitmap_line::@2 + //SEG79 bitmap_line::@2 b2: - //SEG79 [43] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG80 [43] (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 - //SEG80 [44] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG81 [44] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b6 - //SEG81 bitmap_line::@20 - //SEG82 [45] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG82 bitmap_line::@20 + //SEG83 [45] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG83 [46] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG84 [46] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG84 [47] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG85 [47] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y1 - //SEG85 [48] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG86 [49] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG87 [50] call bitmap_line_ydxd - //SEG88 [139] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] - //SEG89 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG90 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG91 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG92 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG93 [139] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG86 [48] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG87 [49] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG88 [50] call bitmap_line_ydxd + //SEG89 [139] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG90 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG91 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG92 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG93 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG94 [139] 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 - //SEG94 bitmap_line::@6 + //SEG95 bitmap_line::@6 b6: - //SEG95 [51] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG96 [51] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG96 [52] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG97 [52] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyd.y - //SEG97 [53] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG98 [53] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG98 [54] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 - //SEG99 [55] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 - //SEG100 [56] call bitmap_line_xdyd - //SEG101 [124] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] - //SEG102 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG103 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG104 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG105 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG106 [124] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG99 [54] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG100 [55] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG101 [56] call bitmap_line_xdyd + //SEG102 [124] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG103 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG104 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG105 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG106 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG107 [124] 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 - //SEG107 bitmap_line::@1 + //SEG108 bitmap_line::@1 b1: - //SEG108 [57] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG109 [57] (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 - //SEG109 [58] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 + //SEG110 [58] 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 !: - //SEG110 bitmap_line::@23 - //SEG111 [59] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG111 bitmap_line::@23 + //SEG112 [59] (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 - //SEG112 [60] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG113 [60] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b10 - //SEG113 bitmap_line::@24 - //SEG114 [61] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG114 bitmap_line::@24 + //SEG115 [61] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y - //SEG115 [62] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG116 [62] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG116 [63] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 - //SEG117 [64] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG118 [65] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG119 [66] call bitmap_line_ydxd - //SEG120 [139] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] - //SEG121 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG122 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG123 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG124 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG125 [139] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG117 [63] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + //SEG118 [64] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG119 [65] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG120 [66] call bitmap_line_ydxd + //SEG121 [139] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG122 [139] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG123 [139] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG124 [139] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG125 [139] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG126 [139] 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 - //SEG126 bitmap_line::@10 + //SEG127 bitmap_line::@10 b10: - //SEG127 [67] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG128 [67] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG128 [68] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - //SEG129 [69] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 - //SEG130 [70] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 - //SEG131 [71] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 - //SEG132 [72] call bitmap_line_xdyd - //SEG133 [124] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] - //SEG134 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG135 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG136 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG137 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG138 [124] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG129 [68] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + //SEG130 [69] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + //SEG131 [70] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG132 [71] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG133 [72] call bitmap_line_xdyd + //SEG134 [124] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG135 [124] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG136 [124] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG137 [124] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG138 [124] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG139 [124] 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 - //SEG139 bitmap_line::@9 + //SEG140 bitmap_line::@9 b9: - //SEG140 [73] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG141 [73] (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 - //SEG141 [74] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG142 [74] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b13 - //SEG142 bitmap_line::@27 - //SEG143 [75] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG143 bitmap_line::@27 + //SEG144 [75] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG144 [76] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG145 [76] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG145 [77] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG146 [77] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y1 - //SEG146 [78] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG147 [79] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG148 [80] call bitmap_line_ydxi - //SEG149 [109] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] - //SEG150 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG151 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG152 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG153 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG154 [109] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG147 [78] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG148 [79] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG149 [80] call bitmap_line_ydxi + //SEG150 [109] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG151 [109] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG152 [109] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG153 [109] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG154 [109] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG155 [109] 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 - //SEG155 bitmap_line::@13 + //SEG156 bitmap_line::@13 b13: - //SEG156 [81] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG157 [81] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG157 [82] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - //SEG158 [83] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG158 [82] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + //SEG159 [83] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG159 [84] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 - //SEG160 [85] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 - //SEG161 [86] call bitmap_line_xdyi - //SEG162 [87] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] - //SEG163 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG164 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG165 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG166 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG167 [87] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG160 [84] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG161 [85] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG162 [86] call bitmap_line_xdyi + //SEG163 [87] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG164 [87] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG165 [87] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG166 [87] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG167 [87] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG168 [87] 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 } -//SEG168 bitmap_line_xdyi +//SEG169 bitmap_line_xdyi bitmap_line_xdyi: { .label _6 = 8 .label y = 6 @@ -6129,76 +6128,76 @@ bitmap_line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG169 [88] (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 + //SEG170 [88] (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 - //SEG170 [89] 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] - //SEG171 [89] 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 - //SEG172 [89] 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 - //SEG173 [89] 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 - //SEG174 bitmap_line_xdyi::@1 + //SEG171 [89] 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] + //SEG172 [89] 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 + //SEG173 [89] 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 + //SEG174 [89] 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 + //SEG175 bitmap_line_xdyi::@1 b1: - //SEG175 [90] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 - //SEG176 [91] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 + //SEG176 [90] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 + //SEG177 [91] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy y - //SEG177 [92] call bitmap_plot - //SEG178 [102] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] - //SEG179 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG180 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG178 [92] call bitmap_plot + //SEG179 [102] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG180 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG181 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG181 bitmap_line_xdyi::@5 - //SEG182 [93] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuxx=_inc_vbuxx + //SEG182 bitmap_line_xdyi::@5 + //SEG183 [93] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG183 [94] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG184 [94] (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 - //SEG184 [95] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG185 [95] 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 - //SEG185 bitmap_line_xdyi::@3 - //SEG186 [96] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG186 bitmap_line_xdyi::@3 + //SEG187 [96] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG187 [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG188 [97] (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 - //SEG188 [98] 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] - //SEG189 [98] 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 - //SEG190 [98] 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 - //SEG191 bitmap_line_xdyi::@2 + //SEG189 [98] 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] + //SEG190 [98] 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 + //SEG191 [98] 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 + //SEG192 bitmap_line_xdyi::@2 b2: - //SEG192 [99] (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 + //SEG193 [99] (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 - //SEG193 [100] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuxx_neq_vbuz1_then_la1 + //SEG194 [100] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuxx_neq_vbuz1_then_la1 cpx _6 bne b1 - //SEG194 bitmap_line_xdyi::@return - //SEG195 [101] return + //SEG195 bitmap_line_xdyi::@return + //SEG196 [101] return rts } -//SEG196 bitmap_plot +//SEG197 bitmap_plot bitmap_plot: { .label _0 = 9 .label plotter_x = 9 .label plotter_y = $b - //SEG197 [103] (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 + //SEG198 [103] (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 - //SEG198 [104] (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 + //SEG199 [104] (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 - //SEG199 [105] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG200 [105] (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 @@ -6206,77 +6205,77 @@ bitmap_plot: { lda _0+1 adc plotter_y+1 sta _0+1 - //SEG200 [106] (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 + //SEG201 [106] (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 - //SEG201 [107] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa + //SEG202 [107] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa sta (_0),y - //SEG202 bitmap_plot::@return - //SEG203 [108] return + //SEG203 bitmap_plot::@return + //SEG204 [108] return rts } -//SEG204 bitmap_line_ydxi +//SEG205 bitmap_line_ydxi bitmap_line_ydxi: { .label y = 7 .label y1 = 6 .label yd = 3 .label xd = 4 .label e = 5 - //SEG205 [110] (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 + //SEG206 [110] (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 - //SEG206 [111] 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] - //SEG207 [111] 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 - //SEG208 [111] 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 - //SEG209 [111] 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 - //SEG210 bitmap_line_ydxi::@1 + //SEG207 [111] 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] + //SEG208 [111] 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 + //SEG209 [111] 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 + //SEG210 [111] 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 + //SEG211 bitmap_line_ydxi::@1 b1: - //SEG211 [112] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - //SEG212 [113] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 + //SEG212 [112] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + //SEG213 [113] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy y - //SEG213 [114] call bitmap_plot - //SEG214 [102] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] - //SEG215 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG216 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG214 [114] call bitmap_plot + //SEG215 [102] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG216 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG217 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG217 bitmap_line_ydxi::@5 - //SEG218 [115] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG218 bitmap_line_ydxi::@5 + //SEG219 [115] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG219 [116] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG220 [116] (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 - //SEG220 [117] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG221 [117] 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 - //SEG221 bitmap_line_ydxi::@3 - //SEG222 [118] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx + //SEG222 bitmap_line_ydxi::@3 + //SEG223 [118] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG223 [119] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG224 [119] (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 - //SEG224 [120] 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] - //SEG225 [120] 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 - //SEG226 [120] 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 - //SEG227 bitmap_line_ydxi::@2 + //SEG225 [120] 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] + //SEG226 [120] 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 + //SEG227 [120] 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 + //SEG228 bitmap_line_ydxi::@2 b2: - //SEG228 [121] (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 -- vbuyy=vbuz1_plus_1 + //SEG229 [121] (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 -- vbuyy=vbuz1_plus_1 ldy y1 iny - //SEG229 [122] 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_vbuyy_then_la1 + //SEG230 [122] 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_vbuyy_then_la1 cpy y bne b1 - //SEG230 bitmap_line_ydxi::@return - //SEG231 [123] return + //SEG231 bitmap_line_ydxi::@return + //SEG232 [123] return rts } -//SEG232 bitmap_line_xdyd +//SEG233 bitmap_line_xdyd bitmap_line_xdyd: { .label _6 = 7 .label y = 6 @@ -6284,286 +6283,286 @@ bitmap_line_xdyd: { .label xd = 4 .label yd = 3 .label e = 5 - //SEG233 [125] (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 + //SEG234 [125] (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 - //SEG234 [126] 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] - //SEG235 [126] 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 - //SEG236 [126] 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 - //SEG237 [126] 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 - //SEG238 bitmap_line_xdyd::@1 + //SEG235 [126] 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] + //SEG236 [126] 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 + //SEG237 [126] 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 + //SEG238 [126] 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 + //SEG239 bitmap_line_xdyd::@1 b1: - //SEG239 [127] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 - //SEG240 [128] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 + //SEG240 [127] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 + //SEG241 [128] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy y - //SEG241 [129] call bitmap_plot - //SEG242 [102] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] - //SEG243 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG244 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG242 [129] call bitmap_plot + //SEG243 [102] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG244 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG245 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG245 bitmap_line_xdyd::@5 - //SEG246 [130] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuxx=_inc_vbuxx + //SEG246 bitmap_line_xdyd::@5 + //SEG247 [130] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuxx=_inc_vbuxx inx - //SEG247 [131] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG248 [131] (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 - //SEG248 [132] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG249 [132] 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 - //SEG249 bitmap_line_xdyd::@3 - //SEG250 [133] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG250 bitmap_line_xdyd::@3 + //SEG251 [133] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG251 [134] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG252 [134] (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 - //SEG252 [135] 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] - //SEG253 [135] 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 - //SEG254 [135] 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 - //SEG255 bitmap_line_xdyd::@2 + //SEG253 [135] 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] + //SEG254 [135] 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 + //SEG255 [135] 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 + //SEG256 bitmap_line_xdyd::@2 b2: - //SEG256 [136] (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 + //SEG257 [136] (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 - //SEG257 [137] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuxx_neq_vbuz1_then_la1 + //SEG258 [137] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuxx_neq_vbuz1_then_la1 cpx _6 bne b1 - //SEG258 bitmap_line_xdyd::@return - //SEG259 [138] return + //SEG259 bitmap_line_xdyd::@return + //SEG260 [138] return rts } -//SEG260 bitmap_line_ydxd +//SEG261 bitmap_line_ydxd bitmap_line_ydxd: { .label y = 7 .label y1 = 6 .label yd = 3 .label xd = 4 .label e = 5 - //SEG261 [140] (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 + //SEG262 [140] (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 - //SEG262 [141] 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] - //SEG263 [141] 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 - //SEG264 [141] 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 - //SEG265 [141] 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 - //SEG266 bitmap_line_ydxd::@1 + //SEG263 [141] 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] + //SEG264 [141] 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 + //SEG265 [141] 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 + //SEG266 [141] 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 + //SEG267 bitmap_line_ydxd::@1 b1: - //SEG267 [142] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - //SEG268 [143] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 + //SEG268 [142] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + //SEG269 [143] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy y - //SEG269 [144] call bitmap_plot - //SEG270 [102] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] - //SEG271 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG272 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG270 [144] call bitmap_plot + //SEG271 [102] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG272 [102] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG273 [102] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG273 bitmap_line_ydxd::@5 - //SEG274 [145] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG274 bitmap_line_ydxd::@5 + //SEG275 [145] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG275 [146] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG276 [146] (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 - //SEG276 [147] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG277 [147] 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 - //SEG277 bitmap_line_ydxd::@3 - //SEG278 [148] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx + //SEG278 bitmap_line_ydxd::@3 + //SEG279 [148] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx dex - //SEG279 [149] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG280 [149] (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 - //SEG280 [150] 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] - //SEG281 [150] 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 - //SEG282 [150] 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 - //SEG283 bitmap_line_ydxd::@2 + //SEG281 [150] 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] + //SEG282 [150] 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 + //SEG283 [150] 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 + //SEG284 bitmap_line_ydxd::@2 b2: - //SEG284 [151] (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 -- vbuyy=vbuz1_plus_1 + //SEG285 [151] (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 -- vbuyy=vbuz1_plus_1 ldy y1 iny - //SEG285 [152] 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_vbuyy_then_la1 + //SEG286 [152] 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_vbuyy_then_la1 cpy y bne b1 - //SEG286 bitmap_line_ydxd::@return - //SEG287 [153] return + //SEG287 bitmap_line_ydxd::@return + //SEG288 [153] return rts } -//SEG288 init_screen +//SEG289 init_screen init_screen: { .label c = 9 - //SEG289 [155] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] - //SEG290 [155] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG290 [155] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG291 [155] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 - //SEG291 [155] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] - //SEG292 [155] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy - //SEG293 init_screen::@1 + //SEG292 [155] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG293 [155] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG294 init_screen::@1 b1: - //SEG294 [156] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG295 [156] *((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 - //SEG295 [157] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG296 [157] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG296 [158] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG297 [158] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b1 lda c cmp #bitmap_clear::@1] - //SEG303 [162] 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 + //SEG302 [161] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG303 [162] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG304 [162] 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 - //SEG304 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy - //SEG305 [162] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] - //SEG306 [162] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG307 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy - //SEG308 bitmap_clear::@1 + //SEG305 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG306 [162] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG307 [162] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG308 [162] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG309 bitmap_clear::@1 b1: - //SEG309 [163] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] - //SEG310 [163] 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 + //SEG310 [163] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG311 [163] 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 - //SEG311 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy - //SEG312 [163] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] - //SEG313 [163] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG314 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy - //SEG315 bitmap_clear::@2 + //SEG312 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG313 [163] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG314 [163] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG315 [163] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG316 bitmap_clear::@2 b2: - //SEG316 [164] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG317 [164] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y - //SEG317 [165] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG318 [165] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG318 [166] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG319 [166] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG319 [167] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG320 [167] 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 - //SEG320 bitmap_clear::@3 - //SEG321 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG321 bitmap_clear::@3 + //SEG322 [168] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG322 [169] 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 + //SEG323 [169] 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 - //SEG323 bitmap_clear::@return - //SEG324 [170] return + //SEG324 bitmap_clear::@return + //SEG325 [170] return rts } -//SEG325 bitmap_init +//SEG326 bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label _6 = 2 .label yoffs = 9 - //SEG326 [172] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - //SEG327 [172] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 + //SEG327 [172] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG328 [172] 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 - //SEG328 [172] 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 + //SEG329 [172] 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 - //SEG329 [172] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - //SEG330 [172] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG331 [172] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy - //SEG332 bitmap_init::@1 + //SEG330 [172] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG331 [172] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG332 [172] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG333 bitmap_init::@1 b1: - //SEG333 [173] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG334 [173] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG334 [174] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG335 [174] *((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 - //SEG335 [175] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG336 [175] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta bitmap_plot_xhi,x - //SEG336 [176] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG337 [176] *((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 - //SEG337 [177] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG338 [177] (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 - //SEG338 [178] 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 + //SEG339 [178] 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 - //SEG339 [179] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - //SEG340 [179] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 + //SEG340 [179] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG341 [179] 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 - //SEG341 bitmap_init::@2 + //SEG342 bitmap_init::@2 b2: - //SEG342 [180] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG343 [180] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG343 [181] 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 + //SEG344 [181] 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 - //SEG344 [182] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - //SEG345 [182] 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 + //SEG345 [182] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG346 [182] 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 - //SEG346 [182] 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 + //SEG347 [182] 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 - //SEG347 [182] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - //SEG348 [182] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG349 [182] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy - //SEG350 bitmap_init::@3 + //SEG348 [182] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG349 [182] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG350 [182] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG351 bitmap_init::@3 b3: - //SEG351 [183] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG352 [183] (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 - //SEG352 [184] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG353 [184] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG353 [185] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG354 [185] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG354 [186] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG355 [186] *((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 - //SEG355 [187] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG356 [187] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG356 [188] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG357 [188] *((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 - //SEG357 [189] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG358 [189] (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 - //SEG358 [190] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG359 [190] 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 - //SEG359 bitmap_init::@7 - //SEG360 [191] (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 + //SEG360 bitmap_init::@7 + //SEG361 [191] (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 @@ -6571,25 +6570,23 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG361 [192] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] - //SEG362 [192] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy - //SEG363 bitmap_init::@4 + //SEG362 [192] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG363 [192] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG364 bitmap_init::@4 b4: - //SEG364 [193] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG365 [193] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG365 [194] 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 + //SEG366 [194] 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 - //SEG366 bitmap_init::@return - //SEG367 [195] return + //SEG367 bitmap_init::@return + //SEG368 [195] return rts - //SEG368 [196] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] - //SEG369 bitmap_init::@10 - //SEG370 [179] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] - //SEG371 [179] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG369 [196] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG370 bitmap_init::@10 + //SEG371 [179] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG372 [179] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } - // Plot and line drawing routines for HIRES bitmaps - // Currently it can only plot on the first 256 x-positions. // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 diff --git a/src/test/ref/examples/chargen/chargen-analysis.asm b/src/test/ref/examples/chargen/chargen-analysis.asm index 435bf67ae..c219fda2b 100644 --- a/src/test/ref/examples/chargen/chargen-analysis.asm +++ b/src/test/ref/examples/chargen/chargen-analysis.asm @@ -1,3 +1,4 @@ +// Allows analysis of the CHARGEN ROM font .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" @@ -301,7 +302,6 @@ plot_chargen: { cli rts } -// Simple binary multiplication implementation // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .const b = $a diff --git a/src/test/ref/examples/chargen/chargen-analysis.log b/src/test/ref/examples/chargen/chargen-analysis.log index d5c3e1f65..bf2ad19b7 100644 --- a/src/test/ref/examples/chargen/chargen-analysis.log +++ b/src/test/ref/examples/chargen/chargen-analysis.log @@ -2605,11 +2605,13 @@ Allocated zp ZP_BYTE:60 [ keyboard_matrix_read::return#0 ] Allocated zp ZP_BYTE:61 [ keyboard_get_keycode::return#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Allows analysis of the CHARGEN ROM font +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // Processor Port Register controlling RAM/ROM configuration and the datasette .label PROCPORT = 1 // The address of the CHARGEN character set @@ -2674,23 +2676,23 @@ INITIAL ASM .const KEY_SPACE = $3c .const KEY_Q = $3e .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +//SEG4 [1] phi from @begin to @19 [phi:@begin->@19] b19_from_bbegin: jmp b19 -//SEG4 @19 +//SEG5 @19 b19: -//SEG5 [2] call main -//SEG6 [4] phi from @19 to main [phi:@19->main] +//SEG6 [2] call main +//SEG7 [4] phi from @19 to main [phi:@19->main] main_from_b19: jsr main -//SEG7 [3] phi from @19 to @end [phi:@19->@end] +//SEG8 [3] phi from @19 to @end [phi:@19->@end] bend_from_b19: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _15 = $1f .label _18 = $21 @@ -2704,30 +2706,30 @@ main: { .label ch = 7 .label cur_pos = 5 .label shift = 6 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -2736,416 +2738,416 @@ main: { cmp #main::@13] + //SEG19 [9] phi from main::@1 to main::@13 [phi:main::@1->main::@13] b13_from_b1: jmp b13 - //SEG19 main::@13 + //SEG20 main::@13 b13: - //SEG20 [10] call print_str_at - //SEG21 [127] phi from main::@13 to print_str_at [phi:main::@13->print_str_at] + //SEG21 [10] call print_str_at + //SEG22 [127] phi from main::@13 to print_str_at [phi:main::@13->print_str_at] print_str_at_from_b13: - //SEG22 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG23 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1 sta print_str_at.at+1 - //SEG23 [127] phi (byte*) print_str_at::str#7 = (const string) main::str [phi:main::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG24 [127] phi (byte*) print_str_at::str#7 = (const string) main::str [phi:main::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG24 [11] phi from main::@13 to main::@25 [phi:main::@13->main::@25] + //SEG25 [11] phi from main::@13 to main::@25 [phi:main::@13->main::@25] b25_from_b13: jmp b25 - //SEG25 main::@25 + //SEG26 main::@25 b25: - //SEG26 [12] call print_str_at - //SEG27 [127] phi from main::@25 to print_str_at [phi:main::@25->print_str_at] + //SEG27 [12] call print_str_at + //SEG28 [127] phi from main::@25 to print_str_at [phi:main::@25->print_str_at] print_str_at_from_b25: - //SEG28 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@25->print_str_at#0] -- pbuz1=pbuc1 + //SEG29 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@25->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$a sta print_str_at.at+1 - //SEG29 [127] phi (byte*) print_str_at::str#7 = (const string) main::str1 [phi:main::@25->print_str_at#1] -- pbuz1=pbuc1 + //SEG30 [127] phi (byte*) print_str_at::str#7 = (const string) main::str1 [phi:main::@25->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG30 [13] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG31 [13] phi from main::@25 to main::@26 [phi:main::@25->main::@26] b26_from_b25: jmp b26 - //SEG31 main::@26 + //SEG32 main::@26 b26: - //SEG32 [14] call print_str_at - //SEG33 [127] phi from main::@26 to print_str_at [phi:main::@26->print_str_at] + //SEG33 [14] call print_str_at + //SEG34 [127] phi from main::@26 to print_str_at [phi:main::@26->print_str_at] print_str_at_from_b26: - //SEG34 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@26->print_str_at#0] -- pbuz1=pbuc1 + //SEG35 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@26->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$14 sta print_str_at.at+1 - //SEG35 [127] phi (byte*) print_str_at::str#7 = (const string) main::str2 [phi:main::@26->print_str_at#1] -- pbuz1=pbuc1 + //SEG36 [127] phi (byte*) print_str_at::str#7 = (const string) main::str2 [phi:main::@26->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG36 [15] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG37 [15] phi from main::@26 to main::@27 [phi:main::@26->main::@27] b27_from_b26: jmp b27 - //SEG37 main::@27 + //SEG38 main::@27 b27: - //SEG38 [16] call print_str_at - //SEG39 [127] phi from main::@27 to print_str_at [phi:main::@27->print_str_at] + //SEG39 [16] call print_str_at + //SEG40 [127] phi from main::@27 to print_str_at [phi:main::@27->print_str_at] print_str_at_from_b27: - //SEG40 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 30 [phi:main::@27->print_str_at#0] -- pbuz1=pbuc1 + //SEG41 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 30 [phi:main::@27->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$1e sta print_str_at.at+1 - //SEG41 [127] phi (byte*) print_str_at::str#7 = (const string) main::str3 [phi:main::@27->print_str_at#1] -- pbuz1=pbuc1 + //SEG42 [127] phi (byte*) print_str_at::str#7 = (const string) main::str3 [phi:main::@27->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG42 [17] phi from main::@27 to main::@2 [phi:main::@27->main::@2] + //SEG43 [17] phi from main::@27 to main::@2 [phi:main::@27->main::@2] b2_from_b27: - //SEG43 [17] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@2#0] -- vbuz1=vbuc1 + //SEG44 [17] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG44 [17] phi from main::@29 to main::@2 [phi:main::@29->main::@2] + //SEG45 [17] phi from main::@29 to main::@2 [phi:main::@29->main::@2] b2_from_b29: - //SEG45 [17] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@29->main::@2#0] -- register_copy + //SEG46 [17] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@29->main::@2#0] -- register_copy jmp b2 - //SEG46 main::@2 + //SEG47 main::@2 b2: - //SEG47 [18] (byte) plot_chargen::pos#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG48 [18] (byte) plot_chargen::pos#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta plot_chargen.pos - //SEG48 [19] call plot_chargen - //SEG49 [71] phi from main::@2 to plot_chargen [phi:main::@2->plot_chargen] + //SEG49 [19] call plot_chargen + //SEG50 [71] phi from main::@2 to plot_chargen [phi:main::@2->plot_chargen] plot_chargen_from_b2: - //SEG50 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#0 [phi:main::@2->plot_chargen#0] -- register_copy - //SEG51 [71] phi (byte) plot_chargen::shift#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->plot_chargen#1] -- vbuz1=vbuc1 + //SEG51 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#0 [phi:main::@2->plot_chargen#0] -- register_copy + //SEG52 [71] phi (byte) plot_chargen::shift#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->plot_chargen#1] -- vbuz1=vbuc1 lda #0 sta plot_chargen.shift - //SEG52 [71] phi (byte) plot_chargen::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:main::@2->plot_chargen#2] -- vbuz1=vbuc1 + //SEG53 [71] phi (byte) plot_chargen::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:main::@2->plot_chargen#2] -- vbuz1=vbuc1 lda #$20 sta plot_chargen.ch jsr plot_chargen jmp b29 - //SEG53 main::@29 + //SEG54 main::@29 b29: - //SEG54 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG55 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG55 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG56 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b2_from_b29 - //SEG56 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3] + //SEG57 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3] b3_from_b29: - //SEG57 [22] phi (byte) main::cur_pos#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->main::@3#0] -- vbuz1=vbuc1 + //SEG58 [22] phi (byte) main::cur_pos#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->main::@3#0] -- vbuz1=vbuc1 lda #0 sta cur_pos jmp b3 - //SEG58 main::@3 + //SEG59 main::@3 b3: - //SEG59 [23] call keyboard_key_pressed - //SEG60 [113] phi from main::@3 to keyboard_key_pressed [phi:main::@3->keyboard_key_pressed] + //SEG60 [23] call keyboard_key_pressed + //SEG61 [113] phi from main::@3 to keyboard_key_pressed [phi:main::@3->keyboard_key_pressed] keyboard_key_pressed_from_b3: - //SEG61 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F1#0 [phi:main::@3->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG62 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F1#0 [phi:main::@3->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_F1 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG62 [24] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG63 [24] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_2 jmp b30 - //SEG63 main::@30 + //SEG64 main::@30 b30: - //SEG64 [25] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 + //SEG65 [25] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_2 sta _15 - //SEG65 [26] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@41 -- vbuz1_eq_0_then_la1 + //SEG66 [26] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@41 -- vbuz1_eq_0_then_la1 lda _15 cmp #0 beq b41_from_b30 - //SEG66 [27] phi from main::@30 to main::@4 [phi:main::@30->main::@4] + //SEG67 [27] phi from main::@30 to main::@4 [phi:main::@30->main::@4] b4_from_b30: - //SEG67 [27] phi (byte) main::cur_pos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@30->main::@4#0] -- vbuz1=vbuc1 + //SEG68 [27] phi (byte) main::cur_pos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@30->main::@4#0] -- vbuz1=vbuc1 lda #0 sta cur_pos jmp b4 - //SEG68 main::@4 + //SEG69 main::@4 b4: - //SEG69 [28] call keyboard_key_pressed - //SEG70 [113] phi from main::@4 to keyboard_key_pressed [phi:main::@4->keyboard_key_pressed] + //SEG70 [28] call keyboard_key_pressed + //SEG71 [113] phi from main::@4 to keyboard_key_pressed [phi:main::@4->keyboard_key_pressed] keyboard_key_pressed_from_b4: - //SEG71 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F3#0 [phi:main::@4->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG72 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F3#0 [phi:main::@4->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_F3 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG72 [29] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG73 [29] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_10 jmp b31 - //SEG73 main::@31 + //SEG74 main::@31 b31: - //SEG74 [30] (byte~) main::$18 ← (byte) keyboard_key_pressed::return#10 -- vbuz1=vbuz2 + //SEG75 [30] (byte~) main::$18 ← (byte) keyboard_key_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_10 sta _18 - //SEG75 [31] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@42 -- vbuz1_eq_0_then_la1 + //SEG76 [31] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@42 -- vbuz1_eq_0_then_la1 lda _18 cmp #0 beq b42_from_b31 - //SEG76 [32] phi from main::@31 to main::@5 [phi:main::@31->main::@5] + //SEG77 [32] phi from main::@31 to main::@5 [phi:main::@31->main::@5] b5_from_b31: - //SEG77 [32] phi (byte) main::cur_pos#20 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@31->main::@5#0] -- vbuz1=vbuc1 + //SEG78 [32] phi (byte) main::cur_pos#20 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@31->main::@5#0] -- vbuz1=vbuc1 lda #1 sta cur_pos jmp b5 - //SEG78 main::@5 + //SEG79 main::@5 b5: - //SEG79 [33] call keyboard_key_pressed - //SEG80 [113] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] + //SEG80 [33] call keyboard_key_pressed + //SEG81 [113] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] keyboard_key_pressed_from_b5: - //SEG81 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F5#0 [phi:main::@5->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG82 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F5#0 [phi:main::@5->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_F5 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG82 [34] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG83 [34] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_11 jmp b32 - //SEG83 main::@32 + //SEG84 main::@32 b32: - //SEG84 [35] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#11 -- vbuz1=vbuz2 + //SEG85 [35] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_11 sta _21 - //SEG85 [36] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@43 -- vbuz1_eq_0_then_la1 + //SEG86 [36] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@43 -- vbuz1_eq_0_then_la1 lda _21 cmp #0 beq b43_from_b32 - //SEG86 [37] phi from main::@32 to main::@6 [phi:main::@32->main::@6] + //SEG87 [37] phi from main::@32 to main::@6 [phi:main::@32->main::@6] b6_from_b32: - //SEG87 [37] phi (byte) main::cur_pos#18 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@32->main::@6#0] -- vbuz1=vbuc1 + //SEG88 [37] phi (byte) main::cur_pos#18 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@32->main::@6#0] -- vbuz1=vbuc1 lda #2 sta cur_pos jmp b6 - //SEG88 main::@6 + //SEG89 main::@6 b6: - //SEG89 [38] call keyboard_key_pressed - //SEG90 [113] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] + //SEG90 [38] call keyboard_key_pressed + //SEG91 [113] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] keyboard_key_pressed_from_b6: - //SEG91 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F7#0 [phi:main::@6->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG92 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F7#0 [phi:main::@6->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_F7 sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG92 [39] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG93 [39] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_12 jmp b33 - //SEG93 main::@33 + //SEG94 main::@33 b33: - //SEG94 [40] (byte~) main::$24 ← (byte) keyboard_key_pressed::return#12 -- vbuz1=vbuz2 + //SEG95 [40] (byte~) main::$24 ← (byte) keyboard_key_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_12 sta _24 - //SEG95 [41] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@44 -- vbuz1_eq_0_then_la1 + //SEG96 [41] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@44 -- vbuz1_eq_0_then_la1 lda _24 cmp #0 beq b44_from_b33 - //SEG96 [42] phi from main::@33 to main::@7 [phi:main::@33->main::@7] + //SEG97 [42] phi from main::@33 to main::@7 [phi:main::@33->main::@7] b7_from_b33: - //SEG97 [42] phi (byte) main::cur_pos#12 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@33->main::@7#0] -- vbuz1=vbuc1 + //SEG98 [42] phi (byte) main::cur_pos#12 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@33->main::@7#0] -- vbuz1=vbuc1 lda #3 sta cur_pos jmp b7 - //SEG98 main::@7 + //SEG99 main::@7 b7: - //SEG99 [43] call keyboard_key_pressed - //SEG100 [113] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] + //SEG100 [43] call keyboard_key_pressed + //SEG101 [113] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] keyboard_key_pressed_from_b7: - //SEG101 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_LSHIFT#0 [phi:main::@7->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG102 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_LSHIFT#0 [phi:main::@7->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG102 [44] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG103 [44] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_13 jmp b34 - //SEG103 main::@34 + //SEG104 main::@34 b34: - //SEG104 [45] (byte~) main::$27 ← (byte) keyboard_key_pressed::return#13 -- vbuz1=vbuz2 + //SEG105 [45] (byte~) main::$27 ← (byte) keyboard_key_pressed::return#13 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_13 sta _27 - //SEG105 [46] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@9 -- vbuz1_neq_0_then_la1 + //SEG106 [46] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@9 -- vbuz1_neq_0_then_la1 lda _27 cmp #0 bne b9_from_b34 - //SEG106 [47] phi from main::@34 to main::@19 [phi:main::@34->main::@19] + //SEG107 [47] phi from main::@34 to main::@19 [phi:main::@34->main::@19] b19_from_b34: jmp b19 - //SEG107 main::@19 + //SEG108 main::@19 b19: - //SEG108 [48] phi from main::@19 to main::@9 [phi:main::@19->main::@9] + //SEG109 [48] phi from main::@19 to main::@9 [phi:main::@19->main::@9] b9_from_b19: - //SEG109 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@19->main::@9#0] -- vbuz1=vbuc1 + //SEG110 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@19->main::@9#0] -- vbuz1=vbuc1 lda #0 sta shift jmp b9 - //SEG110 [48] phi from main::@34 to main::@9 [phi:main::@34->main::@9] + //SEG111 [48] phi from main::@34 to main::@9 [phi:main::@34->main::@9] b9_from_b34: - //SEG111 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@34->main::@9#0] -- vbuz1=vbuc1 + //SEG112 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@34->main::@9#0] -- vbuz1=vbuc1 lda #1 sta shift jmp b9 - //SEG112 main::@9 + //SEG113 main::@9 b9: - //SEG113 [49] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG114 [49] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: - //SEG114 [49] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@10#0] -- vbuz1=vbuc1 + //SEG115 [49] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@10#0] -- vbuz1=vbuc1 lda #0 sta ch jmp b10 - //SEG115 [49] phi from main::@12 to main::@10 [phi:main::@12->main::@10] + //SEG116 [49] phi from main::@12 to main::@10 [phi:main::@12->main::@10] b10_from_b12: - //SEG116 [49] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@12->main::@10#0] -- register_copy + //SEG117 [49] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@12->main::@10#0] -- register_copy jmp b10 - //SEG117 main::@10 + //SEG118 main::@10 b10: - //SEG118 [50] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuz1=vbuz2 + //SEG119 [50] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuz1=vbuz2 lda ch sta keyboard_get_keycode.ch - //SEG119 [51] call keyboard_get_keycode + //SEG120 [51] call keyboard_get_keycode jsr keyboard_get_keycode - //SEG120 [52] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 -- vbuz1=vbuz2 + //SEG121 [52] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 -- vbuz1=vbuz2 lda keyboard_get_keycode.return sta keyboard_get_keycode.return_2 jmp b35 - //SEG121 main::@35 + //SEG122 main::@35 b35: - //SEG122 [53] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 -- vbuz1=vbuz2 + //SEG123 [53] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 -- vbuz1=vbuz2 lda keyboard_get_keycode.return_2 sta key - //SEG123 [54] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuz1_eq_vbuc1_then_la1 + //SEG124 [54] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuz1_eq_vbuc1_then_la1 lda key cmp #$3f beq b11_from_b35 jmp b21 - //SEG124 main::@21 + //SEG125 main::@21 b21: - //SEG125 [55] (byte) keyboard_key_pressed::key#5 ← (byte) main::key#0 -- vbuz1=vbuz2 + //SEG126 [55] (byte) keyboard_key_pressed::key#5 ← (byte) main::key#0 -- vbuz1=vbuz2 lda key sta keyboard_key_pressed.key - //SEG126 [56] call keyboard_key_pressed - //SEG127 [113] phi from main::@21 to keyboard_key_pressed [phi:main::@21->keyboard_key_pressed] + //SEG127 [56] call keyboard_key_pressed + //SEG128 [113] phi from main::@21 to keyboard_key_pressed [phi:main::@21->keyboard_key_pressed] keyboard_key_pressed_from_b21: - //SEG128 [113] phi (byte) keyboard_key_pressed::key#6 = (byte) keyboard_key_pressed::key#5 [phi:main::@21->keyboard_key_pressed#0] -- register_copy + //SEG129 [113] phi (byte) keyboard_key_pressed::key#6 = (byte) keyboard_key_pressed::key#5 [phi:main::@21->keyboard_key_pressed#0] -- register_copy jsr keyboard_key_pressed - //SEG129 [57] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG130 [57] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_14 jmp b36 - //SEG130 main::@36 + //SEG131 main::@36 b36: - //SEG131 [58] (byte) main::pressed#1 ← (byte) keyboard_key_pressed::return#14 -- vbuz1=vbuz2 + //SEG132 [58] (byte) main::pressed#1 ← (byte) keyboard_key_pressed::return#14 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_14 sta pressed - //SEG132 [59] phi from main::@36 to main::@11 [phi:main::@36->main::@11] + //SEG133 [59] phi from main::@36 to main::@11 [phi:main::@36->main::@11] b11_from_b36: - //SEG133 [59] phi (byte) main::pressed#2 = (byte) main::pressed#1 [phi:main::@36->main::@11#0] -- register_copy + //SEG134 [59] phi (byte) main::pressed#2 = (byte) main::pressed#1 [phi:main::@36->main::@11#0] -- register_copy jmp b11 - //SEG134 [59] phi from main::@35 to main::@11 [phi:main::@35->main::@11] + //SEG135 [59] phi from main::@35 to main::@11 [phi:main::@35->main::@11] b11_from_b35: - //SEG135 [59] phi (byte) main::pressed#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@35->main::@11#0] -- vbuz1=vbuc1 + //SEG136 [59] phi (byte) main::pressed#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@35->main::@11#0] -- vbuz1=vbuc1 lda #0 sta pressed jmp b11 - //SEG136 main::@11 + //SEG137 main::@11 b11: - //SEG137 [60] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuz1_eq_0_then_la1 + //SEG138 [60] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuz1_eq_0_then_la1 lda pressed cmp #0 beq b12 jmp b22 - //SEG138 main::@22 + //SEG139 main::@22 b22: - //SEG139 [61] (byte) plot_chargen::pos#1 ← (byte) main::cur_pos#12 -- vbuz1=vbuz2 + //SEG140 [61] (byte) plot_chargen::pos#1 ← (byte) main::cur_pos#12 -- vbuz1=vbuz2 lda cur_pos sta plot_chargen.pos - //SEG140 [62] (byte) plot_chargen::ch#1 ← (byte) main::ch#2 -- vbuz1=vbuz2 + //SEG141 [62] (byte) plot_chargen::ch#1 ← (byte) main::ch#2 -- vbuz1=vbuz2 lda ch sta plot_chargen.ch - //SEG141 [63] (byte) plot_chargen::shift#1 ← (byte) main::shift#10 -- vbuz1=vbuz2 + //SEG142 [63] (byte) plot_chargen::shift#1 ← (byte) main::shift#10 -- vbuz1=vbuz2 lda shift sta plot_chargen.shift - //SEG142 [64] call plot_chargen - //SEG143 [71] phi from main::@22 to plot_chargen [phi:main::@22->plot_chargen] + //SEG143 [64] call plot_chargen + //SEG144 [71] phi from main::@22 to plot_chargen [phi:main::@22->plot_chargen] plot_chargen_from_b22: - //SEG144 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#1 [phi:main::@22->plot_chargen#0] -- register_copy - //SEG145 [71] phi (byte) plot_chargen::shift#2 = (byte) plot_chargen::shift#1 [phi:main::@22->plot_chargen#1] -- register_copy - //SEG146 [71] phi (byte) plot_chargen::ch#2 = (byte) plot_chargen::ch#1 [phi:main::@22->plot_chargen#2] -- register_copy + //SEG145 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#1 [phi:main::@22->plot_chargen#0] -- register_copy + //SEG146 [71] phi (byte) plot_chargen::shift#2 = (byte) plot_chargen::shift#1 [phi:main::@22->plot_chargen#1] -- register_copy + //SEG147 [71] phi (byte) plot_chargen::ch#2 = (byte) plot_chargen::ch#1 [phi:main::@22->plot_chargen#2] -- register_copy jsr plot_chargen jmp b12 - //SEG147 main::@12 + //SEG148 main::@12 b12: - //SEG148 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 + //SEG149 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 inc ch - //SEG149 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG150 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #$40 bne b10_from_b12 - //SEG150 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3] + //SEG151 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3] b3_from_b12: - //SEG151 [22] phi (byte) main::cur_pos#24 = (byte) main::cur_pos#12 [phi:main::@12->main::@3#0] -- register_copy + //SEG152 [22] phi (byte) main::cur_pos#24 = (byte) main::cur_pos#12 [phi:main::@12->main::@3#0] -- register_copy jmp b3 - //SEG152 [67] phi from main::@33 to main::@44 [phi:main::@33->main::@44] + //SEG153 [67] phi from main::@33 to main::@44 [phi:main::@33->main::@44] b44_from_b33: jmp b44 - //SEG153 main::@44 + //SEG154 main::@44 b44: - //SEG154 [42] phi from main::@44 to main::@7 [phi:main::@44->main::@7] + //SEG155 [42] phi from main::@44 to main::@7 [phi:main::@44->main::@7] b7_from_b44: - //SEG155 [42] phi (byte) main::cur_pos#12 = (byte) main::cur_pos#18 [phi:main::@44->main::@7#0] -- register_copy + //SEG156 [42] phi (byte) main::cur_pos#12 = (byte) main::cur_pos#18 [phi:main::@44->main::@7#0] -- register_copy jmp b7 - //SEG156 [68] phi from main::@32 to main::@43 [phi:main::@32->main::@43] + //SEG157 [68] phi from main::@32 to main::@43 [phi:main::@32->main::@43] b43_from_b32: jmp b43 - //SEG157 main::@43 + //SEG158 main::@43 b43: - //SEG158 [37] phi from main::@43 to main::@6 [phi:main::@43->main::@6] + //SEG159 [37] phi from main::@43 to main::@6 [phi:main::@43->main::@6] b6_from_b43: - //SEG159 [37] phi (byte) main::cur_pos#18 = (byte) main::cur_pos#20 [phi:main::@43->main::@6#0] -- register_copy + //SEG160 [37] phi (byte) main::cur_pos#18 = (byte) main::cur_pos#20 [phi:main::@43->main::@6#0] -- register_copy jmp b6 - //SEG160 [69] phi from main::@31 to main::@42 [phi:main::@31->main::@42] + //SEG161 [69] phi from main::@31 to main::@42 [phi:main::@31->main::@42] b42_from_b31: jmp b42 - //SEG161 main::@42 + //SEG162 main::@42 b42: - //SEG162 [32] phi from main::@42 to main::@5 [phi:main::@42->main::@5] + //SEG163 [32] phi from main::@42 to main::@5 [phi:main::@42->main::@5] b5_from_b42: - //SEG163 [32] phi (byte) main::cur_pos#20 = (byte) main::cur_pos#22 [phi:main::@42->main::@5#0] -- register_copy + //SEG164 [32] phi (byte) main::cur_pos#20 = (byte) main::cur_pos#22 [phi:main::@42->main::@5#0] -- register_copy jmp b5 - //SEG164 [70] phi from main::@30 to main::@41 [phi:main::@30->main::@41] + //SEG165 [70] phi from main::@30 to main::@41 [phi:main::@30->main::@41] b41_from_b30: jmp b41 - //SEG165 main::@41 + //SEG166 main::@41 b41: - //SEG166 [27] phi from main::@41 to main::@4 [phi:main::@41->main::@4] + //SEG167 [27] phi from main::@41 to main::@4 [phi:main::@41->main::@4] b4_from_b41: - //SEG167 [27] phi (byte) main::cur_pos#22 = (byte) main::cur_pos#24 [phi:main::@41->main::@4#0] -- register_copy + //SEG168 [27] phi (byte) main::cur_pos#22 = (byte) main::cur_pos#24 [phi:main::@41->main::@4#0] -- register_copy jmp b4 str: .text "f1@" str1: .text "f3@" str2: .text "f5@" str3: .text "f7@" } -//SEG168 plot_chargen +//SEG169 plot_chargen // Render 8x8 char (ch) as pixels on char canvas #pos plot_chargen: { .label _0 = $2c @@ -3161,14 +3163,14 @@ plot_chargen: { .label x = $12 .label y = $e .label c = $13 - //SEG169 asm { sei } + //SEG170 asm { sei } sei - //SEG170 [73] (word~) plot_chargen::$0 ← ((word)) (byte) plot_chargen::ch#2 -- vwuz1=_word_vbuz2 + //SEG171 [73] (word~) plot_chargen::$0 ← ((word)) (byte) plot_chargen::ch#2 -- vwuz1=_word_vbuz2 lda ch sta _0 lda #0 sta _0+1 - //SEG171 [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG172 [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda _0 asl sta _1 @@ -3179,7 +3181,7 @@ plot_chargen: { rol _1+1 asl _1 rol _1+1 - //SEG172 [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN#0 + (word~) plot_chargen::$1 -- pbuz1=pbuc1_plus_vwuz2 + //SEG173 [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN#0 + (word~) plot_chargen::$1 -- pbuz1=pbuc1_plus_vwuz2 lda _1 clc adc #CHARGEN sta chargen+1 - //SEG173 [76] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1 -- vbuz1_eq_0_then_la1 + //SEG174 [76] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1 -- vbuz1_eq_0_then_la1 lda shift cmp #0 beq b1_from_plot_chargen jmp b5 - //SEG174 plot_chargen::@5 + //SEG175 plot_chargen::@5 b5: - //SEG175 [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word/signed word/dword/signed dword) 2048 -- pbuz1=pbuz1_plus_vwuc1 + //SEG176 [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word/signed word/dword/signed dword) 2048 -- pbuz1=pbuz1_plus_vwuc1 clc lda chargen adc #<$800 @@ -3202,37 +3204,37 @@ plot_chargen: { lda chargen+1 adc #>$800 sta chargen+1 - //SEG176 [78] phi from plot_chargen plot_chargen::@5 to plot_chargen::@1 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1] + //SEG177 [78] phi from plot_chargen plot_chargen::@5 to plot_chargen::@1 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1] b1_from_plot_chargen: b1_from_b5: - //SEG177 [78] phi (byte*) plot_chargen::chargen#5 = (byte*) plot_chargen::chargen#0 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1#0] -- register_copy + //SEG178 [78] phi (byte*) plot_chargen::chargen#5 = (byte*) plot_chargen::chargen#0 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1#0] -- register_copy jmp b1 - //SEG178 plot_chargen::@1 + //SEG179 plot_chargen::@1 b1: - //SEG179 [79] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG180 [79] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG180 [80] (byte) mul8u::a#1 ← (byte) plot_chargen::pos#2 -- vbuz1=vbuz2 + //SEG181 [80] (byte) mul8u::a#1 ← (byte) plot_chargen::pos#2 -- vbuz1=vbuz2 lda pos sta mul8u.a - //SEG181 [81] call mul8u - //SEG182 [103] phi from plot_chargen::@1 to mul8u [phi:plot_chargen::@1->mul8u] + //SEG182 [81] call mul8u + //SEG183 [103] phi from plot_chargen::@1 to mul8u [phi:plot_chargen::@1->mul8u] mul8u_from_b1: jsr mul8u - //SEG183 [82] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG184 [82] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b9 - //SEG184 plot_chargen::@9 + //SEG185 plot_chargen::@9 b9: - //SEG185 [83] (word~) plot_chargen::$8 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG186 [83] (word~) plot_chargen::$8 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta _8 lda mul8u.return+1 sta _8+1 - //SEG186 [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) plot_chargen::$8 -- pbuz1=pbuc1_plus_vwuz2 + //SEG187 [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) plot_chargen::$8 -- pbuz1=pbuc1_plus_vwuz2 lda _8 clc adc #SCREEN+$28+1 sta sc+1 - //SEG187 [85] phi from plot_chargen::@9 to plot_chargen::@2 [phi:plot_chargen::@9->plot_chargen::@2] + //SEG188 [85] phi from plot_chargen::@9 to plot_chargen::@2 [phi:plot_chargen::@9->plot_chargen::@2] b2_from_b9: - //SEG188 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#0 [phi:plot_chargen::@9->plot_chargen::@2#0] -- register_copy - //SEG189 [85] phi (byte) plot_chargen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@9->plot_chargen::@2#1] -- vbuz1=vbuc1 + //SEG189 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#0 [phi:plot_chargen::@9->plot_chargen::@2#0] -- register_copy + //SEG190 [85] phi (byte) plot_chargen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@9->plot_chargen::@2#1] -- vbuz1=vbuc1 lda #0 sta y jmp b2 - //SEG190 [85] phi from plot_chargen::@7 to plot_chargen::@2 [phi:plot_chargen::@7->plot_chargen::@2] + //SEG191 [85] phi from plot_chargen::@7 to plot_chargen::@2 [phi:plot_chargen::@7->plot_chargen::@2] b2_from_b7: - //SEG191 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#2 [phi:plot_chargen::@7->plot_chargen::@2#0] -- register_copy - //SEG192 [85] phi (byte) plot_chargen::y#2 = (byte) plot_chargen::y#1 [phi:plot_chargen::@7->plot_chargen::@2#1] -- register_copy + //SEG192 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#2 [phi:plot_chargen::@7->plot_chargen::@2#0] -- register_copy + //SEG193 [85] phi (byte) plot_chargen::y#2 = (byte) plot_chargen::y#1 [phi:plot_chargen::@7->plot_chargen::@2#1] -- register_copy jmp b2 - //SEG193 plot_chargen::@2 + //SEG194 plot_chargen::@2 b2: - //SEG194 [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG195 [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG195 [87] phi from plot_chargen::@2 to plot_chargen::@3 [phi:plot_chargen::@2->plot_chargen::@3] + //SEG196 [87] phi from plot_chargen::@2 to plot_chargen::@3 [phi:plot_chargen::@2->plot_chargen::@3] b3_from_b2: - //SEG196 [87] phi (byte) plot_chargen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@2->plot_chargen::@3#0] -- vbuz1=vbuc1 + //SEG197 [87] phi (byte) plot_chargen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@2->plot_chargen::@3#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG197 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#7 [phi:plot_chargen::@2->plot_chargen::@3#1] -- register_copy - //SEG198 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#0 [phi:plot_chargen::@2->plot_chargen::@3#2] -- register_copy + //SEG198 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#7 [phi:plot_chargen::@2->plot_chargen::@3#1] -- register_copy + //SEG199 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#0 [phi:plot_chargen::@2->plot_chargen::@3#2] -- register_copy jmp b3 - //SEG199 [87] phi from plot_chargen::@4 to plot_chargen::@3 [phi:plot_chargen::@4->plot_chargen::@3] + //SEG200 [87] phi from plot_chargen::@4 to plot_chargen::@3 [phi:plot_chargen::@4->plot_chargen::@3] b3_from_b4: - //SEG200 [87] phi (byte) plot_chargen::x#2 = (byte) plot_chargen::x#1 [phi:plot_chargen::@4->plot_chargen::@3#0] -- register_copy - //SEG201 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#1 [phi:plot_chargen::@4->plot_chargen::@3#1] -- register_copy - //SEG202 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#1 [phi:plot_chargen::@4->plot_chargen::@3#2] -- register_copy + //SEG201 [87] phi (byte) plot_chargen::x#2 = (byte) plot_chargen::x#1 [phi:plot_chargen::@4->plot_chargen::@3#0] -- register_copy + //SEG202 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#1 [phi:plot_chargen::@4->plot_chargen::@3#1] -- register_copy + //SEG203 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#1 [phi:plot_chargen::@4->plot_chargen::@3#2] -- register_copy jmp b3 - //SEG203 plot_chargen::@3 + //SEG204 plot_chargen::@3 b3: - //SEG204 [88] (byte~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG205 [88] (byte~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and bits sta _10 - //SEG205 [89] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4 -- vbuz1_eq_0_then_la1 + //SEG206 [89] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4 -- vbuz1_eq_0_then_la1 lda _10 cmp #0 beq b4_from_b3 - //SEG206 [90] phi from plot_chargen::@3 to plot_chargen::@6 [phi:plot_chargen::@3->plot_chargen::@6] + //SEG207 [90] phi from plot_chargen::@3 to plot_chargen::@6 [phi:plot_chargen::@3->plot_chargen::@6] b6_from_b3: jmp b6 - //SEG207 plot_chargen::@6 + //SEG208 plot_chargen::@6 b6: - //SEG208 [91] phi from plot_chargen::@6 to plot_chargen::@4 [phi:plot_chargen::@6->plot_chargen::@4] + //SEG209 [91] phi from plot_chargen::@6 to plot_chargen::@4 [phi:plot_chargen::@6->plot_chargen::@4] b4_from_b6: - //SEG209 [91] phi (byte) plot_chargen::c#2 = (byte) '*' [phi:plot_chargen::@6->plot_chargen::@4#0] -- vbuz1=vbuc1 + //SEG210 [91] phi (byte) plot_chargen::c#2 = (byte) '*' [phi:plot_chargen::@6->plot_chargen::@4#0] -- vbuz1=vbuc1 lda #'*' sta c jmp b4 - //SEG210 [91] phi from plot_chargen::@3 to plot_chargen::@4 [phi:plot_chargen::@3->plot_chargen::@4] + //SEG211 [91] phi from plot_chargen::@3 to plot_chargen::@4 [phi:plot_chargen::@3->plot_chargen::@4] b4_from_b3: - //SEG211 [91] phi (byte) plot_chargen::c#2 = (byte) '.' [phi:plot_chargen::@3->plot_chargen::@4#0] -- vbuz1=vbuc1 + //SEG212 [91] phi (byte) plot_chargen::c#2 = (byte) '.' [phi:plot_chargen::@3->plot_chargen::@4#0] -- vbuz1=vbuc1 lda #'.' sta c jmp b4 - //SEG212 plot_chargen::@4 + //SEG213 plot_chargen::@4 b4: - //SEG213 [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 -- _deref_pbuz1=vbuz2 + //SEG214 [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (sc),y - //SEG214 [93] (byte*) plot_chargen::sc#1 ← ++ (byte*) plot_chargen::sc#3 -- pbuz1=_inc_pbuz1 + //SEG215 [93] (byte*) plot_chargen::sc#1 ← ++ (byte*) plot_chargen::sc#3 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG215 [94] (byte) plot_chargen::bits#1 ← (byte) plot_chargen::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG216 [94] (byte) plot_chargen::bits#1 ← (byte) plot_chargen::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG216 [95] (byte) plot_chargen::x#1 ← ++ (byte) plot_chargen::x#2 -- vbuz1=_inc_vbuz1 + //SEG217 [95] (byte) plot_chargen::x#1 ← ++ (byte) plot_chargen::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG217 [96] if((byte) plot_chargen::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG218 [96] if((byte) plot_chargen::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@3 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #8 bne b3_from_b4 jmp b7 - //SEG218 plot_chargen::@7 + //SEG219 plot_chargen::@7 b7: - //SEG219 [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 + //SEG220 [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$20 @@ -3329,28 +3331,27 @@ plot_chargen: { bcc !+ inc sc+1 !: - //SEG220 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1 + //SEG221 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG221 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG222 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b2_from_b7 jmp b8 - //SEG222 plot_chargen::@8 + //SEG223 plot_chargen::@8 b8: - //SEG223 [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG224 [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG224 asm { cli } + //SEG225 asm { cli } cli jmp breturn - //SEG225 plot_chargen::@return + //SEG226 plot_chargen::@return breturn: - //SEG226 [102] return + //SEG227 [102] return rts } -//SEG227 mul8u -// Simple binary multiplication implementation +//SEG228 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .const b = $a @@ -3359,45 +3360,45 @@ mul8u: { .label mb = $17 .label res = $15 .label return = $30 - //SEG228 [104] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG229 [104] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG229 [104] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 + //SEG230 [104] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 lda #b sta mb+1 - //SEG230 [104] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG231 [104] 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 - //SEG231 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG232 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG232 mul8u::@1 + //SEG233 mul8u::@1 b1: - //SEG233 [105] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG234 [105] if((byte) mul8u::a#2!=(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 - //SEG234 mul8u::@return + //SEG235 mul8u::@return breturn: - //SEG235 [106] return + //SEG236 [106] return rts - //SEG236 mul8u::@2 + //SEG237 mul8u::@2 b2: - //SEG237 [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG238 [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG238 [108] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG239 [108] 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 - //SEG239 mul8u::@7 + //SEG240 mul8u::@7 b7: - //SEG240 [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG241 [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -3405,26 +3406,26 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG241 [110] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG242 [110] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG242 [110] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG243 [110] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG243 mul8u::@4 + //SEG244 mul8u::@4 b4: - //SEG244 [111] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG245 [111] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG245 [112] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG246 [112] (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 - //SEG246 [104] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG247 [104] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG247 [104] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG248 [104] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG249 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG248 [104] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG249 [104] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG250 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG250 keyboard_key_pressed +//SEG251 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. @@ -3441,42 +3442,42 @@ keyboard_key_pressed: { .label return_12 = $24 .label return_13 = $26 .label return_14 = $2b - //SEG251 [114] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG252 [114] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and key sta colidx - //SEG252 [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + //SEG253 [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda key lsr lsr lsr sta rowidx - //SEG253 [116] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuz1=vbuz2 + //SEG254 [116] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuz1=vbuz2 lda rowidx sta keyboard_matrix_read.rowid - //SEG254 [117] call keyboard_matrix_read + //SEG255 [117] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG255 [118] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG256 [118] (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 b2 - //SEG256 keyboard_key_pressed::@2 + //SEG257 keyboard_key_pressed::@2 b2: - //SEG257 [119] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG258 [119] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta _2 - //SEG258 [120] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG259 [120] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _2 ldy colidx and keyboard_matrix_col_bitmask,y sta return jmp breturn - //SEG259 keyboard_key_pressed::@return + //SEG260 keyboard_key_pressed::@return breturn: - //SEG260 [121] return + //SEG261 [121] return rts } -//SEG261 keyboard_matrix_read +//SEG262 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -3486,21 +3487,21 @@ keyboard_matrix_read: { .label return = $3c .label rowid = $38 .label return_2 = $39 - //SEG262 [122] *((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 + //SEG263 [122] *((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 - //SEG263 [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG264 [123] (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 - //SEG264 keyboard_matrix_read::@return + //SEG265 keyboard_matrix_read::@return breturn: - //SEG265 [124] return + //SEG266 [124] return rts } -//SEG266 keyboard_get_keycode +//SEG267 keyboard_get_keycode // Get the keycode corresponding to a specific screen code character // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. @@ -3509,52 +3510,52 @@ keyboard_get_keycode: { .label return = $3d .label ch = $28 .label return_2 = $29 - //SEG267 [125] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG268 [125] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy ch lda keyboard_char_keycodes,y sta return jmp breturn - //SEG268 keyboard_get_keycode::@return + //SEG269 keyboard_get_keycode::@return breturn: - //SEG269 [126] return + //SEG270 [126] return rts } -//SEG270 print_str_at +//SEG271 print_str_at // Print a string at a specific screen position print_str_at: { .label at = $1c .label str = $1a - //SEG271 [128] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG272 [128] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] b1_from_print_str_at: b1_from_b2: - //SEG272 [128] phi (byte*) print_str_at::at#5 = (byte*) print_str_at::at#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG273 [128] phi (byte*) print_str_at::str#5 = (byte*) print_str_at::str#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG273 [128] phi (byte*) print_str_at::at#5 = (byte*) print_str_at::at#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG274 [128] phi (byte*) print_str_at::str#5 = (byte*) print_str_at::str#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 - //SEG274 print_str_at::@1 + //SEG275 print_str_at::@1 b1: - //SEG275 [129] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG276 [129] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG276 print_str_at::@return + //SEG277 print_str_at::@return breturn: - //SEG277 [130] return + //SEG278 [130] return rts - //SEG278 print_str_at::@2 + //SEG279 print_str_at::@2 b2: - //SEG279 [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) -- _deref_pbuz1=_deref_pbuz2 + //SEG280 [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (at),y - //SEG280 [132] (byte*) print_str_at::at#4 ← ++ (byte*) print_str_at::at#5 -- pbuz1=_inc_pbuz1 + //SEG281 [132] (byte*) print_str_at::at#4 ← ++ (byte*) print_str_at::at#5 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG281 [133] (byte*) print_str_at::str#4 ← ++ (byte*) print_str_at::str#5 -- pbuz1=_inc_pbuz1 + //SEG282 [133] (byte*) print_str_at::str#4 ← ++ (byte*) print_str_at::str#5 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 @@ -3767,11 +3768,13 @@ Allocated (was zp ZP_WORD:16) zp ZP_WORD:9 [ plot_chargen::sc#3 plot_chargen::sc Allocated (was zp ZP_WORD:23) zp ZP_WORD:11 [ mul8u::mb#2 mul8u::mb#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Allows analysis of the CHARGEN ROM font +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // Processor Port Register controlling RAM/ROM configuration and the datasette .label PROCPORT = 1 // The address of the CHARGEN character set @@ -3836,53 +3839,53 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_SPACE = $3c .const KEY_Q = $3e .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +//SEG4 [1] phi from @begin to @19 [phi:@begin->@19] b19_from_bbegin: jmp b19 -//SEG4 @19 +//SEG5 @19 b19: -//SEG5 [2] call main -//SEG6 [4] phi from @19 to main [phi:@19->main] +//SEG6 [2] call main +//SEG7 [4] phi from @19 to main [phi:@19->main] main_from_b19: jsr main -//SEG7 [3] phi from @19 to @end [phi:@19->@end] +//SEG8 [3] phi from @19 to @end [phi:@19->@end] bend_from_b19: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label sc = 2 .label i = 4 .label ch = 6 .label cur_pos = 4 .label shift = 5 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -3891,367 +3894,367 @@ main: { cmp #main::@13] + //SEG19 [9] phi from main::@1 to main::@13 [phi:main::@1->main::@13] b13_from_b1: jmp b13 - //SEG19 main::@13 + //SEG20 main::@13 b13: - //SEG20 [10] call print_str_at - //SEG21 [127] phi from main::@13 to print_str_at [phi:main::@13->print_str_at] + //SEG21 [10] call print_str_at + //SEG22 [127] phi from main::@13 to print_str_at [phi:main::@13->print_str_at] print_str_at_from_b13: - //SEG22 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG23 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1 sta print_str_at.at+1 - //SEG23 [127] phi (byte*) print_str_at::str#7 = (const string) main::str [phi:main::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG24 [127] phi (byte*) print_str_at::str#7 = (const string) main::str [phi:main::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG24 [11] phi from main::@13 to main::@25 [phi:main::@13->main::@25] + //SEG25 [11] phi from main::@13 to main::@25 [phi:main::@13->main::@25] b25_from_b13: jmp b25 - //SEG25 main::@25 + //SEG26 main::@25 b25: - //SEG26 [12] call print_str_at - //SEG27 [127] phi from main::@25 to print_str_at [phi:main::@25->print_str_at] + //SEG27 [12] call print_str_at + //SEG28 [127] phi from main::@25 to print_str_at [phi:main::@25->print_str_at] print_str_at_from_b25: - //SEG28 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@25->print_str_at#0] -- pbuz1=pbuc1 + //SEG29 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@25->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$a sta print_str_at.at+1 - //SEG29 [127] phi (byte*) print_str_at::str#7 = (const string) main::str1 [phi:main::@25->print_str_at#1] -- pbuz1=pbuc1 + //SEG30 [127] phi (byte*) print_str_at::str#7 = (const string) main::str1 [phi:main::@25->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG30 [13] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG31 [13] phi from main::@25 to main::@26 [phi:main::@25->main::@26] b26_from_b25: jmp b26 - //SEG31 main::@26 + //SEG32 main::@26 b26: - //SEG32 [14] call print_str_at - //SEG33 [127] phi from main::@26 to print_str_at [phi:main::@26->print_str_at] + //SEG33 [14] call print_str_at + //SEG34 [127] phi from main::@26 to print_str_at [phi:main::@26->print_str_at] print_str_at_from_b26: - //SEG34 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@26->print_str_at#0] -- pbuz1=pbuc1 + //SEG35 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@26->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$14 sta print_str_at.at+1 - //SEG35 [127] phi (byte*) print_str_at::str#7 = (const string) main::str2 [phi:main::@26->print_str_at#1] -- pbuz1=pbuc1 + //SEG36 [127] phi (byte*) print_str_at::str#7 = (const string) main::str2 [phi:main::@26->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG36 [15] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG37 [15] phi from main::@26 to main::@27 [phi:main::@26->main::@27] b27_from_b26: jmp b27 - //SEG37 main::@27 + //SEG38 main::@27 b27: - //SEG38 [16] call print_str_at - //SEG39 [127] phi from main::@27 to print_str_at [phi:main::@27->print_str_at] + //SEG39 [16] call print_str_at + //SEG40 [127] phi from main::@27 to print_str_at [phi:main::@27->print_str_at] print_str_at_from_b27: - //SEG40 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 30 [phi:main::@27->print_str_at#0] -- pbuz1=pbuc1 + //SEG41 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 30 [phi:main::@27->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$1e sta print_str_at.at+1 - //SEG41 [127] phi (byte*) print_str_at::str#7 = (const string) main::str3 [phi:main::@27->print_str_at#1] -- pbuz1=pbuc1 + //SEG42 [127] phi (byte*) print_str_at::str#7 = (const string) main::str3 [phi:main::@27->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG42 [17] phi from main::@27 to main::@2 [phi:main::@27->main::@2] + //SEG43 [17] phi from main::@27 to main::@2 [phi:main::@27->main::@2] b2_from_b27: - //SEG43 [17] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@2#0] -- vbuz1=vbuc1 + //SEG44 [17] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG44 [17] phi from main::@29 to main::@2 [phi:main::@29->main::@2] + //SEG45 [17] phi from main::@29 to main::@2 [phi:main::@29->main::@2] b2_from_b29: - //SEG45 [17] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@29->main::@2#0] -- register_copy + //SEG46 [17] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@29->main::@2#0] -- register_copy jmp b2 - //SEG46 main::@2 + //SEG47 main::@2 b2: - //SEG47 [18] (byte) plot_chargen::pos#0 ← (byte) main::i#2 -- vbuyy=vbuz1 + //SEG48 [18] (byte) plot_chargen::pos#0 ← (byte) main::i#2 -- vbuyy=vbuz1 ldy i - //SEG48 [19] call plot_chargen - //SEG49 [71] phi from main::@2 to plot_chargen [phi:main::@2->plot_chargen] + //SEG49 [19] call plot_chargen + //SEG50 [71] phi from main::@2 to plot_chargen [phi:main::@2->plot_chargen] plot_chargen_from_b2: - //SEG50 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#0 [phi:main::@2->plot_chargen#0] -- register_copy - //SEG51 [71] phi (byte) plot_chargen::shift#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->plot_chargen#1] -- vbuxx=vbuc1 + //SEG51 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#0 [phi:main::@2->plot_chargen#0] -- register_copy + //SEG52 [71] phi (byte) plot_chargen::shift#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->plot_chargen#1] -- vbuxx=vbuc1 ldx #0 - //SEG52 [71] phi (byte) plot_chargen::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:main::@2->plot_chargen#2] -- vbuaa=vbuc1 + //SEG53 [71] phi (byte) plot_chargen::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:main::@2->plot_chargen#2] -- vbuaa=vbuc1 lda #$20 jsr plot_chargen jmp b29 - //SEG53 main::@29 + //SEG54 main::@29 b29: - //SEG54 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG55 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG55 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG56 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b2_from_b29 - //SEG56 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3] + //SEG57 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3] b3_from_b29: - //SEG57 [22] phi (byte) main::cur_pos#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->main::@3#0] -- vbuz1=vbuc1 + //SEG58 [22] phi (byte) main::cur_pos#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->main::@3#0] -- vbuz1=vbuc1 lda #0 sta cur_pos jmp b3 - //SEG58 main::@3 + //SEG59 main::@3 b3: - //SEG59 [23] call keyboard_key_pressed - //SEG60 [113] phi from main::@3 to keyboard_key_pressed [phi:main::@3->keyboard_key_pressed] + //SEG60 [23] call keyboard_key_pressed + //SEG61 [113] phi from main::@3 to keyboard_key_pressed [phi:main::@3->keyboard_key_pressed] keyboard_key_pressed_from_b3: - //SEG61 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F1#0 [phi:main::@3->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG62 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F1#0 [phi:main::@3->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_F1 jsr keyboard_key_pressed - //SEG62 [24] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG63 [24] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 jmp b30 - //SEG63 main::@30 + //SEG64 main::@30 b30: - //SEG64 [25] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 - //SEG65 [26] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@41 -- vbuaa_eq_0_then_la1 + //SEG65 [25] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 + //SEG66 [26] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@41 -- vbuaa_eq_0_then_la1 cmp #0 beq b41_from_b30 - //SEG66 [27] phi from main::@30 to main::@4 [phi:main::@30->main::@4] + //SEG67 [27] phi from main::@30 to main::@4 [phi:main::@30->main::@4] b4_from_b30: - //SEG67 [27] phi (byte) main::cur_pos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@30->main::@4#0] -- vbuz1=vbuc1 + //SEG68 [27] phi (byte) main::cur_pos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@30->main::@4#0] -- vbuz1=vbuc1 lda #0 sta cur_pos jmp b4 - //SEG68 main::@4 + //SEG69 main::@4 b4: - //SEG69 [28] call keyboard_key_pressed - //SEG70 [113] phi from main::@4 to keyboard_key_pressed [phi:main::@4->keyboard_key_pressed] + //SEG70 [28] call keyboard_key_pressed + //SEG71 [113] phi from main::@4 to keyboard_key_pressed [phi:main::@4->keyboard_key_pressed] keyboard_key_pressed_from_b4: - //SEG71 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F3#0 [phi:main::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG72 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F3#0 [phi:main::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_F3 jsr keyboard_key_pressed - //SEG72 [29] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 + //SEG73 [29] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 jmp b31 - //SEG73 main::@31 + //SEG74 main::@31 b31: - //SEG74 [30] (byte~) main::$18 ← (byte) keyboard_key_pressed::return#10 - //SEG75 [31] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@42 -- vbuaa_eq_0_then_la1 + //SEG75 [30] (byte~) main::$18 ← (byte) keyboard_key_pressed::return#10 + //SEG76 [31] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@42 -- vbuaa_eq_0_then_la1 cmp #0 beq b42_from_b31 - //SEG76 [32] phi from main::@31 to main::@5 [phi:main::@31->main::@5] + //SEG77 [32] phi from main::@31 to main::@5 [phi:main::@31->main::@5] b5_from_b31: - //SEG77 [32] phi (byte) main::cur_pos#20 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@31->main::@5#0] -- vbuz1=vbuc1 + //SEG78 [32] phi (byte) main::cur_pos#20 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@31->main::@5#0] -- vbuz1=vbuc1 lda #1 sta cur_pos jmp b5 - //SEG78 main::@5 + //SEG79 main::@5 b5: - //SEG79 [33] call keyboard_key_pressed - //SEG80 [113] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] + //SEG80 [33] call keyboard_key_pressed + //SEG81 [113] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] keyboard_key_pressed_from_b5: - //SEG81 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F5#0 [phi:main::@5->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG82 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F5#0 [phi:main::@5->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_F5 jsr keyboard_key_pressed - //SEG82 [34] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 + //SEG83 [34] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 jmp b32 - //SEG83 main::@32 + //SEG84 main::@32 b32: - //SEG84 [35] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#11 - //SEG85 [36] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@43 -- vbuaa_eq_0_then_la1 + //SEG85 [35] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#11 + //SEG86 [36] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@43 -- vbuaa_eq_0_then_la1 cmp #0 beq b43_from_b32 - //SEG86 [37] phi from main::@32 to main::@6 [phi:main::@32->main::@6] + //SEG87 [37] phi from main::@32 to main::@6 [phi:main::@32->main::@6] b6_from_b32: - //SEG87 [37] phi (byte) main::cur_pos#18 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@32->main::@6#0] -- vbuz1=vbuc1 + //SEG88 [37] phi (byte) main::cur_pos#18 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@32->main::@6#0] -- vbuz1=vbuc1 lda #2 sta cur_pos jmp b6 - //SEG88 main::@6 + //SEG89 main::@6 b6: - //SEG89 [38] call keyboard_key_pressed - //SEG90 [113] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] + //SEG90 [38] call keyboard_key_pressed + //SEG91 [113] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] keyboard_key_pressed_from_b6: - //SEG91 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F7#0 [phi:main::@6->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG92 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F7#0 [phi:main::@6->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_F7 jsr keyboard_key_pressed - //SEG92 [39] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 + //SEG93 [39] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 jmp b33 - //SEG93 main::@33 + //SEG94 main::@33 b33: - //SEG94 [40] (byte~) main::$24 ← (byte) keyboard_key_pressed::return#12 - //SEG95 [41] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@44 -- vbuaa_eq_0_then_la1 + //SEG95 [40] (byte~) main::$24 ← (byte) keyboard_key_pressed::return#12 + //SEG96 [41] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@44 -- vbuaa_eq_0_then_la1 cmp #0 beq b44_from_b33 - //SEG96 [42] phi from main::@33 to main::@7 [phi:main::@33->main::@7] + //SEG97 [42] phi from main::@33 to main::@7 [phi:main::@33->main::@7] b7_from_b33: - //SEG97 [42] phi (byte) main::cur_pos#12 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@33->main::@7#0] -- vbuz1=vbuc1 + //SEG98 [42] phi (byte) main::cur_pos#12 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@33->main::@7#0] -- vbuz1=vbuc1 lda #3 sta cur_pos jmp b7 - //SEG98 main::@7 + //SEG99 main::@7 b7: - //SEG99 [43] call keyboard_key_pressed - //SEG100 [113] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] + //SEG100 [43] call keyboard_key_pressed + //SEG101 [113] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] keyboard_key_pressed_from_b7: - //SEG101 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_LSHIFT#0 [phi:main::@7->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG102 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_LSHIFT#0 [phi:main::@7->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_LSHIFT jsr keyboard_key_pressed - //SEG102 [44] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 + //SEG103 [44] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 jmp b34 - //SEG103 main::@34 + //SEG104 main::@34 b34: - //SEG104 [45] (byte~) main::$27 ← (byte) keyboard_key_pressed::return#13 - //SEG105 [46] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@9 -- vbuaa_neq_0_then_la1 + //SEG105 [45] (byte~) main::$27 ← (byte) keyboard_key_pressed::return#13 + //SEG106 [46] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@9 -- vbuaa_neq_0_then_la1 cmp #0 bne b9_from_b34 - //SEG106 [47] phi from main::@34 to main::@19 [phi:main::@34->main::@19] + //SEG107 [47] phi from main::@34 to main::@19 [phi:main::@34->main::@19] b19_from_b34: jmp b19 - //SEG107 main::@19 + //SEG108 main::@19 b19: - //SEG108 [48] phi from main::@19 to main::@9 [phi:main::@19->main::@9] + //SEG109 [48] phi from main::@19 to main::@9 [phi:main::@19->main::@9] b9_from_b19: - //SEG109 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@19->main::@9#0] -- vbuz1=vbuc1 + //SEG110 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@19->main::@9#0] -- vbuz1=vbuc1 lda #0 sta shift jmp b9 - //SEG110 [48] phi from main::@34 to main::@9 [phi:main::@34->main::@9] + //SEG111 [48] phi from main::@34 to main::@9 [phi:main::@34->main::@9] b9_from_b34: - //SEG111 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@34->main::@9#0] -- vbuz1=vbuc1 + //SEG112 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@34->main::@9#0] -- vbuz1=vbuc1 lda #1 sta shift jmp b9 - //SEG112 main::@9 + //SEG113 main::@9 b9: - //SEG113 [49] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG114 [49] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: - //SEG114 [49] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@10#0] -- vbuz1=vbuc1 + //SEG115 [49] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@10#0] -- vbuz1=vbuc1 lda #0 sta ch jmp b10 - //SEG115 [49] phi from main::@12 to main::@10 [phi:main::@12->main::@10] + //SEG116 [49] phi from main::@12 to main::@10 [phi:main::@12->main::@10] b10_from_b12: - //SEG116 [49] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@12->main::@10#0] -- register_copy + //SEG117 [49] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@12->main::@10#0] -- register_copy jmp b10 - //SEG117 main::@10 + //SEG118 main::@10 b10: - //SEG118 [50] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuxx=vbuz1 + //SEG119 [50] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuxx=vbuz1 ldx ch - //SEG119 [51] call keyboard_get_keycode + //SEG120 [51] call keyboard_get_keycode jsr keyboard_get_keycode - //SEG120 [52] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 + //SEG121 [52] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 jmp b35 - //SEG121 main::@35 + //SEG122 main::@35 b35: - //SEG122 [53] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 - //SEG123 [54] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuaa_eq_vbuc1_then_la1 + //SEG123 [53] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 + //SEG124 [54] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuaa_eq_vbuc1_then_la1 cmp #$3f beq b11_from_b35 jmp b21 - //SEG124 main::@21 + //SEG125 main::@21 b21: - //SEG125 [55] (byte) keyboard_key_pressed::key#5 ← (byte) main::key#0 -- vbuxx=vbuaa + //SEG126 [55] (byte) keyboard_key_pressed::key#5 ← (byte) main::key#0 -- vbuxx=vbuaa tax - //SEG126 [56] call keyboard_key_pressed - //SEG127 [113] phi from main::@21 to keyboard_key_pressed [phi:main::@21->keyboard_key_pressed] + //SEG127 [56] call keyboard_key_pressed + //SEG128 [113] phi from main::@21 to keyboard_key_pressed [phi:main::@21->keyboard_key_pressed] keyboard_key_pressed_from_b21: - //SEG128 [113] phi (byte) keyboard_key_pressed::key#6 = (byte) keyboard_key_pressed::key#5 [phi:main::@21->keyboard_key_pressed#0] -- register_copy + //SEG129 [113] phi (byte) keyboard_key_pressed::key#6 = (byte) keyboard_key_pressed::key#5 [phi:main::@21->keyboard_key_pressed#0] -- register_copy jsr keyboard_key_pressed - //SEG129 [57] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 + //SEG130 [57] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 jmp b36 - //SEG130 main::@36 + //SEG131 main::@36 b36: - //SEG131 [58] (byte) main::pressed#1 ← (byte) keyboard_key_pressed::return#14 - //SEG132 [59] phi from main::@36 to main::@11 [phi:main::@36->main::@11] + //SEG132 [58] (byte) main::pressed#1 ← (byte) keyboard_key_pressed::return#14 + //SEG133 [59] phi from main::@36 to main::@11 [phi:main::@36->main::@11] b11_from_b36: - //SEG133 [59] phi (byte) main::pressed#2 = (byte) main::pressed#1 [phi:main::@36->main::@11#0] -- register_copy + //SEG134 [59] phi (byte) main::pressed#2 = (byte) main::pressed#1 [phi:main::@36->main::@11#0] -- register_copy jmp b11 - //SEG134 [59] phi from main::@35 to main::@11 [phi:main::@35->main::@11] + //SEG135 [59] phi from main::@35 to main::@11 [phi:main::@35->main::@11] b11_from_b35: - //SEG135 [59] phi (byte) main::pressed#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@35->main::@11#0] -- vbuaa=vbuc1 + //SEG136 [59] phi (byte) main::pressed#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@35->main::@11#0] -- vbuaa=vbuc1 lda #0 jmp b11 - //SEG136 main::@11 + //SEG137 main::@11 b11: - //SEG137 [60] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuaa_eq_0_then_la1 + //SEG138 [60] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuaa_eq_0_then_la1 cmp #0 beq b12 jmp b22 - //SEG138 main::@22 + //SEG139 main::@22 b22: - //SEG139 [61] (byte) plot_chargen::pos#1 ← (byte) main::cur_pos#12 -- vbuyy=vbuz1 + //SEG140 [61] (byte) plot_chargen::pos#1 ← (byte) main::cur_pos#12 -- vbuyy=vbuz1 ldy cur_pos - //SEG140 [62] (byte) plot_chargen::ch#1 ← (byte) main::ch#2 -- vbuaa=vbuz1 + //SEG141 [62] (byte) plot_chargen::ch#1 ← (byte) main::ch#2 -- vbuaa=vbuz1 lda ch - //SEG141 [63] (byte) plot_chargen::shift#1 ← (byte) main::shift#10 -- vbuxx=vbuz1 + //SEG142 [63] (byte) plot_chargen::shift#1 ← (byte) main::shift#10 -- vbuxx=vbuz1 ldx shift - //SEG142 [64] call plot_chargen - //SEG143 [71] phi from main::@22 to plot_chargen [phi:main::@22->plot_chargen] + //SEG143 [64] call plot_chargen + //SEG144 [71] phi from main::@22 to plot_chargen [phi:main::@22->plot_chargen] plot_chargen_from_b22: - //SEG144 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#1 [phi:main::@22->plot_chargen#0] -- register_copy - //SEG145 [71] phi (byte) plot_chargen::shift#2 = (byte) plot_chargen::shift#1 [phi:main::@22->plot_chargen#1] -- register_copy - //SEG146 [71] phi (byte) plot_chargen::ch#2 = (byte) plot_chargen::ch#1 [phi:main::@22->plot_chargen#2] -- register_copy + //SEG145 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#1 [phi:main::@22->plot_chargen#0] -- register_copy + //SEG146 [71] phi (byte) plot_chargen::shift#2 = (byte) plot_chargen::shift#1 [phi:main::@22->plot_chargen#1] -- register_copy + //SEG147 [71] phi (byte) plot_chargen::ch#2 = (byte) plot_chargen::ch#1 [phi:main::@22->plot_chargen#2] -- register_copy jsr plot_chargen jmp b12 - //SEG147 main::@12 + //SEG148 main::@12 b12: - //SEG148 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 + //SEG149 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 inc ch - //SEG149 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG150 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #$40 bne b10_from_b12 - //SEG150 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3] + //SEG151 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3] b3_from_b12: - //SEG151 [22] phi (byte) main::cur_pos#24 = (byte) main::cur_pos#12 [phi:main::@12->main::@3#0] -- register_copy + //SEG152 [22] phi (byte) main::cur_pos#24 = (byte) main::cur_pos#12 [phi:main::@12->main::@3#0] -- register_copy jmp b3 - //SEG152 [67] phi from main::@33 to main::@44 [phi:main::@33->main::@44] + //SEG153 [67] phi from main::@33 to main::@44 [phi:main::@33->main::@44] b44_from_b33: jmp b44 - //SEG153 main::@44 + //SEG154 main::@44 b44: - //SEG154 [42] phi from main::@44 to main::@7 [phi:main::@44->main::@7] + //SEG155 [42] phi from main::@44 to main::@7 [phi:main::@44->main::@7] b7_from_b44: - //SEG155 [42] phi (byte) main::cur_pos#12 = (byte) main::cur_pos#18 [phi:main::@44->main::@7#0] -- register_copy + //SEG156 [42] phi (byte) main::cur_pos#12 = (byte) main::cur_pos#18 [phi:main::@44->main::@7#0] -- register_copy jmp b7 - //SEG156 [68] phi from main::@32 to main::@43 [phi:main::@32->main::@43] + //SEG157 [68] phi from main::@32 to main::@43 [phi:main::@32->main::@43] b43_from_b32: jmp b43 - //SEG157 main::@43 + //SEG158 main::@43 b43: - //SEG158 [37] phi from main::@43 to main::@6 [phi:main::@43->main::@6] + //SEG159 [37] phi from main::@43 to main::@6 [phi:main::@43->main::@6] b6_from_b43: - //SEG159 [37] phi (byte) main::cur_pos#18 = (byte) main::cur_pos#20 [phi:main::@43->main::@6#0] -- register_copy + //SEG160 [37] phi (byte) main::cur_pos#18 = (byte) main::cur_pos#20 [phi:main::@43->main::@6#0] -- register_copy jmp b6 - //SEG160 [69] phi from main::@31 to main::@42 [phi:main::@31->main::@42] + //SEG161 [69] phi from main::@31 to main::@42 [phi:main::@31->main::@42] b42_from_b31: jmp b42 - //SEG161 main::@42 + //SEG162 main::@42 b42: - //SEG162 [32] phi from main::@42 to main::@5 [phi:main::@42->main::@5] + //SEG163 [32] phi from main::@42 to main::@5 [phi:main::@42->main::@5] b5_from_b42: - //SEG163 [32] phi (byte) main::cur_pos#20 = (byte) main::cur_pos#22 [phi:main::@42->main::@5#0] -- register_copy + //SEG164 [32] phi (byte) main::cur_pos#20 = (byte) main::cur_pos#22 [phi:main::@42->main::@5#0] -- register_copy jmp b5 - //SEG164 [70] phi from main::@30 to main::@41 [phi:main::@30->main::@41] + //SEG165 [70] phi from main::@30 to main::@41 [phi:main::@30->main::@41] b41_from_b30: jmp b41 - //SEG165 main::@41 + //SEG166 main::@41 b41: - //SEG166 [27] phi from main::@41 to main::@4 [phi:main::@41->main::@4] + //SEG167 [27] phi from main::@41 to main::@4 [phi:main::@41->main::@4] b4_from_b41: - //SEG167 [27] phi (byte) main::cur_pos#22 = (byte) main::cur_pos#24 [phi:main::@41->main::@4#0] -- register_copy + //SEG168 [27] phi (byte) main::cur_pos#22 = (byte) main::cur_pos#24 [phi:main::@41->main::@4#0] -- register_copy jmp b4 str: .text "f1@" str1: .text "f3@" str2: .text "f5@" str3: .text "f7@" } -//SEG168 plot_chargen +//SEG169 plot_chargen // Render 8x8 char (ch) as pixels on char canvas #pos plot_chargen: { .label _0 = 2 @@ -4261,20 +4264,20 @@ plot_chargen: { .label sc = 9 .label bits = 8 .label y = 7 - //SEG169 asm { sei } + //SEG170 asm { sei } sei - //SEG170 [73] (word~) plot_chargen::$0 ← ((word)) (byte) plot_chargen::ch#2 -- vwuz1=_word_vbuaa + //SEG171 [73] (word~) plot_chargen::$0 ← ((word)) (byte) plot_chargen::ch#2 -- vwuz1=_word_vbuaa sta _0 lda #0 sta _0+1 - //SEG171 [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG172 [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG172 [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN#0 + (word~) plot_chargen::$1 -- pbuz1=pbuc1_plus_vwuz1 + //SEG173 [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN#0 + (word~) plot_chargen::$1 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargen adc #CHARGEN sta chargen+1 - //SEG173 [76] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1 -- vbuxx_eq_0_then_la1 + //SEG174 [76] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1 -- vbuxx_eq_0_then_la1 cpx #0 beq b1_from_plot_chargen jmp b5 - //SEG174 plot_chargen::@5 + //SEG175 plot_chargen::@5 b5: - //SEG175 [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word/signed word/dword/signed dword) 2048 -- pbuz1=pbuz1_plus_vwuc1 + //SEG176 [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word/signed word/dword/signed dword) 2048 -- pbuz1=pbuz1_plus_vwuc1 clc lda chargen adc #<$800 @@ -4296,29 +4299,29 @@ plot_chargen: { lda chargen+1 adc #>$800 sta chargen+1 - //SEG176 [78] phi from plot_chargen plot_chargen::@5 to plot_chargen::@1 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1] + //SEG177 [78] phi from plot_chargen plot_chargen::@5 to plot_chargen::@1 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1] b1_from_plot_chargen: b1_from_b5: - //SEG177 [78] phi (byte*) plot_chargen::chargen#5 = (byte*) plot_chargen::chargen#0 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1#0] -- register_copy + //SEG178 [78] phi (byte*) plot_chargen::chargen#5 = (byte*) plot_chargen::chargen#0 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1#0] -- register_copy jmp b1 - //SEG178 plot_chargen::@1 + //SEG179 plot_chargen::@1 b1: - //SEG179 [79] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG180 [79] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG180 [80] (byte) mul8u::a#1 ← (byte) plot_chargen::pos#2 -- vbuxx=vbuyy + //SEG181 [80] (byte) mul8u::a#1 ← (byte) plot_chargen::pos#2 -- vbuxx=vbuyy tya tax - //SEG181 [81] call mul8u - //SEG182 [103] phi from plot_chargen::@1 to mul8u [phi:plot_chargen::@1->mul8u] + //SEG182 [81] call mul8u + //SEG183 [103] phi from plot_chargen::@1 to mul8u [phi:plot_chargen::@1->mul8u] mul8u_from_b1: jsr mul8u - //SEG183 [82] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG184 [82] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b9 - //SEG184 plot_chargen::@9 + //SEG185 plot_chargen::@9 b9: - //SEG185 [83] (word~) plot_chargen::$8 ← (word) mul8u::return#2 - //SEG186 [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) plot_chargen::$8 -- pbuz1=pbuc1_plus_vwuz1 + //SEG186 [83] (word~) plot_chargen::$8 ← (word) mul8u::return#2 + //SEG187 [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) plot_chargen::$8 -- pbuz1=pbuc1_plus_vwuz1 clc lda sc adc #SCREEN+$28+1 sta sc+1 - //SEG187 [85] phi from plot_chargen::@9 to plot_chargen::@2 [phi:plot_chargen::@9->plot_chargen::@2] + //SEG188 [85] phi from plot_chargen::@9 to plot_chargen::@2 [phi:plot_chargen::@9->plot_chargen::@2] b2_from_b9: - //SEG188 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#0 [phi:plot_chargen::@9->plot_chargen::@2#0] -- register_copy - //SEG189 [85] phi (byte) plot_chargen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@9->plot_chargen::@2#1] -- vbuz1=vbuc1 + //SEG189 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#0 [phi:plot_chargen::@9->plot_chargen::@2#0] -- register_copy + //SEG190 [85] phi (byte) plot_chargen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@9->plot_chargen::@2#1] -- vbuz1=vbuc1 lda #0 sta y jmp b2 - //SEG190 [85] phi from plot_chargen::@7 to plot_chargen::@2 [phi:plot_chargen::@7->plot_chargen::@2] + //SEG191 [85] phi from plot_chargen::@7 to plot_chargen::@2 [phi:plot_chargen::@7->plot_chargen::@2] b2_from_b7: - //SEG191 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#2 [phi:plot_chargen::@7->plot_chargen::@2#0] -- register_copy - //SEG192 [85] phi (byte) plot_chargen::y#2 = (byte) plot_chargen::y#1 [phi:plot_chargen::@7->plot_chargen::@2#1] -- register_copy + //SEG192 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#2 [phi:plot_chargen::@7->plot_chargen::@2#0] -- register_copy + //SEG193 [85] phi (byte) plot_chargen::y#2 = (byte) plot_chargen::y#1 [phi:plot_chargen::@7->plot_chargen::@2#1] -- register_copy jmp b2 - //SEG193 plot_chargen::@2 + //SEG194 plot_chargen::@2 b2: - //SEG194 [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG195 [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG195 [87] phi from plot_chargen::@2 to plot_chargen::@3 [phi:plot_chargen::@2->plot_chargen::@3] + //SEG196 [87] phi from plot_chargen::@2 to plot_chargen::@3 [phi:plot_chargen::@2->plot_chargen::@3] b3_from_b2: - //SEG196 [87] phi (byte) plot_chargen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@2->plot_chargen::@3#0] -- vbuxx=vbuc1 + //SEG197 [87] phi (byte) plot_chargen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@2->plot_chargen::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG197 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#7 [phi:plot_chargen::@2->plot_chargen::@3#1] -- register_copy - //SEG198 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#0 [phi:plot_chargen::@2->plot_chargen::@3#2] -- register_copy + //SEG198 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#7 [phi:plot_chargen::@2->plot_chargen::@3#1] -- register_copy + //SEG199 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#0 [phi:plot_chargen::@2->plot_chargen::@3#2] -- register_copy jmp b3 - //SEG199 [87] phi from plot_chargen::@4 to plot_chargen::@3 [phi:plot_chargen::@4->plot_chargen::@3] + //SEG200 [87] phi from plot_chargen::@4 to plot_chargen::@3 [phi:plot_chargen::@4->plot_chargen::@3] b3_from_b4: - //SEG200 [87] phi (byte) plot_chargen::x#2 = (byte) plot_chargen::x#1 [phi:plot_chargen::@4->plot_chargen::@3#0] -- register_copy - //SEG201 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#1 [phi:plot_chargen::@4->plot_chargen::@3#1] -- register_copy - //SEG202 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#1 [phi:plot_chargen::@4->plot_chargen::@3#2] -- register_copy + //SEG201 [87] phi (byte) plot_chargen::x#2 = (byte) plot_chargen::x#1 [phi:plot_chargen::@4->plot_chargen::@3#0] -- register_copy + //SEG202 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#1 [phi:plot_chargen::@4->plot_chargen::@3#1] -- register_copy + //SEG203 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#1 [phi:plot_chargen::@4->plot_chargen::@3#2] -- register_copy jmp b3 - //SEG203 plot_chargen::@3 + //SEG204 plot_chargen::@3 b3: - //SEG204 [88] (byte~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG205 [88] (byte~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG205 [89] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4 -- vbuaa_eq_0_then_la1 + //SEG206 [89] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b3 - //SEG206 [90] phi from plot_chargen::@3 to plot_chargen::@6 [phi:plot_chargen::@3->plot_chargen::@6] + //SEG207 [90] phi from plot_chargen::@3 to plot_chargen::@6 [phi:plot_chargen::@3->plot_chargen::@6] b6_from_b3: jmp b6 - //SEG207 plot_chargen::@6 + //SEG208 plot_chargen::@6 b6: - //SEG208 [91] phi from plot_chargen::@6 to plot_chargen::@4 [phi:plot_chargen::@6->plot_chargen::@4] + //SEG209 [91] phi from plot_chargen::@6 to plot_chargen::@4 [phi:plot_chargen::@6->plot_chargen::@4] b4_from_b6: - //SEG209 [91] phi (byte) plot_chargen::c#2 = (byte) '*' [phi:plot_chargen::@6->plot_chargen::@4#0] -- vbuaa=vbuc1 + //SEG210 [91] phi (byte) plot_chargen::c#2 = (byte) '*' [phi:plot_chargen::@6->plot_chargen::@4#0] -- vbuaa=vbuc1 lda #'*' jmp b4 - //SEG210 [91] phi from plot_chargen::@3 to plot_chargen::@4 [phi:plot_chargen::@3->plot_chargen::@4] + //SEG211 [91] phi from plot_chargen::@3 to plot_chargen::@4 [phi:plot_chargen::@3->plot_chargen::@4] b4_from_b3: - //SEG211 [91] phi (byte) plot_chargen::c#2 = (byte) '.' [phi:plot_chargen::@3->plot_chargen::@4#0] -- vbuaa=vbuc1 + //SEG212 [91] phi (byte) plot_chargen::c#2 = (byte) '.' [phi:plot_chargen::@3->plot_chargen::@4#0] -- vbuaa=vbuc1 lda #'.' jmp b4 - //SEG212 plot_chargen::@4 + //SEG213 plot_chargen::@4 b4: - //SEG213 [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 -- _deref_pbuz1=vbuaa + //SEG214 [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (sc),y - //SEG214 [93] (byte*) plot_chargen::sc#1 ← ++ (byte*) plot_chargen::sc#3 -- pbuz1=_inc_pbuz1 + //SEG215 [93] (byte*) plot_chargen::sc#1 ← ++ (byte*) plot_chargen::sc#3 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG215 [94] (byte) plot_chargen::bits#1 ← (byte) plot_chargen::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG216 [94] (byte) plot_chargen::bits#1 ← (byte) plot_chargen::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG216 [95] (byte) plot_chargen::x#1 ← ++ (byte) plot_chargen::x#2 -- vbuxx=_inc_vbuxx + //SEG217 [95] (byte) plot_chargen::x#1 ← ++ (byte) plot_chargen::x#2 -- vbuxx=_inc_vbuxx inx - //SEG217 [96] if((byte) plot_chargen::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG218 [96] if((byte) plot_chargen::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3_from_b4 jmp b7 - //SEG218 plot_chargen::@7 + //SEG219 plot_chargen::@7 b7: - //SEG219 [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 + //SEG220 [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$20 @@ -4408,70 +4411,69 @@ plot_chargen: { bcc !+ inc sc+1 !: - //SEG220 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1 + //SEG221 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG221 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG222 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b2_from_b7 jmp b8 - //SEG222 plot_chargen::@8 + //SEG223 plot_chargen::@8 b8: - //SEG223 [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG224 [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG224 asm { cli } + //SEG225 asm { cli } cli jmp breturn - //SEG225 plot_chargen::@return + //SEG226 plot_chargen::@return breturn: - //SEG226 [102] return + //SEG227 [102] return rts } -//SEG227 mul8u -// Simple binary multiplication implementation +//SEG228 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .const b = $a .label mb = $b .label res = 9 .label return = 9 - //SEG228 [104] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG229 [104] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG229 [104] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 + //SEG230 [104] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 lda #b sta mb+1 - //SEG230 [104] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG231 [104] 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 - //SEG231 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG232 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG232 mul8u::@1 + //SEG233 mul8u::@1 b1: - //SEG233 [105] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG234 [105] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG234 mul8u::@return + //SEG235 mul8u::@return breturn: - //SEG235 [106] return + //SEG236 [106] return rts - //SEG236 mul8u::@2 + //SEG237 mul8u::@2 b2: - //SEG237 [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG238 [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG238 [108] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG239 [108] 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 - //SEG239 mul8u::@7 + //SEG240 mul8u::@7 b7: - //SEG240 [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG241 [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -4479,128 +4481,128 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG241 [110] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG242 [110] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG242 [110] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG243 [110] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG243 mul8u::@4 + //SEG244 mul8u::@4 b4: - //SEG244 [111] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG245 [111] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG245 [112] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG246 [112] (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 - //SEG246 [104] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG247 [104] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG247 [104] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG248 [104] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG249 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG248 [104] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG249 [104] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG250 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG250 keyboard_key_pressed +//SEG251 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed keyboard_key_pressed: { - //SEG251 [114] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuxx_band_vbuc1 + //SEG252 [114] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuxx_band_vbuc1 txa and #7 tay - //SEG252 [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_ror_3 + //SEG253 [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_ror_3 txa lsr lsr lsr - //SEG253 [116] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa + //SEG254 [116] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa tax - //SEG254 [117] call keyboard_matrix_read + //SEG255 [117] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG255 [118] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG256 [118] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b2 - //SEG256 keyboard_key_pressed::@2 + //SEG257 keyboard_key_pressed::@2 b2: - //SEG257 [119] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG258 [120] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy + //SEG258 [119] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG259 [120] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy and keyboard_matrix_col_bitmask,y jmp breturn - //SEG259 keyboard_key_pressed::@return + //SEG260 keyboard_key_pressed::@return breturn: - //SEG260 [121] return + //SEG261 [121] return rts } -//SEG261 keyboard_matrix_read +//SEG262 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG262 [122] *((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 + //SEG263 [122] *((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 - //SEG263 [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG264 [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG264 keyboard_matrix_read::@return + //SEG265 keyboard_matrix_read::@return breturn: - //SEG265 [124] return + //SEG266 [124] return rts } -//SEG266 keyboard_get_keycode +//SEG267 keyboard_get_keycode // Get the keycode corresponding to a specific screen code character // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. // If there is no non-shifted key representing the char $3f is returned (representing RUN/STOP) . keyboard_get_keycode: { - //SEG267 [125] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG268 [125] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuxx lda keyboard_char_keycodes,x jmp breturn - //SEG268 keyboard_get_keycode::@return + //SEG269 keyboard_get_keycode::@return breturn: - //SEG269 [126] return + //SEG270 [126] return rts } -//SEG270 print_str_at +//SEG271 print_str_at // Print a string at a specific screen position print_str_at: { .label at = 9 .label str = 2 - //SEG271 [128] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG272 [128] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] b1_from_print_str_at: b1_from_b2: - //SEG272 [128] phi (byte*) print_str_at::at#5 = (byte*) print_str_at::at#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG273 [128] phi (byte*) print_str_at::str#5 = (byte*) print_str_at::str#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG273 [128] phi (byte*) print_str_at::at#5 = (byte*) print_str_at::at#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG274 [128] phi (byte*) print_str_at::str#5 = (byte*) print_str_at::str#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 - //SEG274 print_str_at::@1 + //SEG275 print_str_at::@1 b1: - //SEG275 [129] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG276 [129] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG276 print_str_at::@return + //SEG277 print_str_at::@return breturn: - //SEG277 [130] return + //SEG278 [130] return rts - //SEG278 print_str_at::@2 + //SEG279 print_str_at::@2 b2: - //SEG279 [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) -- _deref_pbuz1=_deref_pbuz2 + //SEG280 [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (at),y - //SEG280 [132] (byte*) print_str_at::at#4 ← ++ (byte*) print_str_at::at#5 -- pbuz1=_inc_pbuz1 + //SEG281 [132] (byte*) print_str_at::at#4 ← ++ (byte*) print_str_at::at#5 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG281 [133] (byte*) print_str_at::str#4 ← ++ (byte*) print_str_at::str#5 -- pbuz1=_inc_pbuz1 + //SEG282 [133] (byte*) print_str_at::str#4 ← ++ (byte*) print_str_at::str#5 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 @@ -5250,11 +5252,13 @@ reg byte a [ keyboard_get_keycode::return#0 ] FINAL ASSEMBLER Score: 628893 -//SEG0 Basic Upstart +//SEG0 File Comments +// Allows analysis of the CHARGEN ROM font +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // Processor Port Register controlling RAM/ROM configuration and the datasette .label PROCPORT = 1 // The address of the CHARGEN character set @@ -5319,40 +5323,40 @@ Score: 628893 .const KEY_SPACE = $3c .const KEY_Q = $3e .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] -//SEG4 @19 -//SEG5 [2] call main -//SEG6 [4] phi from @19 to main [phi:@19->main] -//SEG7 [3] phi from @19 to @end [phi:@19->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @19 [phi:@begin->@19] +//SEG5 @19 +//SEG6 [2] call main +//SEG7 [4] phi from @19 to main [phi:@19->main] +//SEG8 [3] phi from @19 to @end [phi:@19->@end] +//SEG9 @end +//SEG10 main main: { .label sc = 2 .label i = 4 .label ch = 6 .label cur_pos = 4 .label shift = 5 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte*) main::sc#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1 @@ -5361,276 +5365,276 @@ main: { cmp #main::@13] - //SEG19 main::@13 - //SEG20 [10] call print_str_at - //SEG21 [127] phi from main::@13 to print_str_at [phi:main::@13->print_str_at] - //SEG22 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG19 [9] phi from main::@1 to main::@13 [phi:main::@1->main::@13] + //SEG20 main::@13 + //SEG21 [10] call print_str_at + //SEG22 [127] phi from main::@13 to print_str_at [phi:main::@13->print_str_at] + //SEG23 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1 sta print_str_at.at+1 - //SEG23 [127] phi (byte*) print_str_at::str#7 = (const string) main::str [phi:main::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG24 [127] phi (byte*) print_str_at::str#7 = (const string) main::str [phi:main::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG24 [11] phi from main::@13 to main::@25 [phi:main::@13->main::@25] - //SEG25 main::@25 - //SEG26 [12] call print_str_at - //SEG27 [127] phi from main::@25 to print_str_at [phi:main::@25->print_str_at] - //SEG28 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@25->print_str_at#0] -- pbuz1=pbuc1 + //SEG25 [11] phi from main::@13 to main::@25 [phi:main::@13->main::@25] + //SEG26 main::@25 + //SEG27 [12] call print_str_at + //SEG28 [127] phi from main::@25 to print_str_at [phi:main::@25->print_str_at] + //SEG29 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@25->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$a sta print_str_at.at+1 - //SEG29 [127] phi (byte*) print_str_at::str#7 = (const string) main::str1 [phi:main::@25->print_str_at#1] -- pbuz1=pbuc1 + //SEG30 [127] phi (byte*) print_str_at::str#7 = (const string) main::str1 [phi:main::@25->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG30 [13] phi from main::@25 to main::@26 [phi:main::@25->main::@26] - //SEG31 main::@26 - //SEG32 [14] call print_str_at - //SEG33 [127] phi from main::@26 to print_str_at [phi:main::@26->print_str_at] - //SEG34 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@26->print_str_at#0] -- pbuz1=pbuc1 + //SEG31 [13] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG32 main::@26 + //SEG33 [14] call print_str_at + //SEG34 [127] phi from main::@26 to print_str_at [phi:main::@26->print_str_at] + //SEG35 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@26->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$14 sta print_str_at.at+1 - //SEG35 [127] phi (byte*) print_str_at::str#7 = (const string) main::str2 [phi:main::@26->print_str_at#1] -- pbuz1=pbuc1 + //SEG36 [127] phi (byte*) print_str_at::str#7 = (const string) main::str2 [phi:main::@26->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG36 [15] phi from main::@26 to main::@27 [phi:main::@26->main::@27] - //SEG37 main::@27 - //SEG38 [16] call print_str_at - //SEG39 [127] phi from main::@27 to print_str_at [phi:main::@27->print_str_at] - //SEG40 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 30 [phi:main::@27->print_str_at#0] -- pbuz1=pbuc1 + //SEG37 [15] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG38 main::@27 + //SEG39 [16] call print_str_at + //SEG40 [127] phi from main::@27 to print_str_at [phi:main::@27->print_str_at] + //SEG41 [127] phi (byte*) print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 30 [phi:main::@27->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+1+$1e sta print_str_at.at+1 - //SEG41 [127] phi (byte*) print_str_at::str#7 = (const string) main::str3 [phi:main::@27->print_str_at#1] -- pbuz1=pbuc1 + //SEG42 [127] phi (byte*) print_str_at::str#7 = (const string) main::str3 [phi:main::@27->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG42 [17] phi from main::@27 to main::@2 [phi:main::@27->main::@2] - //SEG43 [17] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@2#0] -- vbuz1=vbuc1 + //SEG43 [17] phi from main::@27 to main::@2 [phi:main::@27->main::@2] + //SEG44 [17] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@27->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG44 [17] phi from main::@29 to main::@2 [phi:main::@29->main::@2] - //SEG45 [17] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@29->main::@2#0] -- register_copy - //SEG46 main::@2 + //SEG45 [17] phi from main::@29 to main::@2 [phi:main::@29->main::@2] + //SEG46 [17] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@29->main::@2#0] -- register_copy + //SEG47 main::@2 b2: - //SEG47 [18] (byte) plot_chargen::pos#0 ← (byte) main::i#2 -- vbuyy=vbuz1 + //SEG48 [18] (byte) plot_chargen::pos#0 ← (byte) main::i#2 -- vbuyy=vbuz1 ldy i - //SEG48 [19] call plot_chargen - //SEG49 [71] phi from main::@2 to plot_chargen [phi:main::@2->plot_chargen] - //SEG50 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#0 [phi:main::@2->plot_chargen#0] -- register_copy - //SEG51 [71] phi (byte) plot_chargen::shift#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->plot_chargen#1] -- vbuxx=vbuc1 + //SEG49 [19] call plot_chargen + //SEG50 [71] phi from main::@2 to plot_chargen [phi:main::@2->plot_chargen] + //SEG51 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#0 [phi:main::@2->plot_chargen#0] -- register_copy + //SEG52 [71] phi (byte) plot_chargen::shift#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->plot_chargen#1] -- vbuxx=vbuc1 ldx #0 - //SEG52 [71] phi (byte) plot_chargen::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:main::@2->plot_chargen#2] -- vbuaa=vbuc1 + //SEG53 [71] phi (byte) plot_chargen::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:main::@2->plot_chargen#2] -- vbuaa=vbuc1 lda #$20 jsr plot_chargen - //SEG53 main::@29 - //SEG54 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG54 main::@29 + //SEG55 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG55 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG56 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b2 - //SEG56 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3] - //SEG57 [22] phi (byte) main::cur_pos#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->main::@3#0] -- vbuz1=vbuc1 + //SEG57 [22] phi from main::@29 to main::@3 [phi:main::@29->main::@3] + //SEG58 [22] phi (byte) main::cur_pos#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@29->main::@3#0] -- vbuz1=vbuc1 lda #0 sta cur_pos - //SEG58 main::@3 + //SEG59 main::@3 b3: - //SEG59 [23] call keyboard_key_pressed - //SEG60 [113] phi from main::@3 to keyboard_key_pressed [phi:main::@3->keyboard_key_pressed] - //SEG61 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F1#0 [phi:main::@3->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG60 [23] call keyboard_key_pressed + //SEG61 [113] phi from main::@3 to keyboard_key_pressed [phi:main::@3->keyboard_key_pressed] + //SEG62 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F1#0 [phi:main::@3->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_F1 jsr keyboard_key_pressed - //SEG62 [24] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 - //SEG63 main::@30 - //SEG64 [25] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 - //SEG65 [26] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@41 -- vbuaa_eq_0_then_la1 + //SEG63 [24] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG64 main::@30 + //SEG65 [25] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 + //SEG66 [26] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@41 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG66 [27] phi from main::@30 to main::@4 [phi:main::@30->main::@4] - //SEG67 [27] phi (byte) main::cur_pos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@30->main::@4#0] -- vbuz1=vbuc1 + //SEG67 [27] phi from main::@30 to main::@4 [phi:main::@30->main::@4] + //SEG68 [27] phi (byte) main::cur_pos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@30->main::@4#0] -- vbuz1=vbuc1 lda #0 sta cur_pos - //SEG68 main::@4 + //SEG69 main::@4 b4: - //SEG69 [28] call keyboard_key_pressed - //SEG70 [113] phi from main::@4 to keyboard_key_pressed [phi:main::@4->keyboard_key_pressed] - //SEG71 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F3#0 [phi:main::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG70 [28] call keyboard_key_pressed + //SEG71 [113] phi from main::@4 to keyboard_key_pressed [phi:main::@4->keyboard_key_pressed] + //SEG72 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F3#0 [phi:main::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_F3 jsr keyboard_key_pressed - //SEG72 [29] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 - //SEG73 main::@31 - //SEG74 [30] (byte~) main::$18 ← (byte) keyboard_key_pressed::return#10 - //SEG75 [31] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@42 -- vbuaa_eq_0_then_la1 + //SEG73 [29] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 + //SEG74 main::@31 + //SEG75 [30] (byte~) main::$18 ← (byte) keyboard_key_pressed::return#10 + //SEG76 [31] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@42 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG76 [32] phi from main::@31 to main::@5 [phi:main::@31->main::@5] - //SEG77 [32] phi (byte) main::cur_pos#20 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@31->main::@5#0] -- vbuz1=vbuc1 + //SEG77 [32] phi from main::@31 to main::@5 [phi:main::@31->main::@5] + //SEG78 [32] phi (byte) main::cur_pos#20 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@31->main::@5#0] -- vbuz1=vbuc1 lda #1 sta cur_pos - //SEG78 main::@5 + //SEG79 main::@5 b5: - //SEG79 [33] call keyboard_key_pressed - //SEG80 [113] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] - //SEG81 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F5#0 [phi:main::@5->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG80 [33] call keyboard_key_pressed + //SEG81 [113] phi from main::@5 to keyboard_key_pressed [phi:main::@5->keyboard_key_pressed] + //SEG82 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F5#0 [phi:main::@5->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_F5 jsr keyboard_key_pressed - //SEG82 [34] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 - //SEG83 main::@32 - //SEG84 [35] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#11 - //SEG85 [36] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@43 -- vbuaa_eq_0_then_la1 + //SEG83 [34] (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#0 + //SEG84 main::@32 + //SEG85 [35] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#11 + //SEG86 [36] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@43 -- vbuaa_eq_0_then_la1 cmp #0 beq b6 - //SEG86 [37] phi from main::@32 to main::@6 [phi:main::@32->main::@6] - //SEG87 [37] phi (byte) main::cur_pos#18 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@32->main::@6#0] -- vbuz1=vbuc1 + //SEG87 [37] phi from main::@32 to main::@6 [phi:main::@32->main::@6] + //SEG88 [37] phi (byte) main::cur_pos#18 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@32->main::@6#0] -- vbuz1=vbuc1 lda #2 sta cur_pos - //SEG88 main::@6 + //SEG89 main::@6 b6: - //SEG89 [38] call keyboard_key_pressed - //SEG90 [113] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] - //SEG91 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F7#0 [phi:main::@6->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG90 [38] call keyboard_key_pressed + //SEG91 [113] phi from main::@6 to keyboard_key_pressed [phi:main::@6->keyboard_key_pressed] + //SEG92 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_F7#0 [phi:main::@6->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_F7 jsr keyboard_key_pressed - //SEG92 [39] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 - //SEG93 main::@33 - //SEG94 [40] (byte~) main::$24 ← (byte) keyboard_key_pressed::return#12 - //SEG95 [41] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@44 -- vbuaa_eq_0_then_la1 + //SEG93 [39] (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#0 + //SEG94 main::@33 + //SEG95 [40] (byte~) main::$24 ← (byte) keyboard_key_pressed::return#12 + //SEG96 [41] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@44 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG96 [42] phi from main::@33 to main::@7 [phi:main::@33->main::@7] - //SEG97 [42] phi (byte) main::cur_pos#12 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@33->main::@7#0] -- vbuz1=vbuc1 + //SEG97 [42] phi from main::@33 to main::@7 [phi:main::@33->main::@7] + //SEG98 [42] phi (byte) main::cur_pos#12 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@33->main::@7#0] -- vbuz1=vbuc1 lda #3 sta cur_pos - //SEG98 main::@7 + //SEG99 main::@7 b7: - //SEG99 [43] call keyboard_key_pressed - //SEG100 [113] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] - //SEG101 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_LSHIFT#0 [phi:main::@7->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG100 [43] call keyboard_key_pressed + //SEG101 [113] phi from main::@7 to keyboard_key_pressed [phi:main::@7->keyboard_key_pressed] + //SEG102 [113] phi (byte) keyboard_key_pressed::key#6 = (const byte) KEY_LSHIFT#0 [phi:main::@7->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_LSHIFT jsr keyboard_key_pressed - //SEG102 [44] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 - //SEG103 main::@34 - //SEG104 [45] (byte~) main::$27 ← (byte) keyboard_key_pressed::return#13 - //SEG105 [46] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@9 -- vbuaa_neq_0_then_la1 + //SEG103 [44] (byte) keyboard_key_pressed::return#13 ← (byte) keyboard_key_pressed::return#0 + //SEG104 main::@34 + //SEG105 [45] (byte~) main::$27 ← (byte) keyboard_key_pressed::return#13 + //SEG106 [46] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@9 -- vbuaa_neq_0_then_la1 cmp #0 bne b8 - //SEG106 [47] phi from main::@34 to main::@19 [phi:main::@34->main::@19] - //SEG107 main::@19 - //SEG108 [48] phi from main::@19 to main::@9 [phi:main::@19->main::@9] - //SEG109 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@19->main::@9#0] -- vbuz1=vbuc1 + //SEG107 [47] phi from main::@34 to main::@19 [phi:main::@34->main::@19] + //SEG108 main::@19 + //SEG109 [48] phi from main::@19 to main::@9 [phi:main::@19->main::@9] + //SEG110 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@19->main::@9#0] -- vbuz1=vbuc1 lda #0 sta shift jmp b9 - //SEG110 [48] phi from main::@34 to main::@9 [phi:main::@34->main::@9] + //SEG111 [48] phi from main::@34 to main::@9 [phi:main::@34->main::@9] b8: - //SEG111 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@34->main::@9#0] -- vbuz1=vbuc1 + //SEG112 [48] phi (byte) main::shift#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@34->main::@9#0] -- vbuz1=vbuc1 lda #1 sta shift - //SEG112 main::@9 + //SEG113 main::@9 b9: - //SEG113 [49] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - //SEG114 [49] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@10#0] -- vbuz1=vbuc1 + //SEG114 [49] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG115 [49] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@10#0] -- vbuz1=vbuc1 lda #0 sta ch - //SEG115 [49] phi from main::@12 to main::@10 [phi:main::@12->main::@10] - //SEG116 [49] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@12->main::@10#0] -- register_copy - //SEG117 main::@10 + //SEG116 [49] phi from main::@12 to main::@10 [phi:main::@12->main::@10] + //SEG117 [49] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@12->main::@10#0] -- register_copy + //SEG118 main::@10 b10: - //SEG118 [50] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuxx=vbuz1 + //SEG119 [50] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuxx=vbuz1 ldx ch - //SEG119 [51] call keyboard_get_keycode + //SEG120 [51] call keyboard_get_keycode jsr keyboard_get_keycode - //SEG120 [52] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 - //SEG121 main::@35 - //SEG122 [53] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 - //SEG123 [54] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuaa_eq_vbuc1_then_la1 + //SEG121 [52] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 + //SEG122 main::@35 + //SEG123 [53] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 + //SEG124 [54] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuaa_eq_vbuc1_then_la1 cmp #$3f beq b13 - //SEG124 main::@21 - //SEG125 [55] (byte) keyboard_key_pressed::key#5 ← (byte) main::key#0 -- vbuxx=vbuaa + //SEG125 main::@21 + //SEG126 [55] (byte) keyboard_key_pressed::key#5 ← (byte) main::key#0 -- vbuxx=vbuaa tax - //SEG126 [56] call keyboard_key_pressed - //SEG127 [113] phi from main::@21 to keyboard_key_pressed [phi:main::@21->keyboard_key_pressed] - //SEG128 [113] phi (byte) keyboard_key_pressed::key#6 = (byte) keyboard_key_pressed::key#5 [phi:main::@21->keyboard_key_pressed#0] -- register_copy + //SEG127 [56] call keyboard_key_pressed + //SEG128 [113] phi from main::@21 to keyboard_key_pressed [phi:main::@21->keyboard_key_pressed] + //SEG129 [113] phi (byte) keyboard_key_pressed::key#6 = (byte) keyboard_key_pressed::key#5 [phi:main::@21->keyboard_key_pressed#0] -- register_copy jsr keyboard_key_pressed - //SEG129 [57] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 - //SEG130 main::@36 - //SEG131 [58] (byte) main::pressed#1 ← (byte) keyboard_key_pressed::return#14 - //SEG132 [59] phi from main::@36 to main::@11 [phi:main::@36->main::@11] - //SEG133 [59] phi (byte) main::pressed#2 = (byte) main::pressed#1 [phi:main::@36->main::@11#0] -- register_copy + //SEG130 [57] (byte) keyboard_key_pressed::return#14 ← (byte) keyboard_key_pressed::return#0 + //SEG131 main::@36 + //SEG132 [58] (byte) main::pressed#1 ← (byte) keyboard_key_pressed::return#14 + //SEG133 [59] phi from main::@36 to main::@11 [phi:main::@36->main::@11] + //SEG134 [59] phi (byte) main::pressed#2 = (byte) main::pressed#1 [phi:main::@36->main::@11#0] -- register_copy jmp b11 - //SEG134 [59] phi from main::@35 to main::@11 [phi:main::@35->main::@11] + //SEG135 [59] phi from main::@35 to main::@11 [phi:main::@35->main::@11] b13: - //SEG135 [59] phi (byte) main::pressed#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@35->main::@11#0] -- vbuaa=vbuc1 + //SEG136 [59] phi (byte) main::pressed#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@35->main::@11#0] -- vbuaa=vbuc1 lda #0 - //SEG136 main::@11 + //SEG137 main::@11 b11: - //SEG137 [60] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuaa_eq_0_then_la1 + //SEG138 [60] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 -- vbuaa_eq_0_then_la1 cmp #0 beq b12 - //SEG138 main::@22 - //SEG139 [61] (byte) plot_chargen::pos#1 ← (byte) main::cur_pos#12 -- vbuyy=vbuz1 + //SEG139 main::@22 + //SEG140 [61] (byte) plot_chargen::pos#1 ← (byte) main::cur_pos#12 -- vbuyy=vbuz1 ldy cur_pos - //SEG140 [62] (byte) plot_chargen::ch#1 ← (byte) main::ch#2 -- vbuaa=vbuz1 + //SEG141 [62] (byte) plot_chargen::ch#1 ← (byte) main::ch#2 -- vbuaa=vbuz1 lda ch - //SEG141 [63] (byte) plot_chargen::shift#1 ← (byte) main::shift#10 -- vbuxx=vbuz1 + //SEG142 [63] (byte) plot_chargen::shift#1 ← (byte) main::shift#10 -- vbuxx=vbuz1 ldx shift - //SEG142 [64] call plot_chargen - //SEG143 [71] phi from main::@22 to plot_chargen [phi:main::@22->plot_chargen] - //SEG144 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#1 [phi:main::@22->plot_chargen#0] -- register_copy - //SEG145 [71] phi (byte) plot_chargen::shift#2 = (byte) plot_chargen::shift#1 [phi:main::@22->plot_chargen#1] -- register_copy - //SEG146 [71] phi (byte) plot_chargen::ch#2 = (byte) plot_chargen::ch#1 [phi:main::@22->plot_chargen#2] -- register_copy + //SEG143 [64] call plot_chargen + //SEG144 [71] phi from main::@22 to plot_chargen [phi:main::@22->plot_chargen] + //SEG145 [71] phi (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#1 [phi:main::@22->plot_chargen#0] -- register_copy + //SEG146 [71] phi (byte) plot_chargen::shift#2 = (byte) plot_chargen::shift#1 [phi:main::@22->plot_chargen#1] -- register_copy + //SEG147 [71] phi (byte) plot_chargen::ch#2 = (byte) plot_chargen::ch#1 [phi:main::@22->plot_chargen#2] -- register_copy jsr plot_chargen - //SEG147 main::@12 + //SEG148 main::@12 b12: - //SEG148 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 + //SEG149 [65] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 inc ch - //SEG149 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG150 [66] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #$40 bne b10 - //SEG150 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3] - //SEG151 [22] phi (byte) main::cur_pos#24 = (byte) main::cur_pos#12 [phi:main::@12->main::@3#0] -- register_copy + //SEG151 [22] phi from main::@12 to main::@3 [phi:main::@12->main::@3] + //SEG152 [22] phi (byte) main::cur_pos#24 = (byte) main::cur_pos#12 [phi:main::@12->main::@3#0] -- register_copy jmp b3 - //SEG152 [67] phi from main::@33 to main::@44 [phi:main::@33->main::@44] - //SEG153 main::@44 - //SEG154 [42] phi from main::@44 to main::@7 [phi:main::@44->main::@7] - //SEG155 [42] phi (byte) main::cur_pos#12 = (byte) main::cur_pos#18 [phi:main::@44->main::@7#0] -- register_copy - //SEG156 [68] phi from main::@32 to main::@43 [phi:main::@32->main::@43] - //SEG157 main::@43 - //SEG158 [37] phi from main::@43 to main::@6 [phi:main::@43->main::@6] - //SEG159 [37] phi (byte) main::cur_pos#18 = (byte) main::cur_pos#20 [phi:main::@43->main::@6#0] -- register_copy - //SEG160 [69] phi from main::@31 to main::@42 [phi:main::@31->main::@42] - //SEG161 main::@42 - //SEG162 [32] phi from main::@42 to main::@5 [phi:main::@42->main::@5] - //SEG163 [32] phi (byte) main::cur_pos#20 = (byte) main::cur_pos#22 [phi:main::@42->main::@5#0] -- register_copy - //SEG164 [70] phi from main::@30 to main::@41 [phi:main::@30->main::@41] - //SEG165 main::@41 - //SEG166 [27] phi from main::@41 to main::@4 [phi:main::@41->main::@4] - //SEG167 [27] phi (byte) main::cur_pos#22 = (byte) main::cur_pos#24 [phi:main::@41->main::@4#0] -- register_copy + //SEG153 [67] phi from main::@33 to main::@44 [phi:main::@33->main::@44] + //SEG154 main::@44 + //SEG155 [42] phi from main::@44 to main::@7 [phi:main::@44->main::@7] + //SEG156 [42] phi (byte) main::cur_pos#12 = (byte) main::cur_pos#18 [phi:main::@44->main::@7#0] -- register_copy + //SEG157 [68] phi from main::@32 to main::@43 [phi:main::@32->main::@43] + //SEG158 main::@43 + //SEG159 [37] phi from main::@43 to main::@6 [phi:main::@43->main::@6] + //SEG160 [37] phi (byte) main::cur_pos#18 = (byte) main::cur_pos#20 [phi:main::@43->main::@6#0] -- register_copy + //SEG161 [69] phi from main::@31 to main::@42 [phi:main::@31->main::@42] + //SEG162 main::@42 + //SEG163 [32] phi from main::@42 to main::@5 [phi:main::@42->main::@5] + //SEG164 [32] phi (byte) main::cur_pos#20 = (byte) main::cur_pos#22 [phi:main::@42->main::@5#0] -- register_copy + //SEG165 [70] phi from main::@30 to main::@41 [phi:main::@30->main::@41] + //SEG166 main::@41 + //SEG167 [27] phi from main::@41 to main::@4 [phi:main::@41->main::@4] + //SEG168 [27] phi (byte) main::cur_pos#22 = (byte) main::cur_pos#24 [phi:main::@41->main::@4#0] -- register_copy str: .text "f1@" str1: .text "f3@" str2: .text "f5@" str3: .text "f7@" } -//SEG168 plot_chargen +//SEG169 plot_chargen // Render 8x8 char (ch) as pixels on char canvas #pos plot_chargen: { .label _0 = 2 @@ -5640,20 +5644,20 @@ plot_chargen: { .label sc = 9 .label bits = 8 .label y = 7 - //SEG169 asm { sei } + //SEG170 asm { sei } sei - //SEG170 [73] (word~) plot_chargen::$0 ← ((word)) (byte) plot_chargen::ch#2 -- vwuz1=_word_vbuaa + //SEG171 [73] (word~) plot_chargen::$0 ← ((word)) (byte) plot_chargen::ch#2 -- vwuz1=_word_vbuaa sta _0 lda #0 sta _0+1 - //SEG171 [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG172 [74] (word~) plot_chargen::$1 ← (word~) plot_chargen::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG172 [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN#0 + (word~) plot_chargen::$1 -- pbuz1=pbuc1_plus_vwuz1 + //SEG173 [75] (byte*) plot_chargen::chargen#0 ← (const byte*) CHARGEN#0 + (word~) plot_chargen::$1 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargen adc #CHARGEN sta chargen+1 - //SEG173 [76] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1 -- vbuxx_eq_0_then_la1 + //SEG174 [76] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1 -- vbuxx_eq_0_then_la1 cpx #0 beq b1 - //SEG174 plot_chargen::@5 - //SEG175 [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word/signed word/dword/signed dword) 2048 -- pbuz1=pbuz1_plus_vwuc1 + //SEG175 plot_chargen::@5 + //SEG176 [77] (byte*) plot_chargen::chargen#1 ← (byte*) plot_chargen::chargen#0 + (word/signed word/dword/signed dword) 2048 -- pbuz1=pbuz1_plus_vwuc1 clc lda chargen adc #<$800 @@ -5673,23 +5677,23 @@ plot_chargen: { lda chargen+1 adc #>$800 sta chargen+1 - //SEG176 [78] phi from plot_chargen plot_chargen::@5 to plot_chargen::@1 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1] - //SEG177 [78] phi (byte*) plot_chargen::chargen#5 = (byte*) plot_chargen::chargen#0 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1#0] -- register_copy - //SEG178 plot_chargen::@1 + //SEG177 [78] phi from plot_chargen plot_chargen::@5 to plot_chargen::@1 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1] + //SEG178 [78] phi (byte*) plot_chargen::chargen#5 = (byte*) plot_chargen::chargen#0 [phi:plot_chargen/plot_chargen::@5->plot_chargen::@1#0] -- register_copy + //SEG179 plot_chargen::@1 b1: - //SEG179 [79] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG180 [79] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG180 [80] (byte) mul8u::a#1 ← (byte) plot_chargen::pos#2 -- vbuxx=vbuyy + //SEG181 [80] (byte) mul8u::a#1 ← (byte) plot_chargen::pos#2 -- vbuxx=vbuyy tya tax - //SEG181 [81] call mul8u - //SEG182 [103] phi from plot_chargen::@1 to mul8u [phi:plot_chargen::@1->mul8u] + //SEG182 [81] call mul8u + //SEG183 [103] phi from plot_chargen::@1 to mul8u [phi:plot_chargen::@1->mul8u] jsr mul8u - //SEG183 [82] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG184 plot_chargen::@9 - //SEG185 [83] (word~) plot_chargen::$8 ← (word) mul8u::return#2 - //SEG186 [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) plot_chargen::$8 -- pbuz1=pbuc1_plus_vwuz1 + //SEG184 [82] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG185 plot_chargen::@9 + //SEG186 [83] (word~) plot_chargen::$8 ← (word) mul8u::return#2 + //SEG187 [84] (byte*) plot_chargen::sc#0 ← (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) plot_chargen::$8 -- pbuz1=pbuc1_plus_vwuz1 clc lda sc adc #SCREEN+$28+1 sta sc+1 - //SEG187 [85] phi from plot_chargen::@9 to plot_chargen::@2 [phi:plot_chargen::@9->plot_chargen::@2] - //SEG188 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#0 [phi:plot_chargen::@9->plot_chargen::@2#0] -- register_copy - //SEG189 [85] phi (byte) plot_chargen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@9->plot_chargen::@2#1] -- vbuz1=vbuc1 + //SEG188 [85] phi from plot_chargen::@9 to plot_chargen::@2 [phi:plot_chargen::@9->plot_chargen::@2] + //SEG189 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#0 [phi:plot_chargen::@9->plot_chargen::@2#0] -- register_copy + //SEG190 [85] phi (byte) plot_chargen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@9->plot_chargen::@2#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG190 [85] phi from plot_chargen::@7 to plot_chargen::@2 [phi:plot_chargen::@7->plot_chargen::@2] - //SEG191 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#2 [phi:plot_chargen::@7->plot_chargen::@2#0] -- register_copy - //SEG192 [85] phi (byte) plot_chargen::y#2 = (byte) plot_chargen::y#1 [phi:plot_chargen::@7->plot_chargen::@2#1] -- register_copy - //SEG193 plot_chargen::@2 + //SEG191 [85] phi from plot_chargen::@7 to plot_chargen::@2 [phi:plot_chargen::@7->plot_chargen::@2] + //SEG192 [85] phi (byte*) plot_chargen::sc#7 = (byte*) plot_chargen::sc#2 [phi:plot_chargen::@7->plot_chargen::@2#0] -- register_copy + //SEG193 [85] phi (byte) plot_chargen::y#2 = (byte) plot_chargen::y#1 [phi:plot_chargen::@7->plot_chargen::@2#1] -- register_copy + //SEG194 plot_chargen::@2 b2: - //SEG194 [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG195 [86] (byte) plot_chargen::bits#0 ← *((byte*) plot_chargen::chargen#5 + (byte) plot_chargen::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG195 [87] phi from plot_chargen::@2 to plot_chargen::@3 [phi:plot_chargen::@2->plot_chargen::@3] - //SEG196 [87] phi (byte) plot_chargen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@2->plot_chargen::@3#0] -- vbuxx=vbuc1 + //SEG196 [87] phi from plot_chargen::@2 to plot_chargen::@3 [phi:plot_chargen::@2->plot_chargen::@3] + //SEG197 [87] phi (byte) plot_chargen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot_chargen::@2->plot_chargen::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG197 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#7 [phi:plot_chargen::@2->plot_chargen::@3#1] -- register_copy - //SEG198 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#0 [phi:plot_chargen::@2->plot_chargen::@3#2] -- register_copy - //SEG199 [87] phi from plot_chargen::@4 to plot_chargen::@3 [phi:plot_chargen::@4->plot_chargen::@3] - //SEG200 [87] phi (byte) plot_chargen::x#2 = (byte) plot_chargen::x#1 [phi:plot_chargen::@4->plot_chargen::@3#0] -- register_copy - //SEG201 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#1 [phi:plot_chargen::@4->plot_chargen::@3#1] -- register_copy - //SEG202 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#1 [phi:plot_chargen::@4->plot_chargen::@3#2] -- register_copy - //SEG203 plot_chargen::@3 + //SEG198 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#7 [phi:plot_chargen::@2->plot_chargen::@3#1] -- register_copy + //SEG199 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#0 [phi:plot_chargen::@2->plot_chargen::@3#2] -- register_copy + //SEG200 [87] phi from plot_chargen::@4 to plot_chargen::@3 [phi:plot_chargen::@4->plot_chargen::@3] + //SEG201 [87] phi (byte) plot_chargen::x#2 = (byte) plot_chargen::x#1 [phi:plot_chargen::@4->plot_chargen::@3#0] -- register_copy + //SEG202 [87] phi (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#1 [phi:plot_chargen::@4->plot_chargen::@3#1] -- register_copy + //SEG203 [87] phi (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#1 [phi:plot_chargen::@4->plot_chargen::@3#2] -- register_copy + //SEG204 plot_chargen::@3 b3: - //SEG204 [88] (byte~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG205 [88] (byte~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG205 [89] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4 -- vbuaa_eq_0_then_la1 + //SEG206 [89] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG206 [90] phi from plot_chargen::@3 to plot_chargen::@6 [phi:plot_chargen::@3->plot_chargen::@6] - //SEG207 plot_chargen::@6 - //SEG208 [91] phi from plot_chargen::@6 to plot_chargen::@4 [phi:plot_chargen::@6->plot_chargen::@4] - //SEG209 [91] phi (byte) plot_chargen::c#2 = (byte) '*' [phi:plot_chargen::@6->plot_chargen::@4#0] -- vbuaa=vbuc1 + //SEG207 [90] phi from plot_chargen::@3 to plot_chargen::@6 [phi:plot_chargen::@3->plot_chargen::@6] + //SEG208 plot_chargen::@6 + //SEG209 [91] phi from plot_chargen::@6 to plot_chargen::@4 [phi:plot_chargen::@6->plot_chargen::@4] + //SEG210 [91] phi (byte) plot_chargen::c#2 = (byte) '*' [phi:plot_chargen::@6->plot_chargen::@4#0] -- vbuaa=vbuc1 lda #'*' jmp b4 - //SEG210 [91] phi from plot_chargen::@3 to plot_chargen::@4 [phi:plot_chargen::@3->plot_chargen::@4] + //SEG211 [91] phi from plot_chargen::@3 to plot_chargen::@4 [phi:plot_chargen::@3->plot_chargen::@4] b5: - //SEG211 [91] phi (byte) plot_chargen::c#2 = (byte) '.' [phi:plot_chargen::@3->plot_chargen::@4#0] -- vbuaa=vbuc1 + //SEG212 [91] phi (byte) plot_chargen::c#2 = (byte) '.' [phi:plot_chargen::@3->plot_chargen::@4#0] -- vbuaa=vbuc1 lda #'.' - //SEG212 plot_chargen::@4 + //SEG213 plot_chargen::@4 b4: - //SEG213 [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 -- _deref_pbuz1=vbuaa + //SEG214 [92] *((byte*) plot_chargen::sc#3) ← (byte) plot_chargen::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (sc),y - //SEG214 [93] (byte*) plot_chargen::sc#1 ← ++ (byte*) plot_chargen::sc#3 -- pbuz1=_inc_pbuz1 + //SEG215 [93] (byte*) plot_chargen::sc#1 ← ++ (byte*) plot_chargen::sc#3 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG215 [94] (byte) plot_chargen::bits#1 ← (byte) plot_chargen::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG216 [94] (byte) plot_chargen::bits#1 ← (byte) plot_chargen::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG216 [95] (byte) plot_chargen::x#1 ← ++ (byte) plot_chargen::x#2 -- vbuxx=_inc_vbuxx + //SEG217 [95] (byte) plot_chargen::x#1 ← ++ (byte) plot_chargen::x#2 -- vbuxx=_inc_vbuxx inx - //SEG217 [96] if((byte) plot_chargen::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG218 [96] if((byte) plot_chargen::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3 - //SEG218 plot_chargen::@7 - //SEG219 [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 + //SEG219 plot_chargen::@7 + //SEG220 [97] (byte*) plot_chargen::sc#2 ← (byte*) plot_chargen::sc#1 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$20 @@ -5764,59 +5768,58 @@ plot_chargen: { bcc !+ inc sc+1 !: - //SEG220 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1 + //SEG221 [98] (byte) plot_chargen::y#1 ← ++ (byte) plot_chargen::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG221 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG222 [99] if((byte) plot_chargen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plot_chargen::@2 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b2 - //SEG222 plot_chargen::@8 - //SEG223 [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG223 plot_chargen::@8 + //SEG224 [100] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG224 asm { cli } + //SEG225 asm { cli } cli - //SEG225 plot_chargen::@return - //SEG226 [102] return + //SEG226 plot_chargen::@return + //SEG227 [102] return rts } -//SEG227 mul8u -// Simple binary multiplication implementation +//SEG228 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .const b = $a .label mb = $b .label res = 9 .label return = 9 - //SEG228 [104] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG229 [104] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 + //SEG229 [104] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG230 [104] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 lda #b sta mb+1 - //SEG230 [104] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG231 [104] 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 sta res+1 - //SEG231 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG232 mul8u::@1 + //SEG232 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG233 mul8u::@1 b1: - //SEG233 [105] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG234 [105] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG234 mul8u::@return - //SEG235 [106] return + //SEG235 mul8u::@return + //SEG236 [106] return rts - //SEG236 mul8u::@2 + //SEG237 mul8u::@2 b2: - //SEG237 [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG238 [107] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG238 [108] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG239 [108] 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 - //SEG239 mul8u::@7 - //SEG240 [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG240 mul8u::@7 + //SEG241 [109] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5824,110 +5827,110 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG241 [110] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] - //SEG242 [110] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy - //SEG243 mul8u::@4 + //SEG242 [110] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG243 [110] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG244 mul8u::@4 b4: - //SEG244 [111] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG245 [111] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG245 [112] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG246 [112] (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 - //SEG246 [104] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] - //SEG247 [104] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG248 [104] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG249 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG247 [104] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG248 [104] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG249 [104] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG250 [104] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG250 keyboard_key_pressed +//SEG251 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed keyboard_key_pressed: { - //SEG251 [114] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuxx_band_vbuc1 + //SEG252 [114] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuxx_band_vbuc1 txa and #7 tay - //SEG252 [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_ror_3 + //SEG253 [115] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_ror_3 txa lsr lsr lsr - //SEG253 [116] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa + //SEG254 [116] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa tax - //SEG254 [117] call keyboard_matrix_read + //SEG255 [117] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG255 [118] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG256 keyboard_key_pressed::@2 - //SEG257 [119] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG258 [120] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy + //SEG256 [118] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG257 keyboard_key_pressed::@2 + //SEG258 [119] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG259 [120] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy and keyboard_matrix_col_bitmask,y - //SEG259 keyboard_key_pressed::@return - //SEG260 [121] return + //SEG260 keyboard_key_pressed::@return + //SEG261 [121] return rts } -//SEG261 keyboard_matrix_read +//SEG262 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG262 [122] *((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 + //SEG263 [122] *((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 - //SEG263 [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG264 [123] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG264 keyboard_matrix_read::@return - //SEG265 [124] return + //SEG265 keyboard_matrix_read::@return + //SEG266 [124] return rts } -//SEG266 keyboard_get_keycode +//SEG267 keyboard_get_keycode // Get the keycode corresponding to a specific screen code character // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. // If there is no non-shifted key representing the char $3f is returned (representing RUN/STOP) . keyboard_get_keycode: { - //SEG267 [125] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG268 [125] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuxx lda keyboard_char_keycodes,x - //SEG268 keyboard_get_keycode::@return - //SEG269 [126] return + //SEG269 keyboard_get_keycode::@return + //SEG270 [126] return rts } -//SEG270 print_str_at +//SEG271 print_str_at // Print a string at a specific screen position print_str_at: { .label at = 9 .label str = 2 - //SEG271 [128] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] - //SEG272 [128] phi (byte*) print_str_at::at#5 = (byte*) print_str_at::at#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG273 [128] phi (byte*) print_str_at::str#5 = (byte*) print_str_at::str#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy - //SEG274 print_str_at::@1 + //SEG272 [128] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG273 [128] phi (byte*) print_str_at::at#5 = (byte*) print_str_at::at#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG274 [128] phi (byte*) print_str_at::str#5 = (byte*) print_str_at::str#7 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG275 print_str_at::@1 b1: - //SEG275 [129] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG276 [129] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG276 print_str_at::@return - //SEG277 [130] return + //SEG277 print_str_at::@return + //SEG278 [130] return rts - //SEG278 print_str_at::@2 + //SEG279 print_str_at::@2 b2: - //SEG279 [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) -- _deref_pbuz1=_deref_pbuz2 + //SEG280 [131] *((byte*) print_str_at::at#5) ← *((byte*) print_str_at::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (at),y - //SEG280 [132] (byte*) print_str_at::at#4 ← ++ (byte*) print_str_at::at#5 -- pbuz1=_inc_pbuz1 + //SEG281 [132] (byte*) print_str_at::at#4 ← ++ (byte*) print_str_at::at#5 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG281 [133] (byte*) print_str_at::str#4 ← ++ (byte*) print_str_at::str#5 -- pbuz1=_inc_pbuz1 + //SEG282 [133] (byte*) print_str_at::str#4 ← ++ (byte*) print_str_at::str#5 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.kc.asm b/src/test/ref/examples/fastmultiply/fastmultiply8.asm similarity index 89% rename from src/test/ref/examples/fastmultiply/fastmultiply8.kc.asm rename to src/test/ref/examples/fastmultiply/fastmultiply8.asm index 6664bf078..d3e4982d3 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.kc.asm +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.asm @@ -1,3 +1,10 @@ +// Seriously fast multiply 8-bit version (8bit*8bit=8bit) +// Multiplies two signed 8-bit numbers and results in an 8-bit number +// C=A*B, A in [-64;64], B in [-96;95], C in [-96;95] - 64 acts a 1 (X*64=X) +// Uses the formula a*b = (a+b)^2/4 - (a-b)^2/4 +// See the following for information about the method +// - http://codebase64.org/doku.php?id=base:seriously_fast_multiplication +// - http://codebase64.org/doku.php?id=magazines:chacking16 .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.kc.cfg b/src/test/ref/examples/fastmultiply/fastmultiply8.cfg similarity index 100% rename from src/test/ref/examples/fastmultiply/fastmultiply8.kc.cfg rename to src/test/ref/examples/fastmultiply/fastmultiply8.cfg diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.kc.log b/src/test/ref/examples/fastmultiply/fastmultiply8.log similarity index 84% rename from src/test/ref/examples/fastmultiply/fastmultiply8.kc.log rename to src/test/ref/examples/fastmultiply/fastmultiply8.log index 9e1b84e2c..407866480 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.kc.log +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.log @@ -1303,34 +1303,42 @@ Allocated zp ZP_BYTE:30 [ print_byte_at::$2 ] Allocated zp ZP_BYTE:31 [ fmul8::return#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Seriously fast multiply 8-bit version (8bit*8bit=8bit) +// Multiplies two signed 8-bit numbers and results in an 8-bit number +// C=A*B, A in [-64;64], B in [-96;95], C in [-96;95] - 64 acts a 1 (X*64=X) +// Uses the formula a*b = (a+b)^2/4 - (a-b)^2/4 +// See the following for information about the method +// - http://codebase64.org/doku.php?id=base:seriously_fast_multiplication +// - http://codebase64.org/doku.php?id=magazines:chacking16 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_line_cursor = $400 .label ap = $fd .label bp = $fe .label cp = $ff .label mulf_sqr1 = $2000 .label mulf_sqr2 = $2200 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b22 -//SEG3 @22 +//SEG4 @22 b22: -//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 [3] call main -//SEG7 [5] phi from @22 to main [phi:@22->main] +//SEG5 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) } } }} +//SEG6 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) } } }} +//SEG7 [3] call main +//SEG8 [5] phi from @22 to main [phi:@22->main] main_from_b22: jsr main -//SEG8 [4] phi from @22 to @end [phi:@22->@end] +//SEG9 [4] phi from @22 to @end [phi:@22->@end] bend_from_b22: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { .label at = 3 .label k = 2 @@ -1342,47 +1350,47 @@ main: { .label at_line = 5 .label at_6 = 8 .label at_12 = 8 - //SEG11 [6] call init_screen - //SEG12 [63] phi from main to init_screen [phi:main->init_screen] + //SEG12 [6] call init_screen + //SEG13 [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen - //SEG13 [7] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG14 [7] phi (byte*) main::at#4 = ((byte*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG15 [7] phi (byte*) main::at#4 = ((byte*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400+4 sta at lda #>$400+4 sta at+1 - //SEG15 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG16 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta k jmp b1 - //SEG16 [7] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG17 [7] phi from main::@8 to main::@1 [phi:main::@8->main::@1] b1_from_b8: - //SEG17 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@8->main::@1#0] -- register_copy - //SEG18 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG18 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@8->main::@1#0] -- register_copy + //SEG19 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@8->main::@1#1] -- register_copy jmp b1 - //SEG19 main::@1 + //SEG20 main::@1 b1: - //SEG20 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG21 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy k lda vals,y sta print_sbyte_at.b - //SEG21 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 + //SEG22 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 lda at sta print_sbyte_at.at lda at+1 sta print_sbyte_at.at+1 - //SEG22 [10] call print_sbyte_at - //SEG23 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] + //SEG23 [10] call print_sbyte_at + //SEG24 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG24 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy - //SEG25 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy + //SEG25 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy + //SEG26 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b8 - //SEG26 main::@8 + //SEG27 main::@8 b8: - //SEG27 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG28 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 lda at clc adc #4 @@ -1390,31 +1398,31 @@ main: { bcc !+ inc at+1 !: - //SEG28 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 + //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 inc k - //SEG29 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG30 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda k cmp #9 bne b1_from_b8 - //SEG30 [14] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG31 [14] phi from main::@8 to main::@2 [phi:main::@8->main::@2] b2_from_b8: - //SEG31 [14] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@2#0] -- vbuz1=vbuc1 + //SEG32 [14] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG32 [14] phi (byte*) main::at_line#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@8->main::@2#1] -- pbuz1=pbuc1 + //SEG33 [14] phi (byte*) main::at_line#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@8->main::@2#1] -- pbuz1=pbuc1 lda #<$400 sta at_line lda #>$400 sta at_line+1 jmp b2 - //SEG33 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG34 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG34 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@2#0] -- register_copy - //SEG35 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@5->main::@2#1] -- register_copy + //SEG35 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@2#0] -- register_copy + //SEG36 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@5->main::@2#1] -- register_copy jmp b2 - //SEG36 main::@2 + //SEG37 main::@2 b2: - //SEG37 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG38 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda at_2 clc adc #$28 @@ -1422,41 +1430,41 @@ main: { bcc !+ inc at_2+1 !: - //SEG38 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG39 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda vals,y sta print_sbyte_at.b - //SEG39 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG40 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at_2 sta print_sbyte_at.at lda at_2+1 sta print_sbyte_at.at+1 - //SEG40 [18] call print_sbyte_at - //SEG41 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] + //SEG41 [18] call print_sbyte_at + //SEG42 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] print_sbyte_at_from_b2: - //SEG42 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy - //SEG43 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy + //SEG43 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy + //SEG44 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG44 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG45 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at_2 sta at_12 lda at_2+1 sta at_12+1 - //SEG45 [20] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG46 [20] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG46 [20] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + //SEG47 [20] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG47 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@2->main::@3#1] -- register_copy + //SEG48 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@2->main::@3#1] -- register_copy jmp b3 - //SEG48 [20] phi from main::@11 to main::@3 [phi:main::@11->main::@3] + //SEG49 [20] phi from main::@11 to main::@3 [phi:main::@11->main::@3] b3_from_b11: - //SEG49 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@11->main::@3#0] -- register_copy - //SEG50 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@11->main::@3#1] -- register_copy + //SEG50 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@11->main::@3#0] -- register_copy + //SEG51 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@11->main::@3#1] -- register_copy jmp b3 - //SEG51 main::@3 + //SEG52 main::@3 b3: - //SEG52 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG53 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 lda at_3 clc adc #4 @@ -1464,95 +1472,95 @@ main: { bcc !+ inc at_3+1 !: - //SEG53 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG54 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda vals,y sta fmul8.a - //SEG54 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG55 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy j lda vals,y sta fmul8.b - //SEG55 [24] call fmul8 + //SEG56 [24] call fmul8 jsr fmul8 - //SEG56 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 -- vbsz1=vbsz2 + //SEG57 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 -- vbsz1=vbsz2 lda fmul8.return_1 sta fmul8.return jmp b10 - //SEG57 main::@10 + //SEG58 main::@10 b10: - //SEG58 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 -- vbsz1=vbsz2 + //SEG59 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 -- vbsz1=vbsz2 lda fmul8.return sta r - //SEG59 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsz2 + //SEG60 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsz2 lda r sta print_sbyte_at.b - //SEG60 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 + //SEG61 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 lda at_3 sta print_sbyte_at.at lda at_3+1 sta print_sbyte_at.at+1 - //SEG61 [29] call print_sbyte_at - //SEG62 [35] phi from main::@10 to print_sbyte_at [phi:main::@10->print_sbyte_at] + //SEG62 [29] call print_sbyte_at + //SEG63 [35] phi from main::@10 to print_sbyte_at [phi:main::@10->print_sbyte_at] print_sbyte_at_from_b10: - //SEG63 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@10->print_sbyte_at#0] -- register_copy - //SEG64 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@10->print_sbyte_at#1] -- register_copy + //SEG64 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@10->print_sbyte_at#0] -- register_copy + //SEG65 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b11 - //SEG65 main::@11 + //SEG66 main::@11 b11: - //SEG66 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG67 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG67 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG68 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #9 bne b3_from_b11 jmp b5 - //SEG68 main::@5 + //SEG69 main::@5 b5: - //SEG69 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG70 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG70 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG71 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #9 bne b2_from_b5 jmp breturn - //SEG71 main::@return + //SEG72 main::@return breturn: - //SEG72 [34] return + //SEG73 [34] return rts } -//SEG73 print_sbyte_at +//SEG74 print_sbyte_at // Print a signed byte as hex at a specific screen position print_sbyte_at: { .label b = $d .label at = $b - //SEG74 [36] if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + //SEG75 [36] if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 jmp b3 - //SEG75 print_sbyte_at::@3 + //SEG76 print_sbyte_at::@3 b3: - //SEG76 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 -- pbuz1=pbuz2 + //SEG77 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG77 [38] call print_char_at - //SEG78 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG78 [38] call print_char_at + //SEG79 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from_b3: - //SEG79 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG80 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG80 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG81 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG81 [39] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] + //SEG82 [39] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] b2_from_b3: b2_from_b5: - //SEG82 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy + //SEG83 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy jmp b2 - //SEG83 print_sbyte_at::@2 + //SEG84 print_sbyte_at::@2 b2: - //SEG84 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 + //SEG85 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 lda at clc adc #1 @@ -1560,32 +1568,32 @@ print_sbyte_at: { lda at+1 adc #0 sta print_byte_at.at+1 - //SEG85 [41] call print_byte_at + //SEG86 [41] call print_byte_at jsr print_byte_at jmp breturn - //SEG86 print_sbyte_at::@return + //SEG87 print_sbyte_at::@return breturn: - //SEG87 [42] return + //SEG88 [42] return rts - //SEG88 print_sbyte_at::@1 + //SEG89 print_sbyte_at::@1 b1: - //SEG89 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 -- pbuz1=pbuz2 + //SEG90 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG90 [44] call print_char_at - //SEG91 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG91 [44] call print_char_at + //SEG92 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from_b1: - //SEG92 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG93 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG93 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG94 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at jmp b5 - //SEG94 print_sbyte_at::@5 + //SEG95 print_sbyte_at::@5 b5: - //SEG95 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 + //SEG96 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -1593,57 +1601,57 @@ print_sbyte_at: { sta b jmp b2_from_b5 } -//SEG96 print_char_at +//SEG97 print_char_at // Print a single char print_char_at: { .label at = $f .label ch = $e - //SEG97 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG98 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y jmp breturn - //SEG98 print_char_at::@return + //SEG99 print_char_at::@return breturn: - //SEG99 [48] return + //SEG100 [48] return rts } -//SEG100 print_byte_at +//SEG101 print_byte_at // Print a byte as HEX at a specific position print_byte_at: { .label _0 = $1d .label _2 = $1e .label at = $1b - //SEG101 [49] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG102 [49] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda print_sbyte_at.b lsr lsr lsr lsr sta _0 - //SEG102 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG103 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char_at.ch - //SEG103 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 + //SEG104 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG104 [52] call print_char_at - //SEG105 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG105 [52] call print_char_at + //SEG106 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] print_char_at_from_print_byte_at: - //SEG106 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG107 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG107 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG108 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at jmp b1 - //SEG108 print_byte_at::@1 + //SEG109 print_byte_at::@1 b1: - //SEG109 [53] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG110 [53] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and print_sbyte_at.b sta _2 - //SEG110 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 + //SEG111 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 lda at clc adc #1 @@ -1651,35 +1659,35 @@ print_byte_at: { lda at+1 adc #0 sta print_char_at.at+1 - //SEG111 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG112 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char_at.ch - //SEG112 [56] call print_char_at - //SEG113 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG113 [56] call print_char_at + //SEG114 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from_b1: - //SEG114 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG115 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG115 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG116 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at jmp breturn - //SEG116 print_byte_at::@return + //SEG117 print_byte_at::@return breturn: - //SEG117 [57] return + //SEG118 [57] return rts } -//SEG118 fmul8 +//SEG119 fmul8 fmul8: { .label a = $17 .label b = $18 .label return = $19 .label return_1 = $1f - //SEG119 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsz1 + //SEG120 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsz1 lda a sta ap - //SEG120 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsz1 + //SEG121 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsz1 lda b sta bp - //SEG121 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } + //SEG122 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } lda ap sta A1+1 eor #$ff @@ -1691,82 +1699,82 @@ fmul8: { A2: sbc mulf_sqr2,x sta cp - //SEG122 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsz1=_deref_pbsc1 + //SEG123 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsz1=_deref_pbsc1 lda cp sta return_1 jmp breturn - //SEG123 fmul8::@return + //SEG124 fmul8::@return breturn: - //SEG124 [62] return + //SEG125 [62] return rts } -//SEG125 init_screen +//SEG126 init_screen init_screen: { .const WHITE = 1 .label l = $11 .label COLS = $12 .label m = $14 - //SEG126 [64] call print_cls - //SEG127 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] + //SEG127 [64] call print_cls + //SEG128 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] print_cls_from_init_screen: jsr print_cls - //SEG128 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG129 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG129 [65] phi (byte) init_screen::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen->init_screen::@1#0] -- vbuz1=vbuc1 + //SEG130 [65] phi (byte) init_screen::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen->init_screen::@1#0] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG130 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG131 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG131 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG132 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG132 init_screen::@1 + //SEG133 init_screen::@1 b1: - //SEG133 [66] *(((byte*))(word/dword/signed dword) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG134 [66] *(((byte*))(word/dword/signed dword) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy l lda #WHITE sta $d800,y - //SEG134 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuz1=_inc_vbuz1 + //SEG135 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG135 [68] if((byte) init_screen::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init_screen::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG136 [68] if((byte) init_screen::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init_screen::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #$28 bne b1_from_b1 - //SEG136 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG137 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG137 [69] phi (byte) init_screen::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuz1=vbuc1 + //SEG138 [69] phi (byte) init_screen::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuz1=vbuc1 lda #0 sta m - //SEG138 [69] phi (byte*) init_screen::COLS#3 = ((byte*))(word/dword/signed dword) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 + //SEG139 [69] phi (byte*) init_screen::COLS#3 = ((byte*))(word/dword/signed dword) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 lda #<$d800 sta COLS lda #>$d800 sta COLS+1 jmp b2 - //SEG139 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG140 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG140 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG141 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy + //SEG141 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG142 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy jmp b2 - //SEG142 init_screen::@2 + //SEG143 init_screen::@2 b2: - //SEG143 [70] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG144 [70] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #0 sta (COLS),y - //SEG144 [71] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG145 [71] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #1 sta (COLS),y - //SEG145 [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG146 [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #2 sta (COLS),y - //SEG146 [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG147 [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #3 sta (COLS),y - //SEG147 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG148 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda COLS clc adc #$28 @@ -1774,46 +1782,46 @@ init_screen: { bcc !+ inc COLS+1 !: - //SEG148 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuz1=_inc_vbuz1 + //SEG149 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuz1=_inc_vbuz1 inc m - //SEG149 [76] if((byte) init_screen::m#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto init_screen::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG150 [76] if((byte) init_screen::m#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto init_screen::@2 -- vbuz1_neq_vbuc1_then_la1 lda m cmp #$19 bne b2_from_b2 jmp breturn - //SEG150 init_screen::@return + //SEG151 init_screen::@return breturn: - //SEG151 [77] return + //SEG152 [77] return rts } -//SEG152 print_cls +//SEG153 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $15 - //SEG153 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG154 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 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] + //SEG156 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG156 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG157 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG157 print_cls::@1 + //SEG158 print_cls::@1 b1: - //SEG158 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG159 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG159 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG160 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG161 [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_line_cursor+$3e8 bne b1_from_b1 @@ -1821,9 +1829,9 @@ print_cls: { 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 [3] call main -//SEG7 [5] phi from @22 to main [phi:@22->main] +//SEG5 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) } } }} +//SEG6 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) } } }} +//SEG7 [3] call main +//SEG8 [5] phi from @22 to main [phi:@22->main] main_from_b22: jsr main -//SEG8 [4] phi from @22 to @end [phi:@22->@end] +//SEG9 [4] phi from @22 to @end [phi:@22->@end] bend_from_b22: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { .label at = 2 .label at_3 = 5 @@ -2015,45 +2031,45 @@ main: { .label at_line = 2 .label at_6 = 5 .label at_12 = 5 - //SEG11 [6] call init_screen - //SEG12 [63] phi from main to init_screen [phi:main->init_screen] + //SEG12 [6] call init_screen + //SEG13 [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen - //SEG13 [7] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG14 [7] phi (byte*) main::at#4 = ((byte*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG15 [7] phi (byte*) main::at#4 = ((byte*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400+4 sta at lda #>$400+4 sta at+1 - //SEG15 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG16 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG16 [7] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG17 [7] phi from main::@8 to main::@1 [phi:main::@8->main::@1] b1_from_b8: - //SEG17 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@8->main::@1#0] -- register_copy - //SEG18 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG18 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@8->main::@1#0] -- register_copy + //SEG19 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@8->main::@1#1] -- register_copy jmp b1 - //SEG19 main::@1 + //SEG20 main::@1 b1: - //SEG20 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx + //SEG21 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx lda vals,x sta print_sbyte_at.b - //SEG21 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 + //SEG22 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 lda at sta print_sbyte_at.at lda at+1 sta print_sbyte_at.at+1 - //SEG22 [10] call print_sbyte_at - //SEG23 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] + //SEG23 [10] call print_sbyte_at + //SEG24 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG24 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy - //SEG25 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy + //SEG25 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy + //SEG26 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b8 - //SEG26 main::@8 + //SEG27 main::@8 b8: - //SEG27 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG28 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 lda at clc adc #4 @@ -2061,30 +2077,30 @@ main: { bcc !+ inc at+1 !: - //SEG28 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx + //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx inx - //SEG29 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG30 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #9 bne b1_from_b8 - //SEG30 [14] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG31 [14] phi from main::@8 to main::@2 [phi:main::@8->main::@2] b2_from_b8: - //SEG31 [14] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@2#0] -- vbuz1=vbuc1 + //SEG32 [14] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG32 [14] phi (byte*) main::at_line#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@8->main::@2#1] -- pbuz1=pbuc1 + //SEG33 [14] phi (byte*) main::at_line#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@8->main::@2#1] -- pbuz1=pbuc1 lda #<$400 sta at_line lda #>$400 sta at_line+1 jmp b2 - //SEG33 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG34 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG34 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@2#0] -- register_copy - //SEG35 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@5->main::@2#1] -- register_copy + //SEG35 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@2#0] -- register_copy + //SEG36 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@5->main::@2#1] -- register_copy jmp b2 - //SEG36 main::@2 + //SEG37 main::@2 b2: - //SEG37 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG38 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda at clc adc #$28 @@ -2092,41 +2108,41 @@ main: { bcc !+ inc at+1 !: - //SEG38 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG39 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda vals,y sta print_sbyte_at.b - //SEG39 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG40 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at sta print_sbyte_at.at lda at+1 sta print_sbyte_at.at+1 - //SEG40 [18] call print_sbyte_at - //SEG41 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] + //SEG41 [18] call print_sbyte_at + //SEG42 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] print_sbyte_at_from_b2: - //SEG42 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy - //SEG43 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy + //SEG43 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy + //SEG44 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG44 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG45 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at sta at_12 lda at+1 sta at_12+1 - //SEG45 [20] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG46 [20] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG46 [20] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + //SEG47 [20] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG47 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@2->main::@3#1] -- register_copy + //SEG48 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@2->main::@3#1] -- register_copy jmp b3 - //SEG48 [20] phi from main::@11 to main::@3 [phi:main::@11->main::@3] + //SEG49 [20] phi from main::@11 to main::@3 [phi:main::@11->main::@3] b3_from_b11: - //SEG49 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@11->main::@3#0] -- register_copy - //SEG50 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@11->main::@3#1] -- register_copy + //SEG50 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@11->main::@3#0] -- register_copy + //SEG51 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@11->main::@3#1] -- register_copy jmp b3 - //SEG51 main::@3 + //SEG52 main::@3 b3: - //SEG52 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG53 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 lda at_3 clc adc #4 @@ -2134,110 +2150,110 @@ main: { bcc !+ inc at_3+1 !: - //SEG53 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1 + //SEG54 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1 ldy i lda vals,y - //SEG54 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsyy=pbsc1_derefidx_vbuz1 + //SEG55 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsyy=pbsc1_derefidx_vbuz1 ldx j ldy vals,x - //SEG55 [24] call fmul8 + //SEG56 [24] call fmul8 jsr fmul8 - //SEG56 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 + //SEG57 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 jmp b10 - //SEG57 main::@10 + //SEG58 main::@10 b10: - //SEG58 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 - //SEG59 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsaa + //SEG59 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 + //SEG60 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsaa sta print_sbyte_at.b - //SEG60 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 + //SEG61 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 lda at_3 sta print_sbyte_at.at lda at_3+1 sta print_sbyte_at.at+1 - //SEG61 [29] call print_sbyte_at - //SEG62 [35] phi from main::@10 to print_sbyte_at [phi:main::@10->print_sbyte_at] + //SEG62 [29] call print_sbyte_at + //SEG63 [35] phi from main::@10 to print_sbyte_at [phi:main::@10->print_sbyte_at] print_sbyte_at_from_b10: - //SEG63 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@10->print_sbyte_at#0] -- register_copy - //SEG64 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@10->print_sbyte_at#1] -- register_copy + //SEG64 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@10->print_sbyte_at#0] -- register_copy + //SEG65 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b11 - //SEG65 main::@11 + //SEG66 main::@11 b11: - //SEG66 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG67 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG67 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG68 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #9 bne b3_from_b11 jmp b5 - //SEG68 main::@5 + //SEG69 main::@5 b5: - //SEG69 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG70 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG70 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG71 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #9 bne b2_from_b5 jmp breturn - //SEG71 main::@return + //SEG72 main::@return breturn: - //SEG72 [34] return + //SEG73 [34] return rts } -//SEG73 print_sbyte_at +//SEG74 print_sbyte_at // Print a signed byte as hex at a specific screen position print_sbyte_at: { .label b = $a .label at = 8 - //SEG74 [36] if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + //SEG75 [36] if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 jmp b3 - //SEG75 print_sbyte_at::@3 + //SEG76 print_sbyte_at::@3 b3: - //SEG76 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 - //SEG77 [38] call print_char_at - //SEG78 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG77 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 + //SEG78 [38] call print_char_at + //SEG79 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from_b3: - //SEG79 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG80 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG80 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG81 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG81 [39] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] + //SEG82 [39] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] b2_from_b3: b2_from_b5: - //SEG82 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy + //SEG83 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy jmp b2 - //SEG83 print_sbyte_at::@2 + //SEG84 print_sbyte_at::@2 b2: - //SEG84 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG85 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc print_byte_at.at bne !+ inc print_byte_at.at+1 !: - //SEG85 [41] call print_byte_at + //SEG86 [41] call print_byte_at jsr print_byte_at jmp breturn - //SEG86 print_sbyte_at::@return + //SEG87 print_sbyte_at::@return breturn: - //SEG87 [42] return + //SEG88 [42] return rts - //SEG88 print_sbyte_at::@1 + //SEG89 print_sbyte_at::@1 b1: - //SEG89 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 - //SEG90 [44] call print_char_at - //SEG91 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG90 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 + //SEG91 [44] call print_char_at + //SEG92 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from_b1: - //SEG92 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG93 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG93 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG94 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at jmp b5 - //SEG94 print_sbyte_at::@5 + //SEG95 print_sbyte_at::@5 b5: - //SEG95 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 + //SEG96 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -2245,77 +2261,77 @@ print_sbyte_at: { sta b jmp b2_from_b5 } -//SEG96 print_char_at +//SEG97 print_char_at // Print a single char print_char_at: { .label at = 8 .label ch = $b - //SEG97 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG98 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y jmp breturn - //SEG98 print_char_at::@return + //SEG99 print_char_at::@return breturn: - //SEG99 [48] return + //SEG100 [48] return rts } -//SEG100 print_byte_at +//SEG101 print_byte_at // Print a byte as HEX at a specific position print_byte_at: { .label at = 8 - //SEG101 [49] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG102 [49] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda print_sbyte_at.b lsr lsr lsr lsr - //SEG102 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG103 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda print_hextab,y sta print_char_at.ch - //SEG103 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - //SEG104 [52] call print_char_at - //SEG105 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG104 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + //SEG105 [52] call print_char_at + //SEG106 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] print_char_at_from_print_byte_at: - //SEG106 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG107 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG107 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG108 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at jmp b1 - //SEG108 print_byte_at::@1 + //SEG109 print_byte_at::@1 b1: - //SEG109 [53] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuz1_band_vbuc1 + //SEG110 [53] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuz1_band_vbuc1 lda #$f and print_sbyte_at.b tay - //SEG110 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG111 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc print_char_at.at bne !+ inc print_char_at.at+1 !: - //SEG111 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG112 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy lda print_hextab,y sta print_char_at.ch - //SEG112 [56] call print_char_at - //SEG113 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG113 [56] call print_char_at + //SEG114 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from_b1: - //SEG114 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG115 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG115 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG116 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at jmp breturn - //SEG116 print_byte_at::@return + //SEG117 print_byte_at::@return breturn: - //SEG117 [57] return + //SEG118 [57] return rts } -//SEG118 fmul8 +//SEG119 fmul8 fmul8: { - //SEG119 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa + //SEG120 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa sta ap - //SEG120 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsyy + //SEG121 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsyy tya sta bp - //SEG121 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } + //SEG122 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } lda ap sta A1+1 eor #$ff @@ -2327,75 +2343,75 @@ fmul8: { A2: sbc mulf_sqr2,x sta cp - //SEG122 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsaa=_deref_pbsc1 + //SEG123 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsaa=_deref_pbsc1 lda cp jmp breturn - //SEG123 fmul8::@return + //SEG124 fmul8::@return breturn: - //SEG124 [62] return + //SEG125 [62] return rts } -//SEG125 init_screen +//SEG126 init_screen init_screen: { .const WHITE = 1 .label COLS = 2 - //SEG126 [64] call print_cls - //SEG127 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] + //SEG127 [64] call print_cls + //SEG128 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] print_cls_from_init_screen: jsr print_cls - //SEG128 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG129 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG129 [65] phi (byte) init_screen::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen->init_screen::@1#0] -- vbuxx=vbuc1 + //SEG130 [65] phi (byte) init_screen::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen->init_screen::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG130 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG131 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG131 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG132 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG132 init_screen::@1 + //SEG133 init_screen::@1 b1: - //SEG133 [66] *(((byte*))(word/dword/signed dword) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG134 [66] *(((byte*))(word/dword/signed dword) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #WHITE sta $d800,x - //SEG134 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuxx=_inc_vbuxx + //SEG135 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuxx=_inc_vbuxx inx - //SEG135 [68] if((byte) init_screen::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init_screen::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG136 [68] if((byte) init_screen::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init_screen::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b1 - //SEG136 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG137 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG137 [69] phi (byte) init_screen::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuxx=vbuc1 + //SEG138 [69] phi (byte) init_screen::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG138 [69] phi (byte*) init_screen::COLS#3 = ((byte*))(word/dword/signed dword) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 + //SEG139 [69] phi (byte*) init_screen::COLS#3 = ((byte*))(word/dword/signed dword) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 lda #<$d800 sta COLS lda #>$d800 sta COLS+1 jmp b2 - //SEG139 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG140 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG140 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG141 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy + //SEG141 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG142 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy jmp b2 - //SEG142 init_screen::@2 + //SEG143 init_screen::@2 b2: - //SEG143 [70] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG144 [70] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #0 sta (COLS),y - //SEG144 [71] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG145 [71] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #1 sta (COLS),y - //SEG145 [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG146 [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #2 sta (COLS),y - //SEG146 [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG147 [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #3 sta (COLS),y - //SEG147 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG148 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda COLS clc adc #$28 @@ -2403,45 +2419,45 @@ init_screen: { bcc !+ inc COLS+1 !: - //SEG148 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuxx=_inc_vbuxx + //SEG149 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuxx=_inc_vbuxx inx - //SEG149 [76] if((byte) init_screen::m#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto init_screen::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG150 [76] if((byte) init_screen::m#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto init_screen::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$19 bne b2_from_b2 jmp breturn - //SEG150 init_screen::@return + //SEG151 init_screen::@return breturn: - //SEG151 [77] return + //SEG152 [77] return rts } -//SEG152 print_cls +//SEG153 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG153 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG154 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 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] + //SEG156 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG156 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG157 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG157 print_cls::@1 + //SEG158 print_cls::@1 b1: - //SEG158 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG159 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG159 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG160 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG161 [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_line_cursor+$3e8 bne b1_from_b1 @@ -2449,9 +2465,9 @@ print_cls: { 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 [3] call main -//SEG7 [5] phi from @22 to main [phi:@22->main] -//SEG8 [4] phi from @22 to @end [phi:@22->@end] -//SEG9 @end -//SEG10 main +//SEG3 @begin +//SEG4 @22 +//SEG5 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) } } }} +//SEG6 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) } } }} +//SEG7 [3] call main +//SEG8 [5] phi from @22 to main [phi:@22->main] +//SEG9 [4] phi from @22 to @end [phi:@22->@end] +//SEG10 @end +//SEG11 main main: { .label at = 2 .label at_3 = 5 @@ -2735,37 +2759,37 @@ main: { .label at_line = 2 .label at_6 = 5 .label at_12 = 5 - //SEG11 [6] call init_screen - //SEG12 [63] phi from main to init_screen [phi:main->init_screen] + //SEG12 [6] call init_screen + //SEG13 [63] phi from main to init_screen [phi:main->init_screen] jsr init_screen - //SEG13 [7] phi from main to main::@1 [phi:main->main::@1] - //SEG14 [7] phi (byte*) main::at#4 = ((byte*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [7] phi (byte*) main::at#4 = ((byte*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400+4 sta at lda #>$400+4 sta at+1 - //SEG15 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG16 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG16 [7] phi from main::@8 to main::@1 [phi:main::@8->main::@1] - //SEG17 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@8->main::@1#0] -- register_copy - //SEG18 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@8->main::@1#1] -- register_copy - //SEG19 main::@1 + //SEG17 [7] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG18 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@8->main::@1#0] -- register_copy + //SEG19 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG20 main::@1 b1: - //SEG20 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx + //SEG21 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx lda vals,x sta print_sbyte_at.b - //SEG21 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 + //SEG22 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 lda at sta print_sbyte_at.at lda at+1 sta print_sbyte_at.at+1 - //SEG22 [10] call print_sbyte_at - //SEG23 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] - //SEG24 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy - //SEG25 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy + //SEG23 [10] call print_sbyte_at + //SEG24 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] + //SEG25 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy + //SEG26 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG26 main::@8 - //SEG27 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG27 main::@8 + //SEG28 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 lda at clc adc #4 @@ -2773,26 +2797,26 @@ main: { bcc !+ inc at+1 !: - //SEG28 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx + //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx inx - //SEG29 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG30 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #9 bne b1 - //SEG30 [14] phi from main::@8 to main::@2 [phi:main::@8->main::@2] - //SEG31 [14] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@2#0] -- vbuz1=vbuc1 + //SEG31 [14] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG32 [14] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG32 [14] phi (byte*) main::at_line#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@8->main::@2#1] -- pbuz1=pbuc1 + //SEG33 [14] phi (byte*) main::at_line#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@8->main::@2#1] -- pbuz1=pbuc1 lda #<$400 sta at_line lda #>$400 sta at_line+1 - //SEG33 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] - //SEG34 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@2#0] -- register_copy - //SEG35 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@5->main::@2#1] -- register_copy - //SEG36 main::@2 + //SEG34 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG35 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@2#0] -- register_copy + //SEG36 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@5->main::@2#1] -- register_copy + //SEG37 main::@2 b2: - //SEG37 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG38 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda at clc adc #$28 @@ -2800,36 +2824,36 @@ main: { bcc !+ inc at+1 !: - //SEG38 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG39 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda vals,y sta print_sbyte_at.b - //SEG39 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG40 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at sta print_sbyte_at.at lda at+1 sta print_sbyte_at.at+1 - //SEG40 [18] call print_sbyte_at - //SEG41 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] - //SEG42 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy - //SEG43 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy + //SEG41 [18] call print_sbyte_at + //SEG42 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] + //SEG43 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy + //SEG44 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG44 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG45 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at sta at_12 lda at+1 sta at_12+1 - //SEG45 [20] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG46 [20] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + //SEG46 [20] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG47 [20] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG47 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@2->main::@3#1] -- register_copy - //SEG48 [20] phi from main::@11 to main::@3 [phi:main::@11->main::@3] - //SEG49 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@11->main::@3#0] -- register_copy - //SEG50 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@11->main::@3#1] -- register_copy - //SEG51 main::@3 + //SEG48 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@2->main::@3#1] -- register_copy + //SEG49 [20] phi from main::@11 to main::@3 [phi:main::@11->main::@3] + //SEG50 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@11->main::@3#0] -- register_copy + //SEG51 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@11->main::@3#1] -- register_copy + //SEG52 main::@3 b3: - //SEG52 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG53 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- pbuz1=pbuz1_plus_vbuc1 lda at_3 clc adc #4 @@ -2837,90 +2861,90 @@ main: { bcc !+ inc at_3+1 !: - //SEG53 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1 + //SEG54 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1 ldy i lda vals,y - //SEG54 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsyy=pbsc1_derefidx_vbuz1 + //SEG55 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsyy=pbsc1_derefidx_vbuz1 ldx j ldy vals,x - //SEG55 [24] call fmul8 + //SEG56 [24] call fmul8 jsr fmul8 - //SEG56 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 - //SEG57 main::@10 - //SEG58 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 - //SEG59 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsaa + //SEG57 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 + //SEG58 main::@10 + //SEG59 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 + //SEG60 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsaa sta print_sbyte_at.b - //SEG60 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 + //SEG61 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 lda at_3 sta print_sbyte_at.at lda at_3+1 sta print_sbyte_at.at+1 - //SEG61 [29] call print_sbyte_at - //SEG62 [35] phi from main::@10 to print_sbyte_at [phi:main::@10->print_sbyte_at] - //SEG63 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@10->print_sbyte_at#0] -- register_copy - //SEG64 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@10->print_sbyte_at#1] -- register_copy + //SEG62 [29] call print_sbyte_at + //SEG63 [35] phi from main::@10 to print_sbyte_at [phi:main::@10->print_sbyte_at] + //SEG64 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@10->print_sbyte_at#0] -- register_copy + //SEG65 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG65 main::@11 - //SEG66 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG66 main::@11 + //SEG67 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG67 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG68 [31] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #9 bne b3 - //SEG68 main::@5 - //SEG69 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG69 main::@5 + //SEG70 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG70 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG71 [33] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #9 bne b2 - //SEG71 main::@return - //SEG72 [34] return + //SEG72 main::@return + //SEG73 [34] return rts } -//SEG73 print_sbyte_at +//SEG74 print_sbyte_at // Print a signed byte as hex at a specific screen position print_sbyte_at: { .label b = $a .label at = 8 - //SEG74 [36] if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + //SEG75 [36] if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG75 print_sbyte_at::@3 - //SEG76 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 - //SEG77 [38] call print_char_at - //SEG78 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] - //SEG79 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG80 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG76 print_sbyte_at::@3 + //SEG77 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 + //SEG78 [38] call print_char_at + //SEG79 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG80 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG81 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG81 [39] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] - //SEG82 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy - //SEG83 print_sbyte_at::@2 + //SEG82 [39] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2] + //SEG83 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy + //SEG84 print_sbyte_at::@2 b2: - //SEG84 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG85 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc print_byte_at.at bne !+ inc print_byte_at.at+1 !: - //SEG85 [41] call print_byte_at + //SEG86 [41] call print_byte_at jsr print_byte_at - //SEG86 print_sbyte_at::@return - //SEG87 [42] return + //SEG87 print_sbyte_at::@return + //SEG88 [42] return rts - //SEG88 print_sbyte_at::@1 + //SEG89 print_sbyte_at::@1 b1: - //SEG89 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 - //SEG90 [44] call print_char_at - //SEG91 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] - //SEG92 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG93 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG90 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 + //SEG91 [44] call print_char_at + //SEG92 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG93 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG94 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at - //SEG94 print_sbyte_at::@5 - //SEG95 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 + //SEG95 print_sbyte_at::@5 + //SEG96 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -2928,69 +2952,69 @@ print_sbyte_at: { sta b jmp b2 } -//SEG96 print_char_at +//SEG97 print_char_at // Print a single char print_char_at: { .label at = 8 .label ch = $b - //SEG97 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG98 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y - //SEG98 print_char_at::@return - //SEG99 [48] return + //SEG99 print_char_at::@return + //SEG100 [48] return rts } -//SEG100 print_byte_at +//SEG101 print_byte_at // Print a byte as HEX at a specific position print_byte_at: { .label at = 8 - //SEG101 [49] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG102 [49] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda print_sbyte_at.b lsr lsr lsr lsr - //SEG102 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG103 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda print_hextab,y sta print_char_at.ch - //SEG103 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - //SEG104 [52] call print_char_at - //SEG105 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] - //SEG106 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG107 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG104 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + //SEG105 [52] call print_char_at + //SEG106 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG107 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG108 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at - //SEG108 print_byte_at::@1 - //SEG109 [53] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuz1_band_vbuc1 + //SEG109 print_byte_at::@1 + //SEG110 [53] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuz1_band_vbuc1 lda #$f and print_sbyte_at.b tay - //SEG110 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 + //SEG111 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 inc print_char_at.at bne !+ inc print_char_at.at+1 !: - //SEG111 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG112 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy lda print_hextab,y sta print_char_at.ch - //SEG112 [56] call print_char_at - //SEG113 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] - //SEG114 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG115 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG113 [56] call print_char_at + //SEG114 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG115 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG116 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at - //SEG116 print_byte_at::@return - //SEG117 [57] return + //SEG117 print_byte_at::@return + //SEG118 [57] return rts } -//SEG118 fmul8 +//SEG119 fmul8 fmul8: { - //SEG119 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa + //SEG120 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa sta ap - //SEG120 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsyy + //SEG121 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsyy tya sta bp - //SEG121 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } + //SEG122 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } lda ap sta A1+1 eor #$ff @@ -3002,60 +3026,60 @@ fmul8: { A2: sbc mulf_sqr2,x sta cp - //SEG122 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsaa=_deref_pbsc1 - //SEG123 fmul8::@return - //SEG124 [62] return + //SEG123 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsaa=_deref_pbsc1 + //SEG124 fmul8::@return + //SEG125 [62] return rts } -//SEG125 init_screen +//SEG126 init_screen init_screen: { .const WHITE = 1 .label COLS = 2 - //SEG126 [64] call print_cls - //SEG127 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] + //SEG127 [64] call print_cls + //SEG128 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] jsr print_cls - //SEG128 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] - //SEG129 [65] phi (byte) init_screen::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen->init_screen::@1#0] -- vbuxx=vbuc1 + //SEG129 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG130 [65] phi (byte) init_screen::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen->init_screen::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG130 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] - //SEG131 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy - //SEG132 init_screen::@1 + //SEG131 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG132 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG133 init_screen::@1 b1: - //SEG133 [66] *(((byte*))(word/dword/signed dword) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG134 [66] *(((byte*))(word/dword/signed dword) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #WHITE sta $d800,x - //SEG134 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuxx=_inc_vbuxx + //SEG135 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuxx=_inc_vbuxx inx - //SEG135 [68] if((byte) init_screen::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init_screen::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG136 [68] if((byte) init_screen::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init_screen::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1 - //SEG136 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] - //SEG137 [69] phi (byte) init_screen::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuxx=vbuc1 + //SEG137 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG138 [69] phi (byte) init_screen::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG138 [69] phi (byte*) init_screen::COLS#3 = ((byte*))(word/dword/signed dword) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 + //SEG139 [69] phi (byte*) init_screen::COLS#3 = ((byte*))(word/dword/signed dword) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 lda #<$d800 sta COLS lda #>$d800 sta COLS+1 - //SEG139 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] - //SEG140 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG141 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy - //SEG142 init_screen::@2 + //SEG140 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG141 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG142 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy + //SEG143 init_screen::@2 b2: - //SEG143 [70] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG144 [70] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #0 sta (COLS),y - //SEG144 [71] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG145 [71] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #1 sta (COLS),y - //SEG145 [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG146 [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #2 sta (COLS),y - //SEG146 [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG147 [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #3 sta (COLS),y - //SEG147 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG148 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda COLS clc adc #$28 @@ -3063,47 +3087,47 @@ init_screen: { bcc !+ inc COLS+1 !: - //SEG148 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuxx=_inc_vbuxx + //SEG149 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuxx=_inc_vbuxx inx - //SEG149 [76] if((byte) init_screen::m#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto init_screen::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG150 [76] if((byte) init_screen::m#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto init_screen::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$19 bne b2 - //SEG150 init_screen::@return - //SEG151 [77] return + //SEG151 init_screen::@return + //SEG152 [77] return rts } -//SEG152 print_cls +//SEG153 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG153 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG154 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 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 - //SEG157 print_cls::@1 + //SEG156 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG157 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG158 print_cls::@1 b1: - //SEG158 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG159 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG159 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG160 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG161 [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_line_cursor+$3e8 bne b1 lda sc cmp #@20] +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] b20_from_bbegin: jmp b20 -//SEG4 @20 +//SEG5 @20 b20: -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] main_from_b20: jsr main -//SEG7 [3] phi from @20 to @end [phi:@20->@end] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] bend_from_b20: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_str - //SEG11 [14] phi from main to print_str [phi:main->print_str] + //SEG11 [5] call print_str + //SEG12 [14] phi from main to print_str [phi:main->print_str] print_str_from_main: jsr print_str - //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 print_ln - //SEG15 [9] phi from main::@1 to print_ln [phi:main::@1->print_ln] + //SEG15 [7] call print_ln + //SEG16 [9] phi from main::@1 to print_ln [phi:main::@1->print_ln] print_ln_from_b1: jsr print_ln jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts str: .text "hello world!@" } -//SEG18 print_ln +//SEG19 print_ln // Print a newline print_ln: { - //SEG19 [10] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] + //SEG20 [10] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] b1_from_print_ln: - //SEG20 [10] phi (byte*) print_line_cursor#6 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 + //SEG21 [10] phi (byte*) print_line_cursor#6 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jmp b1 - //SEG21 [10] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] + //SEG22 [10] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] b1_from_b1: - //SEG22 [10] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy + //SEG23 [10] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG23 print_ln::@1 + //SEG24 print_ln::@1 b1: - //SEG24 [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG25 [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -389,7 +390,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG25 [12] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG26 [12] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -399,61 +400,61 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG26 print_ln::@return + //SEG27 print_ln::@return breturn: - //SEG27 [13] return + //SEG28 [13] return rts } -//SEG28 print_str +//SEG29 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG29 [15] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] + //SEG30 [15] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] b1_from_print_str: - //SEG30 [15] phi (byte*) print_char_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_str->print_str::@1#0] -- pbuz1=pbuc1 + //SEG31 [15] phi (byte*) print_char_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_str->print_str::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG31 [15] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG32 [15] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #main.str sta str+1 jmp b1 - //SEG32 print_str::@1 + //SEG33 print_str::@1 b1: - //SEG33 [16] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG34 [16] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG34 print_str::@return + //SEG35 print_str::@return breturn: - //SEG35 [17] return + //SEG36 [17] return rts - //SEG36 print_str::@2 + //SEG37 print_str::@2 b2: - //SEG37 [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG38 [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG38 [19] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#10 -- pbuz1=_inc_pbuz1 + //SEG39 [19] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#10 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG39 [20] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG40 [20] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG40 [15] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] + //SEG41 [15] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] b1_from_b2: - //SEG41 [15] phi (byte*) print_char_cursor#10 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG42 [15] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy + //SEG42 [15] phi (byte*) print_char_cursor#10 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy + //SEG43 [15] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy jmp b1 } @@ -480,69 +481,70 @@ Coalescing zero page register [ zp ZP_WORD:2 [ print_line_cursor#6 print_line_cu Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ print_char_cursor#10 print_char_cursor#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 4 .label print_line_cursor = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] b20_from_bbegin: jmp b20 -//SEG4 @20 +//SEG5 @20 b20: -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] main_from_b20: jsr main -//SEG7 [3] phi from @20 to @end [phi:@20->@end] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] bend_from_b20: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_str - //SEG11 [14] phi from main to print_str [phi:main->print_str] + //SEG11 [5] call print_str + //SEG12 [14] phi from main to print_str [phi:main->print_str] print_str_from_main: jsr print_str - //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 print_ln - //SEG15 [9] phi from main::@1 to print_ln [phi:main::@1->print_ln] + //SEG15 [7] call print_ln + //SEG16 [9] phi from main::@1 to print_ln [phi:main::@1->print_ln] print_ln_from_b1: jsr print_ln jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts str: .text "hello world!@" } -//SEG18 print_ln +//SEG19 print_ln // Print a newline print_ln: { - //SEG19 [10] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] + //SEG20 [10] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] b1_from_print_ln: - //SEG20 [10] phi (byte*) print_line_cursor#6 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 + //SEG21 [10] phi (byte*) print_line_cursor#6 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jmp b1 - //SEG21 [10] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] + //SEG22 [10] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] b1_from_b1: - //SEG22 [10] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy + //SEG23 [10] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG23 print_ln::@1 + //SEG24 print_ln::@1 b1: - //SEG24 [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG25 [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -550,7 +552,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG25 [12] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG26 [12] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -560,61 +562,61 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG26 print_ln::@return + //SEG27 print_ln::@return breturn: - //SEG27 [13] return + //SEG28 [13] return rts } -//SEG28 print_str +//SEG29 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG29 [15] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] + //SEG30 [15] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] b1_from_print_str: - //SEG30 [15] phi (byte*) print_char_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_str->print_str::@1#0] -- pbuz1=pbuc1 + //SEG31 [15] phi (byte*) print_char_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_str->print_str::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG31 [15] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG32 [15] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #main.str sta str+1 jmp b1 - //SEG32 print_str::@1 + //SEG33 print_str::@1 b1: - //SEG33 [16] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG34 [16] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG34 print_str::@return + //SEG35 print_str::@return breturn: - //SEG35 [17] return + //SEG36 [17] return rts - //SEG36 print_str::@2 + //SEG37 print_str::@2 b2: - //SEG37 [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG38 [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG38 [19] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#10 -- pbuz1=_inc_pbuz1 + //SEG39 [19] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#10 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG39 [20] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG40 [20] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG40 [15] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] + //SEG41 [15] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] b1_from_b2: - //SEG41 [15] phi (byte*) print_char_cursor#10 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG42 [15] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy + //SEG42 [15] phi (byte*) print_char_cursor#10 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy + //SEG43 [15] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy jmp b1 } @@ -692,49 +694,50 @@ zp ZP_WORD:4 [ print_char_cursor#10 print_char_cursor#1 ] FINAL ASSEMBLER Score: 1235 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 4 .label print_line_cursor = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] -//SEG4 @20 -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] -//SEG7 [3] phi from @20 to @end [phi:@20->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG5 @20 +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print_str - //SEG11 [14] phi from main to print_str [phi:main->print_str] + //SEG11 [5] call print_str + //SEG12 [14] phi from main to print_str [phi:main->print_str] jsr print_str - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 main::@1 - //SEG14 [7] call print_ln - //SEG15 [9] phi from main::@1 to print_ln [phi:main::@1->print_ln] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call print_ln + //SEG16 [9] phi from main::@1 to print_ln [phi:main::@1->print_ln] jsr print_ln - //SEG16 main::@return - //SEG17 [8] return + //SEG17 main::@return + //SEG18 [8] return rts str: .text "hello world!@" } -//SEG18 print_ln +//SEG19 print_ln // Print a newline print_ln: { - //SEG19 [10] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] - //SEG20 [10] phi (byte*) print_line_cursor#6 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 + //SEG20 [10] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1] + //SEG21 [10] phi (byte*) print_line_cursor#6 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG21 [10] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] - //SEG22 [10] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy - //SEG23 print_ln::@1 + //SEG22 [10] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1] + //SEG23 [10] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy + //SEG24 print_ln::@1 b1: - //SEG24 [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG25 [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -742,7 +745,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG25 [12] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG26 [12] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -751,54 +754,54 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG26 print_ln::@return - //SEG27 [13] return + //SEG27 print_ln::@return + //SEG28 [13] return rts } -//SEG28 print_str +//SEG29 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG29 [15] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] - //SEG30 [15] phi (byte*) print_char_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_str->print_str::@1#0] -- pbuz1=pbuc1 + //SEG30 [15] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] + //SEG31 [15] phi (byte*) print_char_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_str->print_str::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG31 [15] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG32 [15] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #main.str sta str+1 - //SEG32 print_str::@1 + //SEG33 print_str::@1 b1: - //SEG33 [16] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG34 [16] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG34 print_str::@return - //SEG35 [17] return + //SEG35 print_str::@return + //SEG36 [17] return rts - //SEG36 print_str::@2 + //SEG37 print_str::@2 b2: - //SEG37 [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG38 [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG38 [19] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#10 -- pbuz1=_inc_pbuz1 + //SEG39 [19] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#10 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG39 [20] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG40 [20] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG40 [15] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] - //SEG41 [15] phi (byte*) print_char_cursor#10 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG42 [15] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy + //SEG41 [15] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] + //SEG42 [15] phi (byte*) print_char_cursor#10 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy + //SEG43 [15] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy jmp b1 } diff --git a/src/test/ref/examples/irq/irq-hyperscreen.asm b/src/test/ref/examples/irq/irq-hyperscreen.asm index 108a8bac6..dfa93b587 100644 --- a/src/test/ref/examples/irq/irq-hyperscreen.asm +++ b/src/test/ref/examples/irq/irq-hyperscreen.asm @@ -1,3 +1,4 @@ +// A raster IRQ that opens the top/bottom border. .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/examples/irq/irq-hyperscreen.log b/src/test/ref/examples/irq/irq-hyperscreen.log index 0146635e8..a175ec118 100644 --- a/src/test/ref/examples/irq/irq-hyperscreen.log +++ b/src/test/ref/examples/irq/irq-hyperscreen.log @@ -554,11 +554,13 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A raster IRQ that opens the top/bottom border. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 .label VIC_CONTROL = $d011 @@ -578,113 +580,113 @@ INITIAL ASM .const WHITE = 1 .const RED = 2 .label GHOST_BYTE = $3fff -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] b7_from_bbegin: jmp b7 -//SEG4 @7 +//SEG5 @7 b7: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] +//SEG7 [3] phi from @7 to @end [phi:@7->@end] bend_from_b7: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta GHOST_BYTE - //SEG10 asm { sei } + //SEG11 asm { sei } sei - //SEG11 [6] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG12 [7] *((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 + //SEG13 [7] *((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 - //SEG13 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 lda #$fa sta RASTER - //SEG14 [9] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG15 [10] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 + //SEG16 [10] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 lda #irq_bottom_1 sta KERNEL_IRQ+1 - //SEG16 asm { cli } + //SEG17 asm { cli } cli jmp breturn - //SEG17 main::@return + //SEG18 main::@return breturn: - //SEG18 [12] return + //SEG19 [12] return rts } -//SEG19 irq_bottom_2 +//SEG20 irq_bottom_2 // Interrupt Routine 2 irq_bottom_2: { - //SEG20 entry interrupt(KERNEL_KEYBOARD) - //SEG21 [13] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG21 entry interrupt(KERNEL_KEYBOARD) + //SEG22 [13] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG22 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG23 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #VIC_RSEL sta VIC_CONTROL - //SEG23 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG24 [16] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 lda #$fa sta RASTER - //SEG25 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 + //SEG26 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 lda #irq_bottom_1 sta KERNEL_IRQ+1 - //SEG26 [18] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG27 [18] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL jmp breturn - //SEG27 irq_bottom_2::@return + //SEG28 irq_bottom_2::@return breturn: - //SEG28 [19] return - exit interrupt(KERNEL_KEYBOARD) + //SEG29 [19] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } -//SEG29 irq_bottom_1 +//SEG30 irq_bottom_1 // Interrupt Routine 1 irq_bottom_1: { - //SEG30 entry interrupt(KERNEL_MIN) - //SEG31 [20] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG31 entry interrupt(KERNEL_MIN) + //SEG32 [20] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG32 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) 255^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG33 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) 255^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$ff^VIC_RSEL sta VIC_CONTROL - //SEG33 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG34 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG34 [23] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 253 -- _deref_pbuc1=vbuc2 + //SEG35 [23] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 253 -- _deref_pbuc1=vbuc2 lda #$fd sta RASTER - //SEG35 [24] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() -- _deref_pptc1=pprc2 + //SEG36 [24] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() -- _deref_pptc1=pprc2 lda #irq_bottom_2 sta KERNEL_IRQ+1 - //SEG36 [25] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG37 [25] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL jmp breturn - //SEG37 irq_bottom_1::@return + //SEG38 irq_bottom_1::@return breturn: - //SEG38 [26] return - exit interrupt(KERNEL_MIN) + //SEG39 [26] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -720,11 +722,13 @@ Uplifting [irq_bottom_2] best 175 combination Uplifting [] best 175 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A raster IRQ that opens the top/bottom border. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 .label VIC_CONTROL = $d011 @@ -744,113 +748,113 @@ ASSEMBLER BEFORE OPTIMIZATION .const WHITE = 1 .const RED = 2 .label GHOST_BYTE = $3fff -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] b7_from_bbegin: jmp b7 -//SEG4 @7 +//SEG5 @7 b7: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] +//SEG7 [3] phi from @7 to @end [phi:@7->@end] bend_from_b7: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta GHOST_BYTE - //SEG10 asm { sei } + //SEG11 asm { sei } sei - //SEG11 [6] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG12 [7] *((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 + //SEG13 [7] *((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 - //SEG13 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 lda #$fa sta RASTER - //SEG14 [9] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG15 [10] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 + //SEG16 [10] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 lda #irq_bottom_1 sta KERNEL_IRQ+1 - //SEG16 asm { cli } + //SEG17 asm { cli } cli jmp breturn - //SEG17 main::@return + //SEG18 main::@return breturn: - //SEG18 [12] return + //SEG19 [12] return rts } -//SEG19 irq_bottom_2 +//SEG20 irq_bottom_2 // Interrupt Routine 2 irq_bottom_2: { - //SEG20 entry interrupt(KERNEL_KEYBOARD) - //SEG21 [13] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG21 entry interrupt(KERNEL_KEYBOARD) + //SEG22 [13] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG22 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG23 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #VIC_RSEL sta VIC_CONTROL - //SEG23 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG24 [16] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 lda #$fa sta RASTER - //SEG25 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 + //SEG26 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 lda #irq_bottom_1 sta KERNEL_IRQ+1 - //SEG26 [18] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG27 [18] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL jmp breturn - //SEG27 irq_bottom_2::@return + //SEG28 irq_bottom_2::@return breturn: - //SEG28 [19] return - exit interrupt(KERNEL_KEYBOARD) + //SEG29 [19] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } -//SEG29 irq_bottom_1 +//SEG30 irq_bottom_1 // Interrupt Routine 1 irq_bottom_1: { - //SEG30 entry interrupt(KERNEL_MIN) - //SEG31 [20] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG31 entry interrupt(KERNEL_MIN) + //SEG32 [20] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG32 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) 255^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG33 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) 255^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$ff^VIC_RSEL sta VIC_CONTROL - //SEG33 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG34 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG34 [23] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 253 -- _deref_pbuc1=vbuc2 + //SEG35 [23] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 253 -- _deref_pbuc1=vbuc2 lda #$fd sta RASTER - //SEG35 [24] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() -- _deref_pptc1=pprc2 + //SEG36 [24] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() -- _deref_pptc1=pprc2 lda #irq_bottom_2 sta KERNEL_IRQ+1 - //SEG36 [25] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG37 [25] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL jmp breturn - //SEG37 irq_bottom_1::@return + //SEG38 irq_bottom_1::@return breturn: - //SEG38 [26] return - exit interrupt(KERNEL_MIN) + //SEG39 [26] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -985,11 +989,13 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() FINAL ASSEMBLER Score: 154 -//SEG0 Basic Upstart +//SEG0 File Comments +// A raster IRQ that opens the top/bottom border. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 .label VIC_CONTROL = $d011 @@ -1009,99 +1015,99 @@ Score: 154 .const WHITE = 1 .const RED = 2 .label GHOST_BYTE = $3fff -//SEG2 @begin -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -//SEG4 @7 -//SEG5 [2] call main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG5 @7 +//SEG6 [2] call main +//SEG7 [3] phi from @7 to @end [phi:@7->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta GHOST_BYTE - //SEG10 asm { sei } + //SEG11 asm { sei } sei - //SEG11 [6] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG12 [7] *((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 + //SEG13 [7] *((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 - //SEG13 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 lda #$fa sta RASTER - //SEG14 [9] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG15 [10] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 + //SEG16 [10] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 lda #irq_bottom_1 sta KERNEL_IRQ+1 - //SEG16 asm { cli } + //SEG17 asm { cli } cli - //SEG17 main::@return - //SEG18 [12] return + //SEG18 main::@return + //SEG19 [12] return rts } -//SEG19 irq_bottom_2 +//SEG20 irq_bottom_2 // Interrupt Routine 2 irq_bottom_2: { - //SEG20 entry interrupt(KERNEL_KEYBOARD) - //SEG21 [13] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG21 entry interrupt(KERNEL_KEYBOARD) + //SEG22 [13] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG22 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG23 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #VIC_RSEL sta VIC_CONTROL - //SEG23 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG24 [16] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 250 -- _deref_pbuc1=vbuc2 lda #$fa sta RASTER - //SEG25 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 + //SEG26 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq_bottom_1() -- _deref_pptc1=pprc2 lda #irq_bottom_1 sta KERNEL_IRQ+1 - //SEG26 [18] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG27 [18] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL - //SEG27 irq_bottom_2::@return - //SEG28 [19] return - exit interrupt(KERNEL_KEYBOARD) + //SEG28 irq_bottom_2::@return + //SEG29 [19] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } -//SEG29 irq_bottom_1 +//SEG30 irq_bottom_1 // Interrupt Routine 1 irq_bottom_1: { - //SEG30 entry interrupt(KERNEL_MIN) - //SEG31 [20] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG31 entry interrupt(KERNEL_MIN) + //SEG32 [20] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG32 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) 255^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG33 [21] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/word/signed word/dword/signed dword) 255^(const byte) VIC_RSEL#0 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda VIC_CONTROL and #$ff^VIC_RSEL sta VIC_CONTROL - //SEG33 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG34 [22] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG34 [23] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 253 -- _deref_pbuc1=vbuc2 + //SEG35 [23] *((const byte*) RASTER#0) ← (byte/word/signed word/dword/signed dword) 253 -- _deref_pbuc1=vbuc2 lda #$fd sta RASTER - //SEG35 [24] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() -- _deref_pptc1=pprc2 + //SEG36 [24] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() -- _deref_pptc1=pprc2 lda #irq_bottom_2 sta KERNEL_IRQ+1 - //SEG36 [25] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG37 [25] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL - //SEG37 irq_bottom_1::@return - //SEG38 [26] return - exit interrupt(KERNEL_MIN) + //SEG38 irq_bottom_1::@return + //SEG39 [26] return - exit interrupt(KERNEL_MIN) jmp $ea81 } diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.asm b/src/test/ref/examples/multiplexer/simple-multiplexer.asm index 060472479..f3843395b 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.asm +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.asm @@ -1,3 +1,4 @@ +// A simple usage of the flexible sprite multiplexer routine .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log index 21702e057..e6bd096a1 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.log +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log @@ -2452,11 +2452,13 @@ Allocated zp ZP_BYTE:31 [ plexSort::s#2 ] Allocated zp ZP_BYTE:32 [ init::$6 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A simple usage of the flexible sprite multiplexer routine +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 @@ -2481,47 +2483,47 @@ INITIAL ASM .label plex_sprite_idx = 6 .label plex_show_idx = 7 .label plex_sprite_msb = 8 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b12 -//SEG3 @12 +//SEG4 @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 @12 to @15 [phi:@12->@15] +//SEG5 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))) }} +//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] phi from @12 to @15 [phi:@12->@15] b15_from_b12: jmp b15 -//SEG7 @15 +//SEG8 @15 b15: -//SEG8 [4] call main +//SEG9 [4] call main jsr main -//SEG9 [5] phi from @15 to @end [phi:@15->@end] +//SEG10 [5] phi from @15 to @end [phi:@15->@end] bend_from_b15: jmp bend -//SEG10 @end +//SEG11 @end bend: -//SEG11 main +//SEG12 main main: { - //SEG12 asm { sei } + //SEG13 asm { sei } sei - //SEG13 [7] call init + //SEG14 [7] call init jsr init - //SEG14 [8] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [8] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [9] call loop - //SEG17 [11] phi from main::@1 to loop [phi:main::@1->loop] + //SEG17 [9] call loop + //SEG18 [11] phi from main::@1 to loop [phi:main::@1->loop] loop_from_b1: jsr loop jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [10] return + //SEG20 [10] return rts } -//SEG20 loop +//SEG21 loop // The raster loop loop: { .label _4 = $12 @@ -2530,160 +2532,160 @@ loop: { .label sin_idx = 2 .label plexFreeNextYpos1_return = $13 .label ss = 9 - //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG22 [12] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: - //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG23 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx jmp b1 - //SEG23 loop::@1 + //SEG24 loop::@1 b1: jmp b4 - //SEG24 loop::@4 + //SEG25 loop::@4 b4: - //SEG25 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG26 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b6 - //SEG26 loop::@6 + //SEG27 loop::@6 b6: - //SEG27 [14] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG28 [14] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG28 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuz1=vbuz2 + //SEG29 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuz1=vbuz2 lda sin_idx sta y_idx - //SEG29 [16] phi from loop::@6 to loop::@7 [phi:loop::@6->loop::@7] + //SEG30 [16] phi from loop::@6 to loop::@7 [phi:loop::@6->loop::@7] b7_from_b6: - //SEG30 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuz1=vbuc1 + //SEG31 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuz1=vbuc1 lda #0 sta sy - //SEG31 [16] phi (byte) loop::y_idx#2 = (byte~) loop::y_idx#3 [phi:loop::@6->loop::@7#1] -- register_copy + //SEG32 [16] phi (byte) loop::y_idx#2 = (byte~) loop::y_idx#3 [phi:loop::@6->loop::@7#1] -- register_copy jmp b7 - //SEG32 [16] phi from loop::@7 to loop::@7 [phi:loop::@7->loop::@7] + //SEG33 [16] phi from loop::@7 to loop::@7 [phi:loop::@7->loop::@7] b7_from_b7: - //SEG33 [16] phi (byte) loop::sy#2 = (byte) loop::sy#1 [phi:loop::@7->loop::@7#0] -- register_copy - //SEG34 [16] phi (byte) loop::y_idx#2 = (byte) loop::y_idx#1 [phi:loop::@7->loop::@7#1] -- register_copy + //SEG34 [16] phi (byte) loop::sy#2 = (byte) loop::sy#1 [phi:loop::@7->loop::@7#0] -- register_copy + //SEG35 [16] phi (byte) loop::y_idx#2 = (byte) loop::y_idx#1 [phi:loop::@7->loop::@7#1] -- register_copy jmp b7 - //SEG35 loop::@7 + //SEG36 loop::@7 b7: - //SEG36 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG37 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy y_idx lda YSIN,y ldy sy sta PLEX_YPOS,y - //SEG37 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG38 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc y_idx sta y_idx - //SEG38 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuz1=_inc_vbuz1 + //SEG39 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuz1=_inc_vbuz1 inc sy - //SEG39 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG40 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuz1_neq_vbuc1_then_la1 lda sy cmp #PLEX_COUNT-1+1 bne b7_from_b7 jmp b20 - //SEG40 loop::@20 + //SEG41 loop::@20 b20: - //SEG41 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG42 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc sin_idx - //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG43 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG43 [23] call plexSort - //SEG44 [60] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] + //SEG44 [23] call plexSort + //SEG45 [60] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] plexSort_from_b20: jsr plexSort jmp b30 - //SEG45 loop::@30 + //SEG46 loop::@30 b30: - //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG47 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp b8 - //SEG47 loop::@8 + //SEG48 loop::@8 b8: - //SEG48 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuz1=_deref_pbuc1_band_vbuc2 + //SEG49 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuz1=_deref_pbuc1_band_vbuc2 lda D011 and #VIC_RST8 sta _4 - //SEG49 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuz1_neq_0_then_la1 + //SEG50 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuz1_neq_0_then_la1 lda _4 cmp #0 bne b8 - //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] + //SEG51 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] b11_from_b8: - //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 + //SEG52 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 lda #0 sta ss - //SEG52 [27] phi (byte) plex_sprite_msb#44 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 + //SEG53 [27] phi (byte) plex_sprite_msb#44 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG53 [27] phi (byte) plex_show_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 + //SEG54 [27] phi (byte) plex_show_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 lda #0 sta plex_show_idx - //SEG54 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 + //SEG55 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 lda #0 sta plex_sprite_idx - //SEG55 [27] phi (byte) plex_free_next#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#4] -- vbuz1=vbuc1 + //SEG56 [27] phi (byte) plex_free_next#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#4] -- vbuz1=vbuc1 lda #0 sta plex_free_next jmp b11 - //SEG56 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] + //SEG57 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] b11_from_b31: - //SEG57 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy - //SEG58 [27] phi (byte) plex_sprite_msb#44 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy - //SEG59 [27] phi (byte) plex_show_idx#44 = (byte) plex_show_idx#15 [phi:loop::@31->loop::@11#2] -- register_copy - //SEG60 [27] phi (byte) plex_sprite_idx#44 = (byte) plex_sprite_idx#15 [phi:loop::@31->loop::@11#3] -- register_copy - //SEG61 [27] phi (byte) plex_free_next#17 = (byte) plex_free_next#13 [phi:loop::@31->loop::@11#4] -- register_copy + //SEG58 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy + //SEG59 [27] phi (byte) plex_sprite_msb#44 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy + //SEG60 [27] phi (byte) plex_show_idx#44 = (byte) plex_show_idx#15 [phi:loop::@31->loop::@11#2] -- register_copy + //SEG61 [27] phi (byte) plex_sprite_idx#44 = (byte) plex_sprite_idx#15 [phi:loop::@31->loop::@11#3] -- register_copy + //SEG62 [27] phi (byte) plex_free_next#17 = (byte) plex_free_next#13 [phi:loop::@31->loop::@11#4] -- register_copy jmp b11 - //SEG62 loop::@11 + //SEG63 loop::@11 b11: - //SEG63 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG64 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp plexFreeNextYpos1 - //SEG64 loop::plexFreeNextYpos1 + //SEG65 loop::plexFreeNextYpos1 plexFreeNextYpos1: - //SEG65 [29] (byte) loop::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG66 [29] (byte) loop::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) -- vbuz1=pbuc1_derefidx_vbuz2 ldy plex_free_next lda PLEX_FREE_YPOS,y sta plexFreeNextYpos1_return jmp b12 - //SEG66 loop::@12 + //SEG67 loop::@12 b12: - //SEG67 [30] if(*((const byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@12 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG68 [30] if(*((const byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@12 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp plexFreeNextYpos1_return bcc b12 jmp b14 - //SEG68 loop::@14 + //SEG69 loop::@14 b14: - //SEG69 [31] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG70 [31] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG70 [32] call plexShowSprite + //SEG71 [32] call plexShowSprite jsr plexShowSprite jmp b31 - //SEG71 loop::@31 + //SEG72 loop::@31 b31: - //SEG72 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1 + //SEG73 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1 inc ss - //SEG73 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG74 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1 lda ss cmp #PLEX_COUNT-1+1 bne b11_from_b31 jmp b27 - //SEG74 loop::@27 + //SEG75 loop::@27 b27: - //SEG75 [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG76 [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] + //SEG77 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] b1_from_b27: - //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy + //SEG78 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy jmp b1 } -//SEG78 plexShowSprite +//SEG79 plexShowSprite // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { @@ -2696,129 +2698,129 @@ plexShowSprite: { .label plexFreeAdd1__0 = $16 .label plexFreeAdd1__1 = $17 .label xpos_idx = $18 - //SEG79 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG80 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda plex_sprite_idx asl sta plex_sprite_idx2 - //SEG80 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG81 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy plex_show_idx lda PLEX_SORTED_IDX,y tay lda PLEX_YPOS,y sta plexFreeAdd1_ypos - //SEG81 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG82 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda plexFreeAdd1_ypos ldy plex_sprite_idx2 sta SPRITES_YPOS,y jmp plexFreeAdd1 - //SEG82 plexShowSprite::plexFreeAdd1 + //SEG83 plexShowSprite::plexFreeAdd1 plexFreeAdd1: - //SEG83 [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + //SEG84 [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 lda #$15 clc adc plexFreeAdd1_ypos sta plexFreeAdd1__0 - //SEG84 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG85 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda plexFreeAdd1__0 ldy plex_free_next sta PLEX_FREE_YPOS,y - //SEG85 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG86 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy plex_free_next iny sty plexFreeAdd1__1 - //SEG86 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG87 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and plexFreeAdd1__1 sta plex_free_next jmp b7 - //SEG87 plexShowSprite::@7 + //SEG88 plexShowSprite::@7 b7: - //SEG88 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + //SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 ldx plex_show_idx lda PLEX_SORTED_IDX,x tax lda PLEX_PTR,x ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG89 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 + //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 ldy plex_show_idx lda PLEX_SORTED_IDX,y asl sta xpos_idx - //SEG90 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 + //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuz1=_lo_pwuc1_derefidx_vbuz2 ldy xpos_idx lda PLEX_XPOS,y sta _3 - //SEG91 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG92 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuz2 lda _3 ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG92 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 + //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuz1=_hi_pwuc1_derefidx_vbuz2 ldy xpos_idx lda PLEX_XPOS+1,y sta _4 - //SEG93 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuz1_neq_0_then_la1 + //SEG94 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuz1_neq_0_then_la1 lda _4 cmp #0 bne b1 jmp b4 - //SEG94 plexShowSprite::@4 + //SEG95 plexShowSprite::@4 b4: - //SEG95 [49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#44 -- vbuz1=vbuc1_bxor_vbuz2 + //SEG96 [49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#44 -- vbuz1=vbuc1_bxor_vbuz2 lda plex_sprite_msb eor #$ff sta _6 - //SEG96 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + //SEG97 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB and _6 sta SPRITES_XMSB jmp b2 - //SEG97 plexShowSprite::@2 + //SEG98 plexShowSprite::@2 b2: - //SEG98 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy plex_sprite_idx iny sty _7 - //SEG99 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and _7 sta plex_sprite_idx - //SEG100 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 + //SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG101 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG102 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@8 -- vbuz1_neq_0_then_la1 + //SEG103 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@8 -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne b8_from_b2 - //SEG103 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG104 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] breturn_from_b2: - //SEG104 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG105 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb jmp breturn - //SEG105 plexShowSprite::@return + //SEG106 plexShowSprite::@return breturn: - //SEG106 [57] return + //SEG107 [57] return rts - //SEG107 [58] phi from plexShowSprite::@2 to plexShowSprite::@8 [phi:plexShowSprite::@2->plexShowSprite::@8] + //SEG108 [58] phi from plexShowSprite::@2 to plexShowSprite::@8 [phi:plexShowSprite::@2->plexShowSprite::@8] b8_from_b2: jmp b8 - //SEG108 plexShowSprite::@8 + //SEG109 plexShowSprite::@8 b8: - //SEG109 [56] phi from plexShowSprite::@8 to plexShowSprite::@return [phi:plexShowSprite::@8->plexShowSprite::@return] + //SEG110 [56] phi from plexShowSprite::@8 to plexShowSprite::@return [phi:plexShowSprite::@8->plexShowSprite::@return] breturn_from_b8: - //SEG110 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@8->plexShowSprite::@return#0] -- register_copy + //SEG111 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@8->plexShowSprite::@return#0] -- register_copy jmp breturn - //SEG111 plexShowSprite::@1 + //SEG112 plexShowSprite::@1 b1: - //SEG112 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG113 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG113 plexSort +//SEG114 plexSort // Ensure that the indices in PLEX_SORTED_IDX is sorted based on the y-positions in PLEX_YPOS // Assumes that the positions are nearly sorted already (as each sprite just moves a bit) // Uses an insertion sort: @@ -2835,110 +2837,110 @@ plexSort: { .label s = $b .label s_2 = $1f .label plexFreePrepare1_s = $c - //SEG114 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG115 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] b1_from_plexSort: - //SEG115 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG116 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m jmp b1 - //SEG116 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG117 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] b1_from_b2: - //SEG117 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG118 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy jmp b1 - //SEG118 plexSort::@1 + //SEG119 plexSort::@1 b1: - //SEG119 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG120 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG120 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG121 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy nxt_idx lda PLEX_YPOS,y sta nxt_y - //SEG121 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG122 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 jmp b11 - //SEG122 plexSort::@11 + //SEG123 plexSort::@11 b11: - //SEG123 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuz1=vbuz2 + //SEG124 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuz1=vbuz2 lda m sta s - //SEG124 [66] phi from plexSort::@11 plexSort::@8 to plexSort::@3 [phi:plexSort::@11/plexSort::@8->plexSort::@3] + //SEG125 [66] phi from plexSort::@11 plexSort::@8 to plexSort::@3 [phi:plexSort::@11/plexSort::@8->plexSort::@3] b3_from_b11: b3_from_b8: - //SEG125 [66] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@11/plexSort::@8->plexSort::@3#0] -- register_copy + //SEG126 [66] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@11/plexSort::@8->plexSort::@3#0] -- register_copy jmp b3 - //SEG126 plexSort::@3 + //SEG127 plexSort::@3 b3: - //SEG127 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG128 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy s lda PLEX_SORTED_IDX,y sta PLEX_SORTED_IDX+1,y - //SEG128 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuz1=_dec_vbuz1 + //SEG129 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuz1=_dec_vbuz1 dec s - //SEG129 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG130 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@8 -- vbuz1_neq_vbuc1_then_la1 lda s cmp #$ff bne b8 jmp b5 - //SEG130 plexSort::@5 + //SEG131 plexSort::@5 b5: - //SEG131 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuz1=_inc_vbuz2 + //SEG132 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuz1=_inc_vbuz2 ldy s iny sty s_2 - //SEG132 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG133 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda nxt_idx ldy s_2 sta PLEX_SORTED_IDX,y jmp b2 - //SEG133 plexSort::@2 + //SEG134 plexSort::@2 b2: - //SEG134 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 + //SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 inc m - //SEG135 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 lda m cmp #PLEX_COUNT-2+1 bne b1_from_b2 - //SEG136 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] + //SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] plexFreePrepare1_from_b2: jmp plexFreePrepare1 - //SEG137 plexSort::plexFreePrepare1 + //SEG138 plexSort::plexFreePrepare1 plexFreePrepare1: - //SEG138 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] + //SEG139 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] plexFreePrepare1_b1_from_plexFreePrepare1: - //SEG139 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuz1=vbuc1 + //SEG140 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuz1=vbuc1 lda #0 sta plexFreePrepare1_s jmp plexFreePrepare1_b1 - //SEG140 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] + //SEG141 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] plexFreePrepare1_b1_from_plexFreePrepare1_b1: - //SEG141 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy + //SEG142 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy jmp plexFreePrepare1_b1 - //SEG142 plexSort::plexFreePrepare1_@1 + //SEG143 plexSort::plexFreePrepare1_@1 plexFreePrepare1_b1: - //SEG143 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG144 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy plexFreePrepare1_s lda #0 sta PLEX_FREE_YPOS,y - //SEG144 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuz1=_inc_vbuz1 + //SEG145 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuz1=_inc_vbuz1 inc plexFreePrepare1_s - //SEG145 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG146 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuz1_neq_vbuc1_then_la1 lda plexFreePrepare1_s cmp #8 bne plexFreePrepare1_b1_from_plexFreePrepare1_b1 jmp breturn - //SEG146 plexSort::@return + //SEG147 plexSort::@return breturn: - //SEG147 [79] return + //SEG148 [79] return rts - //SEG148 plexSort::@8 + //SEG149 plexSort::@8 b8: - //SEG149 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG150 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx s ldy PLEX_SORTED_IDX,x @@ -2946,53 +2948,53 @@ plexSort: { bcc b3_from_b8 jmp b5 } -//SEG150 init +//SEG151 init // Initialize the program init: { .label _6 = $20 .label xp = $e .label sx = $d .label ss = $10 - //SEG151 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG152 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG152 [82] call plexInit - //SEG153 [96] phi from init to plexInit [phi:init->plexInit] + //SEG153 [82] call plexInit + //SEG154 [96] phi from init to plexInit [phi:init->plexInit] plexInit_from_init: jsr plexInit - //SEG154 [83] phi from init to init::@1 [phi:init->init::@1] + //SEG155 [83] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG155 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG156 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #<$20 sta xp lda #>$20 sta xp+1 - //SEG156 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuz1=vbuc1 + //SEG157 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuz1=vbuc1 lda #0 sta sx jmp b1 - //SEG157 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG158 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG158 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG159 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG159 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG160 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG160 init::@1 + //SEG161 init::@1 b1: - //SEG161 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG162 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuz1=vbuc2 ldy sx lda #$ff&SPRITE/$40 sta PLEX_PTR,y - //SEG162 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG163 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda sx asl sta _6 - //SEG163 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG164 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuz1=vwuz2 ldy _6 lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG164 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 + //SEG165 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 clc lda xp adc #<9 @@ -3000,81 +3002,81 @@ init: { lda xp+1 adc #>9 sta xp+1 - //SEG165 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuz1=_inc_vbuz1 + //SEG166 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuz1=_inc_vbuz1 inc sx - //SEG166 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG167 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 lda sx cmp #PLEX_COUNT-1+1 bne b1_from_b1 jmp b3 - //SEG167 init::@3 + //SEG168 init::@3 b3: - //SEG168 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG169 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG169 [91] phi from init::@3 to init::@2 [phi:init::@3->init::@2] + //SEG170 [91] phi from init::@3 to init::@2 [phi:init::@3->init::@2] b2_from_b3: - //SEG170 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuz1=vbuc1 + //SEG171 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuz1=vbuc1 lda #0 sta ss jmp b2 - //SEG171 [91] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG172 [91] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG172 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG173 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy jmp b2 - //SEG173 init::@2 + //SEG174 init::@2 b2: - //SEG174 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG175 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy ss lda #GREEN sta SPRITES_COLS,y - //SEG175 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuz1=_inc_vbuz1 + //SEG176 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuz1=_inc_vbuz1 inc ss - //SEG176 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG177 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 -- vbuz1_neq_vbuc1_then_la1 lda ss cmp #8 bne b2_from_b2 jmp breturn - //SEG177 init::@return + //SEG178 init::@return breturn: - //SEG178 [95] return + //SEG179 [95] return rts } -//SEG179 plexInit +//SEG180 plexInit // Initialize the multiplexer data structures plexInit: { .label i = $11 - //SEG180 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + //SEG181 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] plexSetScreen1_from_plexInit: jmp plexSetScreen1 - //SEG181 plexInit::plexSetScreen1 + //SEG182 plexInit::plexSetScreen1 plexSetScreen1: - //SEG182 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG183 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] b1_from_plexSetScreen1: - //SEG183 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuz1=vbuc1 + //SEG184 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG184 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG185 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] b1_from_b1: - //SEG185 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG186 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy jmp b1 - //SEG186 plexInit::@1 + //SEG187 plexInit::@1 b1: - //SEG187 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG188 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta PLEX_SORTED_IDX,y - //SEG188 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuz1=_inc_vbuz1 + //SEG189 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG189 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG190 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLEX_COUNT-1+1 bne b1_from_b1 jmp breturn - //SEG190 plexInit::@return + //SEG191 plexInit::@return breturn: - //SEG191 [102] return + //SEG192 [102] return rts } // Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again. @@ -3287,11 +3289,13 @@ Allocated (was zp ZP_BYTE:19) zp ZP_BYTE:9 [ loop::plexFreeNextYpos1_return#0 pl Allocated (was zp ZP_BYTE:24) zp ZP_BYTE:10 [ plexShowSprite::xpos_idx#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A simple usage of the flexible sprite multiplexer routine +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 @@ -3315,311 +3319,311 @@ ASSEMBLER BEFORE OPTIMIZATION .label plex_free_next = 3 .label plex_show_idx = 4 .label plex_sprite_msb = 5 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b12 -//SEG3 @12 +//SEG4 @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 @12 to @15 [phi:@12->@15] +//SEG5 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))) }} +//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] phi from @12 to @15 [phi:@12->@15] b15_from_b12: jmp b15 -//SEG7 @15 +//SEG8 @15 b15: -//SEG8 [4] call main +//SEG9 [4] call main jsr main -//SEG9 [5] phi from @15 to @end [phi:@15->@end] +//SEG10 [5] phi from @15 to @end [phi:@15->@end] bend_from_b15: jmp bend -//SEG10 @end +//SEG11 @end bend: -//SEG11 main +//SEG12 main main: { - //SEG12 asm { sei } + //SEG13 asm { sei } sei - //SEG13 [7] call init + //SEG14 [7] call init jsr init - //SEG14 [8] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [8] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [9] call loop - //SEG17 [11] phi from main::@1 to loop [phi:main::@1->loop] + //SEG17 [9] call loop + //SEG18 [11] phi from main::@1 to loop [phi:main::@1->loop] loop_from_b1: jsr loop jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [10] return + //SEG20 [10] return rts } -//SEG20 loop +//SEG21 loop // The raster loop loop: { .label sin_idx = 2 .label plexFreeNextYpos1_return = 9 .label ss = 6 - //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG22 [12] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: - //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG23 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx jmp b1 - //SEG23 loop::@1 + //SEG24 loop::@1 b1: jmp b4 - //SEG24 loop::@4 + //SEG25 loop::@4 b4: - //SEG25 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG26 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b6 - //SEG26 loop::@6 + //SEG27 loop::@6 b6: - //SEG27 [14] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG28 [14] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG28 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuyy=vbuz1 + //SEG29 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuyy=vbuz1 ldy sin_idx - //SEG29 [16] phi from loop::@6 to loop::@7 [phi:loop::@6->loop::@7] + //SEG30 [16] phi from loop::@6 to loop::@7 [phi:loop::@6->loop::@7] b7_from_b6: - //SEG30 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuxx=vbuc1 + //SEG31 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuxx=vbuc1 ldx #0 - //SEG31 [16] phi (byte) loop::y_idx#2 = (byte~) loop::y_idx#3 [phi:loop::@6->loop::@7#1] -- register_copy + //SEG32 [16] phi (byte) loop::y_idx#2 = (byte~) loop::y_idx#3 [phi:loop::@6->loop::@7#1] -- register_copy jmp b7 - //SEG32 [16] phi from loop::@7 to loop::@7 [phi:loop::@7->loop::@7] + //SEG33 [16] phi from loop::@7 to loop::@7 [phi:loop::@7->loop::@7] b7_from_b7: - //SEG33 [16] phi (byte) loop::sy#2 = (byte) loop::sy#1 [phi:loop::@7->loop::@7#0] -- register_copy - //SEG34 [16] phi (byte) loop::y_idx#2 = (byte) loop::y_idx#1 [phi:loop::@7->loop::@7#1] -- register_copy + //SEG34 [16] phi (byte) loop::sy#2 = (byte) loop::sy#1 [phi:loop::@7->loop::@7#0] -- register_copy + //SEG35 [16] phi (byte) loop::y_idx#2 = (byte) loop::y_idx#1 [phi:loop::@7->loop::@7#1] -- register_copy jmp b7 - //SEG35 loop::@7 + //SEG36 loop::@7 b7: - //SEG36 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG37 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda YSIN,y sta PLEX_YPOS,x - //SEG37 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuyy=vbuyy_plus_vbuc1 + //SEG38 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuyy=vbuyy_plus_vbuc1 tya clc adc #8 tay - //SEG38 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuxx=_inc_vbuxx + //SEG39 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuxx=_inc_vbuxx inx - //SEG39 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG40 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b7_from_b7 jmp b20 - //SEG40 loop::@20 + //SEG41 loop::@20 b20: - //SEG41 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG42 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc sin_idx - //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG43 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG43 [23] call plexSort - //SEG44 [60] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] + //SEG44 [23] call plexSort + //SEG45 [60] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] plexSort_from_b20: jsr plexSort jmp b30 - //SEG45 loop::@30 + //SEG46 loop::@30 b30: - //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG47 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp b8 - //SEG47 loop::@8 + //SEG48 loop::@8 b8: - //SEG48 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuaa=_deref_pbuc1_band_vbuc2 + //SEG49 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuaa=_deref_pbuc1_band_vbuc2 lda D011 and #VIC_RST8 - //SEG49 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuaa_neq_0_then_la1 + //SEG50 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuaa_neq_0_then_la1 cmp #0 bne b8 - //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] + //SEG51 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] b11_from_b8: - //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 + //SEG52 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 lda #0 sta ss - //SEG52 [27] phi (byte) plex_sprite_msb#44 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 + //SEG53 [27] phi (byte) plex_sprite_msb#44 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG53 [27] phi (byte) plex_show_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 + //SEG54 [27] phi (byte) plex_show_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 lda #0 sta plex_show_idx - //SEG54 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuxx=vbuc1 + //SEG55 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuxx=vbuc1 ldx #0 - //SEG55 [27] phi (byte) plex_free_next#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#4] -- vbuz1=vbuc1 + //SEG56 [27] phi (byte) plex_free_next#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#4] -- vbuz1=vbuc1 lda #0 sta plex_free_next jmp b11 - //SEG56 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] + //SEG57 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] b11_from_b31: - //SEG57 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy - //SEG58 [27] phi (byte) plex_sprite_msb#44 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy - //SEG59 [27] phi (byte) plex_show_idx#44 = (byte) plex_show_idx#15 [phi:loop::@31->loop::@11#2] -- register_copy - //SEG60 [27] phi (byte) plex_sprite_idx#44 = (byte) plex_sprite_idx#15 [phi:loop::@31->loop::@11#3] -- register_copy - //SEG61 [27] phi (byte) plex_free_next#17 = (byte) plex_free_next#13 [phi:loop::@31->loop::@11#4] -- register_copy + //SEG58 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy + //SEG59 [27] phi (byte) plex_sprite_msb#44 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy + //SEG60 [27] phi (byte) plex_show_idx#44 = (byte) plex_show_idx#15 [phi:loop::@31->loop::@11#2] -- register_copy + //SEG61 [27] phi (byte) plex_sprite_idx#44 = (byte) plex_sprite_idx#15 [phi:loop::@31->loop::@11#3] -- register_copy + //SEG62 [27] phi (byte) plex_free_next#17 = (byte) plex_free_next#13 [phi:loop::@31->loop::@11#4] -- register_copy jmp b11 - //SEG62 loop::@11 + //SEG63 loop::@11 b11: - //SEG63 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG64 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL jmp plexFreeNextYpos1 - //SEG64 loop::plexFreeNextYpos1 + //SEG65 loop::plexFreeNextYpos1 plexFreeNextYpos1: - //SEG65 [29] (byte) loop::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG66 [29] (byte) loop::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) -- vbuz1=pbuc1_derefidx_vbuz2 ldy plex_free_next lda PLEX_FREE_YPOS,y sta plexFreeNextYpos1_return jmp b12 - //SEG66 loop::@12 + //SEG67 loop::@12 b12: - //SEG67 [30] if(*((const byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@12 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG68 [30] if(*((const byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@12 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp plexFreeNextYpos1_return bcc b12 jmp b14 - //SEG68 loop::@14 + //SEG69 loop::@14 b14: - //SEG69 [31] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG70 [31] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG70 [32] call plexShowSprite + //SEG71 [32] call plexShowSprite jsr plexShowSprite jmp b31 - //SEG71 loop::@31 + //SEG72 loop::@31 b31: - //SEG72 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1 + //SEG73 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1 inc ss - //SEG73 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG74 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1 lda ss cmp #PLEX_COUNT-1+1 bne b11_from_b31 jmp b27 - //SEG74 loop::@27 + //SEG75 loop::@27 b27: - //SEG75 [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG76 [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] + //SEG77 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] b1_from_b27: - //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy + //SEG78 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy jmp b1 } -//SEG78 plexShowSprite +//SEG79 plexShowSprite // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { .label plex_sprite_idx2 = 9 .label xpos_idx = $a - //SEG79 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG80 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta plex_sprite_idx2 - //SEG80 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 + //SEG81 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 ldy plex_show_idx lda PLEX_SORTED_IDX,y tay lda PLEX_YPOS,y - //SEG81 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG82 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_YPOS,y jmp plexFreeAdd1 - //SEG82 plexShowSprite::plexFreeAdd1 + //SEG83 plexShowSprite::plexFreeAdd1 plexFreeAdd1: - //SEG83 [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuaa=vbuaa_plus_vbuc1 + //SEG84 [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuaa=vbuaa_plus_vbuc1 clc adc #$15 - //SEG84 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG85 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_free_next sta PLEX_FREE_YPOS,y - //SEG85 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG86 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 lda plex_free_next clc adc #1 - //SEG86 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 + //SEG87 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 sta plex_free_next jmp b7 - //SEG87 plexShowSprite::@7 + //SEG88 plexShowSprite::@7 b7: - //SEG88 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuz1 + //SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuz1 ldy plex_show_idx lda PLEX_SORTED_IDX,y tay lda PLEX_PTR,y sta PLEX_SCREEN_PTR,x - //SEG89 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 + //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 ldy plex_show_idx lda PLEX_SORTED_IDX,y asl sta xpos_idx - //SEG90 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuz1 + //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuz1 ldy xpos_idx lda PLEX_XPOS,y - //SEG91 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG92 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG92 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuz1 + //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuz1 ldy xpos_idx lda PLEX_XPOS+1,y - //SEG93 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 + //SEG94 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 jmp b4 - //SEG94 plexShowSprite::@4 + //SEG95 plexShowSprite::@4 b4: - //SEG95 [49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#44 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG96 [49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#44 -- vbuaa=vbuc1_bxor_vbuz1 lda plex_sprite_msb eor #$ff - //SEG96 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG97 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB jmp b2 - //SEG97 plexShowSprite::@2 + //SEG98 plexShowSprite::@2 b2: - //SEG98 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG99 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuxx_band_vbuc1 + //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuxx_band_vbuc1 txa and #7 tax - //SEG100 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 + //SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG101 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG102 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@8 -- vbuz1_neq_0_then_la1 + //SEG103 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@8 -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne b8_from_b2 - //SEG103 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG104 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] breturn_from_b2: - //SEG104 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG105 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb jmp breturn - //SEG105 plexShowSprite::@return + //SEG106 plexShowSprite::@return breturn: - //SEG106 [57] return + //SEG107 [57] return rts - //SEG107 [58] phi from plexShowSprite::@2 to plexShowSprite::@8 [phi:plexShowSprite::@2->plexShowSprite::@8] + //SEG108 [58] phi from plexShowSprite::@2 to plexShowSprite::@8 [phi:plexShowSprite::@2->plexShowSprite::@8] b8_from_b2: jmp b8 - //SEG108 plexShowSprite::@8 + //SEG109 plexShowSprite::@8 b8: - //SEG109 [56] phi from plexShowSprite::@8 to plexShowSprite::@return [phi:plexShowSprite::@8->plexShowSprite::@return] + //SEG110 [56] phi from plexShowSprite::@8 to plexShowSprite::@return [phi:plexShowSprite::@8->plexShowSprite::@return] breturn_from_b8: - //SEG110 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@8->plexShowSprite::@return#0] -- register_copy + //SEG111 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@8->plexShowSprite::@return#0] -- register_copy jmp breturn - //SEG111 plexShowSprite::@1 + //SEG112 plexShowSprite::@1 b1: - //SEG112 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG113 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG113 plexSort +//SEG114 plexSort // Ensure that the indices in PLEX_SORTED_IDX is sorted based on the y-positions in PLEX_YPOS // Assumes that the positions are nearly sorted already (as each sprite just moves a bit) // Uses an insertion sort: @@ -3633,148 +3637,148 @@ plexSort: { .label nxt_idx = 4 .label nxt_y = 5 .label m = 3 - //SEG114 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG115 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] b1_from_plexSort: - //SEG115 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG116 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m jmp b1 - //SEG116 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG117 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] b1_from_b2: - //SEG117 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG118 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy jmp b1 - //SEG118 plexSort::@1 + //SEG119 plexSort::@1 b1: - //SEG119 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG120 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG120 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG121 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy nxt_idx lda PLEX_YPOS,y sta nxt_y - //SEG121 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG122 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 lda nxt_y ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 jmp b11 - //SEG122 plexSort::@11 + //SEG123 plexSort::@11 b11: - //SEG123 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuxx=vbuz1 + //SEG124 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuxx=vbuz1 ldx m - //SEG124 [66] phi from plexSort::@11 plexSort::@8 to plexSort::@3 [phi:plexSort::@11/plexSort::@8->plexSort::@3] + //SEG125 [66] phi from plexSort::@11 plexSort::@8 to plexSort::@3 [phi:plexSort::@11/plexSort::@8->plexSort::@3] b3_from_b11: b3_from_b8: - //SEG125 [66] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@11/plexSort::@8->plexSort::@3#0] -- register_copy + //SEG126 [66] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@11/plexSort::@8->plexSort::@3#0] -- register_copy jmp b3 - //SEG126 plexSort::@3 + //SEG127 plexSort::@3 b3: - //SEG127 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG128 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PLEX_SORTED_IDX,x sta PLEX_SORTED_IDX+1,x - //SEG128 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuxx=_dec_vbuxx + //SEG129 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuxx=_dec_vbuxx dex - //SEG129 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG130 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b8 jmp b5 - //SEG130 plexSort::@5 + //SEG131 plexSort::@5 b5: - //SEG131 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuxx=_inc_vbuxx + //SEG132 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuxx=_inc_vbuxx inx - //SEG132 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG133 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda nxt_idx sta PLEX_SORTED_IDX,x jmp b2 - //SEG133 plexSort::@2 + //SEG134 plexSort::@2 b2: - //SEG134 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 + //SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 inc m - //SEG135 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 lda m cmp #PLEX_COUNT-2+1 bne b1_from_b2 - //SEG136 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] + //SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] plexFreePrepare1_from_b2: jmp plexFreePrepare1 - //SEG137 plexSort::plexFreePrepare1 + //SEG138 plexSort::plexFreePrepare1 plexFreePrepare1: - //SEG138 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] + //SEG139 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] plexFreePrepare1_b1_from_plexFreePrepare1: - //SEG139 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1 + //SEG140 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1 ldx #0 jmp plexFreePrepare1_b1 - //SEG140 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] + //SEG141 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] plexFreePrepare1_b1_from_plexFreePrepare1_b1: - //SEG141 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy + //SEG142 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy jmp plexFreePrepare1_b1 - //SEG142 plexSort::plexFreePrepare1_@1 + //SEG143 plexSort::plexFreePrepare1_@1 plexFreePrepare1_b1: - //SEG143 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG144 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PLEX_FREE_YPOS,x - //SEG144 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx + //SEG145 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx inx - //SEG145 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG146 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne plexFreePrepare1_b1_from_plexFreePrepare1_b1 jmp breturn - //SEG146 plexSort::@return + //SEG147 plexSort::@return breturn: - //SEG147 [79] return + //SEG148 [79] return rts - //SEG148 plexSort::@8 + //SEG149 plexSort::@8 b8: - //SEG149 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + //SEG150 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 lda nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcc b3_from_b8 jmp b5 } -//SEG150 init +//SEG151 init // Initialize the program init: { .label xp = 7 - //SEG151 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG152 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG152 [82] call plexInit - //SEG153 [96] phi from init to plexInit [phi:init->plexInit] + //SEG153 [82] call plexInit + //SEG154 [96] phi from init to plexInit [phi:init->plexInit] plexInit_from_init: jsr plexInit - //SEG154 [83] phi from init to init::@1 [phi:init->init::@1] + //SEG155 [83] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG155 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG156 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #<$20 sta xp lda #>$20 sta xp+1 - //SEG156 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 + //SEG157 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG157 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG158 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG158 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG159 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG159 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG160 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG160 init::@1 + //SEG161 init::@1 b1: - //SEG161 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG162 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#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 PLEX_PTR,x - //SEG162 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG163 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG163 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG164 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG164 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 + //SEG165 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 clc lda xp adc #<9 @@ -3782,73 +3786,73 @@ init: { lda xp+1 adc #>9 sta xp+1 - //SEG165 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuxx=_inc_vbuxx + //SEG166 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuxx=_inc_vbuxx inx - //SEG166 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG167 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1_from_b1 jmp b3 - //SEG167 init::@3 + //SEG168 init::@3 b3: - //SEG168 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG169 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG169 [91] phi from init::@3 to init::@2 [phi:init::@3->init::@2] + //SEG170 [91] phi from init::@3 to init::@2 [phi:init::@3->init::@2] b2_from_b3: - //SEG170 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 + //SEG171 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG171 [91] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG172 [91] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG172 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG173 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy jmp b2 - //SEG173 init::@2 + //SEG174 init::@2 b2: - //SEG174 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG175 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG175 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuxx=_inc_vbuxx + //SEG176 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuxx=_inc_vbuxx inx - //SEG176 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG177 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp breturn - //SEG177 init::@return + //SEG178 init::@return breturn: - //SEG178 [95] return + //SEG179 [95] return rts } -//SEG179 plexInit +//SEG180 plexInit // Initialize the multiplexer data structures plexInit: { - //SEG180 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + //SEG181 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] plexSetScreen1_from_plexInit: jmp plexSetScreen1 - //SEG181 plexInit::plexSetScreen1 + //SEG182 plexInit::plexSetScreen1 plexSetScreen1: - //SEG182 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG183 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] b1_from_plexSetScreen1: - //SEG183 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 + //SEG184 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG184 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG185 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] b1_from_b1: - //SEG185 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG186 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy jmp b1 - //SEG186 plexInit::@1 + //SEG187 plexInit::@1 b1: - //SEG187 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG188 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta PLEX_SORTED_IDX,x - //SEG188 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuxx=_inc_vbuxx + //SEG189 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuxx=_inc_vbuxx inx - //SEG189 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG190 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1_from_b1 jmp breturn - //SEG190 plexInit::@return + //SEG191 plexInit::@return breturn: - //SEG191 [102] return + //SEG192 [102] return rts } // Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again. @@ -4279,11 +4283,13 @@ reg byte a [ init::$6 ] FINAL ASSEMBLER Score: 63460 -//SEG0 Basic Upstart +//SEG0 File Comments +// A simple usage of the flexible sprite multiplexer routine +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 @@ -4307,250 +4313,250 @@ Score: 63460 .label plex_free_next = 3 .label plex_show_idx = 4 .label plex_sprite_msb = 5 -//SEG2 @begin -//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 @12 to @15 [phi:@12->@15] -//SEG7 @15 -//SEG8 [4] call main -//SEG9 [5] phi from @15 to @end [phi:@15->@end] -//SEG10 @end -//SEG11 main +//SEG3 @begin +//SEG4 @12 +//SEG5 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))) }} +//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] phi from @12 to @15 [phi:@12->@15] +//SEG8 @15 +//SEG9 [4] call main +//SEG10 [5] phi from @15 to @end [phi:@15->@end] +//SEG11 @end +//SEG12 main main: { - //SEG12 asm { sei } + //SEG13 asm { sei } sei - //SEG13 [7] call init + //SEG14 [7] call init jsr init - //SEG14 [8] phi from main to main::@1 [phi:main->main::@1] - //SEG15 main::@1 - //SEG16 [9] call loop - //SEG17 [11] phi from main::@1 to loop [phi:main::@1->loop] + //SEG15 [8] phi from main to main::@1 [phi:main->main::@1] + //SEG16 main::@1 + //SEG17 [9] call loop + //SEG18 [11] phi from main::@1 to loop [phi:main::@1->loop] jsr loop - //SEG18 main::@return - //SEG19 [10] return + //SEG19 main::@return + //SEG20 [10] return rts } -//SEG20 loop +//SEG21 loop // The raster loop loop: { .label sin_idx = 2 .label plexFreeNextYpos1_return = 9 .label ss = 6 - //SEG21 [12] phi from loop to loop::@1 [phi:loop->loop::@1] - //SEG22 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG22 [12] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG23 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx - //SEG23 loop::@1 - //SEG24 loop::@4 + //SEG24 loop::@1 + //SEG25 loop::@4 b4: - //SEG25 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG26 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG26 loop::@6 - //SEG27 [14] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG27 loop::@6 + //SEG28 [14] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG28 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuyy=vbuz1 + //SEG29 [15] (byte~) loop::y_idx#3 ← (byte) loop::sin_idx#6 -- vbuyy=vbuz1 ldy sin_idx - //SEG29 [16] phi from loop::@6 to loop::@7 [phi:loop::@6->loop::@7] - //SEG30 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuxx=vbuc1 + //SEG30 [16] phi from loop::@6 to loop::@7 [phi:loop::@6->loop::@7] + //SEG31 [16] phi (byte) loop::sy#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@6->loop::@7#0] -- vbuxx=vbuc1 ldx #0 - //SEG31 [16] phi (byte) loop::y_idx#2 = (byte~) loop::y_idx#3 [phi:loop::@6->loop::@7#1] -- register_copy - //SEG32 [16] phi from loop::@7 to loop::@7 [phi:loop::@7->loop::@7] - //SEG33 [16] phi (byte) loop::sy#2 = (byte) loop::sy#1 [phi:loop::@7->loop::@7#0] -- register_copy - //SEG34 [16] phi (byte) loop::y_idx#2 = (byte) loop::y_idx#1 [phi:loop::@7->loop::@7#1] -- register_copy - //SEG35 loop::@7 + //SEG32 [16] phi (byte) loop::y_idx#2 = (byte~) loop::y_idx#3 [phi:loop::@6->loop::@7#1] -- register_copy + //SEG33 [16] phi from loop::@7 to loop::@7 [phi:loop::@7->loop::@7] + //SEG34 [16] phi (byte) loop::sy#2 = (byte) loop::sy#1 [phi:loop::@7->loop::@7#0] -- register_copy + //SEG35 [16] phi (byte) loop::y_idx#2 = (byte) loop::y_idx#1 [phi:loop::@7->loop::@7#1] -- register_copy + //SEG36 loop::@7 b7: - //SEG36 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG37 [17] *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((const byte*) YSIN#0 + (byte) loop::y_idx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda YSIN,y sta PLEX_YPOS,x - //SEG37 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuyy=vbuyy_plus_vbuc1 + //SEG38 [18] (byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuyy=vbuyy_plus_vbuc1 tya clc adc #8 tay - //SEG38 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuxx=_inc_vbuxx + //SEG39 [19] (byte) loop::sy#1 ← ++ (byte) loop::sy#2 -- vbuxx=_inc_vbuxx inx - //SEG39 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuxx_neq_vbuc1_then_la1 + //SEG40 [20] if((byte) loop::sy#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@7 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b7 - //SEG40 loop::@20 - //SEG41 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG41 loop::@20 + //SEG42 [21] (byte) loop::sin_idx#1 ← (byte) loop::sin_idx#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc sin_idx - //SEG42 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG43 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG43 [23] call plexSort - //SEG44 [60] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] + //SEG44 [23] call plexSort + //SEG45 [60] phi from loop::@20 to plexSort [phi:loop::@20->plexSort] jsr plexSort - //SEG45 loop::@30 - //SEG46 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG46 loop::@30 + //SEG47 [24] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG47 loop::@8 + //SEG48 loop::@8 b8: - //SEG48 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuaa=_deref_pbuc1_band_vbuc2 + //SEG49 [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_RST8#0 -- vbuaa=_deref_pbuc1_band_vbuc2 lda D011 and #VIC_RST8 - //SEG49 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuaa_neq_0_then_la1 + //SEG50 [26] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@8 -- vbuaa_neq_0_then_la1 cmp #0 bne b8 - //SEG50 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] - //SEG51 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 + //SEG51 [27] phi from loop::@8 to loop::@11 [phi:loop::@8->loop::@11] + //SEG52 [27] phi (byte) loop::ss#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#0] -- vbuz1=vbuc1 lda #0 sta ss - //SEG52 [27] phi (byte) plex_sprite_msb#44 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 + //SEG53 [27] phi (byte) plex_sprite_msb#44 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:loop::@8->loop::@11#1] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG53 [27] phi (byte) plex_show_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 + //SEG54 [27] phi (byte) plex_show_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 lda #0 sta plex_show_idx - //SEG54 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuxx=vbuc1 + //SEG55 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuxx=vbuc1 tax - //SEG55 [27] phi (byte) plex_free_next#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#4] -- vbuz1=vbuc1 + //SEG56 [27] phi (byte) plex_free_next#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#4] -- vbuz1=vbuc1 sta plex_free_next - //SEG56 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] - //SEG57 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy - //SEG58 [27] phi (byte) plex_sprite_msb#44 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy - //SEG59 [27] phi (byte) plex_show_idx#44 = (byte) plex_show_idx#15 [phi:loop::@31->loop::@11#2] -- register_copy - //SEG60 [27] phi (byte) plex_sprite_idx#44 = (byte) plex_sprite_idx#15 [phi:loop::@31->loop::@11#3] -- register_copy - //SEG61 [27] phi (byte) plex_free_next#17 = (byte) plex_free_next#13 [phi:loop::@31->loop::@11#4] -- register_copy - //SEG62 loop::@11 + //SEG57 [27] phi from loop::@31 to loop::@11 [phi:loop::@31->loop::@11] + //SEG58 [27] phi (byte) loop::ss#6 = (byte) loop::ss#1 [phi:loop::@31->loop::@11#0] -- register_copy + //SEG59 [27] phi (byte) plex_sprite_msb#44 = (byte) plex_sprite_msb#16 [phi:loop::@31->loop::@11#1] -- register_copy + //SEG60 [27] phi (byte) plex_show_idx#44 = (byte) plex_show_idx#15 [phi:loop::@31->loop::@11#2] -- register_copy + //SEG61 [27] phi (byte) plex_sprite_idx#44 = (byte) plex_sprite_idx#15 [phi:loop::@31->loop::@11#3] -- register_copy + //SEG62 [27] phi (byte) plex_free_next#17 = (byte) plex_free_next#13 [phi:loop::@31->loop::@11#4] -- register_copy + //SEG63 loop::@11 b11: - //SEG63 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG64 [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG64 loop::plexFreeNextYpos1 - //SEG65 [29] (byte) loop::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG65 loop::plexFreeNextYpos1 + //SEG66 [29] (byte) loop::plexFreeNextYpos1_return#0 ← *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) -- vbuz1=pbuc1_derefidx_vbuz2 ldy plex_free_next lda PLEX_FREE_YPOS,y sta plexFreeNextYpos1_return - //SEG66 loop::@12 + //SEG67 loop::@12 b12: - //SEG67 [30] if(*((const byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@12 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG68 [30] if(*((const byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@12 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp plexFreeNextYpos1_return bcc b12 - //SEG68 loop::@14 - //SEG69 [31] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG69 loop::@14 + //SEG70 [31] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG70 [32] call plexShowSprite + //SEG71 [32] call plexShowSprite jsr plexShowSprite - //SEG71 loop::@31 - //SEG72 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1 + //SEG72 loop::@31 + //SEG73 [33] (byte) loop::ss#1 ← ++ (byte) loop::ss#6 -- vbuz1=_inc_vbuz1 inc ss - //SEG73 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG74 [34] if((byte) loop::ss#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto loop::@11 -- vbuz1_neq_vbuc1_then_la1 lda ss cmp #PLEX_COUNT-1+1 bne b11 - //SEG74 loop::@27 - //SEG75 [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG75 loop::@27 + //SEG76 [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG76 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] - //SEG77 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy + //SEG77 [12] phi from loop::@27 to loop::@1 [phi:loop::@27->loop::@1] + //SEG78 [12] phi (byte) loop::sin_idx#6 = (byte) loop::sin_idx#1 [phi:loop::@27->loop::@1#0] -- register_copy jmp b4 } -//SEG78 plexShowSprite +//SEG79 plexShowSprite // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { .label plex_sprite_idx2 = 9 .label xpos_idx = $a - //SEG79 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG80 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta plex_sprite_idx2 - //SEG80 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 + //SEG81 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 ldy plex_show_idx lda PLEX_SORTED_IDX,y tay lda PLEX_YPOS,y - //SEG81 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG82 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_YPOS,y - //SEG82 plexShowSprite::plexFreeAdd1 - //SEG83 [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuaa=vbuaa_plus_vbuc1 + //SEG83 plexShowSprite::plexFreeAdd1 + //SEG84 [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuaa=vbuaa_plus_vbuc1 clc adc #$15 - //SEG84 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG85 [40] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17) ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_free_next sta PLEX_FREE_YPOS,y - //SEG85 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG86 [41] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 ← (byte) plex_free_next#17 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 tya clc adc #1 - //SEG86 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 + //SEG87 [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 sta plex_free_next - //SEG87 plexShowSprite::@7 - //SEG88 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuz1 + //SEG88 plexShowSprite::@7 + //SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuz1 ldy plex_show_idx lda PLEX_SORTED_IDX,y tay lda PLEX_PTR,y sta PLEX_SCREEN_PTR,x - //SEG89 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 + //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 ldy plex_show_idx lda PLEX_SORTED_IDX,y asl sta xpos_idx - //SEG90 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuz1 + //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuz1 tay lda PLEX_XPOS,y - //SEG91 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG92 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG92 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuz1 + //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuz1 ldy xpos_idx lda PLEX_XPOS+1,y - //SEG93 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 + //SEG94 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 - //SEG94 plexShowSprite::@4 - //SEG95 [49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#44 -- vbuaa=vbuc1_bxor_vbuz1 + //SEG95 plexShowSprite::@4 + //SEG96 [49] (byte/word/dword~) plexShowSprite::$6 ← (byte/word/signed word/dword/signed dword) 255 ^ (byte) plex_sprite_msb#44 -- vbuaa=vbuc1_bxor_vbuz1 lda plex_sprite_msb eor #$ff - //SEG96 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG97 [50] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) plexShowSprite::$6 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB - //SEG97 plexShowSprite::@2 + //SEG98 plexShowSprite::@2 b2: - //SEG98 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG99 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuxx_band_vbuc1 + //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuxx_band_vbuc1 txa and #7 tax - //SEG100 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 + //SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 inc plex_show_idx - //SEG101 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl plex_sprite_msb - //SEG102 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@8 -- vbuz1_neq_0_then_la1 + //SEG103 [55] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@8 -- vbuz1_neq_0_then_la1 lda plex_sprite_msb cmp #0 bne breturn - //SEG103 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] - //SEG104 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 + //SEG104 [56] phi from plexShowSprite::@2 to plexShowSprite::@return [phi:plexShowSprite::@2->plexShowSprite::@return] + //SEG105 [56] phi (byte) plex_sprite_msb#16 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:plexShowSprite::@2->plexShowSprite::@return#0] -- vbuz1=vbuc1 lda #1 sta plex_sprite_msb - //SEG105 plexShowSprite::@return + //SEG106 plexShowSprite::@return breturn: - //SEG106 [57] return + //SEG107 [57] return rts - //SEG107 [58] phi from plexShowSprite::@2 to plexShowSprite::@8 [phi:plexShowSprite::@2->plexShowSprite::@8] - //SEG108 plexShowSprite::@8 - //SEG109 [56] phi from plexShowSprite::@8 to plexShowSprite::@return [phi:plexShowSprite::@8->plexShowSprite::@return] - //SEG110 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@8->plexShowSprite::@return#0] -- register_copy - //SEG111 plexShowSprite::@1 + //SEG108 [58] phi from plexShowSprite::@2 to plexShowSprite::@8 [phi:plexShowSprite::@2->plexShowSprite::@8] + //SEG109 plexShowSprite::@8 + //SEG110 [56] phi from plexShowSprite::@8 to plexShowSprite::@return [phi:plexShowSprite::@8->plexShowSprite::@return] + //SEG111 [56] phi (byte) plex_sprite_msb#16 = (byte) plex_sprite_msb#25 [phi:plexShowSprite::@8->plexShowSprite::@return#0] -- register_copy + //SEG112 plexShowSprite::@1 b1: - //SEG112 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG113 [59] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) plex_sprite_msb#44 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora plex_sprite_msb sta SPRITES_XMSB jmp b2 } -//SEG113 plexSort +//SEG114 plexSort // Ensure that the indices in PLEX_SORTED_IDX is sorted based on the y-positions in PLEX_YPOS // Assumes that the positions are nearly sorted already (as each sprite just moves a bit) // Uses an insertion sort: @@ -4564,121 +4570,121 @@ plexSort: { .label nxt_idx = 4 .label nxt_y = 5 .label m = 3 - //SEG114 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] - //SEG115 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 + //SEG115 [61] phi from plexSort to plexSort::@1 [phi:plexSort->plexSort::@1] + //SEG116 [61] phi (byte) plexSort::m#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort->plexSort::@1#0] -- vbuz1=vbuc1 lda #0 sta m - //SEG116 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] - //SEG117 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy - //SEG118 plexSort::@1 + //SEG117 [61] phi from plexSort::@2 to plexSort::@1 [phi:plexSort::@2->plexSort::@1] + //SEG118 [61] phi (byte) plexSort::m#2 = (byte) plexSort::m#1 [phi:plexSort::@2->plexSort::@1#0] -- register_copy + //SEG119 plexSort::@1 b1: - //SEG119 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG120 [62] (byte) plexSort::nxt_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::m#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy m lda PLEX_SORTED_IDX+1,y sta nxt_idx - //SEG120 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG121 [63] (byte) plexSort::nxt_y#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) plexSort::nxt_idx#0) -- vbuz1=pbuc1_derefidx_vbuz2 tay lda PLEX_YPOS,y sta nxt_y - //SEG121 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + //SEG122 [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 ldx m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcs b2 - //SEG122 plexSort::@11 - //SEG123 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuxx=vbuz1 - //SEG124 [66] phi from plexSort::@11 plexSort::@8 to plexSort::@3 [phi:plexSort::@11/plexSort::@8->plexSort::@3] - //SEG125 [66] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@11/plexSort::@8->plexSort::@3#0] -- register_copy - //SEG126 plexSort::@3 + //SEG123 plexSort::@11 + //SEG124 [65] (byte~) plexSort::s#6 ← (byte) plexSort::m#2 -- vbuxx=vbuz1 + //SEG125 [66] phi from plexSort::@11 plexSort::@8 to plexSort::@3 [phi:plexSort::@11/plexSort::@8->plexSort::@3] + //SEG126 [66] phi (byte) plexSort::s#3 = (byte~) plexSort::s#6 [phi:plexSort::@11/plexSort::@8->plexSort::@3#0] -- register_copy + //SEG127 plexSort::@3 b3: - //SEG127 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG128 [67] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) plexSort::s#3) ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda PLEX_SORTED_IDX,x sta PLEX_SORTED_IDX+1,x - //SEG128 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuxx=_dec_vbuxx + //SEG129 [68] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3 -- vbuxx=_dec_vbuxx dex - //SEG129 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG130 [69] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) 255) goto plexSort::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b8 - //SEG130 plexSort::@5 + //SEG131 plexSort::@5 b5: - //SEG131 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuxx=_inc_vbuxx + //SEG132 [70] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1 -- vbuxx=_inc_vbuxx inx - //SEG132 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG133 [71] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda nxt_idx sta PLEX_SORTED_IDX,x - //SEG133 plexSort::@2 + //SEG134 plexSort::@2 b2: - //SEG134 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 + //SEG135 [72] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2 -- vbuz1=_inc_vbuz1 inc m - //SEG135 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG136 [73] if((byte) plexSort::m#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexSort::@1 -- vbuz1_neq_vbuc1_then_la1 lda m cmp #PLEX_COUNT-2+1 bne b1 - //SEG136 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] - //SEG137 plexSort::plexFreePrepare1 - //SEG138 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] - //SEG139 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1 + //SEG137 [74] phi from plexSort::@2 to plexSort::plexFreePrepare1 [phi:plexSort::@2->plexSort::plexFreePrepare1] + //SEG138 plexSort::plexFreePrepare1 + //SEG139 [75] phi from plexSort::plexFreePrepare1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1] + //SEG140 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexSort::plexFreePrepare1->plexSort::plexFreePrepare1_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG140 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] - //SEG141 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy - //SEG142 plexSort::plexFreePrepare1_@1 + //SEG141 [75] phi from plexSort::plexFreePrepare1_@1 to plexSort::plexFreePrepare1_@1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1] + //SEG142 [75] phi (byte) plexSort::plexFreePrepare1_s#2 = (byte) plexSort::plexFreePrepare1_s#1 [phi:plexSort::plexFreePrepare1_@1->plexSort::plexFreePrepare1_@1#0] -- register_copy + //SEG143 plexSort::plexFreePrepare1_@1 plexFreePrepare1_b1: - //SEG143 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG144 [76] *((const byte[8]) PLEX_FREE_YPOS#0 + (byte) plexSort::plexFreePrepare1_s#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta PLEX_FREE_YPOS,x - //SEG144 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx + //SEG145 [77] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2 -- vbuxx=_inc_vbuxx inx - //SEG145 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG146 [78] if((byte) plexSort::plexFreePrepare1_s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto plexSort::plexFreePrepare1_@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne plexFreePrepare1_b1 - //SEG146 plexSort::@return - //SEG147 [79] return + //SEG147 plexSort::@return + //SEG148 [79] return rts - //SEG148 plexSort::@8 + //SEG149 plexSort::@8 b8: - //SEG149 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + //SEG150 [80] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 lda nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y bcc b3 jmp b5 } -//SEG150 init +//SEG151 init // Initialize the program init: { .label xp = 7 - //SEG151 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG152 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 - //SEG152 [82] call plexInit - //SEG153 [96] phi from init to plexInit [phi:init->plexInit] + //SEG153 [82] call plexInit + //SEG154 [96] phi from init to plexInit [phi:init->plexInit] jsr plexInit - //SEG154 [83] phi from init to init::@1 [phi:init->init::@1] - //SEG155 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 + //SEG155 [83] phi from init to init::@1 [phi:init->init::@1] + //SEG156 [83] phi (word) init::xp#2 = (byte/signed byte/word/signed word/dword/signed dword) 32 [phi:init->init::@1#0] -- vwuz1=vbuc1 lda #<$20 sta xp lda #>$20 sta xp+1 - //SEG156 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 + //SEG157 [83] phi (byte) init::sx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG157 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG158 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG159 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy - //SEG160 init::@1 + //SEG158 [83] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG159 [83] phi (word) init::xp#2 = (word) init::xp#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG160 [83] phi (byte) init::sx#2 = (byte) init::sx#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG161 init::@1 b1: - //SEG161 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG162 [84] *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#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 PLEX_PTR,x - //SEG162 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG163 [85] (byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG163 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 + //SEG164 [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← (word) init::xp#2 -- pwuc1_derefidx_vbuaa=vwuz1 tay lda xp sta PLEX_XPOS,y lda xp+1 sta PLEX_XPOS+1,y - //SEG164 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 + //SEG165 [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 -- vwuz1=vwuz1_plus_vbuc1 clc lda xp adc #<9 @@ -4686,56 +4692,56 @@ init: { lda xp+1 adc #>9 sta xp+1 - //SEG165 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuxx=_inc_vbuxx + //SEG166 [88] (byte) init::sx#1 ← ++ (byte) init::sx#2 -- vbuxx=_inc_vbuxx inx - //SEG166 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG167 [89] if((byte) init::sx#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1 - //SEG167 init::@3 - //SEG168 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG168 init::@3 + //SEG169 [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG169 [91] phi from init::@3 to init::@2 [phi:init::@3->init::@2] - //SEG170 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 + //SEG170 [91] phi from init::@3 to init::@2 [phi:init::@3->init::@2] + //SEG171 [91] phi (byte) init::ss#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG171 [91] phi from init::@2 to init::@2 [phi:init::@2->init::@2] - //SEG172 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG173 init::@2 + //SEG172 [91] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG173 [91] phi (byte) init::ss#2 = (byte) init::ss#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG174 init::@2 b2: - //SEG174 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG175 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG175 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuxx=_inc_vbuxx + //SEG176 [93] (byte) init::ss#1 ← ++ (byte) init::ss#2 -- vbuxx=_inc_vbuxx inx - //SEG176 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG177 [94] if((byte) init::ss#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG177 init::@return - //SEG178 [95] return + //SEG178 init::@return + //SEG179 [95] return rts } -//SEG179 plexInit +//SEG180 plexInit // Initialize the multiplexer data structures plexInit: { - //SEG180 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] - //SEG181 plexInit::plexSetScreen1 - //SEG182 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] - //SEG183 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 + //SEG181 [97] phi from plexInit to plexInit::plexSetScreen1 [phi:plexInit->plexInit::plexSetScreen1] + //SEG182 plexInit::plexSetScreen1 + //SEG183 [98] phi from plexInit::plexSetScreen1 to plexInit::@1 [phi:plexInit::plexSetScreen1->plexInit::@1] + //SEG184 [98] phi (byte) plexInit::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plexInit::plexSetScreen1->plexInit::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG184 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] - //SEG185 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy - //SEG186 plexInit::@1 + //SEG185 [98] phi from plexInit::@1 to plexInit::@1 [phi:plexInit::@1->plexInit::@1] + //SEG186 [98] phi (byte) plexInit::i#2 = (byte) plexInit::i#1 [phi:plexInit::@1->plexInit::@1#0] -- register_copy + //SEG187 plexInit::@1 b1: - //SEG187 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG188 [99] *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexInit::i#2) ← (byte) plexInit::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta PLEX_SORTED_IDX,x - //SEG188 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuxx=_inc_vbuxx + //SEG189 [100] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2 -- vbuxx=_inc_vbuxx inx - //SEG189 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG190 [101] if((byte) plexInit::i#1!=(const byte) PLEX_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto plexInit::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLEX_COUNT-1+1 bne b1 - //SEG190 plexInit::@return - //SEG191 [102] return + //SEG191 plexInit::@return + //SEG192 [102] return rts } // Contains the Y-position where each sprite is free again. PLEX_FREE_YPOS[s] holds the Y-position where sprite s is free to use again. diff --git a/src/test/ref/examples/rasterbars/raster-bars.log b/src/test/ref/examples/rasterbars/raster-bars.log index 4417522a5..2f92581be 100644 --- a/src/test/ref/examples/rasterbars/raster-bars.log +++ b/src/test/ref/examples/rasterbars/raster-bars.log @@ -587,60 +587,61 @@ Allocated zp ZP_BYTE:2 [ raster::col#2 raster::col#0 raster::col#1 ] Allocated zp ZP_BYTE:3 [ raster::i#2 raster::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG12 [5] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$a bne b2 jmp b3 - //SEG12 main::@3 + //SEG13 main::@3 b3: - //SEG13 [6] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG14 [6] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$b bne b3 - //SEG14 [7] phi from main::@3 to main::@5 [phi:main::@3->main::@5] + //SEG15 [7] phi from main::@3 to main::@5 [phi:main::@3->main::@5] b5_from_b3: jmp b5 - //SEG15 main::@5 + //SEG16 main::@5 b5: - //SEG16 [8] call raster + //SEG17 [8] call raster jsr raster jmp b2 } -//SEG17 raster +//SEG18 raster raster: { .label col = 2 .label i = 3 - //SEG18 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG19 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -660,36 +661,36 @@ raster: { nop nop nop - //SEG19 [10] (byte) raster::col#0 ← *((const byte[]) rastercols#0) -- vbuz1=_deref_pbuc1 + //SEG20 [10] (byte) raster::col#0 ← *((const byte[]) rastercols#0) -- vbuz1=_deref_pbuc1 lda rastercols sta col - //SEG20 [11] phi from raster to raster::@1 [phi:raster->raster::@1] + //SEG21 [11] phi from raster to raster::@1 [phi:raster->raster::@1] b1_from_raster: - //SEG21 [11] phi (byte) raster::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:raster->raster::@1#0] -- vbuz1=vbuc1 + //SEG22 [11] phi (byte) raster::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:raster->raster::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG22 [11] phi (byte) raster::col#2 = (byte) raster::col#0 [phi:raster->raster::@1#1] -- register_copy + //SEG23 [11] phi (byte) raster::col#2 = (byte) raster::col#0 [phi:raster->raster::@1#1] -- register_copy jmp b1 - //SEG23 [11] phi from raster::@1 to raster::@1 [phi:raster::@1->raster::@1] + //SEG24 [11] phi from raster::@1 to raster::@1 [phi:raster::@1->raster::@1] b1_from_b1: - //SEG24 [11] phi (byte) raster::i#2 = (byte) raster::i#1 [phi:raster::@1->raster::@1#0] -- register_copy - //SEG25 [11] phi (byte) raster::col#2 = (byte) raster::col#1 [phi:raster::@1->raster::@1#1] -- register_copy + //SEG25 [11] phi (byte) raster::i#2 = (byte) raster::i#1 [phi:raster::@1->raster::@1#0] -- register_copy + //SEG26 [11] phi (byte) raster::col#2 = (byte) raster::col#1 [phi:raster::@1->raster::@1#1] -- register_copy jmp b1 - //SEG26 raster::@1 + //SEG27 raster::@1 b1: - //SEG27 [12] *((const byte*) BGCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuz1 + //SEG28 [12] *((const byte*) BGCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuz1 lda col sta BGCOL - //SEG28 [13] *((const byte*) BORDERCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuz1 + //SEG29 [13] *((const byte*) BORDERCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuz1 lda col sta BORDERCOL - //SEG29 [14] (byte) raster::i#1 ← ++ (byte) raster::i#2 -- vbuz1=_inc_vbuz1 + //SEG30 [14] (byte) raster::i#1 ← ++ (byte) raster::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG30 [15] (byte) raster::col#1 ← *((const byte[]) rastercols#0 + (byte) raster::i#1) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG31 [15] (byte) raster::col#1 ← *((const byte[]) rastercols#0 + (byte) raster::i#1) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda rastercols,y sta col - //SEG31 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG32 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -712,14 +713,14 @@ raster: { nop nop nop - //SEG32 [17] if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) 255) goto raster::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG33 [17] if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) 255) goto raster::@1 -- vbuz1_neq_vbuc1_then_la1 lda col cmp #$ff bne b1_from_b1 jmp breturn - //SEG33 raster::@return + //SEG34 raster::@return breturn: - //SEG34 [18] return + //SEG35 [18] return rts } 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 @@ -740,58 +741,59 @@ Uplifting [main] best 9585 combination Uplifting [] best 9585 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG12 [5] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$a bne b2 jmp b3 - //SEG12 main::@3 + //SEG13 main::@3 b3: - //SEG13 [6] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG14 [6] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$b bne b3 - //SEG14 [7] phi from main::@3 to main::@5 [phi:main::@3->main::@5] + //SEG15 [7] phi from main::@3 to main::@5 [phi:main::@3->main::@5] b5_from_b3: jmp b5 - //SEG15 main::@5 + //SEG16 main::@5 b5: - //SEG16 [8] call raster + //SEG17 [8] call raster jsr raster jmp b2 } -//SEG17 raster +//SEG18 raster raster: { - //SEG18 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG19 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -811,30 +813,30 @@ raster: { nop nop nop - //SEG19 [10] (byte) raster::col#0 ← *((const byte[]) rastercols#0) -- vbuaa=_deref_pbuc1 + //SEG20 [10] (byte) raster::col#0 ← *((const byte[]) rastercols#0) -- vbuaa=_deref_pbuc1 lda rastercols - //SEG20 [11] phi from raster to raster::@1 [phi:raster->raster::@1] + //SEG21 [11] phi from raster to raster::@1 [phi:raster->raster::@1] b1_from_raster: - //SEG21 [11] phi (byte) raster::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:raster->raster::@1#0] -- vbuxx=vbuc1 + //SEG22 [11] phi (byte) raster::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:raster->raster::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG22 [11] phi (byte) raster::col#2 = (byte) raster::col#0 [phi:raster->raster::@1#1] -- register_copy + //SEG23 [11] phi (byte) raster::col#2 = (byte) raster::col#0 [phi:raster->raster::@1#1] -- register_copy jmp b1 - //SEG23 [11] phi from raster::@1 to raster::@1 [phi:raster::@1->raster::@1] + //SEG24 [11] phi from raster::@1 to raster::@1 [phi:raster::@1->raster::@1] b1_from_b1: - //SEG24 [11] phi (byte) raster::i#2 = (byte) raster::i#1 [phi:raster::@1->raster::@1#0] -- register_copy - //SEG25 [11] phi (byte) raster::col#2 = (byte) raster::col#1 [phi:raster::@1->raster::@1#1] -- register_copy + //SEG25 [11] phi (byte) raster::i#2 = (byte) raster::i#1 [phi:raster::@1->raster::@1#0] -- register_copy + //SEG26 [11] phi (byte) raster::col#2 = (byte) raster::col#1 [phi:raster::@1->raster::@1#1] -- register_copy jmp b1 - //SEG26 raster::@1 + //SEG27 raster::@1 b1: - //SEG27 [12] *((const byte*) BGCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuaa + //SEG28 [12] *((const byte*) BGCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuaa sta BGCOL - //SEG28 [13] *((const byte*) BORDERCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuaa + //SEG29 [13] *((const byte*) BORDERCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuaa sta BORDERCOL - //SEG29 [14] (byte) raster::i#1 ← ++ (byte) raster::i#2 -- vbuxx=_inc_vbuxx + //SEG30 [14] (byte) raster::i#1 ← ++ (byte) raster::i#2 -- vbuxx=_inc_vbuxx inx - //SEG30 [15] (byte) raster::col#1 ← *((const byte[]) rastercols#0 + (byte) raster::i#1) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG31 [15] (byte) raster::col#1 ← *((const byte[]) rastercols#0 + (byte) raster::i#1) -- vbuaa=pbuc1_derefidx_vbuxx lda rastercols,x - //SEG31 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG32 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -857,13 +859,13 @@ raster: { nop nop nop - //SEG32 [17] if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) 255) goto raster::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG33 [17] if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) 255) goto raster::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #$ff bne b1_from_b1 jmp breturn - //SEG33 raster::@return + //SEG34 raster::@return breturn: - //SEG34 [18] return + //SEG35 [18] return rts } 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 @@ -1007,45 +1009,46 @@ reg byte x [ raster::i#2 raster::i#1 ] FINAL ASSEMBLER Score: 8340 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 -//SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 -//SEG5 [2] call main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG5 @6 +//SEG6 [2] call main +//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG12 [5] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$a bne b2 - //SEG12 main::@3 + //SEG13 main::@3 b3: - //SEG13 [6] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG14 [6] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$b bne b3 - //SEG14 [7] phi from main::@3 to main::@5 [phi:main::@3->main::@5] - //SEG15 main::@5 - //SEG16 [8] call raster + //SEG15 [7] phi from main::@3 to main::@5 [phi:main::@3->main::@5] + //SEG16 main::@5 + //SEG17 [8] call raster jsr raster jmp b2 } -//SEG17 raster +//SEG18 raster raster: { - //SEG18 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG19 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1065,26 +1068,26 @@ raster: { nop nop nop - //SEG19 [10] (byte) raster::col#0 ← *((const byte[]) rastercols#0) -- vbuaa=_deref_pbuc1 + //SEG20 [10] (byte) raster::col#0 ← *((const byte[]) rastercols#0) -- vbuaa=_deref_pbuc1 lda rastercols - //SEG20 [11] phi from raster to raster::@1 [phi:raster->raster::@1] - //SEG21 [11] phi (byte) raster::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:raster->raster::@1#0] -- vbuxx=vbuc1 + //SEG21 [11] phi from raster to raster::@1 [phi:raster->raster::@1] + //SEG22 [11] phi (byte) raster::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:raster->raster::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG22 [11] phi (byte) raster::col#2 = (byte) raster::col#0 [phi:raster->raster::@1#1] -- register_copy - //SEG23 [11] phi from raster::@1 to raster::@1 [phi:raster::@1->raster::@1] - //SEG24 [11] phi (byte) raster::i#2 = (byte) raster::i#1 [phi:raster::@1->raster::@1#0] -- register_copy - //SEG25 [11] phi (byte) raster::col#2 = (byte) raster::col#1 [phi:raster::@1->raster::@1#1] -- register_copy - //SEG26 raster::@1 + //SEG23 [11] phi (byte) raster::col#2 = (byte) raster::col#0 [phi:raster->raster::@1#1] -- register_copy + //SEG24 [11] phi from raster::@1 to raster::@1 [phi:raster::@1->raster::@1] + //SEG25 [11] phi (byte) raster::i#2 = (byte) raster::i#1 [phi:raster::@1->raster::@1#0] -- register_copy + //SEG26 [11] phi (byte) raster::col#2 = (byte) raster::col#1 [phi:raster::@1->raster::@1#1] -- register_copy + //SEG27 raster::@1 b1: - //SEG27 [12] *((const byte*) BGCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuaa + //SEG28 [12] *((const byte*) BGCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuaa sta BGCOL - //SEG28 [13] *((const byte*) BORDERCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuaa + //SEG29 [13] *((const byte*) BORDERCOL#0) ← (byte) raster::col#2 -- _deref_pbuc1=vbuaa sta BORDERCOL - //SEG29 [14] (byte) raster::i#1 ← ++ (byte) raster::i#2 -- vbuxx=_inc_vbuxx + //SEG30 [14] (byte) raster::i#1 ← ++ (byte) raster::i#2 -- vbuxx=_inc_vbuxx inx - //SEG30 [15] (byte) raster::col#1 ← *((const byte[]) rastercols#0 + (byte) raster::i#1) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG31 [15] (byte) raster::col#1 ← *((const byte[]) rastercols#0 + (byte) raster::i#1) -- vbuaa=pbuc1_derefidx_vbuxx lda rastercols,x - //SEG31 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG32 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1107,11 +1110,11 @@ raster: { nop nop nop - //SEG32 [17] if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) 255) goto raster::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG33 [17] if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) 255) goto raster::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #$ff bne b1 - //SEG33 raster::@return - //SEG34 [18] return + //SEG34 raster::@return + //SEG35 [18] return rts } 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 diff --git a/src/test/ref/examples/rotate/rotate.asm b/src/test/ref/examples/rotate/rotate.asm index 8d3869fb5..c72c4331c 100644 --- a/src/test/ref/examples/rotate/rotate.asm +++ b/src/test/ref/examples/rotate/rotate.asm @@ -1,3 +1,4 @@ +// 2D rotattion of 8 sprites .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" @@ -324,9 +325,6 @@ mulf_init: { sta mulf_sqr2_hi+$1ff rts } - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // round(min+(ampl/2)+(ampl/2)*cos(rad)) } } }} +//SEG5 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 b16 -//SEG5 @16 +//SEG6 @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 +//SEG7 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) }} +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @16 to @end [phi:@16->@end] +//SEG9 [4] phi from @16 to @end [phi:@16->@end] bend_from_b16: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] call init - //SEG13 [87] phi from main to init [phi:main->init] + //SEG13 [6] call init + //SEG14 [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] + //SEG15 [7] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [8] call anim - //SEG17 [10] phi from main::@1 to anim [phi:main::@1->anim] + //SEG17 [8] call anim + //SEG18 [10] phi from main::@1 to anim [phi:main::@1->anim] anim_from_b1: jsr anim jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } -//SEG20 anim +//SEG21 anim anim: { .label _4 = $1c .label _6 = $22 @@ -2355,115 +2357,115 @@ anim: { .label i2 = $3d .label i = 3 .label angle = 2 - //SEG21 [11] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG22 [11] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG22 [11] phi (byte) anim::angle#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 + //SEG23 [11] phi (byte) anim::angle#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 lda #0 sta angle jmp b1 - //SEG23 anim::@1 + //SEG24 anim::@1 b1: jmp b4 - //SEG24 anim::@4 + //SEG25 anim::@4 b4: - //SEG25 [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG26 [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b6 - //SEG26 anim::@6 + //SEG27 anim::@6 b6: - //SEG27 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG28 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG28 [14] phi from anim::@6 to anim::@7 [phi:anim::@6->anim::@7] + //SEG29 [14] phi from anim::@6 to anim::@7 [phi:anim::@6->anim::@7] b7_from_b6: - //SEG29 [14] phi (byte) anim::sprite_msb#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#0] -- vbuz1=vbuc1 + //SEG30 [14] phi (byte) anim::sprite_msb#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#0] -- vbuz1=vbuc1 lda #0 sta sprite_msb - //SEG30 [14] phi (byte) anim::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#1] -- vbuz1=vbuc1 + //SEG31 [14] phi (byte) anim::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#1] -- vbuz1=vbuc1 lda #0 sta i jmp b7 - //SEG31 [14] phi from anim::@8 to anim::@7 [phi:anim::@8->anim::@7] + //SEG32 [14] phi from anim::@8 to anim::@7 [phi:anim::@8->anim::@7] b7_from_b8: - //SEG32 [14] phi (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#5 [phi:anim::@8->anim::@7#0] -- register_copy - //SEG33 [14] phi (byte) anim::i#10 = (byte) anim::i#1 [phi:anim::@8->anim::@7#1] -- register_copy + //SEG33 [14] phi (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#5 [phi:anim::@8->anim::@7#0] -- register_copy + //SEG34 [14] phi (byte) anim::i#10 = (byte) anim::i#1 [phi:anim::@8->anim::@7#1] -- register_copy jmp b7 - //SEG34 anim::@7 + //SEG35 anim::@7 b7: - //SEG35 [15] (signed byte) anim::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG36 [15] (signed byte) anim::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta x - //SEG36 [16] (signed byte) anim::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG37 [16] (signed byte) anim::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda ys,y sta y jmp mulf8s_prepare1 - //SEG37 anim::mulf8s_prepare1 + //SEG38 anim::mulf8s_prepare1 mulf8s_prepare1: - //SEG38 [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) -- vbuz1=pbsc1_derefidx_vbuz2 + //SEG39 [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) -- vbuz1=pbsc1_derefidx_vbuz2 ldy angle lda COS,y sta mulf8u_prepare.a - //SEG39 [18] call mulf8u_prepare - //SEG40 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG40 [18] call mulf8u_prepare + //SEG41 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG41 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG42 [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 + //SEG43 anim::@17 b17: - //SEG43 [19] (signed byte) mulf8s_prepared::b#0 ← (signed byte) anim::x#0 -- vbsz1=vbsz2 + //SEG44 [19] (signed byte) mulf8s_prepared::b#0 ← (signed byte) anim::x#0 -- vbsz1=vbsz2 lda x sta mulf8s_prepared.b - //SEG44 [20] call mulf8s_prepared - //SEG45 [62] phi from anim::@17 to mulf8s_prepared [phi:anim::@17->mulf8s_prepared] + //SEG45 [20] call mulf8s_prepared + //SEG46 [62] phi from anim::@17 to mulf8s_prepared [phi:anim::@17->mulf8s_prepared] mulf8s_prepared_from_b17: - //SEG46 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#0 [phi:anim::@17->mulf8s_prepared#0] -- register_copy + //SEG47 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#0 [phi:anim::@17->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG47 [21] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 + //SEG48 [21] (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 b20 - //SEG48 anim::@20 + //SEG49 anim::@20 b20: - //SEG49 [22] (signed word~) anim::$4 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 + //SEG50 [22] (signed word~) anim::$4 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 lda mulf8s_prepared.return sta _4 lda mulf8s_prepared.return+1 sta _4+1 - //SEG50 [23] (signed word) anim::xr#0 ← (signed word~) anim::$4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz2_rol_1 + //SEG51 [23] (signed word) anim::xr#0 ← (signed word~) anim::$4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz2_rol_1 lda _4 asl sta xr lda _4+1 rol sta xr+1 - //SEG51 [24] (signed byte) mulf8s_prepared::b#1 ← (signed byte) anim::y#0 -- vbsz1=vbsz2 + //SEG52 [24] (signed byte) mulf8s_prepared::b#1 ← (signed byte) anim::y#0 -- vbsz1=vbsz2 lda y sta mulf8s_prepared.b - //SEG52 [25] call mulf8s_prepared - //SEG53 [62] phi from anim::@20 to mulf8s_prepared [phi:anim::@20->mulf8s_prepared] + //SEG53 [25] call mulf8s_prepared + //SEG54 [62] phi from anim::@20 to mulf8s_prepared [phi:anim::@20->mulf8s_prepared] mulf8s_prepared_from_b20: - //SEG54 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#1 [phi:anim::@20->mulf8s_prepared#0] -- register_copy + //SEG55 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#1 [phi:anim::@20->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG55 [26] (signed word) mulf8s_prepared::return#3 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 + //SEG56 [26] (signed word) mulf8s_prepared::return#3 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 lda mulf8s_prepared.m sta mulf8s_prepared.return_3 lda mulf8s_prepared.m+1 sta mulf8s_prepared.return_3+1 jmp b21 - //SEG56 anim::@21 + //SEG57 anim::@21 b21: - //SEG57 [27] (signed word~) anim::$6 ← (signed word) mulf8s_prepared::return#3 -- vwsz1=vwsz2 + //SEG58 [27] (signed word~) anim::$6 ← (signed word) mulf8s_prepared::return#3 -- vwsz1=vwsz2 lda mulf8s_prepared.return_3 sta _6 lda mulf8s_prepared.return_3+1 sta _6+1 - //SEG58 [28] (signed word) anim::yr#0 ← (signed word~) anim::$6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz2_rol_1 + //SEG59 [28] (signed word) anim::yr#0 ← (signed word~) anim::$6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz2_rol_1 lda _6 asl sta yr @@ -2471,49 +2473,49 @@ anim: { rol sta yr+1 jmp mulf8s_prepare2 - //SEG59 anim::mulf8s_prepare2 + //SEG60 anim::mulf8s_prepare2 mulf8s_prepare2: - //SEG60 [29] (byte~) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN#0 + (byte) anim::angle#10) -- vbuz1=pbsc1_derefidx_vbuz2 + //SEG61 [29] (byte~) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN#0 + (byte) anim::angle#10) -- vbuz1=pbsc1_derefidx_vbuz2 ldy angle lda SIN,y sta mulf8u_prepare.a - //SEG61 [30] call mulf8u_prepare - //SEG62 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG62 [30] call mulf8u_prepare + //SEG63 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare2: - //SEG63 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy + //SEG64 [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 + //SEG65 anim::@18 b18: - //SEG65 [31] (signed byte) mulf8s_prepared::b#2 ← (signed byte) anim::y#0 -- vbsz1=vbsz2 + //SEG66 [31] (signed byte) mulf8s_prepared::b#2 ← (signed byte) anim::y#0 -- vbsz1=vbsz2 lda y sta mulf8s_prepared.b - //SEG66 [32] call mulf8s_prepared - //SEG67 [62] phi from anim::@18 to mulf8s_prepared [phi:anim::@18->mulf8s_prepared] + //SEG67 [32] call mulf8s_prepared + //SEG68 [62] phi from anim::@18 to mulf8s_prepared [phi:anim::@18->mulf8s_prepared] mulf8s_prepared_from_b18: - //SEG68 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#2 [phi:anim::@18->mulf8s_prepared#0] -- register_copy + //SEG69 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#2 [phi:anim::@18->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG69 [33] (signed word) mulf8s_prepared::return#4 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 + //SEG70 [33] (signed word) mulf8s_prepared::return#4 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 lda mulf8s_prepared.m sta mulf8s_prepared.return_4 lda mulf8s_prepared.m+1 sta mulf8s_prepared.return_4+1 jmp b23 - //SEG70 anim::@23 + //SEG71 anim::@23 b23: - //SEG71 [34] (signed word~) anim::$9 ← (signed word) mulf8s_prepared::return#4 -- vwsz1=vwsz2 + //SEG72 [34] (signed word~) anim::$9 ← (signed word) mulf8s_prepared::return#4 -- vwsz1=vwsz2 lda mulf8s_prepared.return_4 sta _9 lda mulf8s_prepared.return_4+1 sta _9+1 - //SEG72 [35] (signed word~) anim::$10 ← (signed word~) anim::$9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz2_rol_1 + //SEG73 [35] (signed word~) anim::$10 ← (signed word~) anim::$9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz2_rol_1 lda _9 asl sta _10 lda _9+1 rol sta _10+1 - //SEG73 [36] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$10 -- vwsz1=vwsz2_minus_vwsz3 + //SEG74 [36] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$10 -- vwsz1=vwsz2_minus_vwsz3 lda xr sec sbc _10 @@ -2521,35 +2523,35 @@ anim: { lda xr+1 sbc _10+1 sta xr_1+1 - //SEG74 [37] (signed byte) mulf8s_prepared::b#3 ← (signed byte) anim::x#0 -- vbsz1=vbsz2 + //SEG75 [37] (signed byte) mulf8s_prepared::b#3 ← (signed byte) anim::x#0 -- vbsz1=vbsz2 lda x sta mulf8s_prepared.b - //SEG75 [38] call mulf8s_prepared - //SEG76 [62] phi from anim::@23 to mulf8s_prepared [phi:anim::@23->mulf8s_prepared] + //SEG76 [38] call mulf8s_prepared + //SEG77 [62] phi from anim::@23 to mulf8s_prepared [phi:anim::@23->mulf8s_prepared] mulf8s_prepared_from_b23: - //SEG77 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#3 [phi:anim::@23->mulf8s_prepared#0] -- register_copy + //SEG78 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#3 [phi:anim::@23->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG78 [39] (signed word) mulf8s_prepared::return#10 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 + //SEG79 [39] (signed word) mulf8s_prepared::return#10 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 lda mulf8s_prepared.m sta mulf8s_prepared.return_10 lda mulf8s_prepared.m+1 sta mulf8s_prepared.return_10+1 jmp b24 - //SEG79 anim::@24 + //SEG80 anim::@24 b24: - //SEG80 [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::return#10 -- vwsz1=vwsz2 + //SEG81 [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::return#10 -- vwsz1=vwsz2 lda mulf8s_prepared.return_10 sta _11 lda mulf8s_prepared.return_10+1 sta _11+1 - //SEG81 [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz2_rol_1 + //SEG82 [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz2_rol_1 lda _11 asl sta _12 lda _11+1 rol sta _12+1 - //SEG82 [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 -- vwsz1=vwsz2_plus_vwsz3 + //SEG83 [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 -- vwsz1=vwsz2_plus_vwsz3 lda yr clc adc _12 @@ -2557,13 +2559,13 @@ anim: { lda yr+1 adc _12+1 sta yr_1+1 - //SEG83 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 -- vbuz1=_hi_vwsz2 + //SEG84 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 -- vbuz1=_hi_vwsz2 lda xr_1+1 sta _13 - //SEG84 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 -- vbsz1=vbsz2 + //SEG85 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 -- vbsz1=vbsz2 lda _13 sta _15 - //SEG85 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 -- vwsz1=vbsz2_plus_vbuc1 + //SEG86 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 -- vwsz1=vbsz2_plus_vbuc1 lda _15 sta xpos ora #$7f @@ -2578,75 +2580,75 @@ anim: { lda xpos+1 adc #0 sta xpos+1 - //SEG86 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG87 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr sprite_msb - //SEG87 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 -- vbuz1=_hi_vwsz2 + //SEG88 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 -- vbuz1=_hi_vwsz2 lda xpos+1 sta _18 - //SEG88 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 -- vbuz1_eq_0_then_la1 + //SEG89 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 -- vbuz1_eq_0_then_la1 lda _18 cmp #0 beq b8_from_b24 jmp b14 - //SEG89 anim::@14 + //SEG90 anim::@14 b14: - //SEG90 [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz1_bor_vbuc1 + //SEG91 [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz1_bor_vbuc1 lda #$80 ora sprite_msb sta sprite_msb - //SEG91 [50] phi from anim::@14 anim::@24 to anim::@8 [phi:anim::@14/anim::@24->anim::@8] + //SEG92 [50] phi from anim::@14 anim::@24 to anim::@8 [phi:anim::@14/anim::@24->anim::@8] b8_from_b14: b8_from_b24: - //SEG92 [50] phi (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#2 [phi:anim::@14/anim::@24->anim::@8#0] -- register_copy + //SEG93 [50] phi (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#2 [phi:anim::@14/anim::@24->anim::@8#0] -- register_copy jmp b8 - //SEG93 anim::@8 + //SEG94 anim::@8 b8: - //SEG94 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 -- vbuz1=_hi_vwsz2 + //SEG95 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 -- vbuz1=_hi_vwsz2 lda yr_1+1 sta _22 - //SEG95 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 -- vbuz1=vbuz2_plus_vbuc1 + //SEG96 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 -- vbuz1=vbuz2_plus_vbuc1 lda #$59+$33 clc adc _22 sta ypos - //SEG96 [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG97 [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta i2 - //SEG97 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 -- vbuz1=_lo_vwsz2 + //SEG98 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 -- vbuz1=_lo_vwsz2 lda xpos sta _25 - //SEG98 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG99 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 -- pbuc1_derefidx_vbuz1=vbuz2 lda _25 ldy i2 sta SPRITES_XPOS,y - //SEG99 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG100 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda ypos ldy i2 sta SPRITES_YPOS,y - //SEG100 [57] (byte) anim::i#1 ← ++ (byte) anim::i#10 -- vbuz1=_inc_vbuz1 + //SEG101 [57] (byte) anim::i#1 ← ++ (byte) anim::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG101 [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG102 [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b7_from_b8 jmp b15 - //SEG102 anim::@15 + //SEG103 anim::@15 b15: - //SEG103 [59] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::sprite_msb#5 -- _deref_pbuc1=vbuz1 + //SEG104 [59] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::sprite_msb#5 -- _deref_pbuc1=vbuz1 lda sprite_msb sta SPRITES_XMSB - //SEG104 [60] (byte) anim::angle#1 ← ++ (byte) anim::angle#10 -- vbuz1=_inc_vbuz1 + //SEG105 [60] (byte) anim::angle#1 ← ++ (byte) anim::angle#10 -- vbuz1=_inc_vbuz1 inc angle - //SEG105 [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG106 [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG106 [11] phi from anim::@15 to anim::@1 [phi:anim::@15->anim::@1] + //SEG107 [11] phi from anim::@15 to anim::@1 [phi:anim::@15->anim::@1] b1_from_b15: - //SEG107 [11] phi (byte) anim::angle#10 = (byte) anim::angle#1 [phi:anim::@15->anim::@1#0] -- register_copy + //SEG108 [11] phi (byte) anim::angle#10 = (byte) anim::angle#1 [phi:anim::@15->anim::@1#0] -- register_copy jmp b1 } -//SEG108 mulf8s_prepared +//SEG109 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) mulf8s_prepared: { @@ -2663,84 +2665,84 @@ mulf8s_prepared: { .label return_3 = $20 .label return_4 = $26 .label return_10 = $2e - //SEG109 [63] call mulf8u_prepared + //SEG110 [63] call mulf8u_prepared jsr mulf8u_prepared - //SEG110 [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG111 [64] (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 b6 - //SEG111 mulf8s_prepared::@6 + //SEG112 mulf8s_prepared::@6 b6: - //SEG112 [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 + //SEG113 [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 lda mulf8u_prepared.return_2 sta m lda mulf8u_prepared.return_2+1 sta m+1 - //SEG113 [66] 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 + //SEG114 [66] 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 - //SEG114 mulf8s_prepared::@3 + //SEG115 mulf8s_prepared::@3 b3: - //SEG115 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + //SEG116 [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 + //SEG117 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _5 - //SEG117 [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuz1=vbuz2_minus_vbuz3 + //SEG118 [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 - //SEG118 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG119 [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 - //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 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: - //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 [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 - //SEG121 mulf8s_prepared::@1 + //SEG122 mulf8s_prepared::@1 b1: - //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 + //SEG123 [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 - //SEG123 mulf8s_prepared::@4 + //SEG124 mulf8s_prepared::@4 b4: - //SEG124 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + //SEG125 [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 + //SEG126 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _11 - //SEG126 [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 + //SEG127 [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 - //SEG127 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG128 [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 - //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 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: - //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 [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 - //SEG130 mulf8s_prepared::@2 + //SEG131 mulf8s_prepared::@2 b2: jmp breturn - //SEG131 mulf8s_prepared::@return + //SEG132 mulf8s_prepared::@return breturn: - //SEG132 [78] return + //SEG133 [78] return rts } -//SEG133 mulf8u_prepared +//SEG134 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { @@ -2748,10 +2750,10 @@ mulf8u_prepared: { .label memB = $ff .label return = $47 .label return_2 = $3f - //SEG134 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuz1 + //SEG135 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuz1 lda mulf8s_prepared.b sta memB - //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 } + //SEG136 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: @@ -2764,26 +2766,26 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //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 + //SEG137 [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 - //SEG137 mulf8u_prepared::@return + //SEG138 mulf8u_prepared::@return breturn: - //SEG138 [82] return + //SEG139 [82] return rts } -//SEG139 mulf8u_prepare +//SEG140 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result mulf8u_prepare: { .label memA = $fd .label a = 8 - //SEG140 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 + //SEG141 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG141 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG142 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 @@ -2791,58 +2793,58 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG142 mulf8u_prepare::@return + //SEG143 mulf8u_prepare::@return breturn: - //SEG143 [86] return + //SEG144 [86] return rts } -//SEG144 init +//SEG145 init init: { .label sprites_ptr = SCREEN+$3f8 .label i = 9 - //SEG145 [88] call mulf_init - //SEG146 [96] phi from init to mulf_init [phi:init->mulf_init] + //SEG146 [88] call mulf_init + //SEG147 [96] phi from init to mulf_init [phi:init->mulf_init] mulf_init_from_init: jsr mulf_init jmp b3 - //SEG147 init::@3 + //SEG148 init::@3 b3: - //SEG148 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG149 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG149 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG150 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] b1_from_b3: - //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 + //SEG151 [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 - //SEG151 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG152 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG152 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG153 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG153 init::@1 + //SEG154 init::@1 b1: - //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 + //SEG155 [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 - //SEG155 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG156 [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 - //SEG156 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 + //SEG157 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 inc i - //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 + //SEG158 [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 - //SEG158 init::@return + //SEG159 init::@return breturn: - //SEG159 [95] return + //SEG160 [95] return rts } -//SEG160 mulf_init +//SEG161 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label _2 = $49 @@ -2857,88 +2859,88 @@ mulf_init: { .label x_255 = $12 .label sqr2_lo = $13 .label dir = $17 - //SEG161 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG162 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //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 + //SEG163 [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 - //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 + //SEG164 [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 - //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 + //SEG165 [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 - //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 + //SEG166 [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 - //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 + //SEG167 [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 - //SEG167 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG168 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //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 + //SEG169 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG170 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG171 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG172 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG173 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG173 mulf_init::@1 + //SEG174 mulf_init::@1 b1: - //SEG174 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG175 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //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 + //SEG176 [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 - //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 + //SEG177 [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 - //SEG177 mulf_init::@5 + //SEG178 mulf_init::@5 b5: - //SEG178 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG179 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG179 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG180 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 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: - //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 + //SEG182 [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 + //SEG183 [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 - //SEG183 mulf_init::@2 + //SEG184 mulf_init::@2 b2: - //SEG184 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG185 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG185 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG186 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG186 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG187 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG187 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG188 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG188 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG189 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG189 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG190 [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 @@ -2946,84 +2948,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG190 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG191 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG192 [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] + //SEG193 [112] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //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 + //SEG194 [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 - //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 + //SEG195 [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 - //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 + //SEG196 [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 - //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 + //SEG197 [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 - //SEG197 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG198 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //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 + //SEG199 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG200 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG201 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG202 [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 - //SEG202 mulf_init::@3 + //SEG203 mulf_init::@3 b3: - //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 + //SEG204 [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 - //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 + //SEG205 [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 - //SEG205 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG206 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG206 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG207 [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 - //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 + //SEG208 [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 - //SEG208 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG209 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //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 + //SEG210 [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 - //SEG210 mulf_init::@4 + //SEG211 mulf_init::@4 b4: - //SEG211 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG212 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG213 [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 @@ -3031,32 +3033,29 @@ mulf_init: { cmp #mulf_init::@12] + //SEG219 [124] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG219 mulf_init::@12 + //SEG220 mulf_init::@12 b12: - //SEG220 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG221 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG221 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG222 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // round(min+(ampl/2)+(ampl/2)*cos(rad)) } } }} +//SEG5 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 b16 -//SEG5 @16 +//SEG6 @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 +//SEG7 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) }} +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @16 to @end [phi:@16->@end] +//SEG9 [4] phi from @16 to @end [phi:@16->@end] bend_from_b16: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] call init - //SEG13 [87] phi from main to init [phi:main->init] + //SEG13 [6] call init + //SEG14 [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] + //SEG15 [7] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [8] call anim - //SEG17 [10] phi from main::@1 to anim [phi:main::@1->anim] + //SEG17 [8] call anim + //SEG18 [10] phi from main::@1 to anim [phi:main::@1->anim] anim_from_b1: jsr anim jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } -//SEG20 anim +//SEG21 anim anim: { .label _4 = 7 .label _6 = 9 @@ -3430,132 +3431,132 @@ anim: { .label sprite_msb = 4 .label i = 3 .label angle = 2 - //SEG21 [11] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG22 [11] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG22 [11] phi (byte) anim::angle#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 + //SEG23 [11] phi (byte) anim::angle#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 lda #0 sta angle jmp b1 - //SEG23 anim::@1 + //SEG24 anim::@1 b1: jmp b4 - //SEG24 anim::@4 + //SEG25 anim::@4 b4: - //SEG25 [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG26 [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b6 - //SEG26 anim::@6 + //SEG27 anim::@6 b6: - //SEG27 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG28 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG28 [14] phi from anim::@6 to anim::@7 [phi:anim::@6->anim::@7] + //SEG29 [14] phi from anim::@6 to anim::@7 [phi:anim::@6->anim::@7] b7_from_b6: - //SEG29 [14] phi (byte) anim::sprite_msb#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#0] -- vbuz1=vbuc1 + //SEG30 [14] phi (byte) anim::sprite_msb#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#0] -- vbuz1=vbuc1 lda #0 sta sprite_msb - //SEG30 [14] phi (byte) anim::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#1] -- vbuz1=vbuc1 + //SEG31 [14] phi (byte) anim::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#1] -- vbuz1=vbuc1 lda #0 sta i jmp b7 - //SEG31 [14] phi from anim::@8 to anim::@7 [phi:anim::@8->anim::@7] + //SEG32 [14] phi from anim::@8 to anim::@7 [phi:anim::@8->anim::@7] b7_from_b8: - //SEG32 [14] phi (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#5 [phi:anim::@8->anim::@7#0] -- register_copy - //SEG33 [14] phi (byte) anim::i#10 = (byte) anim::i#1 [phi:anim::@8->anim::@7#1] -- register_copy + //SEG33 [14] phi (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#5 [phi:anim::@8->anim::@7#0] -- register_copy + //SEG34 [14] phi (byte) anim::i#10 = (byte) anim::i#1 [phi:anim::@8->anim::@7#1] -- register_copy jmp b7 - //SEG34 anim::@7 + //SEG35 anim::@7 b7: - //SEG35 [15] (signed byte) anim::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG36 [15] (signed byte) anim::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta x - //SEG36 [16] (signed byte) anim::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG37 [16] (signed byte) anim::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda ys,y sta y jmp mulf8s_prepare1 - //SEG37 anim::mulf8s_prepare1 + //SEG38 anim::mulf8s_prepare1 mulf8s_prepare1: - //SEG38 [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) -- vbuaa=pbsc1_derefidx_vbuz1 + //SEG39 [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) -- vbuaa=pbsc1_derefidx_vbuz1 ldy angle lda COS,y - //SEG39 [18] call mulf8u_prepare - //SEG40 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG40 [18] call mulf8u_prepare + //SEG41 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG41 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG42 [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 + //SEG43 anim::@17 b17: - //SEG43 [19] (signed byte) mulf8s_prepared::b#0 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 + //SEG44 [19] (signed byte) mulf8s_prepared::b#0 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 ldy x - //SEG44 [20] call mulf8s_prepared - //SEG45 [62] phi from anim::@17 to mulf8s_prepared [phi:anim::@17->mulf8s_prepared] + //SEG45 [20] call mulf8s_prepared + //SEG46 [62] phi from anim::@17 to mulf8s_prepared [phi:anim::@17->mulf8s_prepared] mulf8s_prepared_from_b17: - //SEG46 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#0 [phi:anim::@17->mulf8s_prepared#0] -- register_copy + //SEG47 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#0 [phi:anim::@17->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG47 [21] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG48 [21] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 jmp b20 - //SEG48 anim::@20 + //SEG49 anim::@20 b20: - //SEG49 [22] (signed word~) anim::$4 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 + //SEG50 [22] (signed word~) anim::$4 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 lda mulf8s_prepared.return sta _4 lda mulf8s_prepared.return+1 sta _4+1 - //SEG50 [23] (signed word) anim::xr#0 ← (signed word~) anim::$4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 + //SEG51 [23] (signed word) anim::xr#0 ← (signed word~) anim::$4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 asl xr rol xr+1 - //SEG51 [24] (signed byte) mulf8s_prepared::b#1 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 + //SEG52 [24] (signed byte) mulf8s_prepared::b#1 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 ldy y - //SEG52 [25] call mulf8s_prepared - //SEG53 [62] phi from anim::@20 to mulf8s_prepared [phi:anim::@20->mulf8s_prepared] + //SEG53 [25] call mulf8s_prepared + //SEG54 [62] phi from anim::@20 to mulf8s_prepared [phi:anim::@20->mulf8s_prepared] mulf8s_prepared_from_b20: - //SEG54 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#1 [phi:anim::@20->mulf8s_prepared#0] -- register_copy + //SEG55 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#1 [phi:anim::@20->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG55 [26] (signed word) mulf8s_prepared::return#3 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG56 [26] (signed word) mulf8s_prepared::return#3 ← (signed word)(word) mulf8s_prepared::m#4 jmp b21 - //SEG56 anim::@21 + //SEG57 anim::@21 b21: - //SEG57 [27] (signed word~) anim::$6 ← (signed word) mulf8s_prepared::return#3 -- vwsz1=vwsz2 + //SEG58 [27] (signed word~) anim::$6 ← (signed word) mulf8s_prepared::return#3 -- vwsz1=vwsz2 lda mulf8s_prepared.return sta _6 lda mulf8s_prepared.return+1 sta _6+1 - //SEG58 [28] (signed word) anim::yr#0 ← (signed word~) anim::$6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 + //SEG59 [28] (signed word) anim::yr#0 ← (signed word~) anim::$6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 asl yr rol yr+1 jmp mulf8s_prepare2 - //SEG59 anim::mulf8s_prepare2 + //SEG60 anim::mulf8s_prepare2 mulf8s_prepare2: - //SEG60 [29] (byte~) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN#0 + (byte) anim::angle#10) -- vbuaa=pbsc1_derefidx_vbuz1 + //SEG61 [29] (byte~) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN#0 + (byte) anim::angle#10) -- vbuaa=pbsc1_derefidx_vbuz1 ldy angle lda SIN,y - //SEG61 [30] call mulf8u_prepare - //SEG62 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG62 [30] call mulf8u_prepare + //SEG63 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare2: - //SEG63 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy + //SEG64 [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 + //SEG65 anim::@18 b18: - //SEG65 [31] (signed byte) mulf8s_prepared::b#2 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 + //SEG66 [31] (signed byte) mulf8s_prepared::b#2 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 ldy y - //SEG66 [32] call mulf8s_prepared - //SEG67 [62] phi from anim::@18 to mulf8s_prepared [phi:anim::@18->mulf8s_prepared] + //SEG67 [32] call mulf8s_prepared + //SEG68 [62] phi from anim::@18 to mulf8s_prepared [phi:anim::@18->mulf8s_prepared] mulf8s_prepared_from_b18: - //SEG68 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#2 [phi:anim::@18->mulf8s_prepared#0] -- register_copy + //SEG69 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#2 [phi:anim::@18->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG69 [33] (signed word) mulf8s_prepared::return#4 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG70 [33] (signed word) mulf8s_prepared::return#4 ← (signed word)(word) mulf8s_prepared::m#4 jmp b23 - //SEG70 anim::@23 + //SEG71 anim::@23 b23: - //SEG71 [34] (signed word~) anim::$9 ← (signed word) mulf8s_prepared::return#4 - //SEG72 [35] (signed word~) anim::$10 ← (signed word~) anim::$9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 + //SEG72 [34] (signed word~) anim::$9 ← (signed word) mulf8s_prepared::return#4 + //SEG73 [35] (signed word~) anim::$10 ← (signed word~) anim::$9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 asl _10 rol _10+1 - //SEG73 [36] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$10 -- vwsz1=vwsz1_minus_vwsz2 + //SEG74 [36] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$10 -- vwsz1=vwsz1_minus_vwsz2 lda xr sec sbc _10 @@ -3563,22 +3564,22 @@ anim: { lda xr+1 sbc _10+1 sta xr+1 - //SEG74 [37] (signed byte) mulf8s_prepared::b#3 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 + //SEG75 [37] (signed byte) mulf8s_prepared::b#3 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 ldy x - //SEG75 [38] call mulf8s_prepared - //SEG76 [62] phi from anim::@23 to mulf8s_prepared [phi:anim::@23->mulf8s_prepared] + //SEG76 [38] call mulf8s_prepared + //SEG77 [62] phi from anim::@23 to mulf8s_prepared [phi:anim::@23->mulf8s_prepared] mulf8s_prepared_from_b23: - //SEG77 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#3 [phi:anim::@23->mulf8s_prepared#0] -- register_copy + //SEG78 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#3 [phi:anim::@23->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG78 [39] (signed word) mulf8s_prepared::return#10 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG79 [39] (signed word) mulf8s_prepared::return#10 ← (signed word)(word) mulf8s_prepared::m#4 jmp b24 - //SEG79 anim::@24 + //SEG80 anim::@24 b24: - //SEG80 [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::return#10 - //SEG81 [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 + //SEG81 [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::return#10 + //SEG82 [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 asl _12 rol _12+1 - //SEG82 [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 -- vwsz1=vwsz1_plus_vwsz2 + //SEG83 [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 -- vwsz1=vwsz1_plus_vwsz2 lda yr clc adc _12 @@ -3586,10 +3587,10 @@ anim: { lda yr+1 adc _12+1 sta yr+1 - //SEG83 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 -- vbuaa=_hi_vwsz1 + //SEG84 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 -- vbuaa=_hi_vwsz1 lda xr+1 - //SEG84 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 - //SEG85 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 -- vwsz1=vbsaa_plus_vbuc1 + //SEG85 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 + //SEG86 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 -- vwsz1=vbsaa_plus_vbuc1 sta xpos ora #$7f bmi !+ @@ -3603,142 +3604,142 @@ anim: { lda xpos+1 adc #0 sta xpos+1 - //SEG86 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG87 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr sprite_msb - //SEG87 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 -- vbuaa=_hi_vwsz1 + //SEG88 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 -- vbuaa=_hi_vwsz1 lda xpos+1 - //SEG88 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 -- vbuaa_eq_0_then_la1 + //SEG89 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 -- vbuaa_eq_0_then_la1 cmp #0 beq b8_from_b24 jmp b14 - //SEG89 anim::@14 + //SEG90 anim::@14 b14: - //SEG90 [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz1_bor_vbuc1 + //SEG91 [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz1_bor_vbuc1 lda #$80 ora sprite_msb sta sprite_msb - //SEG91 [50] phi from anim::@14 anim::@24 to anim::@8 [phi:anim::@14/anim::@24->anim::@8] + //SEG92 [50] phi from anim::@14 anim::@24 to anim::@8 [phi:anim::@14/anim::@24->anim::@8] b8_from_b14: b8_from_b24: - //SEG92 [50] phi (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#2 [phi:anim::@14/anim::@24->anim::@8#0] -- register_copy + //SEG93 [50] phi (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#2 [phi:anim::@14/anim::@24->anim::@8#0] -- register_copy jmp b8 - //SEG93 anim::@8 + //SEG94 anim::@8 b8: - //SEG94 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 -- vbuaa=_hi_vwsz1 + //SEG95 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 -- vbuaa=_hi_vwsz1 lda yr+1 - //SEG95 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 -- vbuyy=vbuaa_plus_vbuc1 + //SEG96 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 -- vbuyy=vbuaa_plus_vbuc1 clc adc #$59+$33 tay - //SEG96 [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 + //SEG97 [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG97 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 -- vbuaa=_lo_vwsz1 + //SEG98 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 -- vbuaa=_lo_vwsz1 lda xpos - //SEG98 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG99 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG99 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG100 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 -- pbuc1_derefidx_vbuxx=vbuyy tya sta SPRITES_YPOS,x - //SEG100 [57] (byte) anim::i#1 ← ++ (byte) anim::i#10 -- vbuz1=_inc_vbuz1 + //SEG101 [57] (byte) anim::i#1 ← ++ (byte) anim::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG101 [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG102 [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b7_from_b8 jmp b15 - //SEG102 anim::@15 + //SEG103 anim::@15 b15: - //SEG103 [59] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::sprite_msb#5 -- _deref_pbuc1=vbuz1 + //SEG104 [59] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::sprite_msb#5 -- _deref_pbuc1=vbuz1 lda sprite_msb sta SPRITES_XMSB - //SEG104 [60] (byte) anim::angle#1 ← ++ (byte) anim::angle#10 -- vbuz1=_inc_vbuz1 + //SEG105 [60] (byte) anim::angle#1 ← ++ (byte) anim::angle#10 -- vbuz1=_inc_vbuz1 inc angle - //SEG105 [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG106 [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG106 [11] phi from anim::@15 to anim::@1 [phi:anim::@15->anim::@1] + //SEG107 [11] phi from anim::@15 to anim::@1 [phi:anim::@15->anim::@1] b1_from_b15: - //SEG107 [11] phi (byte) anim::angle#10 = (byte) anim::angle#1 [phi:anim::@15->anim::@1#0] -- register_copy + //SEG108 [11] phi (byte) anim::angle#10 = (byte) anim::angle#1 [phi:anim::@15->anim::@1#0] -- register_copy jmp b1 } -//SEG108 mulf8s_prepared +//SEG109 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) mulf8s_prepared: { .label memA = $fd .label m = 5 .label return = 5 - //SEG109 [63] call mulf8u_prepared + //SEG110 [63] call mulf8u_prepared jsr mulf8u_prepared - //SEG110 [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG111 [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 jmp b6 - //SEG111 mulf8s_prepared::@6 + //SEG112 mulf8s_prepared::@6 b6: - //SEG112 [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 - //SEG113 [66] 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 + //SEG113 [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 + //SEG114 [66] 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 - //SEG114 mulf8s_prepared::@3 + //SEG115 mulf8s_prepared::@3 b3: - //SEG115 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG116 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG116 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG117 [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 + //SEG118 [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 - //SEG118 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG119 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+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 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: - //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 [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 - //SEG121 mulf8s_prepared::@1 + //SEG122 mulf8s_prepared::@1 b1: - //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 + //SEG123 [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 - //SEG123 mulf8s_prepared::@4 + //SEG124 mulf8s_prepared::@4 b4: - //SEG124 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG125 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG125 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG126 [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 + //SEG127 [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 - //SEG127 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG128 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //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 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: - //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 [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 - //SEG130 mulf8s_prepared::@2 + //SEG131 mulf8s_prepared::@2 b2: jmp breturn - //SEG131 mulf8s_prepared::@return + //SEG132 mulf8s_prepared::@return breturn: - //SEG132 [78] return + //SEG133 [78] return rts } -//SEG133 mulf8u_prepared +//SEG134 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = 5 - //SEG134 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy + //SEG135 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy sty memB - //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 } + //SEG136 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: @@ -3751,24 +3752,24 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //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 + //SEG137 [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 - //SEG137 mulf8u_prepared::@return + //SEG138 mulf8u_prepared::@return breturn: - //SEG138 [82] return + //SEG139 [82] return rts } -//SEG139 mulf8u_prepare +//SEG140 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result mulf8u_prepare: { .label memA = $fd - //SEG140 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG141 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG141 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG142 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 @@ -3776,53 +3777,53 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG142 mulf8u_prepare::@return + //SEG143 mulf8u_prepare::@return breturn: - //SEG143 [86] return + //SEG144 [86] return rts } -//SEG144 init +//SEG145 init init: { .label sprites_ptr = SCREEN+$3f8 - //SEG145 [88] call mulf_init - //SEG146 [96] phi from init to mulf_init [phi:init->mulf_init] + //SEG146 [88] call mulf_init + //SEG147 [96] phi from init to mulf_init [phi:init->mulf_init] mulf_init_from_init: jsr mulf_init jmp b3 - //SEG147 init::@3 + //SEG148 init::@3 b3: - //SEG148 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG149 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG149 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG150 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] b1_from_b3: - //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 + //SEG151 [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 - //SEG151 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG152 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG152 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG153 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG153 init::@1 + //SEG154 init::@1 b1: - //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 + //SEG155 [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 - //SEG155 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG156 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG156 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG157 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG158 [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 - //SEG158 init::@return + //SEG159 init::@return breturn: - //SEG159 [95] return + //SEG160 [95] return rts } -//SEG160 mulf_init +//SEG161 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 7 @@ -3832,81 +3833,81 @@ mulf_init: { .label sqr2_hi = 7 .label sqr2_lo = 5 .label dir = 2 - //SEG161 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG162 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //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 + //SEG163 [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 - //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 + //SEG164 [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 - //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 + //SEG165 [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 - //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 + //SEG166 [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 - //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 + //SEG167 [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 - //SEG167 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG168 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //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 + //SEG169 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG170 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG171 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG172 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG173 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG173 mulf_init::@1 + //SEG174 mulf_init::@1 b1: - //SEG174 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG175 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG176 [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 - //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 + //SEG177 [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 - //SEG177 mulf_init::@5 + //SEG178 mulf_init::@5 b5: - //SEG178 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG179 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG179 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG180 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 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: - //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 + //SEG182 [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 + //SEG183 [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 - //SEG183 mulf_init::@2 + //SEG184 mulf_init::@2 b2: - //SEG184 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG185 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG185 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG186 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG186 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG187 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG187 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG188 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG188 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG189 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG189 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG190 [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 @@ -3914,80 +3915,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG190 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG191 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG192 [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] + //SEG193 [112] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //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 + //SEG194 [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 - //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 + //SEG195 [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 - //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 + //SEG196 [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 - //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 + //SEG197 [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 - //SEG197 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG198 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //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 + //SEG199 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG200 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG201 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG202 [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 - //SEG202 mulf_init::@3 + //SEG203 mulf_init::@3 b3: - //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 + //SEG204 [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 - //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 + //SEG205 [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 - //SEG205 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG206 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG206 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG207 [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 - //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 + //SEG208 [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 - //SEG208 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG209 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //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 + //SEG210 [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 - //SEG210 mulf_init::@4 + //SEG211 mulf_init::@4 b4: - //SEG211 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG212 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG213 [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 @@ -3995,32 +3996,29 @@ mulf_init: { cmp #mulf_init::@12] + //SEG219 [124] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG219 mulf_init::@12 + //SEG220 mulf_init::@12 b12: - //SEG220 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG221 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG221 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG222 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // round(min+(ampl/2)+(ampl/2)*cos(rad)) } } }} -//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 -//SEG8 [4] phi from @16 to @end [phi:@16->@end] -//SEG9 @end -//SEG10 main +//SEG3 @begin +//SEG4 @13 +//SEG5 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)) } } }} +//SEG6 @16 +//SEG7 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) }} +//SEG8 [3] call main +//SEG9 [4] phi from @16 to @end [phi:@16->@end] +//SEG10 @end +//SEG11 main main: { - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] call init - //SEG13 [87] phi from main to init [phi:main->init] + //SEG13 [6] call init + //SEG14 [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 - //SEG16 [8] call anim - //SEG17 [10] phi from main::@1 to anim [phi:main::@1->anim] + //SEG15 [7] phi from main to main::@1 [phi:main->main::@1] + //SEG16 main::@1 + //SEG17 [8] call anim + //SEG18 [10] phi from main::@1 to anim [phi:main::@1->anim] jsr anim - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts } -//SEG20 anim +//SEG21 anim anim: { .label _4 = 7 .label _6 = 9 @@ -4568,101 +4568,101 @@ anim: { .label sprite_msb = 4 .label i = 3 .label angle = 2 - //SEG21 [11] phi from anim to anim::@1 [phi:anim->anim::@1] - //SEG22 [11] phi (byte) anim::angle#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 + //SEG22 [11] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG23 [11] phi (byte) anim::angle#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 lda #0 sta angle - //SEG23 anim::@1 - //SEG24 anim::@4 + //SEG24 anim::@1 + //SEG25 anim::@4 b4: - //SEG25 [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG26 [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG26 anim::@6 - //SEG27 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG27 anim::@6 + //SEG28 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG28 [14] phi from anim::@6 to anim::@7 [phi:anim::@6->anim::@7] - //SEG29 [14] phi (byte) anim::sprite_msb#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#0] -- vbuz1=vbuc1 + //SEG29 [14] phi from anim::@6 to anim::@7 [phi:anim::@6->anim::@7] + //SEG30 [14] phi (byte) anim::sprite_msb#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#0] -- vbuz1=vbuc1 lda #0 sta sprite_msb - //SEG30 [14] phi (byte) anim::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#1] -- vbuz1=vbuc1 + //SEG31 [14] phi (byte) anim::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@6->anim::@7#1] -- vbuz1=vbuc1 sta i - //SEG31 [14] phi from anim::@8 to anim::@7 [phi:anim::@8->anim::@7] - //SEG32 [14] phi (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#5 [phi:anim::@8->anim::@7#0] -- register_copy - //SEG33 [14] phi (byte) anim::i#10 = (byte) anim::i#1 [phi:anim::@8->anim::@7#1] -- register_copy - //SEG34 anim::@7 + //SEG32 [14] phi from anim::@8 to anim::@7 [phi:anim::@8->anim::@7] + //SEG33 [14] phi (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#5 [phi:anim::@8->anim::@7#0] -- register_copy + //SEG34 [14] phi (byte) anim::i#10 = (byte) anim::i#1 [phi:anim::@8->anim::@7#1] -- register_copy + //SEG35 anim::@7 b7: - //SEG35 [15] (signed byte) anim::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG36 [15] (signed byte) anim::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta x - //SEG36 [16] (signed byte) anim::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG37 [16] (signed byte) anim::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 lda ys,y sta y - //SEG37 anim::mulf8s_prepare1 - //SEG38 [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) -- vbuaa=pbsc1_derefidx_vbuz1 + //SEG38 anim::mulf8s_prepare1 + //SEG39 [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) -- vbuaa=pbsc1_derefidx_vbuz1 ldy angle lda COS,y - //SEG39 [18] call mulf8u_prepare - //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 + //SEG40 [18] call mulf8u_prepare + //SEG41 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG42 [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 + //SEG43 anim::@17 + //SEG44 [19] (signed byte) mulf8s_prepared::b#0 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 ldy x - //SEG44 [20] call mulf8s_prepared - //SEG45 [62] phi from anim::@17 to mulf8s_prepared [phi:anim::@17->mulf8s_prepared] - //SEG46 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#0 [phi:anim::@17->mulf8s_prepared#0] -- register_copy + //SEG45 [20] call mulf8s_prepared + //SEG46 [62] phi from anim::@17 to mulf8s_prepared [phi:anim::@17->mulf8s_prepared] + //SEG47 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#0 [phi:anim::@17->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG47 [21] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 - //SEG48 anim::@20 - //SEG49 [22] (signed word~) anim::$4 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 + //SEG48 [21] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG49 anim::@20 + //SEG50 [22] (signed word~) anim::$4 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 lda mulf8s_prepared.return sta _4 lda mulf8s_prepared.return+1 sta _4+1 - //SEG50 [23] (signed word) anim::xr#0 ← (signed word~) anim::$4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 + //SEG51 [23] (signed word) anim::xr#0 ← (signed word~) anim::$4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 asl xr rol xr+1 - //SEG51 [24] (signed byte) mulf8s_prepared::b#1 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 + //SEG52 [24] (signed byte) mulf8s_prepared::b#1 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 ldy y - //SEG52 [25] call mulf8s_prepared - //SEG53 [62] phi from anim::@20 to mulf8s_prepared [phi:anim::@20->mulf8s_prepared] - //SEG54 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#1 [phi:anim::@20->mulf8s_prepared#0] -- register_copy + //SEG53 [25] call mulf8s_prepared + //SEG54 [62] phi from anim::@20 to mulf8s_prepared [phi:anim::@20->mulf8s_prepared] + //SEG55 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#1 [phi:anim::@20->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG55 [26] (signed word) mulf8s_prepared::return#3 ← (signed word)(word) mulf8s_prepared::m#4 - //SEG56 anim::@21 - //SEG57 [27] (signed word~) anim::$6 ← (signed word) mulf8s_prepared::return#3 -- vwsz1=vwsz2 + //SEG56 [26] (signed word) mulf8s_prepared::return#3 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG57 anim::@21 + //SEG58 [27] (signed word~) anim::$6 ← (signed word) mulf8s_prepared::return#3 -- vwsz1=vwsz2 lda mulf8s_prepared.return sta _6 lda mulf8s_prepared.return+1 sta _6+1 - //SEG58 [28] (signed word) anim::yr#0 ← (signed word~) anim::$6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 + //SEG59 [28] (signed word) anim::yr#0 ← (signed word~) anim::$6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 asl yr rol yr+1 - //SEG59 anim::mulf8s_prepare2 - //SEG60 [29] (byte~) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN#0 + (byte) anim::angle#10) -- vbuaa=pbsc1_derefidx_vbuz1 + //SEG60 anim::mulf8s_prepare2 + //SEG61 [29] (byte~) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN#0 + (byte) anim::angle#10) -- vbuaa=pbsc1_derefidx_vbuz1 ldy angle lda SIN,y - //SEG61 [30] call mulf8u_prepare - //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 + //SEG62 [30] call mulf8u_prepare + //SEG63 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG64 [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 + //SEG65 anim::@18 + //SEG66 [31] (signed byte) mulf8s_prepared::b#2 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 ldy y - //SEG66 [32] call mulf8s_prepared - //SEG67 [62] phi from anim::@18 to mulf8s_prepared [phi:anim::@18->mulf8s_prepared] - //SEG68 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#2 [phi:anim::@18->mulf8s_prepared#0] -- register_copy + //SEG67 [32] call mulf8s_prepared + //SEG68 [62] phi from anim::@18 to mulf8s_prepared [phi:anim::@18->mulf8s_prepared] + //SEG69 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#2 [phi:anim::@18->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG69 [33] (signed word) mulf8s_prepared::return#4 ← (signed word)(word) mulf8s_prepared::m#4 - //SEG70 anim::@23 - //SEG71 [34] (signed word~) anim::$9 ← (signed word) mulf8s_prepared::return#4 - //SEG72 [35] (signed word~) anim::$10 ← (signed word~) anim::$9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 + //SEG70 [33] (signed word) mulf8s_prepared::return#4 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG71 anim::@23 + //SEG72 [34] (signed word~) anim::$9 ← (signed word) mulf8s_prepared::return#4 + //SEG73 [35] (signed word~) anim::$10 ← (signed word~) anim::$9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 asl _10 rol _10+1 - //SEG73 [36] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$10 -- vwsz1=vwsz1_minus_vwsz2 + //SEG74 [36] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$10 -- vwsz1=vwsz1_minus_vwsz2 lda xr sec sbc _10 @@ -4670,19 +4670,19 @@ anim: { lda xr+1 sbc _10+1 sta xr+1 - //SEG74 [37] (signed byte) mulf8s_prepared::b#3 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 + //SEG75 [37] (signed byte) mulf8s_prepared::b#3 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 ldy x - //SEG75 [38] call mulf8s_prepared - //SEG76 [62] phi from anim::@23 to mulf8s_prepared [phi:anim::@23->mulf8s_prepared] - //SEG77 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#3 [phi:anim::@23->mulf8s_prepared#0] -- register_copy + //SEG76 [38] call mulf8s_prepared + //SEG77 [62] phi from anim::@23 to mulf8s_prepared [phi:anim::@23->mulf8s_prepared] + //SEG78 [62] phi (signed byte) mulf8s_prepared::b#4 = (signed byte) mulf8s_prepared::b#3 [phi:anim::@23->mulf8s_prepared#0] -- register_copy jsr mulf8s_prepared - //SEG78 [39] (signed word) mulf8s_prepared::return#10 ← (signed word)(word) mulf8s_prepared::m#4 - //SEG79 anim::@24 - //SEG80 [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::return#10 - //SEG81 [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 + //SEG79 [39] (signed word) mulf8s_prepared::return#10 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG80 anim::@24 + //SEG81 [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::return#10 + //SEG82 [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwsz1=vwsz1_rol_1 asl _12 rol _12+1 - //SEG82 [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 -- vwsz1=vwsz1_plus_vwsz2 + //SEG83 [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12 -- vwsz1=vwsz1_plus_vwsz2 lda yr clc adc _12 @@ -4690,10 +4690,10 @@ anim: { lda yr+1 adc _12+1 sta yr+1 - //SEG83 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 -- vbuaa=_hi_vwsz1 + //SEG84 [43] (byte~) anim::$13 ← > (signed word) anim::xr#1 -- vbuaa=_hi_vwsz1 lda xr+1 - //SEG84 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 - //SEG85 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 -- vwsz1=vbsaa_plus_vbuc1 + //SEG85 [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13 + //SEG86 [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149 -- vwsz1=vbsaa_plus_vbuc1 sta xpos ora #$7f bmi !+ @@ -4707,119 +4707,119 @@ anim: { lda xpos+1 adc #0 sta xpos+1 - //SEG86 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG87 [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr sprite_msb - //SEG87 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 -- vbuaa=_hi_vwsz1 - //SEG88 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 -- vbuaa_eq_0_then_la1 + //SEG88 [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0 -- vbuaa=_hi_vwsz1 + //SEG89 [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 -- vbuaa_eq_0_then_la1 cmp #0 beq b8 - //SEG89 anim::@14 - //SEG90 [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz1_bor_vbuc1 + //SEG90 anim::@14 + //SEG91 [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz1_bor_vbuc1 lda #$80 ora sprite_msb sta sprite_msb - //SEG91 [50] phi from anim::@14 anim::@24 to anim::@8 [phi:anim::@14/anim::@24->anim::@8] - //SEG92 [50] phi (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#2 [phi:anim::@14/anim::@24->anim::@8#0] -- register_copy - //SEG93 anim::@8 + //SEG92 [50] phi from anim::@14 anim::@24 to anim::@8 [phi:anim::@14/anim::@24->anim::@8] + //SEG93 [50] phi (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#2 [phi:anim::@14/anim::@24->anim::@8#0] -- register_copy + //SEG94 anim::@8 b8: - //SEG94 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 -- vbuaa=_hi_vwsz1 + //SEG95 [51] (byte~) anim::$22 ← > (signed word) anim::yr#1 -- vbuaa=_hi_vwsz1 lda yr+1 - //SEG95 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 -- vbuyy=vbuaa_plus_vbuc1 + //SEG96 [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51 -- vbuyy=vbuaa_plus_vbuc1 clc adc #$59+$33 tay - //SEG96 [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 + //SEG97 [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG97 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 -- vbuaa=_lo_vwsz1 + //SEG98 [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0 -- vbuaa=_lo_vwsz1 lda xpos - //SEG98 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG99 [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG99 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG100 [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0 -- pbuc1_derefidx_vbuxx=vbuyy tya sta SPRITES_YPOS,x - //SEG100 [57] (byte) anim::i#1 ← ++ (byte) anim::i#10 -- vbuz1=_inc_vbuz1 + //SEG101 [57] (byte) anim::i#1 ← ++ (byte) anim::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG101 [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG102 [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 beq !b7+ jmp b7 !b7: - //SEG102 anim::@15 - //SEG103 [59] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::sprite_msb#5 -- _deref_pbuc1=vbuz1 + //SEG103 anim::@15 + //SEG104 [59] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::sprite_msb#5 -- _deref_pbuc1=vbuz1 lda sprite_msb sta SPRITES_XMSB - //SEG104 [60] (byte) anim::angle#1 ← ++ (byte) anim::angle#10 -- vbuz1=_inc_vbuz1 + //SEG105 [60] (byte) anim::angle#1 ← ++ (byte) anim::angle#10 -- vbuz1=_inc_vbuz1 inc angle - //SEG105 [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG106 [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG106 [11] phi from anim::@15 to anim::@1 [phi:anim::@15->anim::@1] - //SEG107 [11] phi (byte) anim::angle#10 = (byte) anim::angle#1 [phi:anim::@15->anim::@1#0] -- register_copy + //SEG107 [11] phi from anim::@15 to anim::@1 [phi:anim::@15->anim::@1] + //SEG108 [11] phi (byte) anim::angle#10 = (byte) anim::angle#1 [phi:anim::@15->anim::@1#0] -- register_copy jmp b4 } -//SEG108 mulf8s_prepared +//SEG109 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) mulf8s_prepared: { .label memA = $fd .label m = 5 .label return = 5 - //SEG109 [63] call mulf8u_prepared + //SEG110 [63] call mulf8u_prepared jsr mulf8u_prepared - //SEG110 [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 - //SEG111 mulf8s_prepared::@6 - //SEG112 [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 - //SEG113 [66] 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 + //SEG111 [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG112 mulf8s_prepared::@6 + //SEG113 [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 + //SEG114 [66] 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 - //SEG114 mulf8s_prepared::@3 - //SEG115 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG115 mulf8s_prepared::@3 + //SEG116 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //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 + //SEG117 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG118 [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 - //SEG118 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG119 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+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 + //SEG120 [71] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG121 [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 + //SEG122 mulf8s_prepared::@1 b1: - //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 + //SEG123 [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 - //SEG123 mulf8s_prepared::@4 - //SEG124 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG124 mulf8s_prepared::@4 + //SEG125 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //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 + //SEG126 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG127 [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 - //SEG127 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG128 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //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 + //SEG129 [77] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG130 [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 + //SEG131 mulf8s_prepared::@2 b2: - //SEG131 mulf8s_prepared::@return - //SEG132 [78] return + //SEG132 mulf8s_prepared::@return + //SEG133 [78] return rts } -//SEG133 mulf8u_prepared +//SEG134 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = 5 - //SEG134 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy + //SEG135 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy sty memB - //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 } + //SEG136 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: @@ -4832,64 +4832,64 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //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 + //SEG137 [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 - //SEG137 mulf8u_prepared::@return - //SEG138 [82] return + //SEG138 mulf8u_prepared::@return + //SEG139 [82] return rts } -//SEG139 mulf8u_prepare +//SEG140 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result mulf8u_prepare: { .label memA = $fd - //SEG140 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG141 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG141 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG142 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 - //SEG142 mulf8u_prepare::@return - //SEG143 [86] return + //SEG143 mulf8u_prepare::@return + //SEG144 [86] return rts } -//SEG144 init +//SEG145 init init: { .label sprites_ptr = SCREEN+$3f8 - //SEG145 [88] call mulf_init - //SEG146 [96] phi from init to mulf_init [phi:init->mulf_init] + //SEG146 [88] call mulf_init + //SEG147 [96] phi from init to mulf_init [phi:init->mulf_init] jsr mulf_init - //SEG147 init::@3 - //SEG148 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG148 init::@3 + //SEG149 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //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 + //SEG150 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG151 [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 - //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 + //SEG152 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG153 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG154 init::@1 b1: - //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 + //SEG155 [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 - //SEG155 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG156 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG156 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG157 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG158 [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 - //SEG158 init::@return - //SEG159 [95] return + //SEG159 init::@return + //SEG160 [95] return rts } -//SEG160 mulf_init +//SEG161 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 7 @@ -4899,70 +4899,70 @@ mulf_init: { .label sqr2_hi = 7 .label sqr2_lo = 5 .label dir = 2 - //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 + //SEG162 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG163 [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 - //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 + //SEG164 [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 - //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 + //SEG165 [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 - //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 + //SEG166 [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 - //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 + //SEG167 [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 - //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 + //SEG168 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG169 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG170 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG171 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG172 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG173 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG174 mulf_init::@1 b1: - //SEG174 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG175 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG176 [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 - //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 + //SEG177 [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 - //SEG177 mulf_init::@5 - //SEG178 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG178 mulf_init::@5 + //SEG179 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG179 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG180 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 + //SEG181 [103] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG182 [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 + //SEG183 [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 + //SEG184 mulf_init::@2 b2: - //SEG184 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG185 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG185 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG186 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG186 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG187 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG187 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG188 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG188 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG189 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG189 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG190 [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 @@ -4970,97 +4970,94 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG190 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG191 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG192 [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] - //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 + //SEG193 [112] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG194 [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 - //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 + //SEG195 [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 - //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 + //SEG196 [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 - //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 + //SEG197 [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 - //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 + //SEG198 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG199 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG200 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG201 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG202 [112] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG203 mulf_init::@3 b3: - //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 + //SEG204 [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 - //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 + //SEG205 [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 - //SEG205 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG206 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG206 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG207 [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 - //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 + //SEG208 [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 - //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 + //SEG209 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG210 [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 - //SEG210 mulf_init::@4 + //SEG211 mulf_init::@4 b4: - //SEG211 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG212 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG213 [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] - //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 + //SEG219 [124] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG220 mulf_init::@12 + //SEG221 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG222 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label line = SCREEN+$28 .label scroll = 2 .label i = 3 .label c = 4 .label nxt = 5 - //SEG10 [5] call fillscreen - //SEG11 [25] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [5] call fillscreen + //SEG12 [25] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG13 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG14 [6] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#1] -- vbuz1=vbuc1 lda #7 sta scroll jmp b2 - //SEG15 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG16 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 jmp b3 - //SEG18 main::@3 + //SEG19 main::@3 b3: - //SEG19 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b3 jmp b8 - //SEG20 main::@8 + //SEG21 main::@8 b8: - //SEG21 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG22 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG22 [10] (byte) main::scroll#1 ← -- (byte) main::scroll#7 -- vbuz1=_dec_vbuz1 + //SEG23 [10] (byte) main::scroll#1 ← -- (byte) main::scroll#7 -- vbuz1=_dec_vbuz1 dec scroll - //SEG23 [11] if((byte) main::scroll#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::scroll#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- vbuz1_neq_vbuc1_then_la1 lda scroll cmp #$ff bne b4_from_b8 - //SEG24 [12] phi from main::@8 to main::@5 [phi:main::@8->main::@5] + //SEG25 [12] phi from main::@8 to main::@5 [phi:main::@8->main::@5] b5_from_b8: - //SEG25 [12] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@5#0] -- vbuz1=vbuc1 + //SEG26 [12] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@5#0] -- vbuz1=vbuc1 lda #0 sta i jmp b5 - //SEG26 [12] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG27 [12] phi from main::@5 to main::@5 [phi:main::@5->main::@5] b5_from_b5: - //SEG27 [12] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy + //SEG28 [12] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy jmp b5 - //SEG28 main::@5 + //SEG29 main::@5 b5: - //SEG29 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG30 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda line+1,y sta line,y - //SEG30 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG31 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG31 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG32 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$27 bne b5_from_b5 jmp b10 - //SEG32 main::@10 + //SEG33 main::@10 b10: - //SEG33 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) -- vbuz1=_deref_pbuz2 + //SEG34 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) -- vbuz1=_deref_pbuz2 ldy #0 lda (nxt),y sta c - //SEG34 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG35 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #'@' bne b6_from_b10 jmp b11 - //SEG35 main::@11 + //SEG36 main::@11 b11: - //SEG36 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) -- vbuz1=_deref_pbuc1 + //SEG37 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) -- vbuz1=_deref_pbuc1 lda TEXT sta c - //SEG37 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG38 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG38 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG39 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG39 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG40 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy jmp b6 - //SEG40 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG41 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] b6_from_b10: - //SEG41 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy - //SEG42 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy + //SEG42 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy + //SEG43 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy jmp b6 - //SEG43 main::@6 + //SEG44 main::@6 b6: - //SEG44 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 -- _deref_pbuc1=vbuz1 + //SEG45 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 -- _deref_pbuc1=vbuz1 lda c sta line+$27 - //SEG45 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 + //SEG46 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG46 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG47 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: - //SEG47 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG48 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@6->main::@4#1] -- vbuz1=vbuc1 + //SEG48 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG49 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@6->main::@4#1] -- vbuz1=vbuc1 lda #7 sta scroll jmp b4 - //SEG49 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG50 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] b4_from_b8: - //SEG50 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy - //SEG51 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy + //SEG51 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy + //SEG52 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy jmp b4 - //SEG52 main::@4 + //SEG53 main::@4 b4: - //SEG53 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 -- _deref_pbuc1=vbuz1 + //SEG54 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 -- _deref_pbuc1=vbuz1 lda scroll sta SCROLL - //SEG54 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG55 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG55 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG56 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG56 [6] phi (byte*) main::nxt#9 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy - //SEG57 [6] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy + //SEG57 [6] phi (byte*) main::nxt#9 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG58 [6] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy jmp b2 } -//SEG58 fillscreen +//SEG59 fillscreen fillscreen: { .const fill = $20 .label cursor = 7 - //SEG59 [26] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG60 [26] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG60 [26] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG61 [26] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 jmp b1 - //SEG61 [26] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG62 [26] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG62 [26] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG63 [26] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG63 fillscreen::@1 + //SEG64 fillscreen::@1 b1: - //SEG64 [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 + //SEG65 [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 lda #fill ldy #0 sta (cursor),y - //SEG65 [28] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG66 [28] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG66 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG67 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -818,9 +819,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG67 fillscreen::@return + //SEG68 fillscreen::@return breturn: - //SEG68 [30] return + //SEG69 [30] return rts } TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" @@ -858,183 +859,184 @@ Coalescing zero page register [ zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt Allocated (was zp ZP_WORD:5) zp ZP_WORD:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label RASTER = $d012 .label BGCOL = $d020 .label SCROLL = $d016 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label line = SCREEN+$28 .label nxt = 2 - //SEG10 [5] call fillscreen - //SEG11 [25] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [5] call fillscreen + //SEG12 [25] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG13 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG14 [6] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#1] -- vbuxx=vbuc1 + //SEG15 [6] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#1] -- vbuxx=vbuc1 ldx #7 jmp b2 - //SEG15 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG16 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 jmp b3 - //SEG18 main::@3 + //SEG19 main::@3 b3: - //SEG19 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b3 jmp b8 - //SEG20 main::@8 + //SEG21 main::@8 b8: - //SEG21 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG22 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG22 [10] (byte) main::scroll#1 ← -- (byte) main::scroll#7 -- vbuxx=_dec_vbuxx + //SEG23 [10] (byte) main::scroll#1 ← -- (byte) main::scroll#7 -- vbuxx=_dec_vbuxx dex - //SEG23 [11] if((byte) main::scroll#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::scroll#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b4_from_b8 - //SEG24 [12] phi from main::@8 to main::@5 [phi:main::@8->main::@5] + //SEG25 [12] phi from main::@8 to main::@5 [phi:main::@8->main::@5] b5_from_b8: - //SEG25 [12] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@5#0] -- vbuxx=vbuc1 + //SEG26 [12] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@5#0] -- vbuxx=vbuc1 ldx #0 jmp b5 - //SEG26 [12] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG27 [12] phi from main::@5 to main::@5 [phi:main::@5->main::@5] b5_from_b5: - //SEG27 [12] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy + //SEG28 [12] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy jmp b5 - //SEG28 main::@5 + //SEG29 main::@5 b5: - //SEG29 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG30 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line+1,x sta line,x - //SEG30 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG31 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG31 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto main::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG32 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto main::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$27 bne b5_from_b5 jmp b10 - //SEG32 main::@10 + //SEG33 main::@10 b10: - //SEG33 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) -- vbuxx=_deref_pbuz1 + //SEG34 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) -- vbuxx=_deref_pbuz1 ldy #0 lda (nxt),y tax - //SEG34 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG35 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #'@' bne b6_from_b10 jmp b11 - //SEG35 main::@11 + //SEG36 main::@11 b11: - //SEG36 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) -- vbuxx=_deref_pbuc1 + //SEG37 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) -- vbuxx=_deref_pbuc1 ldx TEXT - //SEG37 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG38 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG38 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG39 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG39 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG40 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy jmp b6 - //SEG40 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG41 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] b6_from_b10: - //SEG41 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy - //SEG42 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy + //SEG42 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy + //SEG43 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy jmp b6 - //SEG43 main::@6 + //SEG44 main::@6 b6: - //SEG44 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 -- _deref_pbuc1=vbuxx + //SEG45 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 -- _deref_pbuc1=vbuxx stx line+$27 - //SEG45 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 + //SEG46 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG46 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG47 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: - //SEG47 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG48 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@6->main::@4#1] -- vbuxx=vbuc1 + //SEG48 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG49 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@6->main::@4#1] -- vbuxx=vbuc1 ldx #7 jmp b4 - //SEG49 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG50 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] b4_from_b8: - //SEG50 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy - //SEG51 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy + //SEG51 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy + //SEG52 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy jmp b4 - //SEG52 main::@4 + //SEG53 main::@4 b4: - //SEG53 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 -- _deref_pbuc1=vbuxx + //SEG54 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 -- _deref_pbuc1=vbuxx stx SCROLL - //SEG54 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG55 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG55 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG56 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG56 [6] phi (byte*) main::nxt#9 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy - //SEG57 [6] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy + //SEG57 [6] phi (byte*) main::nxt#9 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG58 [6] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy jmp b2 } -//SEG58 fillscreen +//SEG59 fillscreen fillscreen: { .const fill = $20 .label cursor = 2 - //SEG59 [26] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG60 [26] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG60 [26] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG61 [26] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 jmp b1 - //SEG61 [26] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG62 [26] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG62 [26] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG63 [26] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG63 fillscreen::@1 + //SEG64 fillscreen::@1 b1: - //SEG64 [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 + //SEG65 [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 lda #fill ldy #0 sta (cursor),y - //SEG65 [28] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG66 [28] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG66 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG67 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -1044,9 +1046,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG67 fillscreen::@return + //SEG68 fillscreen::@return breturn: - //SEG68 [30] return + //SEG69 [30] return rts } TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" @@ -1166,145 +1168,146 @@ zp ZP_WORD:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 fillscreen::curs FINAL ASSEMBLER Score: 6202 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label RASTER = $d012 .label BGCOL = $d020 .label SCROLL = $d016 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label line = SCREEN+$28 .label nxt = 2 - //SEG10 [5] call fillscreen - //SEG11 [25] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [5] call fillscreen + //SEG12 [25] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] - //SEG13 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG14 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG14 [6] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#1] -- vbuxx=vbuc1 + //SEG15 [6] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#1] -- vbuxx=vbuc1 ldx #7 - //SEG15 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG16 main::@2 + //SEG16 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG17 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b2 - //SEG18 main::@3 + //SEG19 main::@3 b3: - //SEG19 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b3 - //SEG20 main::@8 - //SEG21 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG21 main::@8 + //SEG22 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG22 [10] (byte) main::scroll#1 ← -- (byte) main::scroll#7 -- vbuxx=_dec_vbuxx + //SEG23 [10] (byte) main::scroll#1 ← -- (byte) main::scroll#7 -- vbuxx=_dec_vbuxx dex - //SEG23 [11] if((byte) main::scroll#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::scroll#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b4 - //SEG24 [12] phi from main::@8 to main::@5 [phi:main::@8->main::@5] - //SEG25 [12] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@5#0] -- vbuxx=vbuc1 + //SEG25 [12] phi from main::@8 to main::@5 [phi:main::@8->main::@5] + //SEG26 [12] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@5#0] -- vbuxx=vbuc1 ldx #0 - //SEG26 [12] phi from main::@5 to main::@5 [phi:main::@5->main::@5] - //SEG27 [12] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy - //SEG28 main::@5 + //SEG27 [12] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG28 [12] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy + //SEG29 main::@5 b5: - //SEG29 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG30 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line+1,x sta line,x - //SEG30 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG31 [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG31 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto main::@5 -- vbuxx_neq_vbuc1_then_la1 + //SEG32 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto main::@5 -- vbuxx_neq_vbuc1_then_la1 cpx #$27 bne b5 - //SEG32 main::@10 - //SEG33 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) -- vbuxx=_deref_pbuz1 + //SEG33 main::@10 + //SEG34 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) -- vbuxx=_deref_pbuz1 ldy #0 lda (nxt),y tax - //SEG34 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG35 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #'@' bne b6 - //SEG35 main::@11 - //SEG36 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) -- vbuxx=_deref_pbuc1 + //SEG36 main::@11 + //SEG37 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) -- vbuxx=_deref_pbuc1 ldx TEXT - //SEG37 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] - //SEG38 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG38 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG39 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG39 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy - //SEG40 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] - //SEG41 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy - //SEG42 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy - //SEG43 main::@6 + //SEG40 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG41 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG42 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy + //SEG43 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy + //SEG44 main::@6 b6: - //SEG44 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 -- _deref_pbuc1=vbuxx + //SEG45 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 -- _deref_pbuc1=vbuxx stx line+$27 - //SEG45 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 + //SEG46 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG46 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] - //SEG47 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG48 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@6->main::@4#1] -- vbuxx=vbuc1 + //SEG47 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG48 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG49 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main::@6->main::@4#1] -- vbuxx=vbuc1 ldx #7 - //SEG49 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] - //SEG50 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy - //SEG51 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy - //SEG52 main::@4 + //SEG50 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG51 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy + //SEG52 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy + //SEG53 main::@4 b4: - //SEG53 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 -- _deref_pbuc1=vbuxx + //SEG54 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 -- _deref_pbuc1=vbuxx stx SCROLL - //SEG54 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG55 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG55 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] - //SEG56 [6] phi (byte*) main::nxt#9 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy - //SEG57 [6] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy + //SEG56 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG57 [6] phi (byte*) main::nxt#9 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG58 [6] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy jmp b2 } -//SEG58 fillscreen +//SEG59 fillscreen fillscreen: { .const fill = $20 .label cursor = 2 - //SEG59 [26] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG60 [26] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG60 [26] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG61 [26] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 - //SEG61 [26] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG62 [26] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG63 fillscreen::@1 + //SEG62 [26] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG63 [26] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG64 fillscreen::@1 b1: - //SEG64 [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 + //SEG65 [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 lda #fill ldy #0 sta (cursor),y - //SEG65 [28] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG66 [28] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG66 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG67 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -1313,8 +1316,8 @@ fillscreen: { cmp #@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] +//SEG6 [2] call main +//SEG7 [4] phi from @6 to main [phi:@6->main] main_from_b6: jsr main -//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG8 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call fillscreen - //SEG11 [64] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [5] call fillscreen + //SEG12 [64] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG13 [6] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #CHARGEN sta current_chargen+1 - //SEG14 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG15 [6] phi (byte) current_bit#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@2#2] -- vbuz1=vbuc1 + //SEG16 [6] phi (byte) current_bit#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@2#2] -- vbuz1=vbuc1 lda #1 sta current_bit - //SEG16 [6] phi (byte) scroll#18 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#3] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) scroll#18 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#3] -- vbuz1=vbuc1 lda #7 sta scroll jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG22 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b3 jmp b5 - //SEG22 main::@5 + //SEG23 main::@5 b5: - //SEG23 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG24 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG24 [10] call scroll_soft + //SEG25 [10] call scroll_soft jsr scroll_soft jmp b8 - //SEG25 main::@8 + //SEG26 main::@8 b8: - //SEG26 [11] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG27 [11] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG27 [6] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG28 [6] phi from main::@8 to main::@2 [phi:main::@8->main::@2] b2_from_b8: - //SEG28 [6] phi (byte*) current_chargen#27 = (byte*) current_chargen#11 [phi:main::@8->main::@2#0] -- register_copy - //SEG29 [6] phi (byte*) nxt#31 = (byte*) nxt#14 [phi:main::@8->main::@2#1] -- register_copy - //SEG30 [6] phi (byte) current_bit#29 = (byte) current_bit#12 [phi:main::@8->main::@2#2] -- register_copy - //SEG31 [6] phi (byte) scroll#18 = (byte) scroll#10 [phi:main::@8->main::@2#3] -- register_copy + //SEG29 [6] phi (byte*) current_chargen#27 = (byte*) current_chargen#11 [phi:main::@8->main::@2#0] -- register_copy + //SEG30 [6] phi (byte*) nxt#31 = (byte*) nxt#14 [phi:main::@8->main::@2#1] -- register_copy + //SEG31 [6] phi (byte) current_bit#29 = (byte) current_bit#12 [phi:main::@8->main::@2#2] -- register_copy + //SEG32 [6] phi (byte) scroll#18 = (byte) scroll#10 [phi:main::@8->main::@2#3] -- register_copy jmp b2 } -//SEG32 scroll_soft +//SEG33 scroll_soft scroll_soft: { - //SEG33 [12] (byte) scroll#3 ← -- (byte) scroll#18 -- vbuz1=_dec_vbuz1 + //SEG34 [12] (byte) scroll#3 ← -- (byte) scroll#18 -- vbuz1=_dec_vbuz1 dec scroll - //SEG34 [13] if((byte) scroll#3!=(byte/word/signed word/dword/signed dword) 255) goto scroll_soft::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG35 [13] if((byte) scroll#3!=(byte/word/signed word/dword/signed dword) 255) goto scroll_soft::@1 -- vbuz1_neq_vbuc1_then_la1 lda scroll cmp #$ff bne b1_from_scroll_soft - //SEG35 [14] phi from scroll_soft to scroll_soft::@2 [phi:scroll_soft->scroll_soft::@2] + //SEG36 [14] phi from scroll_soft to scroll_soft::@2 [phi:scroll_soft->scroll_soft::@2] b2_from_scroll_soft: jmp b2 - //SEG36 scroll_soft::@2 + //SEG37 scroll_soft::@2 b2: - //SEG37 [15] call scroll_bit + //SEG38 [15] call scroll_bit jsr scroll_bit - //SEG38 [16] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG39 [16] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] b1_from_b2: - //SEG39 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG40 [16] phi (byte*) nxt#14 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG41 [16] phi (byte) current_bit#12 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [16] phi (byte) scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- vbuz1=vbuc1 + //SEG40 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG41 [16] phi (byte*) nxt#14 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG42 [16] phi (byte) current_bit#12 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG43 [16] phi (byte) scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- vbuz1=vbuc1 lda #7 sta scroll jmp b1 - //SEG43 [16] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG44 [16] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] b1_from_scroll_soft: - //SEG44 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG45 [16] phi (byte*) nxt#14 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG46 [16] phi (byte) current_bit#12 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG47 [16] phi (byte) scroll#10 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG45 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG46 [16] phi (byte*) nxt#14 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG47 [16] phi (byte) current_bit#12 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG48 [16] phi (byte) scroll#10 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy jmp b1 - //SEG48 scroll_soft::@1 + //SEG49 scroll_soft::@1 b1: - //SEG49 [17] *((const byte*) SCROLL#0) ← (byte) scroll#10 -- _deref_pbuc1=vbuz1 + //SEG50 [17] *((const byte*) SCROLL#0) ← (byte) scroll#10 -- _deref_pbuc1=vbuz1 lda scroll sta SCROLL jmp breturn - //SEG50 scroll_soft::@return + //SEG51 scroll_soft::@return breturn: - //SEG51 [18] return + //SEG52 [18] return rts } -//SEG52 scroll_bit +//SEG53 scroll_bit scroll_bit: { .label _3 = $11 .label _4 = $14 @@ -1712,34 +1714,34 @@ scroll_bit: { .label sc = 7 .label r = 6 .label b = 9 - //SEG53 [19] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG54 [19] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr current_bit - //SEG54 [20] if((byte) current_bit#5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@1 -- vbuz1_neq_0_then_la1 + //SEG55 [20] if((byte) current_bit#5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@1 -- vbuz1_neq_0_then_la1 lda current_bit cmp #0 bne b1_from_scroll_bit - //SEG55 [21] phi from scroll_bit to scroll_bit::@4 [phi:scroll_bit->scroll_bit::@4] + //SEG56 [21] phi from scroll_bit to scroll_bit::@4 [phi:scroll_bit->scroll_bit::@4] b4_from_scroll_bit: jmp b4 - //SEG56 scroll_bit::@4 + //SEG57 scroll_bit::@4 b4: - //SEG57 [22] call next_char + //SEG58 [22] call next_char jsr next_char - //SEG58 [23] (byte) next_char::return#0 ← (byte) next_char::return#1 -- vbuz1=vbuz2 + //SEG59 [23] (byte) next_char::return#0 ← (byte) next_char::return#1 -- vbuz1=vbuz2 lda next_char.return_1 sta next_char.return jmp b8 - //SEG59 scroll_bit::@8 + //SEG60 scroll_bit::@8 b8: - //SEG60 [24] (byte~) scroll_bit::$3 ← (byte) next_char::return#0 -- vbuz1=vbuz2 + //SEG61 [24] (byte~) scroll_bit::$3 ← (byte) next_char::return#0 -- vbuz1=vbuz2 lda next_char.return sta _3 - //SEG61 [25] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 -- vwuz1=_word_vbuz2 + //SEG62 [25] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 -- vwuz1=_word_vbuz2 lda _3 sta c lda #0 sta c+1 - //SEG62 [26] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG63 [26] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda c asl sta _4 @@ -1750,7 +1752,7 @@ scroll_bit: { rol _4+1 asl _4 rol _4+1 - //SEG63 [27] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 -- pbuz1=pbuc1_plus_vwuz2 + //SEG64 [27] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 -- pbuz1=pbuc1_plus_vwuz2 lda _4 clc adc #CHARGEN sta current_chargen+1 - //SEG64 [28] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG65 [28] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: - //SEG65 [28] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG66 [28] phi (byte) current_bit#21 = (byte/word/signed word/dword/signed dword) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- vbuz1=vbuc1 + //SEG66 [28] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG67 [28] phi (byte) current_bit#21 = (byte/word/signed word/dword/signed dword) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- vbuz1=vbuc1 lda #$80 sta current_bit - //SEG67 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG68 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG68 [28] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG69 [28] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] b1_from_scroll_bit: - //SEG69 [28] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG70 [28] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG71 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG70 [28] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG71 [28] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG72 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG72 scroll_bit::@1 + //SEG73 scroll_bit::@1 b1: - //SEG73 [29] call scroll_hard - //SEG74 [45] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG74 [29] call scroll_hard + //SEG75 [45] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] scroll_hard_from_b1: jsr scroll_hard jmp b7 - //SEG75 scroll_bit::@7 + //SEG76 scroll_bit::@7 b7: - //SEG76 asm { sei } + //SEG77 asm { sei } sei - //SEG77 [31] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG78 [31] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG78 [32] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG79 [32] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] b2_from_b7: - //SEG79 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- pbuz1=pbuc1 + //SEG80 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- pbuz1=pbuc1 lda #SCREEN+$28+$27 sta sc+1 - //SEG80 [32] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- vbuz1=vbuc1 + //SEG81 [32] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- vbuz1=vbuc1 lda #0 sta r jmp b2 - //SEG81 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG82 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] b2_from_b3: - //SEG82 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG83 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG84 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy jmp b2 - //SEG84 scroll_bit::@2 + //SEG85 scroll_bit::@2 b2: - //SEG85 [33] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG86 [33] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy r lda (current_chargen),y sta bits - //SEG86 [34] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 -- vbuz1=vbuz2_band_vbuz3 + //SEG87 [34] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 -- vbuz1=vbuz2_band_vbuz3 lda bits and current_bit sta _9 - //SEG87 [35] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@3 -- vbuz1_eq_0_then_la1 + //SEG88 [35] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@3 -- vbuz1_eq_0_then_la1 lda _9 cmp #0 beq b3_from_b2 - //SEG88 [36] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] + //SEG89 [36] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] b5_from_b2: jmp b5 - //SEG89 scroll_bit::@5 + //SEG90 scroll_bit::@5 b5: - //SEG90 [37] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG91 [37] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] b3_from_b5: - //SEG91 [37] phi (byte) scroll_bit::b#2 = (byte/word/signed word/dword/signed dword) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- vbuz1=vbuc1 + //SEG92 [37] phi (byte) scroll_bit::b#2 = (byte/word/signed word/dword/signed dword) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- vbuz1=vbuc1 lda #$80+' ' sta b jmp b3 - //SEG92 [37] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG93 [37] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG93 [37] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- vbuz1=vbuc1 + //SEG94 [37] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- vbuz1=vbuc1 lda #' ' sta b jmp b3 - //SEG94 scroll_bit::@3 + //SEG95 scroll_bit::@3 b3: - //SEG95 [38] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 -- _deref_pbuz1=vbuz2 + //SEG96 [38] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 -- _deref_pbuz1=vbuz2 lda b ldy #0 sta (sc),y - //SEG96 [39] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG97 [39] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$28 @@ -1847,161 +1849,161 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG97 [40] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 -- vbuz1=_inc_vbuz1 + //SEG98 [40] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 -- vbuz1=_inc_vbuz1 inc r - //SEG98 [41] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto scroll_bit::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG99 [41] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto scroll_bit::@2 -- vbuz1_neq_vbuc1_then_la1 lda r cmp #8 bne b2_from_b3 jmp b6 - //SEG99 scroll_bit::@6 + //SEG100 scroll_bit::@6 b6: - //SEG100 [42] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG101 [42] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG101 asm { cli } + //SEG102 asm { cli } cli jmp breturn - //SEG102 scroll_bit::@return + //SEG103 scroll_bit::@return breturn: - //SEG103 [44] return + //SEG104 [44] return rts } -//SEG104 scroll_hard +//SEG105 scroll_hard scroll_hard: { .label i = $a - //SEG105 [46] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG106 [46] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG106 [46] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_hard->scroll_hard::@1#0] -- vbuz1=vbuc1 + //SEG107 [46] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_hard->scroll_hard::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG107 [46] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG108 [46] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] b1_from_b1: - //SEG108 [46] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG109 [46] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy jmp b1 - //SEG109 scroll_hard::@1 + //SEG110 scroll_hard::@1 b1: - //SEG110 [47] *((const byte*) SCREEN#0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG111 [47] *((const byte*) SCREEN#0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda SCREEN+1,y sta SCREEN,y - //SEG111 [48] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG112 [48] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda SCREEN+$28*1+1,y sta SCREEN+$28*1,y - //SEG112 [49] *((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) scroll_hard::i#2) ← *((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) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG113 [49] *((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) scroll_hard::i#2) ← *((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) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda SCREEN+$28*2+1,y sta SCREEN+$28*2,y - //SEG113 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG114 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda SCREEN+$28*3+1,y sta SCREEN+$28*3,y - //SEG114 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG115 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda SCREEN+$28*4+1,y sta SCREEN+$28*4,y - //SEG115 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG116 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda SCREEN+$28*5+1,y sta SCREEN+$28*5,y - //SEG116 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG117 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda SCREEN+$28*6+1,y sta SCREEN+$28*6,y - //SEG117 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG118 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda SCREEN+$28*7+1,y sta SCREEN+$28*7,y - //SEG118 [55] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 -- vbuz1=_inc_vbuz1 + //SEG119 [55] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG119 [56] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto scroll_hard::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG120 [56] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto scroll_hard::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$27 bne b1_from_b1 jmp breturn - //SEG120 scroll_hard::@return + //SEG121 scroll_hard::@return breturn: - //SEG121 [57] return + //SEG122 [57] return rts } -//SEG122 next_char +//SEG123 next_char // Find the next char of the scroll text next_char: { .label return = $10 .label c = $d .label return_1 = $d - //SEG123 [58] (byte) next_char::c#0 ← *((byte*) nxt#31) -- vbuz1=_deref_pbuz2 + //SEG124 [58] (byte) next_char::c#0 ← *((byte*) nxt#31) -- vbuz1=_deref_pbuz2 ldy #0 lda (nxt),y sta c - //SEG124 [59] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG125 [59] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #'@' bne b1_from_next_char jmp b2 - //SEG125 next_char::@2 + //SEG126 next_char::@2 b2: - //SEG126 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) -- vbuz1=_deref_pbuc1 + //SEG127 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) -- vbuz1=_deref_pbuc1 lda TEXT sta c - //SEG127 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG128 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: - //SEG128 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG129 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG129 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG130 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 jmp b1 - //SEG130 [61] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG131 [61] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] b1_from_next_char: - //SEG131 [61] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG132 [61] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG132 [61] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG133 [61] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy jmp b1 - //SEG133 next_char::@1 + //SEG134 next_char::@1 b1: - //SEG134 [62] (byte*) nxt#19 ← ++ (byte*) nxt#18 -- pbuz1=_inc_pbuz1 + //SEG135 [62] (byte*) nxt#19 ← ++ (byte*) nxt#18 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: jmp breturn - //SEG135 next_char::@return + //SEG136 next_char::@return breturn: - //SEG136 [63] return + //SEG137 [63] return rts } -//SEG137 fillscreen +//SEG138 fillscreen // Fill the screen with one char fillscreen: { .const fill = $20 .label cursor = $e - //SEG138 [65] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG139 [65] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG139 [65] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG140 [65] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 jmp b1 - //SEG140 [65] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG141 [65] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG141 [65] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG142 [65] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG142 fillscreen::@1 + //SEG143 fillscreen::@1 b1: - //SEG143 [66] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 + //SEG144 [66] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 lda #fill ldy #0 sta (cursor),y - //SEG144 [67] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG145 [67] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG145 [68] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG146 [68] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -2011,9 +2013,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG146 fillscreen::@return + //SEG147 fillscreen::@return breturn: - //SEG147 [69] return + //SEG148 [69] return rts } TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" @@ -2116,11 +2118,13 @@ Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:7 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// An 8x8 char letter scroller +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label PROCPORT = 1 .label CHARGEN = $d000 .label SCREEN = $400 @@ -2130,156 +2134,156 @@ ASSEMBLER BEFORE OPTIMIZATION .label current_bit = 2 .label current_chargen = 3 .label nxt = 7 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] +//SEG6 [2] call main +//SEG7 [4] phi from @6 to main [phi:@6->main] main_from_b6: jsr main -//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG8 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call fillscreen - //SEG11 [64] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [5] call fillscreen + //SEG12 [64] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG13 [6] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #CHARGEN sta current_chargen+1 - //SEG14 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG15 [6] phi (byte) current_bit#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@2#2] -- vbuz1=vbuc1 + //SEG16 [6] phi (byte) current_bit#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@2#2] -- vbuz1=vbuc1 lda #1 sta current_bit - //SEG16 [6] phi (byte) scroll#18 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#3] -- vbuxx=vbuc1 + //SEG17 [6] phi (byte) scroll#18 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#3] -- vbuxx=vbuc1 ldx #7 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG22 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b3 jmp b5 - //SEG22 main::@5 + //SEG23 main::@5 b5: - //SEG23 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG24 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG24 [10] call scroll_soft + //SEG25 [10] call scroll_soft jsr scroll_soft jmp b8 - //SEG25 main::@8 + //SEG26 main::@8 b8: - //SEG26 [11] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG27 [11] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG27 [6] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG28 [6] phi from main::@8 to main::@2 [phi:main::@8->main::@2] b2_from_b8: - //SEG28 [6] phi (byte*) current_chargen#27 = (byte*) current_chargen#11 [phi:main::@8->main::@2#0] -- register_copy - //SEG29 [6] phi (byte*) nxt#31 = (byte*) nxt#14 [phi:main::@8->main::@2#1] -- register_copy - //SEG30 [6] phi (byte) current_bit#29 = (byte) current_bit#12 [phi:main::@8->main::@2#2] -- register_copy - //SEG31 [6] phi (byte) scroll#18 = (byte) scroll#10 [phi:main::@8->main::@2#3] -- register_copy + //SEG29 [6] phi (byte*) current_chargen#27 = (byte*) current_chargen#11 [phi:main::@8->main::@2#0] -- register_copy + //SEG30 [6] phi (byte*) nxt#31 = (byte*) nxt#14 [phi:main::@8->main::@2#1] -- register_copy + //SEG31 [6] phi (byte) current_bit#29 = (byte) current_bit#12 [phi:main::@8->main::@2#2] -- register_copy + //SEG32 [6] phi (byte) scroll#18 = (byte) scroll#10 [phi:main::@8->main::@2#3] -- register_copy jmp b2 } -//SEG32 scroll_soft +//SEG33 scroll_soft scroll_soft: { - //SEG33 [12] (byte) scroll#3 ← -- (byte) scroll#18 -- vbuxx=_dec_vbuxx + //SEG34 [12] (byte) scroll#3 ← -- (byte) scroll#18 -- vbuxx=_dec_vbuxx dex - //SEG34 [13] if((byte) scroll#3!=(byte/word/signed word/dword/signed dword) 255) goto scroll_soft::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG35 [13] if((byte) scroll#3!=(byte/word/signed word/dword/signed dword) 255) goto scroll_soft::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b1_from_scroll_soft - //SEG35 [14] phi from scroll_soft to scroll_soft::@2 [phi:scroll_soft->scroll_soft::@2] + //SEG36 [14] phi from scroll_soft to scroll_soft::@2 [phi:scroll_soft->scroll_soft::@2] b2_from_scroll_soft: jmp b2 - //SEG36 scroll_soft::@2 + //SEG37 scroll_soft::@2 b2: - //SEG37 [15] call scroll_bit + //SEG38 [15] call scroll_bit jsr scroll_bit - //SEG38 [16] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG39 [16] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] b1_from_b2: - //SEG39 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG40 [16] phi (byte*) nxt#14 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG41 [16] phi (byte) current_bit#12 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [16] phi (byte) scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- vbuxx=vbuc1 + //SEG40 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG41 [16] phi (byte*) nxt#14 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG42 [16] phi (byte) current_bit#12 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG43 [16] phi (byte) scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- vbuxx=vbuc1 ldx #7 jmp b1 - //SEG43 [16] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG44 [16] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] b1_from_scroll_soft: - //SEG44 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG45 [16] phi (byte*) nxt#14 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG46 [16] phi (byte) current_bit#12 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG47 [16] phi (byte) scroll#10 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG45 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG46 [16] phi (byte*) nxt#14 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG47 [16] phi (byte) current_bit#12 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG48 [16] phi (byte) scroll#10 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy jmp b1 - //SEG48 scroll_soft::@1 + //SEG49 scroll_soft::@1 b1: - //SEG49 [17] *((const byte*) SCROLL#0) ← (byte) scroll#10 -- _deref_pbuc1=vbuxx + //SEG50 [17] *((const byte*) SCROLL#0) ← (byte) scroll#10 -- _deref_pbuc1=vbuxx stx SCROLL jmp breturn - //SEG50 scroll_soft::@return + //SEG51 scroll_soft::@return breturn: - //SEG51 [18] return + //SEG52 [18] return rts } -//SEG52 scroll_bit +//SEG53 scroll_bit scroll_bit: { .label _4 = 3 .label c = 3 .label sc = 5 - //SEG53 [19] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG54 [19] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr current_bit - //SEG54 [20] if((byte) current_bit#5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@1 -- vbuz1_neq_0_then_la1 + //SEG55 [20] if((byte) current_bit#5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@1 -- vbuz1_neq_0_then_la1 lda current_bit cmp #0 bne b1_from_scroll_bit - //SEG55 [21] phi from scroll_bit to scroll_bit::@4 [phi:scroll_bit->scroll_bit::@4] + //SEG56 [21] phi from scroll_bit to scroll_bit::@4 [phi:scroll_bit->scroll_bit::@4] b4_from_scroll_bit: jmp b4 - //SEG56 scroll_bit::@4 + //SEG57 scroll_bit::@4 b4: - //SEG57 [22] call next_char + //SEG58 [22] call next_char jsr next_char - //SEG58 [23] (byte) next_char::return#0 ← (byte) next_char::return#1 + //SEG59 [23] (byte) next_char::return#0 ← (byte) next_char::return#1 jmp b8 - //SEG59 scroll_bit::@8 + //SEG60 scroll_bit::@8 b8: - //SEG60 [24] (byte~) scroll_bit::$3 ← (byte) next_char::return#0 - //SEG61 [25] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 -- vwuz1=_word_vbuaa + //SEG61 [24] (byte~) scroll_bit::$3 ← (byte) next_char::return#0 + //SEG62 [25] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 -- vwuz1=_word_vbuaa sta c lda #0 sta c+1 - //SEG62 [26] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG63 [26] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _4 rol _4+1 asl _4 rol _4+1 asl _4 rol _4+1 - //SEG63 [27] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 -- pbuz1=pbuc1_plus_vwuz1 + //SEG64 [27] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 -- pbuz1=pbuc1_plus_vwuz1 clc lda current_chargen adc #CHARGEN sta current_chargen+1 - //SEG64 [28] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG65 [28] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: - //SEG65 [28] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG66 [28] phi (byte) current_bit#21 = (byte/word/signed word/dword/signed dword) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- vbuz1=vbuc1 + //SEG66 [28] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG67 [28] phi (byte) current_bit#21 = (byte/word/signed word/dword/signed dword) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- vbuz1=vbuc1 lda #$80 sta current_bit - //SEG67 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG68 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG68 [28] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG69 [28] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] b1_from_scroll_bit: - //SEG69 [28] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG70 [28] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG71 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG70 [28] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG71 [28] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG72 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG72 scroll_bit::@1 + //SEG73 scroll_bit::@1 b1: - //SEG73 [29] call scroll_hard - //SEG74 [45] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG74 [29] call scroll_hard + //SEG75 [45] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] scroll_hard_from_b1: jsr scroll_hard jmp b7 - //SEG75 scroll_bit::@7 + //SEG76 scroll_bit::@7 b7: - //SEG76 asm { sei } + //SEG77 asm { sei } sei - //SEG77 [31] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG78 [31] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG78 [32] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG79 [32] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] b2_from_b7: - //SEG79 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- pbuz1=pbuc1 + //SEG80 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- pbuz1=pbuc1 lda #SCREEN+$28+$27 sta sc+1 - //SEG80 [32] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- vbuxx=vbuc1 + //SEG81 [32] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG81 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG82 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] b2_from_b3: - //SEG82 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG83 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG84 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy jmp b2 - //SEG84 scroll_bit::@2 + //SEG85 scroll_bit::@2 b2: - //SEG85 [33] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) -- vbuaa=pbuz1_derefidx_vbuxx + //SEG86 [33] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) -- vbuaa=pbuz1_derefidx_vbuxx txa tay lda (current_chargen),y - //SEG86 [34] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 -- vbuaa=vbuaa_band_vbuz1 + //SEG87 [34] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 -- vbuaa=vbuaa_band_vbuz1 and current_bit - //SEG87 [35] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@3 -- vbuaa_eq_0_then_la1 + //SEG88 [35] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG88 [36] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] + //SEG89 [36] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] b5_from_b2: jmp b5 - //SEG89 scroll_bit::@5 + //SEG90 scroll_bit::@5 b5: - //SEG90 [37] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG91 [37] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] b3_from_b5: - //SEG91 [37] phi (byte) scroll_bit::b#2 = (byte/word/signed word/dword/signed dword) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- vbuaa=vbuc1 + //SEG92 [37] phi (byte) scroll_bit::b#2 = (byte/word/signed word/dword/signed dword) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- vbuaa=vbuc1 lda #$80+' ' jmp b3 - //SEG92 [37] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG93 [37] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG93 [37] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- vbuaa=vbuc1 + //SEG94 [37] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- vbuaa=vbuc1 lda #' ' jmp b3 - //SEG94 scroll_bit::@3 + //SEG95 scroll_bit::@3 b3: - //SEG95 [38] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 -- _deref_pbuz1=vbuaa + //SEG96 [38] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 -- _deref_pbuz1=vbuaa ldy #0 sta (sc),y - //SEG96 [39] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG97 [39] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$28 @@ -2369,143 +2373,143 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG97 [40] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 -- vbuxx=_inc_vbuxx + //SEG98 [40] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 -- vbuxx=_inc_vbuxx inx - //SEG98 [41] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto scroll_bit::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG99 [41] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto scroll_bit::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b3 jmp b6 - //SEG99 scroll_bit::@6 + //SEG100 scroll_bit::@6 b6: - //SEG100 [42] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG101 [42] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG101 asm { cli } + //SEG102 asm { cli } cli jmp breturn - //SEG102 scroll_bit::@return + //SEG103 scroll_bit::@return breturn: - //SEG103 [44] return + //SEG104 [44] return rts } -//SEG104 scroll_hard +//SEG105 scroll_hard scroll_hard: { - //SEG105 [46] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG106 [46] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG106 [46] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_hard->scroll_hard::@1#0] -- vbuxx=vbuc1 + //SEG107 [46] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_hard->scroll_hard::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG107 [46] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG108 [46] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] b1_from_b1: - //SEG108 [46] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG109 [46] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy jmp b1 - //SEG109 scroll_hard::@1 + //SEG110 scroll_hard::@1 b1: - //SEG110 [47] *((const byte*) SCREEN#0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG111 [47] *((const byte*) SCREEN#0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+1,x sta SCREEN,x - //SEG111 [48] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG112 [48] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*1+1,x sta SCREEN+$28*1,x - //SEG112 [49] *((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) scroll_hard::i#2) ← *((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) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG113 [49] *((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) scroll_hard::i#2) ← *((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) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*2+1,x sta SCREEN+$28*2,x - //SEG113 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG114 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*3+1,x sta SCREEN+$28*3,x - //SEG114 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG115 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*4+1,x sta SCREEN+$28*4,x - //SEG115 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG116 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*5+1,x sta SCREEN+$28*5,x - //SEG116 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG117 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*6+1,x sta SCREEN+$28*6,x - //SEG117 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG118 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*7+1,x sta SCREEN+$28*7,x - //SEG118 [55] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 -- vbuxx=_inc_vbuxx + //SEG119 [55] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 -- vbuxx=_inc_vbuxx inx - //SEG119 [56] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto scroll_hard::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG120 [56] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto scroll_hard::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$27 bne b1_from_b1 jmp breturn - //SEG120 scroll_hard::@return + //SEG121 scroll_hard::@return breturn: - //SEG121 [57] return + //SEG122 [57] return rts } -//SEG122 next_char +//SEG123 next_char // Find the next char of the scroll text next_char: { - //SEG123 [58] (byte) next_char::c#0 ← *((byte*) nxt#31) -- vbuaa=_deref_pbuz1 + //SEG124 [58] (byte) next_char::c#0 ← *((byte*) nxt#31) -- vbuaa=_deref_pbuz1 ldy #0 lda (nxt),y - //SEG124 [59] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG125 [59] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b1_from_next_char jmp b2 - //SEG125 next_char::@2 + //SEG126 next_char::@2 b2: - //SEG126 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) -- vbuaa=_deref_pbuc1 + //SEG127 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) -- vbuaa=_deref_pbuc1 lda TEXT - //SEG127 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG128 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: - //SEG128 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG129 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG129 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG130 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 jmp b1 - //SEG130 [61] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG131 [61] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] b1_from_next_char: - //SEG131 [61] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG132 [61] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG132 [61] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG133 [61] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy jmp b1 - //SEG133 next_char::@1 + //SEG134 next_char::@1 b1: - //SEG134 [62] (byte*) nxt#19 ← ++ (byte*) nxt#18 -- pbuz1=_inc_pbuz1 + //SEG135 [62] (byte*) nxt#19 ← ++ (byte*) nxt#18 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: jmp breturn - //SEG135 next_char::@return + //SEG136 next_char::@return breturn: - //SEG136 [63] return + //SEG137 [63] return rts } -//SEG137 fillscreen +//SEG138 fillscreen // Fill the screen with one char fillscreen: { .const fill = $20 .label cursor = 3 - //SEG138 [65] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG139 [65] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG139 [65] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG140 [65] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 jmp b1 - //SEG140 [65] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG141 [65] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG141 [65] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG142 [65] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG142 fillscreen::@1 + //SEG143 fillscreen::@1 b1: - //SEG143 [66] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 + //SEG144 [66] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 lda #fill ldy #0 sta (cursor),y - //SEG144 [67] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG145 [67] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG145 [68] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG146 [68] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -2515,9 +2519,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG146 fillscreen::@return + //SEG147 fillscreen::@return breturn: - //SEG147 [69] return + //SEG148 [69] return rts } TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" @@ -2731,11 +2735,13 @@ reg byte a [ scroll_bit::$9 ] FINAL ASSEMBLER Score: 20822 -//SEG0 Basic Upstart +//SEG0 File Comments +// An 8x8 char letter scroller +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label PROCPORT = 1 .label CHARGEN = $d000 .label SCREEN = $400 @@ -2745,122 +2751,122 @@ Score: 20822 .label current_bit = 2 .label current_chargen = 3 .label nxt = 7 -//SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 -//SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] -//SEG7 [3] phi from @6 to @end [phi:@6->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG5 @6 +//SEG6 [2] call main +//SEG7 [4] phi from @6 to main [phi:@6->main] +//SEG8 [3] phi from @6 to @end [phi:@6->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call fillscreen - //SEG11 [64] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [5] call fillscreen + //SEG12 [64] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] - //SEG13 [6] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG14 [6] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #CHARGEN sta current_chargen+1 - //SEG14 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG15 [6] phi (byte) current_bit#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@2#2] -- vbuz1=vbuc1 + //SEG16 [6] phi (byte) current_bit#29 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->main::@2#2] -- vbuz1=vbuc1 lda #1 sta current_bit - //SEG16 [6] phi (byte) scroll#18 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#3] -- vbuxx=vbuc1 + //SEG17 [6] phi (byte) scroll#18 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@2#3] -- vbuxx=vbuc1 ldx #7 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG18 main::@2 + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG19 main::@2 b2: - //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b2 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG22 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b3 - //SEG22 main::@5 - //SEG23 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG23 main::@5 + //SEG24 [9] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG24 [10] call scroll_soft + //SEG25 [10] call scroll_soft jsr scroll_soft - //SEG25 main::@8 - //SEG26 [11] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG26 main::@8 + //SEG27 [11] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG27 [6] phi from main::@8 to main::@2 [phi:main::@8->main::@2] - //SEG28 [6] phi (byte*) current_chargen#27 = (byte*) current_chargen#11 [phi:main::@8->main::@2#0] -- register_copy - //SEG29 [6] phi (byte*) nxt#31 = (byte*) nxt#14 [phi:main::@8->main::@2#1] -- register_copy - //SEG30 [6] phi (byte) current_bit#29 = (byte) current_bit#12 [phi:main::@8->main::@2#2] -- register_copy - //SEG31 [6] phi (byte) scroll#18 = (byte) scroll#10 [phi:main::@8->main::@2#3] -- register_copy + //SEG28 [6] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG29 [6] phi (byte*) current_chargen#27 = (byte*) current_chargen#11 [phi:main::@8->main::@2#0] -- register_copy + //SEG30 [6] phi (byte*) nxt#31 = (byte*) nxt#14 [phi:main::@8->main::@2#1] -- register_copy + //SEG31 [6] phi (byte) current_bit#29 = (byte) current_bit#12 [phi:main::@8->main::@2#2] -- register_copy + //SEG32 [6] phi (byte) scroll#18 = (byte) scroll#10 [phi:main::@8->main::@2#3] -- register_copy jmp b2 } -//SEG32 scroll_soft +//SEG33 scroll_soft scroll_soft: { - //SEG33 [12] (byte) scroll#3 ← -- (byte) scroll#18 -- vbuxx=_dec_vbuxx + //SEG34 [12] (byte) scroll#3 ← -- (byte) scroll#18 -- vbuxx=_dec_vbuxx dex - //SEG34 [13] if((byte) scroll#3!=(byte/word/signed word/dword/signed dword) 255) goto scroll_soft::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG35 [13] if((byte) scroll#3!=(byte/word/signed word/dword/signed dword) 255) goto scroll_soft::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b1 - //SEG35 [14] phi from scroll_soft to scroll_soft::@2 [phi:scroll_soft->scroll_soft::@2] - //SEG36 scroll_soft::@2 - //SEG37 [15] call scroll_bit + //SEG36 [14] phi from scroll_soft to scroll_soft::@2 [phi:scroll_soft->scroll_soft::@2] + //SEG37 scroll_soft::@2 + //SEG38 [15] call scroll_bit jsr scroll_bit - //SEG38 [16] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] - //SEG39 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG40 [16] phi (byte*) nxt#14 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG41 [16] phi (byte) current_bit#12 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [16] phi (byte) scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- vbuxx=vbuc1 + //SEG39 [16] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG40 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG41 [16] phi (byte*) nxt#14 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG42 [16] phi (byte) current_bit#12 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG43 [16] phi (byte) scroll#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- vbuxx=vbuc1 ldx #7 - //SEG43 [16] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] - //SEG44 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG45 [16] phi (byte*) nxt#14 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG46 [16] phi (byte) current_bit#12 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG47 [16] phi (byte) scroll#10 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG48 scroll_soft::@1 + //SEG44 [16] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG45 [16] phi (byte*) current_chargen#11 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG46 [16] phi (byte*) nxt#14 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG47 [16] phi (byte) current_bit#12 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG48 [16] phi (byte) scroll#10 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG49 scroll_soft::@1 b1: - //SEG49 [17] *((const byte*) SCROLL#0) ← (byte) scroll#10 -- _deref_pbuc1=vbuxx + //SEG50 [17] *((const byte*) SCROLL#0) ← (byte) scroll#10 -- _deref_pbuc1=vbuxx stx SCROLL - //SEG50 scroll_soft::@return - //SEG51 [18] return + //SEG51 scroll_soft::@return + //SEG52 [18] return rts } -//SEG52 scroll_bit +//SEG53 scroll_bit scroll_bit: { .label _4 = 3 .label c = 3 .label sc = 5 - //SEG53 [19] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG54 [19] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr current_bit - //SEG54 [20] if((byte) current_bit#5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@1 -- vbuz1_neq_0_then_la1 + //SEG55 [20] if((byte) current_bit#5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@1 -- vbuz1_neq_0_then_la1 lda current_bit cmp #0 bne b1 - //SEG55 [21] phi from scroll_bit to scroll_bit::@4 [phi:scroll_bit->scroll_bit::@4] - //SEG56 scroll_bit::@4 - //SEG57 [22] call next_char + //SEG56 [21] phi from scroll_bit to scroll_bit::@4 [phi:scroll_bit->scroll_bit::@4] + //SEG57 scroll_bit::@4 + //SEG58 [22] call next_char jsr next_char - //SEG58 [23] (byte) next_char::return#0 ← (byte) next_char::return#1 - //SEG59 scroll_bit::@8 - //SEG60 [24] (byte~) scroll_bit::$3 ← (byte) next_char::return#0 - //SEG61 [25] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 -- vwuz1=_word_vbuaa + //SEG59 [23] (byte) next_char::return#0 ← (byte) next_char::return#1 + //SEG60 scroll_bit::@8 + //SEG61 [24] (byte~) scroll_bit::$3 ← (byte) next_char::return#0 + //SEG62 [25] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 -- vwuz1=_word_vbuaa sta c lda #0 sta c+1 - //SEG62 [26] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG63 [26] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _4 rol _4+1 asl _4 rol _4+1 asl _4 rol _4+1 - //SEG63 [27] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 -- pbuz1=pbuc1_plus_vwuz1 + //SEG64 [27] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 -- pbuz1=pbuc1_plus_vwuz1 clc lda current_chargen adc #CHARGEN sta current_chargen+1 - //SEG64 [28] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] - //SEG65 [28] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG66 [28] phi (byte) current_bit#21 = (byte/word/signed word/dword/signed dword) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- vbuz1=vbuc1 + //SEG65 [28] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG66 [28] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG67 [28] phi (byte) current_bit#21 = (byte/word/signed word/dword/signed dword) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- vbuz1=vbuc1 lda #$80 sta current_bit - //SEG67 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy - //SEG68 [28] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] - //SEG69 [28] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG70 [28] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG71 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG72 scroll_bit::@1 + //SEG68 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG69 [28] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG70 [28] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG71 [28] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG72 [28] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG73 scroll_bit::@1 b1: - //SEG73 [29] call scroll_hard - //SEG74 [45] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG74 [29] call scroll_hard + //SEG75 [45] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] jsr scroll_hard - //SEG75 scroll_bit::@7 - //SEG76 asm { sei } + //SEG76 scroll_bit::@7 + //SEG77 asm { sei } sei - //SEG77 [31] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG78 [31] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG78 [32] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] - //SEG79 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- pbuz1=pbuc1 + //SEG79 [32] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG80 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- pbuz1=pbuc1 lda #SCREEN+$28+$27 sta sc+1 - //SEG80 [32] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- vbuxx=vbuc1 + //SEG81 [32] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- vbuxx=vbuc1 ldx #0 - //SEG81 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] - //SEG82 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG83 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG84 scroll_bit::@2 + //SEG82 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG83 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG84 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG85 scroll_bit::@2 b2: - //SEG85 [33] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) -- vbuaa=pbuz1_derefidx_vbuxx + //SEG86 [33] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) -- vbuaa=pbuz1_derefidx_vbuxx txa tay lda (current_chargen),y - //SEG86 [34] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 -- vbuaa=vbuaa_band_vbuz1 + //SEG87 [34] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 -- vbuaa=vbuaa_band_vbuz1 and current_bit - //SEG87 [35] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@3 -- vbuaa_eq_0_then_la1 + //SEG88 [35] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG88 [36] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] - //SEG89 scroll_bit::@5 - //SEG90 [37] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG91 [37] phi (byte) scroll_bit::b#2 = (byte/word/signed word/dword/signed dword) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- vbuaa=vbuc1 + //SEG89 [36] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] + //SEG90 scroll_bit::@5 + //SEG91 [37] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG92 [37] phi (byte) scroll_bit::b#2 = (byte/word/signed word/dword/signed dword) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- vbuaa=vbuc1 lda #$80+' ' jmp b3 - //SEG92 [37] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG93 [37] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b4: - //SEG93 [37] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- vbuaa=vbuc1 + //SEG94 [37] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- vbuaa=vbuc1 lda #' ' - //SEG94 scroll_bit::@3 + //SEG95 scroll_bit::@3 b3: - //SEG95 [38] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 -- _deref_pbuz1=vbuaa + //SEG96 [38] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 -- _deref_pbuz1=vbuaa ldy #0 sta (sc),y - //SEG96 [39] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG97 [39] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda sc clc adc #$28 @@ -2934,121 +2940,121 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG97 [40] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 -- vbuxx=_inc_vbuxx + //SEG98 [40] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 -- vbuxx=_inc_vbuxx inx - //SEG98 [41] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto scroll_bit::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG99 [41] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto scroll_bit::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG99 scroll_bit::@6 - //SEG100 [42] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG100 scroll_bit::@6 + //SEG101 [42] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG101 asm { cli } + //SEG102 asm { cli } cli - //SEG102 scroll_bit::@return - //SEG103 [44] return + //SEG103 scroll_bit::@return + //SEG104 [44] return rts } -//SEG104 scroll_hard +//SEG105 scroll_hard scroll_hard: { - //SEG105 [46] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG106 [46] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_hard->scroll_hard::@1#0] -- vbuxx=vbuc1 + //SEG106 [46] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG107 [46] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scroll_hard->scroll_hard::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG107 [46] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] - //SEG108 [46] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG109 scroll_hard::@1 + //SEG108 [46] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG109 [46] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG110 scroll_hard::@1 b1: - //SEG110 [47] *((const byte*) SCREEN#0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG111 [47] *((const byte*) SCREEN#0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+1,x sta SCREEN,x - //SEG111 [48] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG112 [48] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*1+1,x sta SCREEN+$28*1,x - //SEG112 [49] *((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) scroll_hard::i#2) ← *((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) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG113 [49] *((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) scroll_hard::i#2) ← *((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) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*2+1,x sta SCREEN+$28*2,x - //SEG113 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG114 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*3+1,x sta SCREEN+$28*3,x - //SEG114 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG115 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*4+1,x sta SCREEN+$28*4,x - //SEG115 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG116 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*5+1,x sta SCREEN+$28*5,x - //SEG116 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG117 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*6+1,x sta SCREEN+$28*6,x - //SEG117 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG118 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) scroll_hard::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda SCREEN+$28*7+1,x sta SCREEN+$28*7,x - //SEG118 [55] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 -- vbuxx=_inc_vbuxx + //SEG119 [55] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 -- vbuxx=_inc_vbuxx inx - //SEG119 [56] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto scroll_hard::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG120 [56] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto scroll_hard::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$27 bne b1 - //SEG120 scroll_hard::@return - //SEG121 [57] return + //SEG121 scroll_hard::@return + //SEG122 [57] return rts } -//SEG122 next_char +//SEG123 next_char // Find the next char of the scroll text next_char: { - //SEG123 [58] (byte) next_char::c#0 ← *((byte*) nxt#31) -- vbuaa=_deref_pbuz1 + //SEG124 [58] (byte) next_char::c#0 ← *((byte*) nxt#31) -- vbuaa=_deref_pbuz1 ldy #0 lda (nxt),y - //SEG124 [59] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG125 [59] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b1 - //SEG125 next_char::@2 - //SEG126 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) -- vbuaa=_deref_pbuc1 + //SEG126 next_char::@2 + //SEG127 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) -- vbuaa=_deref_pbuc1 lda TEXT - //SEG127 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG128 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG129 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG128 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG129 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG130 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG130 [61] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG131 [61] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG132 [61] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG133 next_char::@1 + //SEG131 [61] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG132 [61] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG133 [61] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG134 next_char::@1 b1: - //SEG134 [62] (byte*) nxt#19 ← ++ (byte*) nxt#18 -- pbuz1=_inc_pbuz1 + //SEG135 [62] (byte*) nxt#19 ← ++ (byte*) nxt#18 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG135 next_char::@return - //SEG136 [63] return + //SEG136 next_char::@return + //SEG137 [63] return rts } -//SEG137 fillscreen +//SEG138 fillscreen // Fill the screen with one char fillscreen: { .const fill = $20 .label cursor = 3 - //SEG138 [65] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG139 [65] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG139 [65] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG140 [65] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 - //SEG140 [65] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG141 [65] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG142 fillscreen::@1 + //SEG141 [65] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG142 [65] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG143 fillscreen::@1 b1: - //SEG143 [66] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 + //SEG144 [66] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 -- _deref_pbuz1=vbuc1 lda #fill ldy #0 sta (cursor),y - //SEG144 [67] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG145 [67] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG145 [68] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG146 [68] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -3057,8 +3063,8 @@ fillscreen: { cmp #@28] +//SEG5 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) }} +//SEG6 [2] phi from @25 to @28 [phi:@25->@28] b28_from_b25: jmp b28 -//SEG6 @28 +//SEG7 @28 b28: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @28 to @end [phi:@28->@end] +//SEG9 [4] phi from @28 to @end [phi:@28->@end] bend_from_b28: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>LOGO)>>2&$f .label ch = 2 - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG13 [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG14 [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BGCOL2 - //SEG14 [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG15 [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 lda BGCOL2 sta BGCOL - //SEG15 [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG16 [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL3 - //SEG16 [10] phi from main to main::toD0181 [phi:main->main::toD0181] + //SEG17 [10] phi from main to main::toD0181 [phi:main->main::toD0181] toD0181_from_main: jmp toD0181 - //SEG17 main::toD0181 + //SEG18 main::toD0181 toD0181: jmp b3 - //SEG18 main::@3 + //SEG19 main::@3 b3: - //SEG19 [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG20 [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG20 [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG21 [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM sta D016 - //SEG21 [13] call fill - //SEG22 [218] phi from main::@3 to fill [phi:main::@3->fill] + //SEG22 [13] call fill + //SEG23 [218] phi from main::@3 to fill [phi:main::@3->fill] fill_from_b3: - //SEG23 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuz1=vbuc1 + //SEG24 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG24 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG25 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG26 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG26 main::@4 + //SEG27 main::@4 b4: - //SEG27 [15] call fill - //SEG28 [218] phi from main::@4 to fill [phi:main::@4->fill] + //SEG28 [15] call fill + //SEG29 [218] phi from main::@4 to fill [phi:main::@4->fill] fill_from_b4: - //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 + //SEG30 [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 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG31 [16] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG32 [16] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG32 [16] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@1#0] -- vbuz1=vbuc1 + //SEG33 [16] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@1#0] -- vbuz1=vbuc1 lda #0 sta ch jmp b1 - //SEG33 [16] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG34 [16] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG34 [16] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG35 [16] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG35 main::@1 + //SEG36 main::@1 b1: - //SEG36 [17] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG37 [17] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy ch tya sta SCREEN,y - //SEG37 [18] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 + //SEG38 [18] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 inc ch - //SEG38 [19] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG39 [19] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #$f0 bne b1_from_b1 - //SEG39 [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG40 [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG40 main::@2 + //SEG41 main::@2 b2: - //SEG41 [21] call sin16s_gen2 - //SEG42 [98] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] + //SEG42 [21] call sin16s_gen2 + //SEG43 [98] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] sin16s_gen2_from_b2: jsr sin16s_gen2 - //SEG43 [22] phi from main::@2 to main::@6 [phi:main::@2->main::@6] + //SEG44 [22] phi from main::@2 to main::@6 [phi:main::@2->main::@6] b6_from_b2: jmp b6 - //SEG44 main::@6 + //SEG45 main::@6 b6: - //SEG45 [23] call loop - //SEG46 [25] phi from main::@6 to loop [phi:main::@6->loop] + //SEG46 [23] call loop + //SEG47 [25] phi from main::@6 to loop [phi:main::@6->loop] loop_from_b6: jsr loop jmp breturn - //SEG47 main::@return + //SEG48 main::@return breturn: - //SEG48 [24] return + //SEG49 [24] return rts } -//SEG49 loop +//SEG50 loop loop: { .label _1 = $37 .label xpos = $39 - //SEG50 [26] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG51 [26] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: - //SEG51 [26] phi (word) xsin_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vwuz1=vbuc1 + //SEG52 [26] phi (word) xsin_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vwuz1=vbuc1 lda #<0 sta xsin_idx lda #>0 sta xsin_idx+1 jmp b1 - //SEG52 loop::@1 + //SEG53 loop::@1 b1: jmp b4 - //SEG53 loop::@4 + //SEG54 loop::@4 b4: - //SEG54 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG55 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b6 - //SEG55 loop::@6 + //SEG56 loop::@6 b6: - //SEG56 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG57 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG57 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 + //SEG58 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 lda xsin_idx clc adc #xsin sta _1+1 - //SEG58 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz2 + //SEG59 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz2 ldy #0 lda (_1),y sta xpos iny lda (_1),y sta xpos+1 - //SEG59 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 -- vwsz1=vwsz2 + //SEG60 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 -- vwsz1=vwsz2 lda xpos sta render_logo.xpos lda xpos+1 sta render_logo.xpos+1 - //SEG60 [32] call render_logo + //SEG61 [32] call render_logo jsr render_logo jmp b15 - //SEG61 loop::@15 + //SEG62 loop::@15 b15: - //SEG62 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 + //SEG63 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 lda xsin_idx clc adc #2 @@ -4310,40 +4311,40 @@ loop: { bcc !+ inc xsin_idx+1 !: - //SEG63 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@16 -- vwuz1_neq_vwuc1_then_la1 + //SEG64 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@16 -- vwuz1_neq_vwuc1_then_la1 lda xsin_idx+1 cmp #>XSIN_SIZE*2 bne b16_from_b15 lda xsin_idx cmp #loop::@7] + //SEG65 [35] phi from loop::@15 to loop::@7 [phi:loop::@15->loop::@7] b7_from_b15: - //SEG65 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@15->loop::@7#0] -- vwuz1=vbuc1 + //SEG66 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@15->loop::@7#0] -- vwuz1=vbuc1 lda #<0 sta xsin_idx lda #>0 sta xsin_idx+1 jmp b7 - //SEG66 loop::@7 + //SEG67 loop::@7 b7: - //SEG67 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG68 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG68 [26] phi from loop::@7 to loop::@1 [phi:loop::@7->loop::@1] + //SEG69 [26] phi from loop::@7 to loop::@1 [phi:loop::@7->loop::@1] b1_from_b7: - //SEG69 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@7->loop::@1#0] -- register_copy + //SEG70 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@7->loop::@1#0] -- register_copy jmp b1 - //SEG70 [37] phi from loop::@15 to loop::@16 [phi:loop::@15->loop::@16] + //SEG71 [37] phi from loop::@15 to loop::@16 [phi:loop::@15->loop::@16] b16_from_b15: jmp b16 - //SEG71 loop::@16 + //SEG72 loop::@16 b16: - //SEG72 [35] phi from loop::@16 to loop::@7 [phi:loop::@16->loop::@7] + //SEG73 [35] phi from loop::@16 to loop::@7 [phi:loop::@16->loop::@7] b7_from_b16: - //SEG73 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@16->loop::@7#0] -- register_copy + //SEG74 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@16->loop::@7#0] -- register_copy jmp b7 } -//SEG74 render_logo +//SEG75 render_logo render_logo: { .label _0 = $3d .label _1 = $3e @@ -4373,21 +4374,21 @@ render_logo: { .label _92 = $4e .label _96 = $4f .label logo_idx_13 = 7 - //SEG75 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuz1=_byte_vwsz2 + //SEG76 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuz1=_byte_vwsz2 lda xpos sta _0 - //SEG76 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG77 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and _0 sta _1 - //SEG77 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuz1=vbuc1_bor_vbuz2 + //SEG78 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuz1=vbuc1_bor_vbuz2 lda #VIC_MCM ora _1 sta _2 - //SEG78 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuz1 + //SEG79 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuz1 lda _2 sta D016 - //SEG79 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 + //SEG80 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 lda xpos+1 cmp #$80 ror @@ -4403,339 +4404,339 @@ render_logo: { cmp #$80 ror _3+1 ror _3 - //SEG80 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 + //SEG81 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 lda _3 sta x_char - //SEG81 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 + //SEG82 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 lda xpos+1 bmi b1 - //SEG82 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] + //SEG83 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] b2_from_render_logo: - //SEG83 [45] phi (byte) render_logo::screen_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuz1=vbuc1 + //SEG84 [45] phi (byte) render_logo::screen_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuz1=vbuc1 lda #0 sta screen_idx jmp b2 - //SEG84 render_logo::@2 + //SEG85 render_logo::@2 b2: - //SEG85 [46] if((byte) render_logo::screen_idx#17!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@5 -- vbuz1_neq_vbuz2_then_la1 + //SEG86 [46] if((byte) render_logo::screen_idx#17!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@5 -- vbuz1_neq_vbuz2_then_la1 lda screen_idx cmp x_char bne b5 - //SEG86 [47] phi from render_logo::@2 to render_logo::@6 [phi:render_logo::@2->render_logo::@6] + //SEG87 [47] phi from render_logo::@2 to render_logo::@6 [phi:render_logo::@2->render_logo::@6] b6_from_b2: - //SEG87 [47] phi (byte) render_logo::logo_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@6#0] -- vbuz1=vbuc1 + //SEG88 [47] phi (byte) render_logo::logo_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@6#0] -- vbuz1=vbuc1 lda #0 sta logo_idx - //SEG88 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#17 [phi:render_logo::@2->render_logo::@6#1] -- register_copy + //SEG89 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#17 [phi:render_logo::@2->render_logo::@6#1] -- register_copy jmp b6 - //SEG89 render_logo::@6 + //SEG90 render_logo::@6 b6: - //SEG90 [48] if((byte) render_logo::screen_idx#19!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG91 [48] if((byte) render_logo::screen_idx#19!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@9 -- vbuz1_neq_vbuc1_then_la1 lda screen_idx cmp #$28 bne b9 jmp breturn - //SEG91 render_logo::@return + //SEG92 render_logo::@return breturn: - //SEG92 [49] return + //SEG93 [49] return rts - //SEG93 render_logo::@9 + //SEG94 render_logo::@9 b9: - //SEG94 [50] (byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuz2_plus_0 + //SEG95 [50] (byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuz2_plus_0 lda logo_idx sta _15 - //SEG95 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$15 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG96 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$15 -- pbuc1_derefidx_vbuz1=vbuz2 lda _15 ldy screen_idx sta SCREEN,y jmp b9_1 - //SEG96 render_logo::@9_1 + //SEG97 render_logo::@9_1 b9_1: - //SEG97 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_vbuc1 + //SEG98 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*1 clc adc logo_idx sta _34 - //SEG98 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG99 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuz1=vbuz2 lda _34 ldy screen_idx sta SCREEN+$28*1,y jmp b9_2 - //SEG99 render_logo::@9_2 + //SEG100 render_logo::@9_2 b9_2: - //SEG100 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 + //SEG101 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*2 clc adc logo_idx sta _38 - //SEG101 [55] *((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) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG102 [55] *((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) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuz1=vbuz2 lda _38 ldy screen_idx sta SCREEN+$28*2,y jmp b9_3 - //SEG102 render_logo::@9_3 + //SEG103 render_logo::@9_3 b9_3: - //SEG103 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG104 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*3 clc adc logo_idx sta _42 - //SEG104 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG105 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuz1=vbuz2 lda _42 ldy screen_idx sta SCREEN+$28*3,y jmp b9_4 - //SEG105 render_logo::@9_4 + //SEG106 render_logo::@9_4 b9_4: - //SEG106 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_plus_vbuc1 + //SEG107 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*4 clc adc logo_idx sta _46 - //SEG107 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG108 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuz1=vbuz2 lda _46 ldy screen_idx sta SCREEN+$28*4,y jmp b9_5 - //SEG108 render_logo::@9_5 + //SEG109 render_logo::@9_5 b9_5: - //SEG109 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz2_plus_vbuc1 + //SEG110 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*5 clc adc logo_idx sta _50 - //SEG110 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG111 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuz1=vbuz2 lda _50 ldy screen_idx sta SCREEN+$28*5,y jmp b26 - //SEG111 render_logo::@26 + //SEG112 render_logo::@26 b26: - //SEG112 [62] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#19 -- vbuz1=_inc_vbuz1 + //SEG113 [62] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#19 -- vbuz1=_inc_vbuz1 inc screen_idx - //SEG113 [63] (byte) render_logo::logo_idx#2 ← ++ (byte) render_logo::logo_idx#11 -- vbuz1=_inc_vbuz1 + //SEG114 [63] (byte) render_logo::logo_idx#2 ← ++ (byte) render_logo::logo_idx#11 -- vbuz1=_inc_vbuz1 inc logo_idx - //SEG114 [47] phi from render_logo::@26 to render_logo::@6 [phi:render_logo::@26->render_logo::@6] + //SEG115 [47] phi from render_logo::@26 to render_logo::@6 [phi:render_logo::@26->render_logo::@6] b6_from_b26: - //SEG115 [47] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#2 [phi:render_logo::@26->render_logo::@6#0] -- register_copy - //SEG116 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#3 [phi:render_logo::@26->render_logo::@6#1] -- register_copy + //SEG116 [47] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#2 [phi:render_logo::@26->render_logo::@6#0] -- register_copy + //SEG117 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#3 [phi:render_logo::@26->render_logo::@6#1] -- register_copy jmp b6 - //SEG117 render_logo::@5 + //SEG118 render_logo::@5 b5: - //SEG118 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG119 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx lda #0 sta SCREEN,y jmp b5_1 - //SEG119 render_logo::@5_1 + //SEG120 render_logo::@5_1 b5_1: - //SEG120 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG121 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx lda #0 sta SCREEN+$28*1,y jmp b5_2 - //SEG121 render_logo::@5_2 + //SEG122 render_logo::@5_2 b5_2: - //SEG122 [66] *((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) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG123 [66] *((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) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx lda #0 sta SCREEN+$28*2,y jmp b5_3 - //SEG123 render_logo::@5_3 + //SEG124 render_logo::@5_3 b5_3: - //SEG124 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG125 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx lda #0 sta SCREEN+$28*3,y jmp b5_4 - //SEG125 render_logo::@5_4 + //SEG126 render_logo::@5_4 b5_4: - //SEG126 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG127 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx lda #0 sta SCREEN+$28*4,y jmp b5_5 - //SEG127 render_logo::@5_5 + //SEG128 render_logo::@5_5 b5_5: - //SEG128 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG129 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx lda #0 sta SCREEN+$28*5,y jmp b22 - //SEG129 render_logo::@22 + //SEG130 render_logo::@22 b22: - //SEG130 [70] (byte) render_logo::screen_idx#2 ← ++ (byte) render_logo::screen_idx#17 -- vbuz1=_inc_vbuz1 + //SEG131 [70] (byte) render_logo::screen_idx#2 ← ++ (byte) render_logo::screen_idx#17 -- vbuz1=_inc_vbuz1 inc screen_idx - //SEG131 [45] phi from render_logo::@22 to render_logo::@2 [phi:render_logo::@22->render_logo::@2] + //SEG132 [45] phi from render_logo::@22 to render_logo::@2 [phi:render_logo::@22->render_logo::@2] b2_from_b22: - //SEG132 [45] phi (byte) render_logo::screen_idx#17 = (byte) render_logo::screen_idx#2 [phi:render_logo::@22->render_logo::@2#0] -- register_copy + //SEG133 [45] phi (byte) render_logo::screen_idx#17 = (byte) render_logo::screen_idx#2 [phi:render_logo::@22->render_logo::@2#0] -- register_copy jmp b2 - //SEG133 render_logo::@1 + //SEG134 render_logo::@1 b1: - //SEG134 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsz1=_neg_vbsz2 + //SEG135 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsz1=_neg_vbsz2 lda x_char eor #$ff clc adc #1 sta _17 - //SEG135 [72] (byte~) render_logo::logo_idx#13 ← (byte)(signed byte~) render_logo::$17 -- vbuz1=vbuz2 + //SEG136 [72] (byte~) render_logo::logo_idx#13 ← (byte)(signed byte~) render_logo::$17 -- vbuz1=vbuz2 lda _17 sta logo_idx_13 - //SEG136 [73] phi from render_logo::@1 to render_logo::@11 [phi:render_logo::@1->render_logo::@11] + //SEG137 [73] phi from render_logo::@1 to render_logo::@11 [phi:render_logo::@1->render_logo::@11] b11_from_b1: - //SEG137 [73] phi (byte) render_logo::screen_idx#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@11#0] -- vbuz1=vbuc1 + //SEG138 [73] phi (byte) render_logo::screen_idx#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@11#0] -- vbuz1=vbuc1 lda #0 sta screen_idx_20 - //SEG138 [73] phi (byte) render_logo::logo_idx#10 = (byte~) render_logo::logo_idx#13 [phi:render_logo::@1->render_logo::@11#1] -- register_copy + //SEG139 [73] phi (byte) render_logo::logo_idx#10 = (byte~) render_logo::logo_idx#13 [phi:render_logo::@1->render_logo::@11#1] -- register_copy jmp b11 - //SEG139 render_logo::@11 + //SEG140 render_logo::@11 b11: - //SEG140 [74] if((byte) render_logo::logo_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@14 -- vbuz1_neq_vbuc1_then_la1 + //SEG141 [74] if((byte) render_logo::logo_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@14 -- vbuz1_neq_vbuc1_then_la1 lda logo_idx_10 cmp #$28 bne b14 - //SEG141 [75] phi from render_logo::@11 render_logo::@35 to render_logo::@15 [phi:render_logo::@11/render_logo::@35->render_logo::@15] + //SEG142 [75] phi from render_logo::@11 render_logo::@35 to render_logo::@15 [phi:render_logo::@11/render_logo::@35->render_logo::@15] b15_from_b11: b15_from_b35: - //SEG142 [75] phi (byte) render_logo::screen_idx#14 = (byte) render_logo::screen_idx#20 [phi:render_logo::@11/render_logo::@35->render_logo::@15#0] -- register_copy + //SEG143 [75] phi (byte) render_logo::screen_idx#14 = (byte) render_logo::screen_idx#20 [phi:render_logo::@11/render_logo::@35->render_logo::@15#0] -- register_copy jmp b15 - //SEG143 render_logo::@15 + //SEG144 render_logo::@15 b15: - //SEG144 [76] if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@18 -- vbuz1_neq_vbuc1_then_la1 + //SEG145 [76] if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@18 -- vbuz1_neq_vbuc1_then_la1 lda screen_idx_14 cmp #$28 bne b18 jmp breturn - //SEG145 render_logo::@18 + //SEG146 render_logo::@18 b18: - //SEG146 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG147 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx_14 lda #0 sta SCREEN,y jmp b18_1 - //SEG147 render_logo::@18_1 + //SEG148 render_logo::@18_1 b18_1: - //SEG148 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG149 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx_14 lda #0 sta SCREEN+$28*1,y jmp b18_2 - //SEG149 render_logo::@18_2 + //SEG150 render_logo::@18_2 b18_2: - //SEG150 [79] *((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) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG151 [79] *((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) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx_14 lda #0 sta SCREEN+$28*2,y jmp b18_3 - //SEG151 render_logo::@18_3 + //SEG152 render_logo::@18_3 b18_3: - //SEG152 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG153 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx_14 lda #0 sta SCREEN+$28*3,y jmp b18_4 - //SEG153 render_logo::@18_4 + //SEG154 render_logo::@18_4 b18_4: - //SEG154 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG155 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx_14 lda #0 sta SCREEN+$28*4,y jmp b18_5 - //SEG155 render_logo::@18_5 + //SEG156 render_logo::@18_5 b18_5: - //SEG156 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG157 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy screen_idx_14 lda #0 sta SCREEN+$28*5,y jmp b35 - //SEG157 render_logo::@35 + //SEG158 render_logo::@35 b35: - //SEG158 [83] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#14 -- vbuz1=_inc_vbuz1 + //SEG159 [83] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#14 -- vbuz1=_inc_vbuz1 inc screen_idx_5 jmp b15_from_b35 - //SEG159 render_logo::@14 + //SEG160 render_logo::@14 b14: - //SEG160 [84] (byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuz2_plus_0 + //SEG161 [84] (byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuz2_plus_0 lda logo_idx_10 sta _23 - //SEG161 [85] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$23 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG162 [85] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$23 -- pbuc1_derefidx_vbuz1=vbuz2 lda _23 ldy screen_idx_20 sta SCREEN,y jmp b14_1 - //SEG162 render_logo::@14_1 + //SEG163 render_logo::@14_1 b14_1: - //SEG163 [86] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_vbuc1 + //SEG164 [86] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*1 clc adc logo_idx_10 sta _80 - //SEG164 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG165 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuz1=vbuz2 lda _80 ldy screen_idx_20 sta SCREEN+$28*1,y jmp b14_2 - //SEG165 render_logo::@14_2 + //SEG166 render_logo::@14_2 b14_2: - //SEG166 [88] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 + //SEG167 [88] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*2 clc adc logo_idx_10 sta _84 - //SEG167 [89] *((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) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG168 [89] *((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) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuz1=vbuz2 lda _84 ldy screen_idx_20 sta SCREEN+$28*2,y jmp b14_3 - //SEG168 render_logo::@14_3 + //SEG169 render_logo::@14_3 b14_3: - //SEG169 [90] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG170 [90] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*3 clc adc logo_idx_10 sta _88 - //SEG170 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG171 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuz1=vbuz2 lda _88 ldy screen_idx_20 sta SCREEN+$28*3,y jmp b14_4 - //SEG171 render_logo::@14_4 + //SEG172 render_logo::@14_4 b14_4: - //SEG172 [92] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_plus_vbuc1 + //SEG173 [92] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*4 clc adc logo_idx_10 sta _92 - //SEG173 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG174 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuz1=vbuz2 lda _92 ldy screen_idx_20 sta SCREEN+$28*4,y jmp b14_5 - //SEG174 render_logo::@14_5 + //SEG175 render_logo::@14_5 b14_5: - //SEG175 [94] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz2_plus_vbuc1 + //SEG176 [94] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz2_plus_vbuc1 lda #$28*5 clc adc logo_idx_10 sta _96 - //SEG176 [95] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG177 [95] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuz1=vbuz2 lda _96 ldy screen_idx_20 sta SCREEN+$28*5,y jmp b31 - //SEG177 render_logo::@31 + //SEG178 render_logo::@31 b31: - //SEG178 [96] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#20 -- vbuz1=_inc_vbuz1 + //SEG179 [96] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#20 -- vbuz1=_inc_vbuz1 inc screen_idx_4 - //SEG179 [97] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuz1=_inc_vbuz1 + //SEG180 [97] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuz1=_inc_vbuz1 inc logo_idx_3 - //SEG180 [73] phi from render_logo::@31 to render_logo::@11 [phi:render_logo::@31->render_logo::@11] + //SEG181 [73] phi from render_logo::@31 to render_logo::@11 [phi:render_logo::@31->render_logo::@11] b11_from_b31: - //SEG181 [73] phi (byte) render_logo::screen_idx#20 = (byte) render_logo::screen_idx#4 [phi:render_logo::@31->render_logo::@11#0] -- register_copy - //SEG182 [73] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@31->render_logo::@11#1] -- register_copy + //SEG182 [73] phi (byte) render_logo::screen_idx#20 = (byte) render_logo::screen_idx#4 [phi:render_logo::@31->render_logo::@11#0] -- register_copy + //SEG183 [73] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@31->render_logo::@11#1] -- register_copy jmp b11 } -//SEG183 sin16s_gen2 +//SEG184 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -4751,11 +4752,11 @@ sin16s_gen2: { .label sintab = $d .label x = 9 .label i = $f - //SEG184 [99] call div32u16u - //SEG185 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG185 [99] call div32u16u + //SEG186 [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 + //SEG187 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -4765,9 +4766,9 @@ sin16s_gen2: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b3 - //SEG187 sin16s_gen2::@3 + //SEG188 sin16s_gen2::@3 b3: - //SEG188 [101] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG189 [101] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -4776,19 +4777,19 @@ sin16s_gen2: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG189 [102] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] + //SEG190 [102] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] b1_from_b3: - //SEG190 [102] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG191 [102] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG191 [102] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG192 [102] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #xsin sta sintab+1 - //SEG192 [102] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG193 [102] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -4796,15 +4797,15 @@ sin16s_gen2: { sta x+2 sta x+3 jmp b1 - //SEG193 [102] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] + //SEG194 [102] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] b1_from_b5: - //SEG194 [102] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy - //SEG195 [102] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy - //SEG196 [102] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy + //SEG195 [102] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy + //SEG196 [102] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy + //SEG197 [102] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy jmp b1 - //SEG197 sin16s_gen2::@1 + //SEG198 sin16s_gen2::@1 b1: - //SEG198 [103] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG199 [103] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -4813,24 +4814,24 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG199 [104] call sin16s + //SEG200 [104] call sin16s jsr sin16s - //SEG200 [105] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG201 [105] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b4 - //SEG201 sin16s_gen2::@4 + //SEG202 sin16s_gen2::@4 b4: - //SEG202 [106] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG203 [106] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta mul16s.a lda sin16s.return+1 sta mul16s.a+1 - //SEG203 [107] call mul16s + //SEG204 [107] call mul16s jsr mul16s - //SEG204 [108] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 + //SEG205 [108] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 lda mul16s.return sta mul16s.return_2 lda mul16s.return+1 @@ -4840,9 +4841,9 @@ sin16s_gen2: { lda mul16s.return+3 sta mul16s.return_2+3 jmp b5 - //SEG205 sin16s_gen2::@5 + //SEG206 sin16s_gen2::@5 b5: - //SEG206 [109] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 + //SEG207 [109] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 lda mul16s.return_2 sta _5 lda mul16s.return_2+1 @@ -4851,12 +4852,12 @@ sin16s_gen2: { sta _5+2 lda mul16s.return_2+3 sta _5+3 - //SEG207 [110] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG208 [110] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG208 [111] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz2 + //SEG209 [111] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz2 lda _6 clc adc #offs sta _8+1 - //SEG209 [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG210 [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG210 [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG211 [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -4879,7 +4880,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG211 [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG212 [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4893,12 +4894,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG212 [115] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG213 [115] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG213 [116] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG214 [116] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>XSIN_SIZE bcc b1_from_b5 @@ -4908,12 +4909,12 @@ sin16s_gen2: { bcc b1_from_b5 !: jmp breturn - //SEG214 sin16s_gen2::@return + //SEG215 sin16s_gen2::@return breturn: - //SEG215 [117] return + //SEG216 [117] return rts } -//SEG216 mul16s +//SEG217 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication mul16s: { @@ -4924,22 +4925,22 @@ mul16s: { .label return = $72 .label a = $5a .label return_2 = $5c - //SEG217 [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG218 [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG218 [119] call mul16u - //SEG219 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG219 [119] call mul16u + //SEG220 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //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 + //SEG221 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG222 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG222 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG223 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -4949,9 +4950,9 @@ mul16s: { lda mul16u.res+3 sta mul16u.return+3 jmp b6 - //SEG223 mul16s::@6 + //SEG224 mul16s::@6 b6: - //SEG224 [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG225 [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -4960,23 +4961,23 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - //SEG225 [122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG226 [122] 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 - //SEG226 mul16s::@3 + //SEG227 mul16s::@3 b3: - //SEG227 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG228 [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 + //SEG229 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG229 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + //SEG230 [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 - //SEG230 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG231 [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 - //SEG231 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG232 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG232 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG233 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG233 mul16s::@1 + //SEG234 mul16s::@1 b1: jmp b2 - //SEG234 mul16s::@2 + //SEG235 mul16s::@2 b2: - //SEG235 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG236 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -5009,12 +5010,12 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG236 mul16s::@return + //SEG237 mul16s::@return breturn: - //SEG237 [129] return + //SEG238 [129] return rts } -//SEG238 mul16u +//SEG239 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label _1 = $76 @@ -5024,7 +5025,7 @@ mul16u: { .label return = $68 .label b = $15 .label return_3 = $97 - //SEG239 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG240 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -5032,44 +5033,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG240 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG241 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //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 + //SEG242 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG243 [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 - //SEG243 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG244 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG244 mul16u::@1 + //SEG245 mul16u::@1 b1: - //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 + //SEG246 [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 - //SEG246 mul16u::@return + //SEG247 mul16u::@return breturn: - //SEG247 [134] return + //SEG248 [134] return rts - //SEG248 mul16u::@2 + //SEG249 mul16u::@2 b2: - //SEG249 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG250 [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 - //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 + //SEG251 [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 - //SEG251 mul16u::@7 + //SEG252 mul16u::@7 b7: - //SEG252 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG253 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -5083,30 +5084,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG253 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG254 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG254 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG255 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG255 mul16u::@4 + //SEG256 mul16u::@4 b4: - //SEG256 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG257 [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 - //SEG257 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG258 [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 - //SEG258 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG259 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //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 + //SEG260 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG261 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG262 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG262 sin16s +//SEG263 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -5127,7 +5128,7 @@ sin16s: { .label sinx = $26 .label isUpper = $21 .label return_5 = $26 - //SEG263 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG264 [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 @@ -5145,9 +5146,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG264 sin16s::@4 + //SEG265 sin16s::@4 b4: - //SEG265 [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG266 [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 - //SEG266 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG267 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //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 + //SEG268 [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 - //SEG268 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG269 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG269 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG270 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG270 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG271 [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 - //SEG271 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG272 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG272 sin16s::@1 + //SEG273 sin16s::@1 b1: - //SEG273 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG274 [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 @@ -5195,9 +5196,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG274 sin16s::@5 + //SEG275 sin16s::@5 b5: - //SEG275 [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG276 [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 - //SEG276 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG277 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG277 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG278 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG278 sin16s::@2 + //SEG279 sin16s::@2 b2: - //SEG279 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG280 [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 @@ -5235,107 +5236,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG280 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG281 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG281 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [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 - //SEG282 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG283 [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 - //SEG283 [151] call mulu16_sel - //SEG284 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG284 [151] call mulu16_sel + //SEG285 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //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 + //SEG286 [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 - //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 + //SEG287 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG288 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG288 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG289 [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 - //SEG289 sin16s::@8 + //SEG290 sin16s::@8 b8: - //SEG290 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG291 [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 - //SEG291 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG292 [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 - //SEG292 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG293 [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 - //SEG293 [156] call mulu16_sel - //SEG294 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG294 [156] call mulu16_sel + //SEG295 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //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 + //SEG296 [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 - //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 + //SEG297 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG298 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG298 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG299 [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 - //SEG299 sin16s::@9 + //SEG300 sin16s::@9 b9: - //SEG300 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG301 [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 - //SEG301 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG302 [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 - //SEG302 [160] call mulu16_sel - //SEG303 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG303 [160] call mulu16_sel + //SEG304 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //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 + //SEG305 [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 - //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 + //SEG306 [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 - //SEG306 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG307 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG307 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG308 [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 - //SEG308 sin16s::@10 + //SEG309 sin16s::@10 b10: - //SEG309 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG310 [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 - //SEG310 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG311 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -5343,71 +5344,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG311 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG312 [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 - //SEG312 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG313 [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 - //SEG313 [166] call mulu16_sel - //SEG314 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG314 [166] call mulu16_sel + //SEG315 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //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 + //SEG316 [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 - //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 + //SEG317 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG318 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG318 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG319 [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 - //SEG319 sin16s::@11 + //SEG320 sin16s::@11 b11: - //SEG320 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG321 [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 - //SEG321 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG322 [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 - //SEG322 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG323 [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 - //SEG323 [171] call mulu16_sel - //SEG324 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG324 [171] call mulu16_sel + //SEG325 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //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 + //SEG326 [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 - //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 + //SEG327 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG328 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG328 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG329 [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 - //SEG329 sin16s::@12 + //SEG330 sin16s::@12 b12: - //SEG330 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG331 [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 - //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 + //SEG332 [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 @@ -5418,7 +5419,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG332 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG333 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -5426,14 +5427,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //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 + //SEG334 [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 - //SEG334 sin16s::@6 + //SEG335 sin16s::@6 b6: - //SEG335 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG336 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -5443,28 +5444,28 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG336 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG337 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG337 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG338 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG338 sin16s::@3 + //SEG339 sin16s::@3 b3: jmp breturn - //SEG339 sin16s::@return + //SEG340 sin16s::@return breturn: - //SEG340 [179] return + //SEG341 [179] return rts - //SEG341 sin16s::@15 + //SEG342 sin16s::@15 b15: - //SEG342 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG343 [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 } -//SEG343 mulu16_sel +//SEG344 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -5479,23 +5480,23 @@ mulu16_sel: { .label return_11 = $8f .label select = $2c .label return_12 = $a3 - //SEG344 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG345 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG345 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG346 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG346 [184] call mul16u - //SEG347 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG347 [184] call mul16u + //SEG348 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //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 + //SEG349 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG350 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG350 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG351 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -5505,9 +5506,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b2 - //SEG351 mulu16_sel::@2 + //SEG352 mulu16_sel::@2 b2: - //SEG352 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG353 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta _0 lda mul16u.return_3+1 @@ -5516,7 +5517,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return_3+3 sta _0+3 - //SEG353 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG354 [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 @@ -5535,18 +5536,18 @@ mulu16_sel: { dex bne !- !e: - //SEG354 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG355 [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 - //SEG355 mulu16_sel::@return + //SEG356 mulu16_sel::@return breturn: - //SEG356 [189] return + //SEG357 [189] return rts } -//SEG357 div32u16u +//SEG358 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { @@ -5554,62 +5555,62 @@ div32u16u: { .label quotient_lo = $ab .label return = $ad .label return_2 = $50 - //SEG358 [191] call divr16u - //SEG359 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG359 [191] call divr16u + //SEG360 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG360 [200] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG361 [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 - //SEG361 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG362 [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 - //SEG362 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG363 [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 - //SEG363 div32u16u::@2 + //SEG364 div32u16u::@2 b2: - //SEG364 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG365 [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 - //SEG365 [194] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG366 [194] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG366 [195] call divr16u - //SEG367 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG367 [195] call divr16u + //SEG368 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG368 [200] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG369 [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 - //SEG369 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG370 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG370 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG371 [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 - //SEG371 div32u16u::@3 + //SEG372 div32u16u::@3 b3: - //SEG372 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG373 [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 - //SEG373 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG374 [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 @@ -5619,12 +5620,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG374 div32u16u::@return + //SEG375 div32u16u::@return breturn: - //SEG375 [199] return + //SEG376 [199] return rts } -//SEG376 divr16u +//SEG377 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5639,63 +5640,63 @@ divr16u: { .label return = $31 .label return_2 = $a5 .label return_3 = $a9 - //SEG377 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG378 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG378 [201] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG379 [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 - //SEG379 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG380 [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 - //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 + //SEG381 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG382 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG382 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG383 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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 + //SEG384 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG385 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG386 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG387 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG387 divr16u::@1 + //SEG388 divr16u::@1 b1: - //SEG388 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG389 [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 - //SEG389 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG390 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG390 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG391 [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 - //SEG391 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG392 [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 - //SEG392 divr16u::@4 + //SEG393 divr16u::@4 b4: - //SEG393 [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG394 [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 - //SEG394 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG395 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG395 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG396 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG396 divr16u::@2 + //SEG397 divr16u::@2 b2: - //SEG397 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [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 - //SEG398 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG399 [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 - //SEG399 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG400 [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 @@ -5705,14 +5706,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG400 divr16u::@5 + //SEG401 divr16u::@5 b5: - //SEG401 [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG402 [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG402 [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG403 [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 - //SEG403 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG404 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //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 + //SEG405 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG406 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG406 divr16u::@3 + //SEG407 divr16u::@3 b3: - //SEG407 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG408 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //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 + //SEG409 [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 - //SEG409 divr16u::@6 + //SEG410 divr16u::@6 b6: - //SEG410 [216] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG411 [216] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG411 divr16u::@return + //SEG412 divr16u::@return breturn: - //SEG412 [217] return + //SEG413 [217] return rts } -//SEG413 fill -// Simple routines for working with memory +//SEG414 fill // Fill some memory with a value fill: { .label end = $b5 .label addr = $35 .label val = $34 - //SEG414 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG415 [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 @@ -5763,23 +5763,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG415 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG416 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG416 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG417 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG417 fill::@1 + //SEG418 fill::@1 b1: - //SEG418 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG419 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG419 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG420 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG420 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG421 [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 @@ -5787,9 +5787,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG421 fill::@return + //SEG422 fill::@return breturn: - //SEG422 [224] return + //SEG423 [224] return rts } .align $100 @@ -6275,11 +6275,12 @@ Allocated (was zp ZP_DWORD:80) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2: Allocated (was zp ZP_WORD:123) zp ZP_WORD:31 [ sin16s::x1#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 @@ -6305,152 +6306,152 @@ ASSEMBLER BEFORE OPTIMIZATION .const XSIN_SIZE = $200 .label rem16u = 2 .label xsin_idx = 2 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b25 -//SEG3 @25 +//SEG4 @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 @25 to @28 [phi:@25->@28] +//SEG5 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) }} +//SEG6 [2] phi from @25 to @28 [phi:@25->@28] b28_from_b25: jmp b28 -//SEG6 @28 +//SEG7 @28 b28: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @28 to @end [phi:@28->@end] +//SEG9 [4] phi from @28 to @end [phi:@28->@end] bend_from_b28: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>LOGO)>>2&$f - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG13 [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG14 [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BGCOL2 - //SEG14 [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG15 [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 lda BGCOL2 sta BGCOL - //SEG15 [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG16 [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL3 - //SEG16 [10] phi from main to main::toD0181 [phi:main->main::toD0181] + //SEG17 [10] phi from main to main::toD0181 [phi:main->main::toD0181] toD0181_from_main: jmp toD0181 - //SEG17 main::toD0181 + //SEG18 main::toD0181 toD0181: jmp b3 - //SEG18 main::@3 + //SEG19 main::@3 b3: - //SEG19 [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG20 [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG20 [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG21 [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM sta D016 - //SEG21 [13] call fill - //SEG22 [218] phi from main::@3 to fill [phi:main::@3->fill] + //SEG22 [13] call fill + //SEG23 [218] phi from main::@3 to fill [phi:main::@3->fill] fill_from_b3: - //SEG23 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 + //SEG24 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG24 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG25 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG26 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG26 main::@4 + //SEG27 main::@4 b4: - //SEG27 [15] call fill - //SEG28 [218] phi from main::@4 to fill [phi:main::@4->fill] + //SEG28 [15] call fill + //SEG29 [218] phi from main::@4 to fill [phi:main::@4->fill] fill_from_b4: - //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 + //SEG30 [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 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG31 [16] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG32 [16] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG32 [16] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@1#0] -- vbuxx=vbuc1 + //SEG33 [16] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG33 [16] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG34 [16] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG34 [16] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG35 [16] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG35 main::@1 + //SEG36 main::@1 b1: - //SEG36 [17] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG37 [17] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG37 [18] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuxx=_inc_vbuxx + //SEG38 [18] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuxx=_inc_vbuxx inx - //SEG38 [19] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG39 [19] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$f0 bne b1_from_b1 - //SEG39 [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG40 [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG40 main::@2 + //SEG41 main::@2 b2: - //SEG41 [21] call sin16s_gen2 - //SEG42 [98] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] + //SEG42 [21] call sin16s_gen2 + //SEG43 [98] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] sin16s_gen2_from_b2: jsr sin16s_gen2 - //SEG43 [22] phi from main::@2 to main::@6 [phi:main::@2->main::@6] + //SEG44 [22] phi from main::@2 to main::@6 [phi:main::@2->main::@6] b6_from_b2: jmp b6 - //SEG44 main::@6 + //SEG45 main::@6 b6: - //SEG45 [23] call loop - //SEG46 [25] phi from main::@6 to loop [phi:main::@6->loop] + //SEG46 [23] call loop + //SEG47 [25] phi from main::@6 to loop [phi:main::@6->loop] loop_from_b6: jsr loop jmp breturn - //SEG47 main::@return + //SEG48 main::@return breturn: - //SEG48 [24] return + //SEG49 [24] return rts } -//SEG49 loop +//SEG50 loop loop: { .label _1 = 8 .label xpos = 8 - //SEG50 [26] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG51 [26] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: - //SEG51 [26] phi (word) xsin_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vwuz1=vbuc1 + //SEG52 [26] phi (word) xsin_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vwuz1=vbuc1 lda #<0 sta xsin_idx lda #>0 sta xsin_idx+1 jmp b1 - //SEG52 loop::@1 + //SEG53 loop::@1 b1: jmp b4 - //SEG53 loop::@4 + //SEG54 loop::@4 b4: - //SEG54 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG55 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b6 - //SEG55 loop::@6 + //SEG56 loop::@6 b6: - //SEG56 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG57 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG57 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 + //SEG58 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 lda xsin_idx clc adc #xsin sta _1+1 - //SEG58 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz1 + //SEG59 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz1 ldy #0 lda (xpos),y tax @@ -6466,13 +6467,13 @@ loop: { lda (xpos),y stx xpos sta xpos+1 - //SEG59 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 - //SEG60 [32] call render_logo + //SEG60 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 + //SEG61 [32] call render_logo jsr render_logo jmp b15 - //SEG61 loop::@15 + //SEG62 loop::@15 b15: - //SEG62 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 + //SEG63 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 lda xsin_idx clc adc #2 @@ -6480,53 +6481,53 @@ loop: { bcc !+ inc xsin_idx+1 !: - //SEG63 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@16 -- vwuz1_neq_vwuc1_then_la1 + //SEG64 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@16 -- vwuz1_neq_vwuc1_then_la1 lda xsin_idx+1 cmp #>XSIN_SIZE*2 bne b16_from_b15 lda xsin_idx cmp #loop::@7] + //SEG65 [35] phi from loop::@15 to loop::@7 [phi:loop::@15->loop::@7] b7_from_b15: - //SEG65 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@15->loop::@7#0] -- vwuz1=vbuc1 + //SEG66 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@15->loop::@7#0] -- vwuz1=vbuc1 lda #<0 sta xsin_idx lda #>0 sta xsin_idx+1 jmp b7 - //SEG66 loop::@7 + //SEG67 loop::@7 b7: - //SEG67 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG68 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG68 [26] phi from loop::@7 to loop::@1 [phi:loop::@7->loop::@1] + //SEG69 [26] phi from loop::@7 to loop::@1 [phi:loop::@7->loop::@1] b1_from_b7: - //SEG69 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@7->loop::@1#0] -- register_copy + //SEG70 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@7->loop::@1#0] -- register_copy jmp b1 - //SEG70 [37] phi from loop::@15 to loop::@16 [phi:loop::@15->loop::@16] + //SEG71 [37] phi from loop::@15 to loop::@16 [phi:loop::@15->loop::@16] b16_from_b15: jmp b16 - //SEG71 loop::@16 + //SEG72 loop::@16 b16: - //SEG72 [35] phi from loop::@16 to loop::@7 [phi:loop::@16->loop::@7] + //SEG73 [35] phi from loop::@16 to loop::@7 [phi:loop::@16->loop::@7] b7_from_b16: - //SEG73 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@16->loop::@7#0] -- register_copy + //SEG74 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@16->loop::@7#0] -- register_copy jmp b7 } -//SEG74 render_logo +//SEG75 render_logo render_logo: { .label _3 = $e .label xpos = 8 .label x_char = $16 - //SEG75 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuaa=_byte_vwsz1 + //SEG76 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuaa=_byte_vwsz1 lda xpos - //SEG76 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuaa_band_vbuc1 + //SEG77 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuaa_band_vbuc1 and #7 - //SEG77 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuaa=vbuc1_bor_vbuaa + //SEG78 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuaa=vbuc1_bor_vbuaa ora #VIC_MCM - //SEG78 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuaa + //SEG79 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuaa sta D016 - //SEG79 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 + //SEG80 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 lda xpos+1 cmp #$80 ror @@ -6542,282 +6543,282 @@ render_logo: { cmp #$80 ror _3+1 ror _3 - //SEG80 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 + //SEG81 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 lda _3 sta x_char - //SEG81 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 + //SEG82 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 lda xpos+1 bmi b1 - //SEG82 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] + //SEG83 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] b2_from_render_logo: - //SEG83 [45] phi (byte) render_logo::screen_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuxx=vbuc1 + //SEG84 [45] phi (byte) render_logo::screen_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG84 render_logo::@2 + //SEG85 render_logo::@2 b2: - //SEG85 [46] if((byte) render_logo::screen_idx#17!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@5 -- vbuxx_neq_vbuz1_then_la1 + //SEG86 [46] if((byte) render_logo::screen_idx#17!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@5 -- vbuxx_neq_vbuz1_then_la1 cpx x_char bne b5 - //SEG86 [47] phi from render_logo::@2 to render_logo::@6 [phi:render_logo::@2->render_logo::@6] + //SEG87 [47] phi from render_logo::@2 to render_logo::@6 [phi:render_logo::@2->render_logo::@6] b6_from_b2: - //SEG87 [47] phi (byte) render_logo::logo_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@6#0] -- vbuyy=vbuc1 + //SEG88 [47] phi (byte) render_logo::logo_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@6#0] -- vbuyy=vbuc1 ldy #0 - //SEG88 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#17 [phi:render_logo::@2->render_logo::@6#1] -- register_copy + //SEG89 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#17 [phi:render_logo::@2->render_logo::@6#1] -- register_copy jmp b6 - //SEG89 render_logo::@6 + //SEG90 render_logo::@6 b6: - //SEG90 [48] if((byte) render_logo::screen_idx#19!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG91 [48] if((byte) render_logo::screen_idx#19!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b9 jmp breturn - //SEG91 render_logo::@return + //SEG92 render_logo::@return breturn: - //SEG92 [49] return + //SEG93 [49] return rts - //SEG93 render_logo::@9 + //SEG94 render_logo::@9 b9: - //SEG94 [50] (byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuaa=vbuyy_plus_0 + //SEG95 [50] (byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuaa=vbuyy_plus_0 tya - //SEG95 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$15 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG96 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$15 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x jmp b9_1 - //SEG96 render_logo::@9_1 + //SEG97 render_logo::@9_1 b9_1: - //SEG97 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_plus_vbuc1 + //SEG98 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*1 - //SEG98 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG99 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*1,x jmp b9_2 - //SEG99 render_logo::@9_2 + //SEG100 render_logo::@9_2 b9_2: - //SEG100 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuyy_plus_vbuc1 + //SEG101 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*2 - //SEG101 [55] *((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) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG102 [55] *((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) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*2,x jmp b9_3 - //SEG102 render_logo::@9_3 + //SEG103 render_logo::@9_3 b9_3: - //SEG103 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_plus_vbuc1 + //SEG104 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*3 - //SEG104 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG105 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*3,x jmp b9_4 - //SEG105 render_logo::@9_4 + //SEG106 render_logo::@9_4 b9_4: - //SEG106 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_plus_vbuc1 + //SEG107 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*4 - //SEG107 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG108 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*4,x jmp b9_5 - //SEG108 render_logo::@9_5 + //SEG109 render_logo::@9_5 b9_5: - //SEG109 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuyy_plus_vbuc1 + //SEG110 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*5 - //SEG110 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG111 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*5,x jmp b26 - //SEG111 render_logo::@26 + //SEG112 render_logo::@26 b26: - //SEG112 [62] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#19 -- vbuxx=_inc_vbuxx + //SEG113 [62] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#19 -- vbuxx=_inc_vbuxx inx - //SEG113 [63] (byte) render_logo::logo_idx#2 ← ++ (byte) render_logo::logo_idx#11 -- vbuyy=_inc_vbuyy + //SEG114 [63] (byte) render_logo::logo_idx#2 ← ++ (byte) render_logo::logo_idx#11 -- vbuyy=_inc_vbuyy iny - //SEG114 [47] phi from render_logo::@26 to render_logo::@6 [phi:render_logo::@26->render_logo::@6] + //SEG115 [47] phi from render_logo::@26 to render_logo::@6 [phi:render_logo::@26->render_logo::@6] b6_from_b26: - //SEG115 [47] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#2 [phi:render_logo::@26->render_logo::@6#0] -- register_copy - //SEG116 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#3 [phi:render_logo::@26->render_logo::@6#1] -- register_copy + //SEG116 [47] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#2 [phi:render_logo::@26->render_logo::@6#0] -- register_copy + //SEG117 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#3 [phi:render_logo::@26->render_logo::@6#1] -- register_copy jmp b6 - //SEG117 render_logo::@5 + //SEG118 render_logo::@5 b5: - //SEG118 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG119 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN,x jmp b5_1 - //SEG119 render_logo::@5_1 + //SEG120 render_logo::@5_1 b5_1: - //SEG120 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG121 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*1,x jmp b5_2 - //SEG121 render_logo::@5_2 + //SEG122 render_logo::@5_2 b5_2: - //SEG122 [66] *((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) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG123 [66] *((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) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*2,x jmp b5_3 - //SEG123 render_logo::@5_3 + //SEG124 render_logo::@5_3 b5_3: - //SEG124 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG125 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*3,x jmp b5_4 - //SEG125 render_logo::@5_4 + //SEG126 render_logo::@5_4 b5_4: - //SEG126 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG127 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*4,x jmp b5_5 - //SEG127 render_logo::@5_5 + //SEG128 render_logo::@5_5 b5_5: - //SEG128 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG129 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*5,x jmp b22 - //SEG129 render_logo::@22 + //SEG130 render_logo::@22 b22: - //SEG130 [70] (byte) render_logo::screen_idx#2 ← ++ (byte) render_logo::screen_idx#17 -- vbuxx=_inc_vbuxx + //SEG131 [70] (byte) render_logo::screen_idx#2 ← ++ (byte) render_logo::screen_idx#17 -- vbuxx=_inc_vbuxx inx - //SEG131 [45] phi from render_logo::@22 to render_logo::@2 [phi:render_logo::@22->render_logo::@2] + //SEG132 [45] phi from render_logo::@22 to render_logo::@2 [phi:render_logo::@22->render_logo::@2] b2_from_b22: - //SEG132 [45] phi (byte) render_logo::screen_idx#17 = (byte) render_logo::screen_idx#2 [phi:render_logo::@22->render_logo::@2#0] -- register_copy + //SEG133 [45] phi (byte) render_logo::screen_idx#17 = (byte) render_logo::screen_idx#2 [phi:render_logo::@22->render_logo::@2#0] -- register_copy jmp b2 - //SEG133 render_logo::@1 + //SEG134 render_logo::@1 b1: - //SEG134 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsaa=_neg_vbsz1 + //SEG135 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsaa=_neg_vbsz1 lda x_char eor #$ff clc adc #1 - //SEG135 [72] (byte~) render_logo::logo_idx#13 ← (byte)(signed byte~) render_logo::$17 -- vbuyy=vbuaa + //SEG136 [72] (byte~) render_logo::logo_idx#13 ← (byte)(signed byte~) render_logo::$17 -- vbuyy=vbuaa tay - //SEG136 [73] phi from render_logo::@1 to render_logo::@11 [phi:render_logo::@1->render_logo::@11] + //SEG137 [73] phi from render_logo::@1 to render_logo::@11 [phi:render_logo::@1->render_logo::@11] b11_from_b1: - //SEG137 [73] phi (byte) render_logo::screen_idx#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@11#0] -- vbuxx=vbuc1 + //SEG138 [73] phi (byte) render_logo::screen_idx#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@11#0] -- vbuxx=vbuc1 ldx #0 - //SEG138 [73] phi (byte) render_logo::logo_idx#10 = (byte~) render_logo::logo_idx#13 [phi:render_logo::@1->render_logo::@11#1] -- register_copy + //SEG139 [73] phi (byte) render_logo::logo_idx#10 = (byte~) render_logo::logo_idx#13 [phi:render_logo::@1->render_logo::@11#1] -- register_copy jmp b11 - //SEG139 render_logo::@11 + //SEG140 render_logo::@11 b11: - //SEG140 [74] if((byte) render_logo::logo_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@14 -- vbuyy_neq_vbuc1_then_la1 + //SEG141 [74] if((byte) render_logo::logo_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@14 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne b14 - //SEG141 [75] phi from render_logo::@11 render_logo::@35 to render_logo::@15 [phi:render_logo::@11/render_logo::@35->render_logo::@15] + //SEG142 [75] phi from render_logo::@11 render_logo::@35 to render_logo::@15 [phi:render_logo::@11/render_logo::@35->render_logo::@15] b15_from_b11: b15_from_b35: - //SEG142 [75] phi (byte) render_logo::screen_idx#14 = (byte) render_logo::screen_idx#20 [phi:render_logo::@11/render_logo::@35->render_logo::@15#0] -- register_copy + //SEG143 [75] phi (byte) render_logo::screen_idx#14 = (byte) render_logo::screen_idx#20 [phi:render_logo::@11/render_logo::@35->render_logo::@15#0] -- register_copy jmp b15 - //SEG143 render_logo::@15 + //SEG144 render_logo::@15 b15: - //SEG144 [76] if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@18 -- vbuxx_neq_vbuc1_then_la1 + //SEG145 [76] if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@18 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b18 jmp breturn - //SEG145 render_logo::@18 + //SEG146 render_logo::@18 b18: - //SEG146 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG147 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN,x jmp b18_1 - //SEG147 render_logo::@18_1 + //SEG148 render_logo::@18_1 b18_1: - //SEG148 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG149 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*1,x jmp b18_2 - //SEG149 render_logo::@18_2 + //SEG150 render_logo::@18_2 b18_2: - //SEG150 [79] *((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) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG151 [79] *((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) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*2,x jmp b18_3 - //SEG151 render_logo::@18_3 + //SEG152 render_logo::@18_3 b18_3: - //SEG152 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG153 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*3,x jmp b18_4 - //SEG153 render_logo::@18_4 + //SEG154 render_logo::@18_4 b18_4: - //SEG154 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG155 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*4,x jmp b18_5 - //SEG155 render_logo::@18_5 + //SEG156 render_logo::@18_5 b18_5: - //SEG156 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG157 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN+$28*5,x jmp b35 - //SEG157 render_logo::@35 + //SEG158 render_logo::@35 b35: - //SEG158 [83] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#14 -- vbuxx=_inc_vbuxx + //SEG159 [83] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#14 -- vbuxx=_inc_vbuxx inx jmp b15_from_b35 - //SEG159 render_logo::@14 + //SEG160 render_logo::@14 b14: - //SEG160 [84] (byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuaa=vbuyy_plus_0 + //SEG161 [84] (byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuaa=vbuyy_plus_0 tya - //SEG161 [85] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$23 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG162 [85] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$23 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x jmp b14_1 - //SEG162 render_logo::@14_1 + //SEG163 render_logo::@14_1 b14_1: - //SEG163 [86] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_plus_vbuc1 + //SEG164 [86] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*1 - //SEG164 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG165 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*1,x jmp b14_2 - //SEG165 render_logo::@14_2 + //SEG166 render_logo::@14_2 b14_2: - //SEG166 [88] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuyy_plus_vbuc1 + //SEG167 [88] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*2 - //SEG167 [89] *((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) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG168 [89] *((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) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*2,x jmp b14_3 - //SEG168 render_logo::@14_3 + //SEG169 render_logo::@14_3 b14_3: - //SEG169 [90] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_plus_vbuc1 + //SEG170 [90] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*3 - //SEG170 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG171 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*3,x jmp b14_4 - //SEG171 render_logo::@14_4 + //SEG172 render_logo::@14_4 b14_4: - //SEG172 [92] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_plus_vbuc1 + //SEG173 [92] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*4 - //SEG173 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG174 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*4,x jmp b14_5 - //SEG174 render_logo::@14_5 + //SEG175 render_logo::@14_5 b14_5: - //SEG175 [94] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuyy_plus_vbuc1 + //SEG176 [94] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*5 - //SEG176 [95] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG177 [95] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*5,x jmp b31 - //SEG177 render_logo::@31 + //SEG178 render_logo::@31 b31: - //SEG178 [96] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#20 -- vbuxx=_inc_vbuxx + //SEG179 [96] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#20 -- vbuxx=_inc_vbuxx inx - //SEG179 [97] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuyy=_inc_vbuyy + //SEG180 [97] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuyy=_inc_vbuyy iny - //SEG180 [73] phi from render_logo::@31 to render_logo::@11 [phi:render_logo::@31->render_logo::@11] + //SEG181 [73] phi from render_logo::@31 to render_logo::@11 [phi:render_logo::@31->render_logo::@11] b11_from_b31: - //SEG181 [73] phi (byte) render_logo::screen_idx#20 = (byte) render_logo::screen_idx#4 [phi:render_logo::@31->render_logo::@11#0] -- register_copy - //SEG182 [73] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@31->render_logo::@11#1] -- register_copy + //SEG182 [73] phi (byte) render_logo::screen_idx#20 = (byte) render_logo::screen_idx#4 [phi:render_logo::@31->render_logo::@11#0] -- register_copy + //SEG183 [73] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@31->render_logo::@11#1] -- register_copy jmp b11 } -//SEG183 sin16s_gen2 +//SEG184 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -6833,28 +6834,28 @@ sin16s_gen2: { .label sintab = 2 .label x = 4 .label i = 8 - //SEG184 [99] call div32u16u - //SEG185 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG185 [99] call div32u16u + //SEG186 [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 + //SEG187 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b3 - //SEG187 sin16s_gen2::@3 + //SEG188 sin16s_gen2::@3 b3: - //SEG188 [101] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 - //SEG189 [102] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] + //SEG189 [101] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + //SEG190 [102] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] b1_from_b3: - //SEG190 [102] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG191 [102] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG191 [102] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG192 [102] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #xsin sta sintab+1 - //SEG192 [102] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG193 [102] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6862,15 +6863,15 @@ sin16s_gen2: { sta x+2 sta x+3 jmp b1 - //SEG193 [102] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] + //SEG194 [102] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] b1_from_b5: - //SEG194 [102] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy - //SEG195 [102] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy - //SEG196 [102] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy + //SEG195 [102] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy + //SEG196 [102] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy + //SEG197 [102] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy jmp b1 - //SEG197 sin16s_gen2::@1 + //SEG198 sin16s_gen2::@1 b1: - //SEG198 [103] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG199 [103] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -6879,26 +6880,26 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG199 [104] call sin16s + //SEG200 [104] call sin16s jsr sin16s - //SEG200 [105] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG201 [105] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b4 - //SEG201 sin16s_gen2::@4 + //SEG202 sin16s_gen2::@4 b4: - //SEG202 [106] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - //SEG203 [107] call mul16s + //SEG203 [106] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + //SEG204 [107] call mul16s jsr mul16s - //SEG204 [108] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG205 [108] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 jmp b5 - //SEG205 sin16s_gen2::@5 + //SEG206 sin16s_gen2::@5 b5: - //SEG206 [109] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - //SEG207 [110] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG207 [109] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + //SEG208 [110] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG208 [111] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz1 + //SEG209 [111] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz1 clc lda _8 adc #offs sta _8+1 - //SEG209 [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG210 [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG210 [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG211 [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -6921,7 +6922,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG211 [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG212 [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6935,12 +6936,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG212 [115] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG213 [115] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG213 [116] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG214 [116] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>XSIN_SIZE bcc b1_from_b5 @@ -6950,12 +6951,12 @@ sin16s_gen2: { bcc b1_from_b5 !: jmp breturn - //SEG214 sin16s_gen2::@return + //SEG215 sin16s_gen2::@return breturn: - //SEG215 [117] return + //SEG216 [117] return rts } -//SEG216 mul16s +//SEG217 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication mul16s: { @@ -6965,43 +6966,43 @@ mul16s: { .label m = $a .label return = $a .label a = $17 - //SEG217 [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG218 [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG218 [119] call mul16u - //SEG219 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG219 [119] call mul16u + //SEG220 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //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 + //SEG221 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG222 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG222 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG223 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b6 - //SEG223 mul16s::@6 + //SEG224 mul16s::@6 b6: - //SEG224 [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG225 [122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG225 [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG226 [122] 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 - //SEG226 mul16s::@3 + //SEG227 mul16s::@3 b3: - //SEG227 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG228 [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 + //SEG229 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG229 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG230 [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 - //SEG230 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG231 [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 - //SEG231 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG232 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG232 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG233 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG233 mul16s::@1 + //SEG234 mul16s::@1 b1: jmp b2 - //SEG234 mul16s::@2 + //SEG235 mul16s::@2 b2: - //SEG235 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG236 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG236 mul16s::@return + //SEG237 mul16s::@return breturn: - //SEG237 [129] return + //SEG238 [129] return rts } -//SEG238 mul16u +//SEG239 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $12 @@ -7039,7 +7040,7 @@ mul16u: { .label res = $a .label return = $a .label b = $e - //SEG239 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG240 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -7047,42 +7048,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG240 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG241 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //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 + //SEG242 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG243 [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 - //SEG243 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG244 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG244 mul16u::@1 + //SEG245 mul16u::@1 b1: - //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 + //SEG246 [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 - //SEG246 mul16u::@return + //SEG247 mul16u::@return breturn: - //SEG247 [134] return + //SEG248 [134] return rts - //SEG248 mul16u::@2 + //SEG249 mul16u::@2 b2: - //SEG249 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG250 [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 - //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 + //SEG251 [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 - //SEG251 mul16u::@7 + //SEG252 mul16u::@7 b7: - //SEG252 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG253 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -7096,30 +7097,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG253 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG254 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG254 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG255 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG255 mul16u::@4 + //SEG256 mul16u::@4 b4: - //SEG256 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG257 [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 - //SEG257 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG258 [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 - //SEG258 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG259 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //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 + //SEG260 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG261 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG262 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG262 sin16s +//SEG263 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -7137,7 +7138,7 @@ sin16s: { .label x5_128 = $e .label sinx = $17 .label isUpper = $16 - //SEG263 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG264 [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 @@ -7155,9 +7156,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG264 sin16s::@4 + //SEG265 sin16s::@4 b4: - //SEG265 [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG266 [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 - //SEG266 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG267 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //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 + //SEG268 [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 - //SEG268 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG269 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG269 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG270 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG270 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG271 [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 - //SEG271 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG272 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG272 sin16s::@1 + //SEG273 sin16s::@1 b1: - //SEG273 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG274 [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 @@ -7205,9 +7206,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG274 sin16s::@5 + //SEG275 sin16s::@5 b5: - //SEG275 [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG276 [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 - //SEG276 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG277 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG277 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG278 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG278 sin16s::@2 + //SEG279 sin16s::@2 b2: - //SEG279 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG280 [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 @@ -7237,80 +7238,80 @@ sin16s: { rol _6+3 dey bne !- - //SEG280 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG281 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG281 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [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 - //SEG282 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG283 [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 - //SEG283 [151] call mulu16_sel - //SEG284 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG284 [151] call mulu16_sel + //SEG285 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //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 + //SEG286 [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 - //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 + //SEG287 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG288 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG288 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG289 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b8 - //SEG289 sin16s::@8 + //SEG290 sin16s::@8 b8: - //SEG290 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG291 [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 - //SEG291 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG292 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG292 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG293 [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 - //SEG293 [156] call mulu16_sel - //SEG294 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG294 [156] call mulu16_sel + //SEG295 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //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 + //SEG296 [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 - //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 + //SEG297 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG298 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG298 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG299 [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 - //SEG299 sin16s::@9 + //SEG300 sin16s::@9 b9: - //SEG300 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG301 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG302 [160] call mulu16_sel - //SEG303 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG301 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG302 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG303 [160] call mulu16_sel + //SEG304 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //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 + //SEG305 [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 - //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 + //SEG306 [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 - //SEG306 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG307 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG307 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG308 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b10 - //SEG308 sin16s::@10 + //SEG309 sin16s::@10 b10: - //SEG309 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG310 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG310 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG311 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -7318,56 +7319,56 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG311 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG312 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG312 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG313 [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 - //SEG313 [166] call mulu16_sel - //SEG314 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG314 [166] call mulu16_sel + //SEG315 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //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 + //SEG316 [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 - //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 + //SEG317 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG318 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG318 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG319 [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 - //SEG319 sin16s::@11 + //SEG320 sin16s::@11 b11: - //SEG320 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG321 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG322 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG321 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG322 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG323 [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 - //SEG323 [171] call mulu16_sel - //SEG324 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG324 [171] call mulu16_sel + //SEG325 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //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 + //SEG326 [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 - //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 + //SEG327 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG328 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG328 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG329 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b12 - //SEG329 sin16s::@12 + //SEG330 sin16s::@12 b12: - //SEG330 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //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 + //SEG331 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG332 [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 !- - //SEG332 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG333 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -7375,14 +7376,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //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 + //SEG334 [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 - //SEG334 sin16s::@6 + //SEG335 sin16s::@6 b6: - //SEG335 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG336 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -7392,24 +7393,24 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG336 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG337 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG337 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG338 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG338 sin16s::@3 + //SEG339 sin16s::@3 b3: jmp breturn - //SEG339 sin16s::@return + //SEG340 sin16s::@return breturn: - //SEG340 [179] return + //SEG341 [179] return rts - //SEG341 sin16s::@15 + //SEG342 sin16s::@15 b15: - //SEG342 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG343 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b15 } -//SEG343 mulu16_sel +//SEG344 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -7420,24 +7421,24 @@ mulu16_sel: { .label return = $e .label return_1 = $19 .label return_10 = $19 - //SEG344 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG345 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG345 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG346 [184] call mul16u - //SEG347 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG346 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG347 [184] call mul16u + //SEG348 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //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 + //SEG349 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG350 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG350 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG351 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b2 - //SEG351 mulu16_sel::@2 + //SEG352 mulu16_sel::@2 b2: - //SEG352 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG353 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG353 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG354 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -7448,64 +7449,64 @@ mulu16_sel: { dex bne !- !e: - //SEG354 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG355 [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 - //SEG355 mulu16_sel::@return + //SEG356 mulu16_sel::@return breturn: - //SEG356 [189] return + //SEG357 [189] return rts } -//SEG357 div32u16u +//SEG358 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $10 .label quotient_lo = $e .label return = $1b - //SEG358 [191] call divr16u - //SEG359 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG359 [191] call divr16u + //SEG360 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG360 [200] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG361 [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 - //SEG361 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG362 [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 - //SEG362 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG363 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG363 div32u16u::@2 + //SEG364 div32u16u::@2 b2: - //SEG364 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG365 [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 - //SEG365 [194] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG366 [195] call divr16u - //SEG367 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG366 [194] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG367 [195] call divr16u + //SEG368 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG368 [200] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG369 [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 - //SEG369 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG370 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG370 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG371 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b3 - //SEG371 div32u16u::@3 + //SEG372 div32u16u::@3 b3: - //SEG372 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG373 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG373 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG374 [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 @@ -7515,12 +7516,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG374 div32u16u::@return + //SEG375 div32u16u::@return breturn: - //SEG375 [199] return + //SEG376 [199] return rts } -//SEG376 divr16u +//SEG377 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -7530,58 +7531,58 @@ divr16u: { .label dividend = 8 .label quotient = $e .label return = $e - //SEG377 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG378 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG378 [201] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG379 [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 - //SEG379 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG380 [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 - //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 + //SEG381 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG382 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG382 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG383 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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 + //SEG384 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG385 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG386 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG387 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG387 divr16u::@1 + //SEG388 divr16u::@1 b1: - //SEG388 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG389 [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 - //SEG389 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG390 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG390 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG391 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG391 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG392 [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 - //SEG392 divr16u::@4 + //SEG393 divr16u::@4 b4: - //SEG393 [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG394 [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 - //SEG394 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG395 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG395 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG396 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG396 divr16u::@2 + //SEG397 divr16u::@2 b2: - //SEG397 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [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 - //SEG398 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG399 [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 - //SEG399 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG400 [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 @@ -7591,14 +7592,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG400 divr16u::@5 + //SEG401 divr16u::@5 b5: - //SEG401 [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG402 [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG402 [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG403 [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 - //SEG403 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG404 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //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 + //SEG405 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG406 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG406 divr16u::@3 + //SEG407 divr16u::@3 b3: - //SEG407 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG408 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG409 [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 - //SEG409 divr16u::@6 + //SEG410 divr16u::@6 b6: - //SEG410 [216] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG411 [216] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG411 divr16u::@return + //SEG412 divr16u::@return breturn: - //SEG412 [217] return + //SEG413 [217] return rts } -//SEG413 fill -// Simple routines for working with memory +//SEG414 fill // Fill some memory with a value fill: { .label end = 8 .label addr = 2 - //SEG414 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG415 [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 @@ -7643,23 +7643,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG415 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG416 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG416 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG417 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG417 fill::@1 + //SEG418 fill::@1 b1: - //SEG418 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG419 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG419 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG420 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG420 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG421 [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 @@ -7667,9 +7667,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG421 fill::@return + //SEG422 fill::@return breturn: - //SEG422 [224] return + //SEG423 [224] return rts } .align $100 @@ -8439,11 +8439,12 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER Score: 41401 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 @@ -8469,110 +8470,110 @@ Score: 41401 .const XSIN_SIZE = $200 .label rem16u = 2 .label xsin_idx = 2 -//SEG2 @begin -//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 @25 to @28 [phi:@25->@28] -//SEG6 @28 -//SEG7 [3] call main -//SEG8 [4] phi from @28 to @end [phi:@28->@end] -//SEG9 @end -//SEG10 main +//SEG3 @begin +//SEG4 @25 +//SEG5 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) }} +//SEG6 [2] phi from @25 to @28 [phi:@25->@28] +//SEG7 @28 +//SEG8 [3] call main +//SEG9 [4] phi from @28 to @end [phi:@28->@end] +//SEG10 @end +//SEG11 main main: { .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>LOGO)>>2&$f - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG13 [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG14 [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BGCOL2 - //SEG14 [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG15 [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 sta BGCOL - //SEG15 [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG16 [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL3 - //SEG16 [10] phi from main to main::toD0181 [phi:main->main::toD0181] - //SEG17 main::toD0181 - //SEG18 main::@3 - //SEG19 [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG17 [10] phi from main to main::toD0181 [phi:main->main::toD0181] + //SEG18 main::toD0181 + //SEG19 main::@3 + //SEG20 [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG20 [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 + //SEG21 [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM sta D016 - //SEG21 [13] call fill - //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 + //SEG22 [13] call fill + //SEG23 [218] phi from main::@3 to fill [phi:main::@3->fill] + //SEG24 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG24 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG25 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG26 main::@4 - //SEG27 [15] call fill - //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 + //SEG26 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG27 main::@4 + //SEG28 [15] call fill + //SEG29 [218] phi from main::@4 to fill [phi:main::@4->fill] + //SEG30 [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 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG31 [16] phi from main::@4 to main::@1 [phi:main::@4->main::@1] - //SEG32 [16] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@1#0] -- vbuxx=vbuc1 + //SEG32 [16] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG33 [16] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG33 [16] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG34 [16] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG35 main::@1 + //SEG34 [16] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG35 [16] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG36 main::@1 b1: - //SEG36 [17] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG37 [17] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG37 [18] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuxx=_inc_vbuxx + //SEG38 [18] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuxx=_inc_vbuxx inx - //SEG38 [19] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG39 [19] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$f0 bne b1 - //SEG39 [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG40 main::@2 - //SEG41 [21] call sin16s_gen2 - //SEG42 [98] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] + //SEG40 [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG41 main::@2 + //SEG42 [21] call sin16s_gen2 + //SEG43 [98] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] jsr sin16s_gen2 - //SEG43 [22] phi from main::@2 to main::@6 [phi:main::@2->main::@6] - //SEG44 main::@6 - //SEG45 [23] call loop - //SEG46 [25] phi from main::@6 to loop [phi:main::@6->loop] + //SEG44 [22] phi from main::@2 to main::@6 [phi:main::@2->main::@6] + //SEG45 main::@6 + //SEG46 [23] call loop + //SEG47 [25] phi from main::@6 to loop [phi:main::@6->loop] jsr loop - //SEG47 main::@return - //SEG48 [24] return + //SEG48 main::@return + //SEG49 [24] return rts } -//SEG49 loop +//SEG50 loop loop: { .label _1 = 8 .label xpos = 8 - //SEG50 [26] phi from loop to loop::@1 [phi:loop->loop::@1] - //SEG51 [26] phi (word) xsin_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vwuz1=vbuc1 + //SEG51 [26] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG52 [26] phi (word) xsin_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vwuz1=vbuc1 lda #<0 sta xsin_idx sta xsin_idx+1 - //SEG52 loop::@1 - //SEG53 loop::@4 + //SEG53 loop::@1 + //SEG54 loop::@4 b4: - //SEG54 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG55 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG55 loop::@6 - //SEG56 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG56 loop::@6 + //SEG57 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG57 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 + //SEG58 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 lda xsin_idx clc adc #xsin sta _1+1 - //SEG58 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz1 + //SEG59 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz1 ldy #0 lda (xpos),y tax @@ -8588,11 +8589,11 @@ loop: { lda (xpos),y stx xpos sta xpos+1 - //SEG59 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 - //SEG60 [32] call render_logo + //SEG60 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 + //SEG61 [32] call render_logo jsr render_logo - //SEG61 loop::@15 - //SEG62 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 + //SEG62 loop::@15 + //SEG63 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 lda xsin_idx clc adc #2 @@ -8600,44 +8601,44 @@ loop: { bcc !+ inc xsin_idx+1 !: - //SEG63 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@16 -- vwuz1_neq_vwuc1_then_la1 + //SEG64 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@16 -- vwuz1_neq_vwuc1_then_la1 lda xsin_idx+1 cmp #>XSIN_SIZE*2 bne b7 lda xsin_idx cmp #loop::@7] - //SEG65 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@15->loop::@7#0] -- vwuz1=vbuc1 + //SEG65 [35] phi from loop::@15 to loop::@7 [phi:loop::@15->loop::@7] + //SEG66 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@15->loop::@7#0] -- vwuz1=vbuc1 lda #<0 sta xsin_idx sta xsin_idx+1 - //SEG66 loop::@7 + //SEG67 loop::@7 b7: - //SEG67 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG68 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG68 [26] phi from loop::@7 to loop::@1 [phi:loop::@7->loop::@1] - //SEG69 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@7->loop::@1#0] -- register_copy + //SEG69 [26] phi from loop::@7 to loop::@1 [phi:loop::@7->loop::@1] + //SEG70 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@7->loop::@1#0] -- register_copy jmp b4 - //SEG70 [37] phi from loop::@15 to loop::@16 [phi:loop::@15->loop::@16] - //SEG71 loop::@16 - //SEG72 [35] phi from loop::@16 to loop::@7 [phi:loop::@16->loop::@7] - //SEG73 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@16->loop::@7#0] -- register_copy + //SEG71 [37] phi from loop::@15 to loop::@16 [phi:loop::@15->loop::@16] + //SEG72 loop::@16 + //SEG73 [35] phi from loop::@16 to loop::@7 [phi:loop::@16->loop::@7] + //SEG74 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@16->loop::@7#0] -- register_copy } -//SEG74 render_logo +//SEG75 render_logo render_logo: { .label _3 = $e .label xpos = 8 .label x_char = $16 - //SEG75 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuaa=_byte_vwsz1 + //SEG76 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuaa=_byte_vwsz1 lda xpos - //SEG76 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuaa_band_vbuc1 + //SEG77 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuaa_band_vbuc1 and #7 - //SEG77 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuaa=vbuc1_bor_vbuaa + //SEG78 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuaa=vbuc1_bor_vbuaa ora #VIC_MCM - //SEG78 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuaa + //SEG79 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuaa sta D016 - //SEG79 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 + //SEG80 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 lda xpos+1 cmp #$80 ror @@ -8653,211 +8654,211 @@ render_logo: { cmp #$80 ror _3+1 ror _3 - //SEG80 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 + //SEG81 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 lda _3 sta x_char - //SEG81 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 + //SEG82 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 lda xpos+1 bmi b1 - //SEG82 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] - //SEG83 [45] phi (byte) render_logo::screen_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuxx=vbuc1 + //SEG83 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] + //SEG84 [45] phi (byte) render_logo::screen_idx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG84 render_logo::@2 + //SEG85 render_logo::@2 b2: - //SEG85 [46] if((byte) render_logo::screen_idx#17!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@5 -- vbuxx_neq_vbuz1_then_la1 + //SEG86 [46] if((byte) render_logo::screen_idx#17!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@5 -- vbuxx_neq_vbuz1_then_la1 cpx x_char bne b5 - //SEG86 [47] phi from render_logo::@2 to render_logo::@6 [phi:render_logo::@2->render_logo::@6] - //SEG87 [47] phi (byte) render_logo::logo_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@6#0] -- vbuyy=vbuc1 + //SEG87 [47] phi from render_logo::@2 to render_logo::@6 [phi:render_logo::@2->render_logo::@6] + //SEG88 [47] phi (byte) render_logo::logo_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@6#0] -- vbuyy=vbuc1 ldy #0 - //SEG88 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#17 [phi:render_logo::@2->render_logo::@6#1] -- register_copy - //SEG89 render_logo::@6 + //SEG89 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#17 [phi:render_logo::@2->render_logo::@6#1] -- register_copy + //SEG90 render_logo::@6 b6: - //SEG90 [48] if((byte) render_logo::screen_idx#19!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@9 -- vbuxx_neq_vbuc1_then_la1 + //SEG91 [48] if((byte) render_logo::screen_idx#19!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@9 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b9 - //SEG91 render_logo::@return + //SEG92 render_logo::@return breturn: - //SEG92 [49] return + //SEG93 [49] return rts - //SEG93 render_logo::@9 + //SEG94 render_logo::@9 b9: - //SEG94 [50] (byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuaa=vbuyy_plus_0 + //SEG95 [50] (byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuaa=vbuyy_plus_0 tya - //SEG95 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$15 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG96 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$15 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG96 render_logo::@9_1 - //SEG97 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_plus_vbuc1 + //SEG97 render_logo::@9_1 + //SEG98 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*1 - //SEG98 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG99 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*1,x - //SEG99 render_logo::@9_2 - //SEG100 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuyy_plus_vbuc1 + //SEG100 render_logo::@9_2 + //SEG101 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*2 - //SEG101 [55] *((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) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG102 [55] *((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) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*2,x - //SEG102 render_logo::@9_3 - //SEG103 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_plus_vbuc1 + //SEG103 render_logo::@9_3 + //SEG104 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*3 - //SEG104 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG105 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*3,x - //SEG105 render_logo::@9_4 - //SEG106 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_plus_vbuc1 + //SEG106 render_logo::@9_4 + //SEG107 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*4 - //SEG107 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG108 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*4,x - //SEG108 render_logo::@9_5 - //SEG109 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuyy_plus_vbuc1 + //SEG109 render_logo::@9_5 + //SEG110 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*5 - //SEG110 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG111 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#19) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*5,x - //SEG111 render_logo::@26 - //SEG112 [62] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#19 -- vbuxx=_inc_vbuxx + //SEG112 render_logo::@26 + //SEG113 [62] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#19 -- vbuxx=_inc_vbuxx inx - //SEG113 [63] (byte) render_logo::logo_idx#2 ← ++ (byte) render_logo::logo_idx#11 -- vbuyy=_inc_vbuyy + //SEG114 [63] (byte) render_logo::logo_idx#2 ← ++ (byte) render_logo::logo_idx#11 -- vbuyy=_inc_vbuyy iny - //SEG114 [47] phi from render_logo::@26 to render_logo::@6 [phi:render_logo::@26->render_logo::@6] - //SEG115 [47] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#2 [phi:render_logo::@26->render_logo::@6#0] -- register_copy - //SEG116 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#3 [phi:render_logo::@26->render_logo::@6#1] -- register_copy + //SEG115 [47] phi from render_logo::@26 to render_logo::@6 [phi:render_logo::@26->render_logo::@6] + //SEG116 [47] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#2 [phi:render_logo::@26->render_logo::@6#0] -- register_copy + //SEG117 [47] phi (byte) render_logo::screen_idx#19 = (byte) render_logo::screen_idx#3 [phi:render_logo::@26->render_logo::@6#1] -- register_copy jmp b6 - //SEG117 render_logo::@5 + //SEG118 render_logo::@5 b5: - //SEG118 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG119 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN,x - //SEG119 render_logo::@5_1 - //SEG120 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG120 render_logo::@5_1 + //SEG121 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*1,x - //SEG121 render_logo::@5_2 - //SEG122 [66] *((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) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG122 render_logo::@5_2 + //SEG123 [66] *((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) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*2,x - //SEG123 render_logo::@5_3 - //SEG124 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG124 render_logo::@5_3 + //SEG125 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*3,x - //SEG125 render_logo::@5_4 - //SEG126 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG126 render_logo::@5_4 + //SEG127 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*4,x - //SEG127 render_logo::@5_5 - //SEG128 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG128 render_logo::@5_5 + //SEG129 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#17) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*5,x - //SEG129 render_logo::@22 - //SEG130 [70] (byte) render_logo::screen_idx#2 ← ++ (byte) render_logo::screen_idx#17 -- vbuxx=_inc_vbuxx + //SEG130 render_logo::@22 + //SEG131 [70] (byte) render_logo::screen_idx#2 ← ++ (byte) render_logo::screen_idx#17 -- vbuxx=_inc_vbuxx inx - //SEG131 [45] phi from render_logo::@22 to render_logo::@2 [phi:render_logo::@22->render_logo::@2] - //SEG132 [45] phi (byte) render_logo::screen_idx#17 = (byte) render_logo::screen_idx#2 [phi:render_logo::@22->render_logo::@2#0] -- register_copy + //SEG132 [45] phi from render_logo::@22 to render_logo::@2 [phi:render_logo::@22->render_logo::@2] + //SEG133 [45] phi (byte) render_logo::screen_idx#17 = (byte) render_logo::screen_idx#2 [phi:render_logo::@22->render_logo::@2#0] -- register_copy jmp b2 - //SEG133 render_logo::@1 + //SEG134 render_logo::@1 b1: - //SEG134 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsaa=_neg_vbsz1 + //SEG135 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsaa=_neg_vbsz1 lda x_char eor #$ff clc adc #1 - //SEG135 [72] (byte~) render_logo::logo_idx#13 ← (byte)(signed byte~) render_logo::$17 -- vbuyy=vbuaa + //SEG136 [72] (byte~) render_logo::logo_idx#13 ← (byte)(signed byte~) render_logo::$17 -- vbuyy=vbuaa tay - //SEG136 [73] phi from render_logo::@1 to render_logo::@11 [phi:render_logo::@1->render_logo::@11] - //SEG137 [73] phi (byte) render_logo::screen_idx#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@11#0] -- vbuxx=vbuc1 + //SEG137 [73] phi from render_logo::@1 to render_logo::@11 [phi:render_logo::@1->render_logo::@11] + //SEG138 [73] phi (byte) render_logo::screen_idx#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@11#0] -- vbuxx=vbuc1 ldx #0 - //SEG138 [73] phi (byte) render_logo::logo_idx#10 = (byte~) render_logo::logo_idx#13 [phi:render_logo::@1->render_logo::@11#1] -- register_copy - //SEG139 render_logo::@11 + //SEG139 [73] phi (byte) render_logo::logo_idx#10 = (byte~) render_logo::logo_idx#13 [phi:render_logo::@1->render_logo::@11#1] -- register_copy + //SEG140 render_logo::@11 b11: - //SEG140 [74] if((byte) render_logo::logo_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@14 -- vbuyy_neq_vbuc1_then_la1 + //SEG141 [74] if((byte) render_logo::logo_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@14 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne b14 - //SEG141 [75] phi from render_logo::@11 render_logo::@35 to render_logo::@15 [phi:render_logo::@11/render_logo::@35->render_logo::@15] - //SEG142 [75] phi (byte) render_logo::screen_idx#14 = (byte) render_logo::screen_idx#20 [phi:render_logo::@11/render_logo::@35->render_logo::@15#0] -- register_copy - //SEG143 render_logo::@15 + //SEG142 [75] phi from render_logo::@11 render_logo::@35 to render_logo::@15 [phi:render_logo::@11/render_logo::@35->render_logo::@15] + //SEG143 [75] phi (byte) render_logo::screen_idx#14 = (byte) render_logo::screen_idx#20 [phi:render_logo::@11/render_logo::@35->render_logo::@15#0] -- register_copy + //SEG144 render_logo::@15 b15: - //SEG144 [76] if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@18 -- vbuxx_neq_vbuc1_then_la1 + //SEG145 [76] if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@18 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b18 jmp breturn - //SEG145 render_logo::@18 + //SEG146 render_logo::@18 b18: - //SEG146 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG147 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta SCREEN,x - //SEG147 render_logo::@18_1 - //SEG148 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG148 render_logo::@18_1 + //SEG149 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*1,x - //SEG149 render_logo::@18_2 - //SEG150 [79] *((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) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG150 render_logo::@18_2 + //SEG151 [79] *((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) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*2,x - //SEG151 render_logo::@18_3 - //SEG152 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG152 render_logo::@18_3 + //SEG153 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*3,x - //SEG153 render_logo::@18_4 - //SEG154 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG154 render_logo::@18_4 + //SEG155 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*4,x - //SEG155 render_logo::@18_5 - //SEG156 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG156 render_logo::@18_5 + //SEG157 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 sta SCREEN+$28*5,x - //SEG157 render_logo::@35 - //SEG158 [83] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#14 -- vbuxx=_inc_vbuxx + //SEG158 render_logo::@35 + //SEG159 [83] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#14 -- vbuxx=_inc_vbuxx inx jmp b15 - //SEG159 render_logo::@14 + //SEG160 render_logo::@14 b14: - //SEG160 [84] (byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuaa=vbuyy_plus_0 + //SEG161 [84] (byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuaa=vbuyy_plus_0 tya - //SEG161 [85] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$23 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG162 [85] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$23 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG162 render_logo::@14_1 - //SEG163 [86] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_plus_vbuc1 + //SEG163 render_logo::@14_1 + //SEG164 [86] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*1 - //SEG164 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG165 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*1,x - //SEG165 render_logo::@14_2 - //SEG166 [88] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuyy_plus_vbuc1 + //SEG166 render_logo::@14_2 + //SEG167 [88] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*2 - //SEG167 [89] *((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) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG168 [89] *((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) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*2,x - //SEG168 render_logo::@14_3 - //SEG169 [90] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_plus_vbuc1 + //SEG169 render_logo::@14_3 + //SEG170 [90] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*3 - //SEG170 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG171 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*3,x - //SEG171 render_logo::@14_4 - //SEG172 [92] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_plus_vbuc1 + //SEG172 render_logo::@14_4 + //SEG173 [92] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*4 - //SEG173 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG174 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*4,x - //SEG174 render_logo::@14_5 - //SEG175 [94] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuyy_plus_vbuc1 + //SEG175 render_logo::@14_5 + //SEG176 [94] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuyy_plus_vbuc1 tya clc adc #$28*5 - //SEG176 [95] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG177 [95] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#20) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+$28*5,x - //SEG177 render_logo::@31 - //SEG178 [96] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#20 -- vbuxx=_inc_vbuxx + //SEG178 render_logo::@31 + //SEG179 [96] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#20 -- vbuxx=_inc_vbuxx inx - //SEG179 [97] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuyy=_inc_vbuyy + //SEG180 [97] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuyy=_inc_vbuyy iny - //SEG180 [73] phi from render_logo::@31 to render_logo::@11 [phi:render_logo::@31->render_logo::@11] - //SEG181 [73] phi (byte) render_logo::screen_idx#20 = (byte) render_logo::screen_idx#4 [phi:render_logo::@31->render_logo::@11#0] -- register_copy - //SEG182 [73] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@31->render_logo::@11#1] -- register_copy + //SEG181 [73] phi from render_logo::@31 to render_logo::@11 [phi:render_logo::@31->render_logo::@11] + //SEG182 [73] phi (byte) render_logo::screen_idx#20 = (byte) render_logo::screen_idx#4 [phi:render_logo::@31->render_logo::@11#0] -- register_copy + //SEG183 [73] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@31->render_logo::@11#1] -- register_copy jmp b11 } -//SEG183 sin16s_gen2 +//SEG184 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -8873,35 +8874,35 @@ sin16s_gen2: { .label sintab = 2 .label x = 4 .label i = 8 - //SEG184 [99] call div32u16u - //SEG185 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG185 [99] call div32u16u + //SEG186 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u - //SEG186 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG187 sin16s_gen2::@3 - //SEG188 [101] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 - //SEG189 [102] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] - //SEG190 [102] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG187 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG188 sin16s_gen2::@3 + //SEG189 [101] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + //SEG190 [102] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] + //SEG191 [102] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG191 [102] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG192 [102] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #xsin sta sintab+1 - //SEG192 [102] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG193 [102] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 - //SEG193 [102] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] - //SEG194 [102] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy - //SEG195 [102] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy - //SEG196 [102] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy - //SEG197 sin16s_gen2::@1 + //SEG194 [102] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] + //SEG195 [102] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy + //SEG196 [102] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy + //SEG197 [102] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy + //SEG198 sin16s_gen2::@1 b1: - //SEG198 [103] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG199 [103] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -8910,22 +8911,22 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG199 [104] call sin16s + //SEG200 [104] call sin16s jsr sin16s - //SEG200 [105] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG201 sin16s_gen2::@4 - //SEG202 [106] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - //SEG203 [107] call mul16s + //SEG201 [105] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG202 sin16s_gen2::@4 + //SEG203 [106] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + //SEG204 [107] call mul16s jsr mul16s - //SEG204 [108] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 - //SEG205 sin16s_gen2::@5 - //SEG206 [109] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - //SEG207 [110] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG205 [108] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG206 sin16s_gen2::@5 + //SEG207 [109] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + //SEG208 [110] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG208 [111] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz1 + //SEG209 [111] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz1 clc lda _8 adc #offs sta _8+1 - //SEG209 [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG210 [112] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG210 [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG211 [113] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -8948,7 +8949,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG211 [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG212 [114] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8962,12 +8963,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG212 [115] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG213 [115] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG213 [116] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG214 [116] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>XSIN_SIZE bcc b1 @@ -8976,11 +8977,11 @@ sin16s_gen2: { cmp #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 + //SEG219 [119] call mul16u + //SEG220 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG221 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG222 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG222 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG223 mul16s::@6 - //SEG224 [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG225 [122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG223 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG224 mul16s::@6 + //SEG225 [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG226 [122] 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 b2 - //SEG226 mul16s::@3 - //SEG227 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG227 mul16s::@3 + //SEG228 [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 + //SEG229 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG229 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG230 [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 - //SEG230 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG231 [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 - //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 + //SEG232 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG233 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG234 mul16s::@1 + //SEG235 mul16s::@2 b2: - //SEG235 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG236 mul16s::@return - //SEG237 [129] return + //SEG236 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG237 mul16s::@return + //SEG238 [129] return rts } -//SEG238 mul16u +//SEG239 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $12 @@ -9052,7 +9053,7 @@ mul16u: { .label res = $a .label return = $a .label b = $e - //SEG239 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG240 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -9060,34 +9061,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //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 + //SEG241 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG242 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG243 [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 - //SEG243 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG244 mul16u::@1 + //SEG244 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG245 mul16u::@1 b1: - //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 + //SEG246 [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 - //SEG246 mul16u::@return - //SEG247 [134] return + //SEG247 mul16u::@return + //SEG248 [134] return rts - //SEG248 mul16u::@2 + //SEG249 mul16u::@2 b2: - //SEG249 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG250 [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 - //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 + //SEG251 [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 - //SEG251 mul16u::@7 - //SEG252 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG252 mul16u::@7 + //SEG253 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -9101,26 +9102,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //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 + //SEG254 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG255 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG256 mul16u::@4 b4: - //SEG256 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG257 [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 - //SEG257 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG258 [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 - //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 + //SEG259 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG260 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG261 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG262 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG262 sin16s +//SEG263 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -9138,7 +9139,7 @@ sin16s: { .label x5_128 = $e .label sinx = $17 .label isUpper = $16 - //SEG263 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG264 [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 @@ -9155,8 +9156,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //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 + //SEG267 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG268 [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 - //SEG268 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG269 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG269 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG270 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG270 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG271 [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 - //SEG271 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG272 sin16s::@1 + //SEG272 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG273 sin16s::@1 b1: - //SEG273 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG274 [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 @@ -9201,8 +9202,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //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 + //SEG277 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG278 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG279 sin16s::@2 b2: - //SEG279 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG280 [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 @@ -9229,71 +9230,71 @@ sin16s: { rol _6+3 dey bne !- - //SEG280 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG281 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG281 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [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 - //SEG282 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG283 [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 - //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 + //SEG284 [151] call mulu16_sel + //SEG285 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG286 [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 - //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 + //SEG287 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG288 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG288 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG289 sin16s::@8 - //SEG290 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG289 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG290 sin16s::@8 + //SEG291 [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 - //SEG291 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG292 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG292 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG293 [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 - //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 + //SEG294 [156] call mulu16_sel + //SEG295 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG296 [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 - //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 + //SEG297 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG298 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG298 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG299 [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 - //SEG299 sin16s::@9 - //SEG300 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG301 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //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 + //SEG300 sin16s::@9 + //SEG301 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG302 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG303 [160] call mulu16_sel + //SEG304 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG305 [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 - //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 + //SEG306 [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 - //SEG306 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG307 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG307 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG308 sin16s::@10 - //SEG309 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG310 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG308 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG309 sin16s::@10 + //SEG310 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG311 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -9301,50 +9302,50 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG311 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG312 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG312 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG313 [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 - //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 + //SEG314 [166] call mulu16_sel + //SEG315 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG316 [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 - //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 + //SEG317 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG318 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG318 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG319 [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 - //SEG319 sin16s::@11 - //SEG320 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG321 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG322 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG320 sin16s::@11 + //SEG321 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG322 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG323 [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 - //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 + //SEG324 [171] call mulu16_sel + //SEG325 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG326 [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 - //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 + //SEG327 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG328 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG328 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG329 sin16s::@12 - //SEG330 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //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 + //SEG329 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG330 sin16s::@12 + //SEG331 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG332 [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 !- - //SEG332 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG333 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -9352,12 +9353,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //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 + //SEG334 [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 - //SEG334 sin16s::@6 - //SEG335 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG335 sin16s::@6 + //SEG336 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -9367,17 +9368,17 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //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 + //SEG337 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG338 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG339 sin16s::@3 b3: - //SEG339 sin16s::@return - //SEG340 [179] return + //SEG340 sin16s::@return + //SEG341 [179] return rts - //SEG341 sin16s::@15 - //SEG342 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG342 sin16s::@15 + //SEG343 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG343 mulu16_sel +//SEG344 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -9388,21 +9389,21 @@ mulu16_sel: { .label return = $e .label return_1 = $19 .label return_10 = $19 - //SEG344 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG345 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG345 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //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 + //SEG346 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG347 [184] call mul16u + //SEG348 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG349 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG350 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG350 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG351 mulu16_sel::@2 - //SEG352 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG353 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG351 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG352 mulu16_sel::@2 + //SEG353 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG354 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -9413,55 +9414,55 @@ mulu16_sel: { dex bne !- !e: - //SEG354 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG355 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG355 mulu16_sel::@return - //SEG356 [189] return + //SEG356 mulu16_sel::@return + //SEG357 [189] return rts } -//SEG357 div32u16u +//SEG358 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $10 .label quotient_lo = $e .label return = $1b - //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 + //SEG359 [191] call divr16u + //SEG360 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG361 [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 - //SEG361 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG362 [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 - //SEG362 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG363 div32u16u::@2 - //SEG364 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG363 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG364 div32u16u::@2 + //SEG365 [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 - //SEG365 [194] (word) divr16u::rem#4 ← (word) rem16u#1 - //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 + //SEG366 [194] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG367 [195] call divr16u + //SEG368 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG369 [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 - //SEG369 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG370 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG370 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG371 div32u16u::@3 - //SEG372 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG373 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG371 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG372 div32u16u::@3 + //SEG373 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG374 [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 @@ -9470,11 +9471,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG374 div32u16u::@return - //SEG375 [199] return + //SEG375 div32u16u::@return + //SEG376 [199] return rts } -//SEG376 divr16u +//SEG377 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -9484,48 +9485,48 @@ divr16u: { .label dividend = 8 .label quotient = $e .label return = $e - //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 + //SEG378 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG379 [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 - //SEG379 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG380 [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 - //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 + //SEG381 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG382 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG383 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG384 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG385 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG386 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG387 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG388 divr16u::@1 b1: - //SEG388 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG389 [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 - //SEG389 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG390 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG390 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG391 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG391 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG392 [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 - //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 + //SEG393 divr16u::@4 + //SEG394 [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 - //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 + //SEG395 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG396 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG397 divr16u::@2 b2: - //SEG397 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [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 - //SEG398 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG399 [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 - //SEG399 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG400 [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 @@ -9534,13 +9535,13 @@ divr16u: { cmp #XSIN_SIZE sta rem+1 - //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 + //SEG404 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG405 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG406 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG407 divr16u::@3 b3: - //SEG407 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG408 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG409 [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 - //SEG409 divr16u::@6 - //SEG410 [216] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG411 divr16u::@return - //SEG412 [217] return + //SEG410 divr16u::@6 + //SEG411 [216] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG412 divr16u::@return + //SEG413 [217] return rts } -//SEG413 fill -// Simple routines for working with memory +//SEG414 fill // Fill some memory with a value fill: { .label end = 8 .label addr = 2 - //SEG414 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG415 [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 @@ -9578,28 +9578,28 @@ fill: { lda addr+1 adc #>$3e8 sta end+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 + //SEG416 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG417 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG418 fill::@1 b1: - //SEG418 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG419 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG419 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG420 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG420 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG421 [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 - //SEG421 fill::@return - //SEG422 [224] return + //SEG422 fill::@return + //SEG423 [224] return rts } .align $100 diff --git a/src/test/ref/examples/showlogo/showlogo.log b/src/test/ref/examples/showlogo/showlogo.log index f1421612e..475860e8e 100644 --- a/src/test/ref/examples/showlogo/showlogo.log +++ b/src/test/ref/examples/showlogo/showlogo.log @@ -860,11 +860,12 @@ Allocated zp ZP_WORD:6 [ fill::addr#2 fill::addr#0 fill::addr#1 ] Allocated zp ZP_WORD:8 [ fill::end#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label BGCOL2 = $d022 @@ -881,132 +882,132 @@ INITIAL ASM .const DARK_GREY = $b .label SCREEN = $400 .label LOGO = $2000 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b4 -//SEG3 @4 +//SEG4 @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 @4 to @6 [phi:@4->@6] +//SEG5 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) }} +//SEG6 [2] phi from @4 to @6 [phi:@4->@6] b6_from_b4: jmp b6 -//SEG6 @6 +//SEG7 @6 b6: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @6 to @end [phi:@6->@end] +//SEG9 [4] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>LOGO)>>2&$f .label ch = 2 - //SEG11 [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG12 [6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BGCOL2 - //SEG13 [7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG14 [7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 lda BGCOL2 sta BGCOL - //SEG14 [8] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL3 - //SEG15 [9] phi from main to main::toD0181 [phi:main->main::toD0181] + //SEG16 [9] phi from main to main::toD0181 [phi:main->main::toD0181] toD0181_from_main: jmp toD0181 - //SEG16 main::toD0181 + //SEG17 main::toD0181 toD0181: jmp b9 - //SEG17 main::@9 + //SEG18 main::@9 b9: - //SEG18 [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG19 [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG19 [11] *((const byte*) D016#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG20 [11] *((const byte*) D016#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta D016 - //SEG20 [12] call fill - //SEG21 [21] phi from main::@9 to fill [phi:main::@9->fill] + //SEG21 [12] call fill + //SEG22 [21] phi from main::@9 to fill [phi:main::@9->fill] fill_from_b9: - //SEG22 [21] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@9->fill#0] -- vbuz1=vbuc1 + //SEG23 [21] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@9->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG23 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@9->fill#1] -- vwuz1=vwuc1 + //SEG24 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@9->fill#1] -- vwuz1=vwuc1 lda #<$28*$19 sta fill.size lda #>$28*$19 sta fill.size+1 - //SEG24 [21] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@9->fill#2] -- pbuz1=pbuc1 + //SEG25 [21] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@9->fill#2] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG25 [13] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG26 [13] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG26 main::@10 + //SEG27 main::@10 b10: - //SEG27 [14] call fill - //SEG28 [21] phi from main::@10 to fill [phi:main::@10->fill] + //SEG28 [14] call fill + //SEG29 [21] phi from main::@10 to fill [phi:main::@10->fill] fill_from_b10: - //SEG29 [21] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@10->fill#0] -- vbuz1=vbuc1 + //SEG30 [21] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@10->fill#0] -- vbuz1=vbuc1 lda #WHITE|8 sta fill.val - //SEG30 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@10->fill#1] -- vwuz1=vwuc1 + //SEG31 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@10->fill#1] -- vwuz1=vwuc1 lda #<$28*$19 sta fill.size lda #>$28*$19 sta fill.size+1 - //SEG31 [21] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@10->fill#2] -- pbuz1=pbuc1 + //SEG32 [21] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@10->fill#2] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG32 [15] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG33 [15] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG33 [15] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@10->main::@1#0] -- vbuz1=vbuc1 + //SEG34 [15] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@10->main::@1#0] -- vbuz1=vbuc1 lda #0 sta ch jmp b1 - //SEG34 [15] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG35 [15] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG35 [15] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG36 [15] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG36 main::@1 + //SEG37 main::@1 b1: - //SEG37 [16] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG38 [16] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy ch tya sta SCREEN,y - //SEG38 [17] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 + //SEG39 [17] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 inc ch - //SEG39 [18] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG40 [18] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #$f0 bne b1_from_b1 jmp b3 - //SEG40 main::@3 + //SEG41 main::@3 b3: - //SEG41 [19] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) ← ++ *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG42 [19] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) ← ++ *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN+$3e7 - //SEG42 kickasm {{ inc $d020 }} + //SEG43 kickasm {{ inc $d020 }} inc $d020 jmp b3 } -//SEG43 fill +//SEG44 fill // Fill some memory with a value fill: { .label end = 8 .label addr = 6 .label size = 3 .label val = 5 - //SEG44 [22] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word) fill::size#2 -- pbuz1=pbuz2_plus_vwuz3 + //SEG45 [22] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word) fill::size#2 -- pbuz1=pbuz2_plus_vwuz3 lda addr clc adc size @@ -1014,23 +1015,23 @@ fill: { lda addr+1 adc size+1 sta end+1 - //SEG45 [23] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG46 [23] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG46 [23] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG47 [23] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG47 fill::@1 + //SEG48 fill::@1 b1: - //SEG48 [24] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG49 [24] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG49 [25] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG50 [25] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG50 [26] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG51 [26] 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 @@ -1038,9 +1039,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG51 fill::@return + //SEG52 fill::@return breturn: - //SEG52 [27] return + //SEG53 [27] return rts } .pc = LOGO "LOGO" @@ -1091,11 +1092,12 @@ Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ fill::size#2 fill::end#0 ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label BGCOL2 = $d022 @@ -1112,125 +1114,125 @@ ASSEMBLER BEFORE OPTIMIZATION .const DARK_GREY = $b .label SCREEN = $400 .label LOGO = $2000 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b4 -//SEG3 @4 +//SEG4 @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 @4 to @6 [phi:@4->@6] +//SEG5 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) }} +//SEG6 [2] phi from @4 to @6 [phi:@4->@6] b6_from_b4: jmp b6 -//SEG6 @6 +//SEG7 @6 b6: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @6 to @end [phi:@6->@end] +//SEG9 [4] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>LOGO)>>2&$f - //SEG11 [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG12 [6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BGCOL2 - //SEG13 [7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG14 [7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 lda BGCOL2 sta BGCOL - //SEG14 [8] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL3 - //SEG15 [9] phi from main to main::toD0181 [phi:main->main::toD0181] + //SEG16 [9] phi from main to main::toD0181 [phi:main->main::toD0181] toD0181_from_main: jmp toD0181 - //SEG16 main::toD0181 + //SEG17 main::toD0181 toD0181: jmp b9 - //SEG17 main::@9 + //SEG18 main::@9 b9: - //SEG18 [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG19 [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG19 [11] *((const byte*) D016#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG20 [11] *((const byte*) D016#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta D016 - //SEG20 [12] call fill - //SEG21 [21] phi from main::@9 to fill [phi:main::@9->fill] + //SEG21 [12] call fill + //SEG22 [21] phi from main::@9 to fill [phi:main::@9->fill] fill_from_b9: - //SEG22 [21] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@9->fill#0] -- vbuxx=vbuc1 + //SEG23 [21] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@9->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG23 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@9->fill#1] -- vwuz1=vwuc1 + //SEG24 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@9->fill#1] -- vwuz1=vwuc1 lda #<$28*$19 sta fill.size lda #>$28*$19 sta fill.size+1 - //SEG24 [21] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@9->fill#2] -- pbuz1=pbuc1 + //SEG25 [21] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@9->fill#2] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG25 [13] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG26 [13] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG26 main::@10 + //SEG27 main::@10 b10: - //SEG27 [14] call fill - //SEG28 [21] phi from main::@10 to fill [phi:main::@10->fill] + //SEG28 [14] call fill + //SEG29 [21] phi from main::@10 to fill [phi:main::@10->fill] fill_from_b10: - //SEG29 [21] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@10->fill#0] -- vbuxx=vbuc1 + //SEG30 [21] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@10->fill#0] -- vbuxx=vbuc1 ldx #WHITE|8 - //SEG30 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@10->fill#1] -- vwuz1=vwuc1 + //SEG31 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@10->fill#1] -- vwuz1=vwuc1 lda #<$28*$19 sta fill.size lda #>$28*$19 sta fill.size+1 - //SEG31 [21] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@10->fill#2] -- pbuz1=pbuc1 + //SEG32 [21] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@10->fill#2] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG32 [15] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG33 [15] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG33 [15] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@10->main::@1#0] -- vbuxx=vbuc1 + //SEG34 [15] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@10->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG34 [15] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG35 [15] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG35 [15] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG36 [15] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG36 main::@1 + //SEG37 main::@1 b1: - //SEG37 [16] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG38 [16] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG38 [17] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuxx=_inc_vbuxx + //SEG39 [17] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuxx=_inc_vbuxx inx - //SEG39 [18] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG40 [18] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$f0 bne b1_from_b1 jmp b3 - //SEG40 main::@3 + //SEG41 main::@3 b3: - //SEG41 [19] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) ← ++ *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG42 [19] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) ← ++ *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN+$3e7 - //SEG42 kickasm {{ inc $d020 }} + //SEG43 kickasm {{ inc $d020 }} inc $d020 jmp b3 } -//SEG43 fill +//SEG44 fill // Fill some memory with a value fill: { .label end = 2 .label addr = 4 .label size = 2 - //SEG44 [22] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word) fill::size#2 -- pbuz1=pbuz2_plus_vwuz1 + //SEG45 [22] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word) fill::size#2 -- pbuz1=pbuz2_plus_vwuz1 lda end clc adc addr @@ -1238,23 +1240,23 @@ fill: { lda end+1 adc addr+1 sta end+1 - //SEG45 [23] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG46 [23] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG46 [23] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG47 [23] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG47 fill::@1 + //SEG48 fill::@1 b1: - //SEG48 [24] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG49 [24] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG49 [25] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG50 [25] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG50 [26] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG51 [26] 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 @@ -1262,9 +1264,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG51 fill::@return + //SEG52 fill::@return breturn: - //SEG52 [27] return + //SEG53 [27] return rts } .pc = LOGO "LOGO" @@ -1465,11 +1467,12 @@ zp ZP_WORD:4 [ fill::addr#2 fill::addr#0 fill::addr#1 ] FINAL ASSEMBLER Score: 3572 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label BGCOL2 = $d022 @@ -1486,99 +1489,99 @@ Score: 3572 .const DARK_GREY = $b .label SCREEN = $400 .label LOGO = $2000 -//SEG2 @begin -//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 @4 to @6 [phi:@4->@6] -//SEG6 @6 -//SEG7 [3] call main -//SEG8 [4] phi from @6 to @end [phi:@6->@end] -//SEG9 @end -//SEG10 main +//SEG3 @begin +//SEG4 @4 +//SEG5 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) }} +//SEG6 [2] phi from @4 to @6 [phi:@4->@6] +//SEG7 @6 +//SEG8 [3] call main +//SEG9 [4] phi from @6 to @end [phi:@6->@end] +//SEG10 @end +//SEG11 main main: { .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>LOGO)>>2&$f - //SEG11 [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BORDERCOL - //SEG12 [6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 -- _deref_pbuc1=vbuc2 lda #DARK_GREY sta BGCOL2 - //SEG13 [7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG14 [7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) -- _deref_pbuc1=_deref_pbuc2 sta BGCOL - //SEG14 [8] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL3 - //SEG15 [9] phi from main to main::toD0181 [phi:main->main::toD0181] - //SEG16 main::toD0181 - //SEG17 main::@9 - //SEG18 [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG16 [9] phi from main to main::toD0181 [phi:main->main::toD0181] + //SEG17 main::toD0181 + //SEG18 main::@9 + //SEG19 [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG19 [11] *((const byte*) D016#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG20 [11] *((const byte*) D016#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_MCM|VIC_CSEL sta D016 - //SEG20 [12] call fill - //SEG21 [21] phi from main::@9 to fill [phi:main::@9->fill] - //SEG22 [21] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@9->fill#0] -- vbuxx=vbuc1 + //SEG21 [12] call fill + //SEG22 [21] phi from main::@9 to fill [phi:main::@9->fill] + //SEG23 [21] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@9->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG23 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@9->fill#1] -- vwuz1=vwuc1 + //SEG24 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@9->fill#1] -- vwuz1=vwuc1 lda #<$28*$19 sta fill.size lda #>$28*$19 sta fill.size+1 - //SEG24 [21] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@9->fill#2] -- pbuz1=pbuc1 + //SEG25 [21] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@9->fill#2] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG25 [13] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - //SEG26 main::@10 - //SEG27 [14] call fill - //SEG28 [21] phi from main::@10 to fill [phi:main::@10->fill] - //SEG29 [21] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@10->fill#0] -- vbuxx=vbuc1 + //SEG26 [13] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG27 main::@10 + //SEG28 [14] call fill + //SEG29 [21] phi from main::@10 to fill [phi:main::@10->fill] + //SEG30 [21] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@10->fill#0] -- vbuxx=vbuc1 ldx #WHITE|8 - //SEG30 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@10->fill#1] -- vwuz1=vwuc1 + //SEG31 [21] phi (word) fill::size#2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@10->fill#1] -- vwuz1=vwuc1 lda #<$28*$19 sta fill.size lda #>$28*$19 sta fill.size+1 - //SEG31 [21] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@10->fill#2] -- pbuz1=pbuc1 + //SEG32 [21] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@10->fill#2] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG32 [15] phi from main::@10 to main::@1 [phi:main::@10->main::@1] - //SEG33 [15] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@10->main::@1#0] -- vbuxx=vbuc1 + //SEG33 [15] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG34 [15] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@10->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG34 [15] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG35 [15] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG36 main::@1 + //SEG35 [15] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG36 [15] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG37 main::@1 b1: - //SEG37 [16] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG38 [16] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG38 [17] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuxx=_inc_vbuxx + //SEG39 [17] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuxx=_inc_vbuxx inx - //SEG39 [18] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG40 [18] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$f0 bne b1 - //SEG40 main::@3 + //SEG41 main::@3 b3: - //SEG41 [19] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) ← ++ *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG42 [19] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) ← ++ *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) 999) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN+$3e7 - //SEG42 kickasm {{ inc $d020 }} + //SEG43 kickasm {{ inc $d020 }} inc $d020 jmp b3 } -//SEG43 fill +//SEG44 fill // Fill some memory with a value fill: { .label end = 2 .label addr = 4 .label size = 2 - //SEG44 [22] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word) fill::size#2 -- pbuz1=pbuz2_plus_vwuz1 + //SEG45 [22] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word) fill::size#2 -- pbuz1=pbuz2_plus_vwuz1 lda end clc adc addr @@ -1586,28 +1589,28 @@ fill: { lda end+1 adc addr+1 sta end+1 - //SEG45 [23] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG46 [23] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG47 fill::@1 + //SEG46 [23] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG47 [23] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG48 fill::@1 b1: - //SEG48 [24] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG49 [24] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG49 [25] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG50 [25] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG50 [26] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG51 [26] 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 - //SEG51 fill::@return - //SEG52 [27] return + //SEG52 fill::@return + //SEG53 [27] return rts } .pc = LOGO "LOGO" diff --git a/src/test/ref/examples/sinplotter/sine-plotter.asm b/src/test/ref/examples/sinplotter/sine-plotter.asm index 88f96f780..a0852336e 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.asm +++ b/src/test/ref/examples/sinplotter/sine-plotter.asm @@ -1,7 +1,7 @@ +// Generate a big sinus and plot it on a bitmap .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -781,7 +781,6 @@ bitmap_init: { bne b3 rts } -// Simple routines for working with memory // Fill some memory with a value fill: { .const size = $3e8 diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log index 1a862ef8d..a3ee18898 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.log +++ b/src/test/ref/examples/sinplotter/sine-plotter.log @@ -3727,12 +3727,13 @@ Allocated zp ZP_BYTE:195 [ bitmap_init::$6 ] Allocated zp ZP_BYTE:196 [ bitmap_init::$7 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Generate a big sinus and plot it on a bitmap +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -3765,119 +3766,119 @@ INITIAL ASM .const SIN_SIZE = $200 .label sin2 = $1400 .label rem16u = $bc -//SEG2 @begin +//SEG3 @begin bbegin: jmp b29 -//SEG3 @29 +//SEG4 @29 b29: -//SEG4 kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } }} -//SEG5 [2] phi from @29 to @32 [phi:@29->@32] +//SEG5 kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } }} +//SEG6 [2] phi from @29 to @32 [phi:@29->@32] b32_from_b29: jmp b32 -//SEG6 @32 +//SEG7 @32 b32: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @32 to @end [phi:@32->@end] +//SEG9 [4] phi from @32 to @end [phi:@32->@end] bend_from_b32: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG13 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG14 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG14 [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 -- _deref_pbuc1=vbuc2 + //SEG15 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 jmp vicSelectGfxBank1 - //SEG15 main::vicSelectGfxBank1 + //SEG16 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG16 [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG17 [9] *((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 - //SEG17 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG18 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG18 main::vicSelectGfxBank1_toDd001 + //SEG19 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG19 main::vicSelectGfxBank1_@1 + //SEG20 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG20 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG21 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b7 - //SEG21 main::@7 + //SEG22 main::@7 b7: - //SEG22 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG23 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta D016 - //SEG23 [13] phi from main::@7 to main::toD0181 [phi:main::@7->main::toD0181] + //SEG24 [13] phi from main::@7 to main::toD0181 [phi:main::@7->main::toD0181] toD0181_from_b7: jmp toD0181 - //SEG24 main::toD0181 + //SEG25 main::toD0181 toD0181: jmp b8 - //SEG25 main::@8 + //SEG26 main::@8 b8: - //SEG26 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG27 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG27 [15] call fill - //SEG28 [224] phi from main::@8 to fill [phi:main::@8->fill] + //SEG28 [15] call fill + //SEG29 [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] + //SEG30 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG30 main::@9 + //SEG31 main::@9 b9: - //SEG31 [17] call bitmap_init - //SEG32 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG32 [17] call bitmap_init + //SEG33 [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] + //SEG34 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG34 main::@10 + //SEG35 main::@10 b10: - //SEG35 [19] call bitmap_clear + //SEG36 [19] call bitmap_clear jsr bitmap_clear - //SEG36 [20] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG37 [20] phi from main::@10 to main::@11 [phi:main::@10->main::@11] b11_from_b10: jmp b11 - //SEG37 main::@11 + //SEG38 main::@11 b11: - //SEG38 [21] call sin16s_gen2 - //SEG39 [70] phi from main::@11 to sin16s_gen2 [phi:main::@11->sin16s_gen2] + //SEG39 [21] call sin16s_gen2 + //SEG40 [70] phi from main::@11 to sin16s_gen2 [phi:main::@11->sin16s_gen2] sin16s_gen2_from_b11: jsr sin16s_gen2 - //SEG40 [22] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG41 [22] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG41 main::@12 + //SEG42 main::@12 b12: - //SEG42 [23] call render_sine - //SEG43 [25] phi from main::@12 to render_sine [phi:main::@12->render_sine] + //SEG43 [23] call render_sine + //SEG44 [25] phi from main::@12 to render_sine [phi:main::@12->render_sine] render_sine_from_b12: jsr render_sine jmp b2 - //SEG44 main::@2 + //SEG45 main::@2 b2: - //SEG45 [24] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG46 [24] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL jmp b2 } -//SEG46 render_sine +//SEG47 render_sine render_sine: { .label _0 = $41 .label _1 = $43 @@ -3889,34 +3890,34 @@ render_sine: { .label ypos2 = $50 .label xpos = 4 .label sin_idx = 2 - //SEG47 [26] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] + //SEG48 [26] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] b1_from_render_sine: - //SEG48 [26] phi (word) render_sine::xpos#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 + //SEG49 [26] phi (word) render_sine::xpos#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 lda #<0 sta xpos lda #>0 sta xpos+1 - //SEG49 [26] phi (word) render_sine::sin_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 + //SEG50 [26] phi (word) render_sine::sin_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 lda #<0 sta sin_idx lda #>0 sta sin_idx+1 jmp b1 - //SEG50 [26] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] + //SEG51 [26] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] b1_from_b2: - //SEG51 [26] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy - //SEG52 [26] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy + //SEG52 [26] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy + //SEG53 [26] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy jmp b1 - //SEG53 render_sine::@1 + //SEG54 render_sine::@1 b1: - //SEG54 [27] (word~) render_sine::$0 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 + //SEG55 [27] (word~) render_sine::$0 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _0 lda sin_idx+1 rol sta _0+1 - //SEG55 [28] (signed word*~) render_sine::$1 ← (const signed word[512]) sin#0 + (word~) render_sine::$0 -- pwsz1=pwsc1_plus_vwuz2 + //SEG56 [28] (signed word*~) render_sine::$1 ← (const signed word[512]) sin#0 + (word~) render_sine::$0 -- pwsz1=pwsc1_plus_vwuz2 lda _0 clc adc #sin sta _1+1 - //SEG56 [29] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz2 + //SEG57 [29] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz2 ldy #0 lda (_1),y sta sin_val iny lda (_1),y sta sin_val+1 - //SEG57 [30] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 -- vwsz1=vwsz2 + //SEG58 [30] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 -- vwsz1=vwsz2 lda sin_val sta wrap_y.y lda sin_val+1 sta wrap_y.y+1 - //SEG58 [31] call wrap_y - //SEG59 [61] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] + //SEG59 [31] call wrap_y + //SEG60 [61] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] wrap_y_from_b1: - //SEG60 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy + //SEG61 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy jsr wrap_y - //SEG61 [32] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 + //SEG62 [32] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 lda wrap_y.return_2 sta wrap_y.return jmp b5 - //SEG62 render_sine::@5 + //SEG63 render_sine::@5 b5: - //SEG63 [33] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuz1=vbuz2 + //SEG64 [33] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuz1=vbuz2 lda wrap_y.return sta ypos - //SEG64 [34] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 + //SEG65 [34] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 lda xpos sta bitmap_plot.x lda xpos+1 sta bitmap_plot.x+1 - //SEG65 [35] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 -- vbuz1=vbuz2 + //SEG66 [35] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 -- vbuz1=vbuz2 lda ypos sta bitmap_plot.y - //SEG66 [36] call bitmap_plot - //SEG67 [54] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] + //SEG67 [36] call bitmap_plot + //SEG68 [54] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] bitmap_plot_from_b5: - //SEG68 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@5->bitmap_plot#0] -- register_copy - //SEG69 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@5->bitmap_plot#1] -- register_copy + //SEG69 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@5->bitmap_plot#0] -- register_copy + //SEG70 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@5->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b6 - //SEG70 render_sine::@6 + //SEG71 render_sine::@6 b6: - //SEG71 [37] (word~) render_sine::$4 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 + //SEG72 [37] (word~) render_sine::$4 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _4 lda sin_idx+1 rol sta _4+1 - //SEG72 [38] (signed word*~) render_sine::$5 ← (const signed word*) sin2#0 + (word~) render_sine::$4 -- pwsz1=pwsc1_plus_vwuz2 + //SEG73 [38] (signed word*~) render_sine::$5 ← (const signed word*) sin2#0 + (word~) render_sine::$4 -- pwsz1=pwsc1_plus_vwuz2 lda _4 clc adc #sin2 sta _5+1 - //SEG73 [39] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$5) -- vwsz1=_deref_pwsz2 + //SEG74 [39] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$5) -- vwsz1=_deref_pwsz2 ldy #0 lda (_5),y sta sin2_val iny lda (_5),y sta sin2_val+1 - //SEG74 [40] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz2_plus_vbuc1 + //SEG75 [40] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz2_plus_vbuc1 lda sin2_val clc adc #<$a @@ -3997,65 +3998,65 @@ render_sine: { lda sin2_val+1 adc #>$a sta wrap_y.y+1 - //SEG75 [41] call wrap_y - //SEG76 [61] phi from render_sine::@6 to wrap_y [phi:render_sine::@6->wrap_y] + //SEG76 [41] call wrap_y + //SEG77 [61] phi from render_sine::@6 to wrap_y [phi:render_sine::@6->wrap_y] wrap_y_from_b6: - //SEG77 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@6->wrap_y#0] -- register_copy + //SEG78 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@6->wrap_y#0] -- register_copy jsr wrap_y - //SEG78 [42] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 + //SEG79 [42] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 lda wrap_y.return_2 sta wrap_y.return_1 jmp b7 - //SEG79 render_sine::@7 + //SEG80 render_sine::@7 b7: - //SEG80 [43] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuz1=vbuz2 + //SEG81 [43] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuz1=vbuz2 lda wrap_y.return_1 sta ypos2 - //SEG81 [44] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 + //SEG82 [44] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 lda xpos sta bitmap_plot.x lda xpos+1 sta bitmap_plot.x+1 - //SEG82 [45] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 -- vbuz1=vbuz2 + //SEG83 [45] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 -- vbuz1=vbuz2 lda ypos2 sta bitmap_plot.y - //SEG83 [46] call bitmap_plot - //SEG84 [54] phi from render_sine::@7 to bitmap_plot [phi:render_sine::@7->bitmap_plot] + //SEG84 [46] call bitmap_plot + //SEG85 [54] phi from render_sine::@7 to bitmap_plot [phi:render_sine::@7->bitmap_plot] bitmap_plot_from_b7: - //SEG85 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@7->bitmap_plot#0] -- register_copy - //SEG86 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@7->bitmap_plot#1] -- register_copy + //SEG86 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@7->bitmap_plot#0] -- register_copy + //SEG87 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@7->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b8 - //SEG87 render_sine::@8 + //SEG88 render_sine::@8 b8: - //SEG88 [47] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + //SEG89 [47] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc xpos bne !+ inc xpos+1 !: - //SEG89 [48] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@10 -- vwuz1_neq_vwuc1_then_la1 + //SEG90 [48] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@10 -- vwuz1_neq_vwuc1_then_la1 lda xpos+1 cmp #>$140 bne b10_from_b8 lda xpos cmp #<$140 bne b10_from_b8 - //SEG90 [49] phi from render_sine::@8 to render_sine::@2 [phi:render_sine::@8->render_sine::@2] + //SEG91 [49] phi from render_sine::@8 to render_sine::@2 [phi:render_sine::@8->render_sine::@2] b2_from_b8: - //SEG91 [49] phi (word) render_sine::xpos#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine::@8->render_sine::@2#0] -- vwuz1=vbuc1 + //SEG92 [49] phi (word) render_sine::xpos#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine::@8->render_sine::@2#0] -- vwuz1=vbuc1 lda #<0 sta xpos lda #>0 sta xpos+1 jmp b2 - //SEG92 render_sine::@2 + //SEG93 render_sine::@2 b2: - //SEG93 [50] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 + //SEG94 [50] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 inc sin_idx bne !+ inc sin_idx+1 !: - //SEG94 [51] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG95 [51] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 lda sin_idx+1 cmp #>SIN_SIZE bcc b1_from_b2 @@ -4065,21 +4066,21 @@ render_sine: { bcc b1_from_b2 !: jmp breturn - //SEG95 render_sine::@return + //SEG96 render_sine::@return breturn: - //SEG96 [52] return + //SEG97 [52] return rts - //SEG97 [53] phi from render_sine::@8 to render_sine::@10 [phi:render_sine::@8->render_sine::@10] + //SEG98 [53] phi from render_sine::@8 to render_sine::@10 [phi:render_sine::@8->render_sine::@10] b10_from_b8: jmp b10 - //SEG98 render_sine::@10 + //SEG99 render_sine::@10 b10: - //SEG99 [49] phi from render_sine::@10 to render_sine::@2 [phi:render_sine::@10->render_sine::@2] + //SEG100 [49] phi from render_sine::@10 to render_sine::@2 [phi:render_sine::@10->render_sine::@2] b2_from_b10: - //SEG100 [49] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@10->render_sine::@2#0] -- register_copy + //SEG101 [49] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@10->render_sine::@2#0] -- register_copy jmp b2 } -//SEG101 bitmap_plot +//SEG102 bitmap_plot // Plot a single dot in the bitmap bitmap_plot: { .label _1 = $53 @@ -4088,20 +4089,20 @@ bitmap_plot: { .label x = 7 .label y = 6 .label _3 = $51 - //SEG102 [55] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + //SEG103 [55] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- 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 - //SEG103 [56] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG104 [56] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG104 [57] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 + //SEG105 [57] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 lda _3 clc adc _1 @@ -4109,10 +4110,10 @@ bitmap_plot: { lda _3+1 adc _1+1 sta plotter+1 - //SEG105 [58] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuz1=_lo_vwuz2 + //SEG106 [58] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuz1=_lo_vwuz2 lda x sta _2 - //SEG106 [59] *((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 + //SEG107 [59] *((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 @@ -4120,25 +4121,25 @@ bitmap_plot: { ldy #0 sta (plotter),y jmp breturn - //SEG107 bitmap_plot::@return + //SEG108 bitmap_plot::@return breturn: - //SEG108 [60] return + //SEG109 [60] return rts } -//SEG109 wrap_y +//SEG110 wrap_y wrap_y: { .label y = 9 .label return = $47 .label return_1 = $4f .label return_2 = $58 - //SEG110 [62] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + //SEG111 [62] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] b1_from_wrap_y: b1_from_b2: - //SEG111 [62] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + //SEG112 [62] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy jmp b1 - //SEG112 wrap_y::@1 + //SEG113 wrap_y::@1 b1: - //SEG113 [63] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 -- vwsz1_ge_vbuc1_then_la1 + //SEG114 [63] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 -- vwsz1_ge_vbuc1_then_la1 lda y cmp #$c8 lda y+1 @@ -4147,30 +4148,30 @@ wrap_y: { eor #$80 !: bpl b2 - //SEG114 [64] phi from wrap_y::@1 wrap_y::@5 to wrap_y::@4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4] + //SEG115 [64] phi from wrap_y::@1 wrap_y::@5 to wrap_y::@4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4] b4_from_b1: b4_from_b5: - //SEG115 [64] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4#0] -- register_copy + //SEG116 [64] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4#0] -- register_copy jmp b4 - //SEG116 wrap_y::@4 + //SEG117 wrap_y::@4 b4: - //SEG117 [65] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 -- vwsz1_lt_0_then_la1 + //SEG118 [65] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 -- vwsz1_lt_0_then_la1 lda y+1 bmi b5 jmp b6 - //SEG118 wrap_y::@6 + //SEG119 wrap_y::@6 b6: - //SEG119 [66] (byte) wrap_y::return#2 ← ((byte)) (signed word) wrap_y::y#6 -- vbuz1=_byte_vwsz2 + //SEG120 [66] (byte) wrap_y::return#2 ← ((byte)) (signed word) wrap_y::y#6 -- vbuz1=_byte_vwsz2 lda y sta return_2 jmp breturn - //SEG120 wrap_y::@return + //SEG121 wrap_y::@return breturn: - //SEG121 [67] return + //SEG122 [67] return rts - //SEG122 wrap_y::@5 + //SEG123 wrap_y::@5 b5: - //SEG123 [68] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_plus_vbuc1 + //SEG124 [68] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_plus_vbuc1 clc lda y adc #<$c8 @@ -4179,9 +4180,9 @@ wrap_y: { adc #>$c8 sta y+1 jmp b4_from_b5 - //SEG124 wrap_y::@2 + //SEG125 wrap_y::@2 b2: - //SEG125 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_minus_vbuc1 + //SEG126 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_minus_vbuc1 lda y sec sbc #<$c8 @@ -4191,7 +4192,7 @@ wrap_y: { sta y+1 jmp b1_from_b2 } -//SEG126 sin16s_gen2 +//SEG127 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -4207,11 +4208,11 @@ sin16s_gen2: { .label sintab = $f .label x = $b .label i = $11 - //SEG127 [71] call div32u16u - //SEG128 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG128 [71] call div32u16u + //SEG129 [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 + //SEG130 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -4221,9 +4222,9 @@ sin16s_gen2: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b3 - //SEG130 sin16s_gen2::@3 + //SEG131 sin16s_gen2::@3 b3: - //SEG131 [73] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG132 [73] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -4232,19 +4233,19 @@ sin16s_gen2: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG132 [74] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] + //SEG133 [74] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] b1_from_b3: - //SEG133 [74] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG134 [74] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG134 [74] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[512]) sin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG135 [74] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[512]) sin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #sin sta sintab+1 - //SEG135 [74] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG136 [74] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -4252,15 +4253,15 @@ sin16s_gen2: { sta x+2 sta x+3 jmp b1 - //SEG136 [74] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] + //SEG137 [74] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] b1_from_b5: - //SEG137 [74] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy - //SEG138 [74] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy - //SEG139 [74] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy + //SEG138 [74] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy + //SEG139 [74] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy + //SEG140 [74] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy jmp b1 - //SEG140 sin16s_gen2::@1 + //SEG141 sin16s_gen2::@1 b1: - //SEG141 [75] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG142 [75] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -4269,24 +4270,24 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG142 [76] call sin16s + //SEG143 [76] call sin16s jsr sin16s - //SEG143 [77] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG144 [77] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b4 - //SEG144 sin16s_gen2::@4 + //SEG145 sin16s_gen2::@4 b4: - //SEG145 [78] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG146 [78] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta mul16s.a lda sin16s.return+1 sta mul16s.a+1 - //SEG146 [79] call mul16s + //SEG147 [79] call mul16s jsr mul16s - //SEG147 [80] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 + //SEG148 [80] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 lda mul16s.return sta mul16s.return_2 lda mul16s.return+1 @@ -4296,9 +4297,9 @@ sin16s_gen2: { lda mul16s.return+3 sta mul16s.return_2+3 jmp b5 - //SEG148 sin16s_gen2::@5 + //SEG149 sin16s_gen2::@5 b5: - //SEG149 [81] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 + //SEG150 [81] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 lda mul16s.return_2 sta _5 lda mul16s.return_2+1 @@ -4307,12 +4308,12 @@ sin16s_gen2: { sta _5+2 lda mul16s.return_2+3 sta _5+3 - //SEG150 [82] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG151 [82] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG151 [83] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz2 + //SEG152 [83] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz2 lda _6 clc adc #offs sta _8+1 - //SEG152 [84] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG153 [84] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG153 [85] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG154 [85] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -4335,7 +4336,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG154 [86] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG155 [86] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4349,12 +4350,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG155 [87] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG156 [87] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG156 [88] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG157 [88] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>SIN_SIZE bcc b1_from_b5 @@ -4364,12 +4365,12 @@ sin16s_gen2: { bcc b1_from_b5 !: jmp breturn - //SEG157 sin16s_gen2::@return + //SEG158 sin16s_gen2::@return breturn: - //SEG158 [89] return + //SEG159 [89] return rts } -//SEG159 mul16s +//SEG160 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication mul16s: { @@ -4380,22 +4381,22 @@ mul16s: { .label return = $7b .label a = $63 .label return_2 = $65 - //SEG160 [90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG161 [90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG161 [91] call mul16u - //SEG162 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG162 [91] call mul16u + //SEG163 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //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 + //SEG164 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG165 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG165 [92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG166 [92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -4405,9 +4406,9 @@ mul16s: { lda mul16u.res+3 sta mul16u.return+3 jmp b6 - //SEG166 mul16s::@6 + //SEG167 mul16s::@6 b6: - //SEG167 [93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG168 [93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -4416,23 +4417,23 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - //SEG168 [94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG169 [94] 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 - //SEG169 mul16s::@3 + //SEG170 mul16s::@3 b3: - //SEG170 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG171 [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 + //SEG172 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG172 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + //SEG173 [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 - //SEG173 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG174 [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 - //SEG174 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG175 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG175 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG176 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG176 mul16s::@1 + //SEG177 mul16s::@1 b1: jmp b2 - //SEG177 mul16s::@2 + //SEG178 mul16s::@2 b2: - //SEG178 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG179 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -4465,12 +4466,12 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG179 mul16s::@return + //SEG180 mul16s::@return breturn: - //SEG180 [101] return + //SEG181 [101] return rts } -//SEG181 mul16u +//SEG182 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label _1 = $7f @@ -4480,7 +4481,7 @@ mul16u: { .label return = $71 .label b = $17 .label return_3 = $a0 - //SEG182 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG183 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -4488,44 +4489,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG183 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG184 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //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 + //SEG185 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG186 [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 - //SEG186 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG187 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG187 mul16u::@1 + //SEG188 mul16u::@1 b1: - //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 + //SEG189 [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 - //SEG189 mul16u::@return + //SEG190 mul16u::@return breturn: - //SEG190 [106] return + //SEG191 [106] return rts - //SEG191 mul16u::@2 + //SEG192 mul16u::@2 b2: - //SEG192 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG193 [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 - //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 + //SEG194 [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 - //SEG194 mul16u::@7 + //SEG195 mul16u::@7 b7: - //SEG195 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG196 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4539,30 +4540,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG196 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG197 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG197 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG198 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG198 mul16u::@4 + //SEG199 mul16u::@4 b4: - //SEG199 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG200 [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 - //SEG200 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG201 [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 - //SEG201 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG202 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //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 + //SEG203 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG204 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG205 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG205 sin16s +//SEG206 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -4583,7 +4584,7 @@ sin16s: { .label sinx = $28 .label isUpper = $23 .label return_5 = $28 - //SEG206 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG207 [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 @@ -4601,9 +4602,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG207 sin16s::@4 + //SEG208 sin16s::@4 b4: - //SEG208 [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG209 [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 - //SEG209 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG210 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //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 + //SEG211 [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 - //SEG211 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG212 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG212 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG213 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG213 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG214 [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 - //SEG214 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG215 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG215 sin16s::@1 + //SEG216 sin16s::@1 b1: - //SEG216 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG217 [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 @@ -4651,9 +4652,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG217 sin16s::@5 + //SEG218 sin16s::@5 b5: - //SEG218 [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG219 [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 - //SEG219 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG220 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG220 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG221 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG221 sin16s::@2 + //SEG222 sin16s::@2 b2: - //SEG222 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG223 [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 @@ -4691,107 +4692,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG223 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG224 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG224 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [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 - //SEG225 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG226 [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 - //SEG226 [123] call mulu16_sel - //SEG227 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG227 [123] call mulu16_sel + //SEG228 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //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 + //SEG229 [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 - //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 + //SEG230 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG231 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG231 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG232 [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 - //SEG232 sin16s::@8 + //SEG233 sin16s::@8 b8: - //SEG233 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG234 [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 - //SEG234 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG235 [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 - //SEG235 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG236 [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 - //SEG236 [128] call mulu16_sel - //SEG237 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG237 [128] call mulu16_sel + //SEG238 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //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 + //SEG239 [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 - //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 + //SEG240 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG241 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG241 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG242 [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 - //SEG242 sin16s::@9 + //SEG243 sin16s::@9 b9: - //SEG243 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG244 [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 - //SEG244 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG245 [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 - //SEG245 [132] call mulu16_sel - //SEG246 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG246 [132] call mulu16_sel + //SEG247 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //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 + //SEG248 [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 - //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 + //SEG249 [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 - //SEG249 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG250 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG250 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG251 [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 - //SEG251 sin16s::@10 + //SEG252 sin16s::@10 b10: - //SEG252 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG253 [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 - //SEG253 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG254 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4799,71 +4800,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG254 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG255 [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 - //SEG255 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG256 [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 - //SEG256 [138] call mulu16_sel - //SEG257 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG257 [138] call mulu16_sel + //SEG258 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //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 + //SEG259 [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 - //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 + //SEG260 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG261 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG261 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG262 [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 - //SEG262 sin16s::@11 + //SEG263 sin16s::@11 b11: - //SEG263 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG264 [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 - //SEG264 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG265 [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 - //SEG265 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG266 [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 - //SEG266 [143] call mulu16_sel - //SEG267 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG267 [143] call mulu16_sel + //SEG268 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //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 + //SEG269 [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 - //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 + //SEG270 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG271 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG271 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG272 [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 - //SEG272 sin16s::@12 + //SEG273 sin16s::@12 b12: - //SEG273 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG274 [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 - //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 + //SEG275 [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 @@ -4874,7 +4875,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG275 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG276 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -4882,14 +4883,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //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 + //SEG277 [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 - //SEG277 sin16s::@6 + //SEG278 sin16s::@6 b6: - //SEG278 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG279 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -4899,28 +4900,28 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG279 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG280 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG280 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG281 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG281 sin16s::@3 + //SEG282 sin16s::@3 b3: jmp breturn - //SEG282 sin16s::@return + //SEG283 sin16s::@return breturn: - //SEG283 [151] return + //SEG284 [151] return rts - //SEG284 sin16s::@15 + //SEG285 sin16s::@15 b15: - //SEG285 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG286 [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 } -//SEG286 mulu16_sel +//SEG287 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -4935,23 +4936,23 @@ mulu16_sel: { .label return_11 = $98 .label select = $2e .label return_12 = $ac - //SEG287 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG288 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG288 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG289 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG289 [156] call mul16u - //SEG290 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG290 [156] call mul16u + //SEG291 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //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 + //SEG292 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG293 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG293 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG294 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -4961,9 +4962,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b2 - //SEG294 mulu16_sel::@2 + //SEG295 mulu16_sel::@2 b2: - //SEG295 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG296 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta _0 lda mul16u.return_3+1 @@ -4972,7 +4973,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return_3+3 sta _0+3 - //SEG296 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG297 [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 @@ -4991,18 +4992,18 @@ mulu16_sel: { dex bne !- !e: - //SEG297 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG298 [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 - //SEG298 mulu16_sel::@return + //SEG299 mulu16_sel::@return breturn: - //SEG299 [161] return + //SEG300 [161] return rts } -//SEG300 div32u16u +//SEG301 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { @@ -5010,62 +5011,62 @@ div32u16u: { .label quotient_lo = $b4 .label return = $b6 .label return_2 = $59 - //SEG301 [163] call divr16u - //SEG302 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG302 [163] call divr16u + //SEG303 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG303 [172] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG304 [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 - //SEG304 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG305 [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 - //SEG305 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG306 [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 - //SEG306 div32u16u::@2 + //SEG307 div32u16u::@2 b2: - //SEG307 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG308 [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 - //SEG308 [166] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG309 [166] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG309 [167] call divr16u - //SEG310 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG310 [167] call divr16u + //SEG311 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG311 [172] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG312 [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 - //SEG312 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG313 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG313 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG314 [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 - //SEG314 div32u16u::@3 + //SEG315 div32u16u::@3 b3: - //SEG315 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG316 [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 - //SEG316 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG317 [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 @@ -5075,12 +5076,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG317 div32u16u::@return + //SEG318 div32u16u::@return breturn: - //SEG318 [171] return + //SEG319 [171] return rts } -//SEG319 divr16u +//SEG320 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5095,63 +5096,63 @@ divr16u: { .label return = $33 .label return_2 = $ae .label return_3 = $b2 - //SEG320 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG321 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG321 [173] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG322 [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 - //SEG322 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG323 [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 - //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 + //SEG324 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG325 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG325 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG326 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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 + //SEG327 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG328 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG329 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG330 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG330 divr16u::@1 + //SEG331 divr16u::@1 b1: - //SEG331 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG332 [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 - //SEG332 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG333 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG333 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG334 [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 - //SEG334 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG335 [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 - //SEG335 divr16u::@4 + //SEG336 divr16u::@4 b4: - //SEG336 [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG337 [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 - //SEG337 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG338 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG338 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG339 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG339 divr16u::@2 + //SEG340 divr16u::@2 b2: - //SEG340 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [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 - //SEG341 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG342 [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 - //SEG342 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG343 [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 @@ -5161,14 +5162,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG343 divr16u::@5 + //SEG344 divr16u::@5 b5: - //SEG344 [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG345 [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG345 [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG346 [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 - //SEG346 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG347 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //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 + //SEG348 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG349 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG349 divr16u::@3 + //SEG350 divr16u::@3 b3: - //SEG350 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG351 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //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 + //SEG352 [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 - //SEG352 divr16u::@6 + //SEG353 divr16u::@6 b6: - //SEG353 [188] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG354 [188] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG354 divr16u::@return + //SEG355 divr16u::@return breturn: - //SEG355 [189] return + //SEG356 [189] return rts } -//SEG356 bitmap_clear +//SEG357 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = $37 .label x = $39 .label y = $36 .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 + //SEG358 [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 - //SEG358 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG359 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG359 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG360 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //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 + //SEG361 [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 - //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 (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG362 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG363 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //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 + //SEG364 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG365 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG365 bitmap_clear::@1 + //SEG366 bitmap_clear::@1 b1: - //SEG366 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG367 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //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 + //SEG368 [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 - //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 (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG369 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG370 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //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 + //SEG371 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG372 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG372 bitmap_clear::@2 + //SEG373 bitmap_clear::@2 b2: - //SEG373 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG374 [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 - //SEG374 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG375 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG375 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG376 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //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 + //SEG377 [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 - //SEG377 bitmap_clear::@3 + //SEG378 bitmap_clear::@3 b3: - //SEG378 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG379 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG380 [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 - //SEG380 bitmap_clear::@return + //SEG381 bitmap_clear::@return breturn: - //SEG381 [200] return + //SEG382 [200] return rts } -//SEG382 bitmap_init +//SEG383 bitmap_init // Initialize bitmap plotting tables bitmap_init: { .label _3 = $c0 @@ -5291,98 +5292,98 @@ bitmap_init: { .label x = $3b .label y = $3c .label yoffs = $3d - //SEG383 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG384 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //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 + //SEG385 [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 - //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 + //SEG386 [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 - //SEG386 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG387 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //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 + //SEG388 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG389 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG389 bitmap_init::@1 + //SEG390 bitmap_init::@1 b1: - //SEG390 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG391 [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 - //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 + //SEG392 [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 - //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 + //SEG393 [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 - //SEG393 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG394 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //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 + //SEG395 [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 - //SEG395 bitmap_init::@2 + //SEG396 bitmap_init::@2 b2: - //SEG396 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG397 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //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 + //SEG398 [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 - //SEG398 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG399 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG399 [209] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG400 [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 - //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 + //SEG401 [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 - //SEG401 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG402 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //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 + //SEG403 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG404 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG404 bitmap_init::@3 + //SEG405 bitmap_init::@3 b3: - //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 + //SEG406 [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 - //SEG406 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG407 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _4 - //SEG407 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + //SEG408 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 lda _3 ora _4 sta _5 - //SEG408 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG409 [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 - //SEG409 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG410 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _6 - //SEG410 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG411 [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 - //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 + //SEG412 [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 - //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 + //SEG413 [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 - //SEG413 bitmap_init::@7 + //SEG414 bitmap_init::@7 b7: - //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 + //SEG415 [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 @@ -5390,65 +5391,64 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 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: - //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 [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 - //SEG417 bitmap_init::@4 + //SEG418 bitmap_init::@4 b4: - //SEG418 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG419 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG420 [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 - //SEG420 bitmap_init::@return + //SEG421 bitmap_init::@return breturn: - //SEG421 [222] return + //SEG422 [222] return rts - //SEG422 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG423 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG423 bitmap_init::@10 + //SEG424 bitmap_init::@10 b10: - //SEG424 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG425 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG425 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG426 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG426 fill -// Simple routines for working with memory +//SEG427 fill // Fill some memory with a value fill: { .const size = $3e8 .label end = SCREEN+size .label addr = $3f - //SEG427 [225] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG428 [225] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG428 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG429 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+1 jmp b1 - //SEG429 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG430 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG430 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG431 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG431 fill::@1 + //SEG432 fill::@1 b1: - //SEG432 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG433 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG433 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG434 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG434 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG435 [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 @@ -5456,9 +5456,9 @@ fill: { cmp #@32] +//SEG5 kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } }} +//SEG6 [2] phi from @29 to @32 [phi:@29->@32] b32_from_b29: jmp b32 -//SEG6 @32 +//SEG7 @32 b32: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @32 to @end [phi:@32->@end] +//SEG9 [4] phi from @32 to @end [phi:@32->@end] bend_from_b32: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG13 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG14 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG14 [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 -- _deref_pbuc1=vbuc2 + //SEG15 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 jmp vicSelectGfxBank1 - //SEG15 main::vicSelectGfxBank1 + //SEG16 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG16 [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG17 [9] *((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 - //SEG17 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG18 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG18 main::vicSelectGfxBank1_toDd001 + //SEG19 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG19 main::vicSelectGfxBank1_@1 + //SEG20 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG20 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG21 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b7 - //SEG21 main::@7 + //SEG22 main::@7 b7: - //SEG22 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG23 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta D016 - //SEG23 [13] phi from main::@7 to main::toD0181 [phi:main::@7->main::toD0181] + //SEG24 [13] phi from main::@7 to main::toD0181 [phi:main::@7->main::toD0181] toD0181_from_b7: jmp toD0181 - //SEG24 main::toD0181 + //SEG25 main::toD0181 toD0181: jmp b8 - //SEG25 main::@8 + //SEG26 main::@8 b8: - //SEG26 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG27 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG27 [15] call fill - //SEG28 [224] phi from main::@8 to fill [phi:main::@8->fill] + //SEG28 [15] call fill + //SEG29 [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] + //SEG30 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG30 main::@9 + //SEG31 main::@9 b9: - //SEG31 [17] call bitmap_init - //SEG32 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG32 [17] call bitmap_init + //SEG33 [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] + //SEG34 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG34 main::@10 + //SEG35 main::@10 b10: - //SEG35 [19] call bitmap_clear + //SEG36 [19] call bitmap_clear jsr bitmap_clear - //SEG36 [20] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG37 [20] phi from main::@10 to main::@11 [phi:main::@10->main::@11] b11_from_b10: jmp b11 - //SEG37 main::@11 + //SEG38 main::@11 b11: - //SEG38 [21] call sin16s_gen2 - //SEG39 [70] phi from main::@11 to sin16s_gen2 [phi:main::@11->sin16s_gen2] + //SEG39 [21] call sin16s_gen2 + //SEG40 [70] phi from main::@11 to sin16s_gen2 [phi:main::@11->sin16s_gen2] sin16s_gen2_from_b11: jsr sin16s_gen2 - //SEG40 [22] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG41 [22] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG41 main::@12 + //SEG42 main::@12 b12: - //SEG42 [23] call render_sine - //SEG43 [25] phi from main::@12 to render_sine [phi:main::@12->render_sine] + //SEG43 [23] call render_sine + //SEG44 [25] phi from main::@12 to render_sine [phi:main::@12->render_sine] render_sine_from_b12: jsr render_sine jmp b2 - //SEG44 main::@2 + //SEG45 main::@2 b2: - //SEG45 [24] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG46 [24] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL jmp b2 } -//SEG46 render_sine +//SEG47 render_sine render_sine: { .label _0 = 6 .label _1 = 6 @@ -6080,34 +6081,34 @@ render_sine: { .label sin2_val = 6 .label xpos = 4 .label sin_idx = 2 - //SEG47 [26] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] + //SEG48 [26] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] b1_from_render_sine: - //SEG48 [26] phi (word) render_sine::xpos#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 + //SEG49 [26] phi (word) render_sine::xpos#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 lda #<0 sta xpos lda #>0 sta xpos+1 - //SEG49 [26] phi (word) render_sine::sin_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 + //SEG50 [26] phi (word) render_sine::sin_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 lda #<0 sta sin_idx lda #>0 sta sin_idx+1 jmp b1 - //SEG50 [26] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] + //SEG51 [26] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] b1_from_b2: - //SEG51 [26] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy - //SEG52 [26] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy + //SEG52 [26] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy + //SEG53 [26] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy jmp b1 - //SEG53 render_sine::@1 + //SEG54 render_sine::@1 b1: - //SEG54 [27] (word~) render_sine::$0 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 + //SEG55 [27] (word~) render_sine::$0 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _0 lda sin_idx+1 rol sta _0+1 - //SEG55 [28] (signed word*~) render_sine::$1 ← (const signed word[512]) sin#0 + (word~) render_sine::$0 -- pwsz1=pwsc1_plus_vwuz1 + //SEG56 [28] (signed word*~) render_sine::$1 ← (const signed word[512]) sin#0 + (word~) render_sine::$0 -- pwsz1=pwsc1_plus_vwuz1 clc lda _1 adc #sin sta _1+1 - //SEG56 [29] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz1 + //SEG57 [29] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz1 ldy #0 lda (sin_val),y tax @@ -6123,37 +6124,37 @@ render_sine: { lda (sin_val),y stx sin_val sta sin_val+1 - //SEG57 [30] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 - //SEG58 [31] call wrap_y - //SEG59 [61] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] + //SEG58 [30] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 + //SEG59 [31] call wrap_y + //SEG60 [61] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] wrap_y_from_b1: - //SEG60 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy + //SEG61 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy jsr wrap_y - //SEG61 [32] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 + //SEG62 [32] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 jmp b5 - //SEG62 render_sine::@5 + //SEG63 render_sine::@5 b5: - //SEG63 [33] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuxx=vbuaa + //SEG64 [33] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuxx=vbuaa tax - //SEG64 [34] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 - //SEG65 [35] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 - //SEG66 [36] call bitmap_plot - //SEG67 [54] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] + //SEG65 [34] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 + //SEG66 [35] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 + //SEG67 [36] call bitmap_plot + //SEG68 [54] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] bitmap_plot_from_b5: - //SEG68 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@5->bitmap_plot#0] -- register_copy - //SEG69 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@5->bitmap_plot#1] -- register_copy + //SEG69 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@5->bitmap_plot#0] -- register_copy + //SEG70 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@5->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b6 - //SEG70 render_sine::@6 + //SEG71 render_sine::@6 b6: - //SEG71 [37] (word~) render_sine::$4 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 + //SEG72 [37] (word~) render_sine::$4 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _4 lda sin_idx+1 rol sta _4+1 - //SEG72 [38] (signed word*~) render_sine::$5 ← (const signed word*) sin2#0 + (word~) render_sine::$4 -- pwsz1=pwsc1_plus_vwuz1 + //SEG73 [38] (signed word*~) render_sine::$5 ← (const signed word*) sin2#0 + (word~) render_sine::$4 -- pwsz1=pwsc1_plus_vwuz1 clc lda _5 adc #sin2 sta _5+1 - //SEG73 [39] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$5) -- vwsz1=_deref_pwsz1 + //SEG74 [39] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$5) -- vwsz1=_deref_pwsz1 ldy #0 lda (sin2_val),y tax @@ -6169,7 +6170,7 @@ render_sine: { lda (sin2_val),y stx sin2_val sta sin2_val+1 - //SEG74 [40] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_plus_vbuc1 + //SEG75 [40] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_plus_vbuc1 clc lda wrap_y.y adc #<$a @@ -6177,56 +6178,56 @@ render_sine: { lda wrap_y.y+1 adc #>$a sta wrap_y.y+1 - //SEG75 [41] call wrap_y - //SEG76 [61] phi from render_sine::@6 to wrap_y [phi:render_sine::@6->wrap_y] + //SEG76 [41] call wrap_y + //SEG77 [61] phi from render_sine::@6 to wrap_y [phi:render_sine::@6->wrap_y] wrap_y_from_b6: - //SEG77 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@6->wrap_y#0] -- register_copy + //SEG78 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@6->wrap_y#0] -- register_copy jsr wrap_y - //SEG78 [42] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + //SEG79 [42] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 jmp b7 - //SEG79 render_sine::@7 + //SEG80 render_sine::@7 b7: - //SEG80 [43] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa + //SEG81 [43] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa tax - //SEG81 [44] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - //SEG82 [45] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - //SEG83 [46] call bitmap_plot - //SEG84 [54] phi from render_sine::@7 to bitmap_plot [phi:render_sine::@7->bitmap_plot] + //SEG82 [44] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + //SEG83 [45] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + //SEG84 [46] call bitmap_plot + //SEG85 [54] phi from render_sine::@7 to bitmap_plot [phi:render_sine::@7->bitmap_plot] bitmap_plot_from_b7: - //SEG85 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@7->bitmap_plot#0] -- register_copy - //SEG86 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@7->bitmap_plot#1] -- register_copy + //SEG86 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@7->bitmap_plot#0] -- register_copy + //SEG87 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@7->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b8 - //SEG87 render_sine::@8 + //SEG88 render_sine::@8 b8: - //SEG88 [47] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + //SEG89 [47] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc xpos bne !+ inc xpos+1 !: - //SEG89 [48] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@10 -- vwuz1_neq_vwuc1_then_la1 + //SEG90 [48] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@10 -- vwuz1_neq_vwuc1_then_la1 lda xpos+1 cmp #>$140 bne b10_from_b8 lda xpos cmp #<$140 bne b10_from_b8 - //SEG90 [49] phi from render_sine::@8 to render_sine::@2 [phi:render_sine::@8->render_sine::@2] + //SEG91 [49] phi from render_sine::@8 to render_sine::@2 [phi:render_sine::@8->render_sine::@2] b2_from_b8: - //SEG91 [49] phi (word) render_sine::xpos#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine::@8->render_sine::@2#0] -- vwuz1=vbuc1 + //SEG92 [49] phi (word) render_sine::xpos#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine::@8->render_sine::@2#0] -- vwuz1=vbuc1 lda #<0 sta xpos lda #>0 sta xpos+1 jmp b2 - //SEG92 render_sine::@2 + //SEG93 render_sine::@2 b2: - //SEG93 [50] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 + //SEG94 [50] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 inc sin_idx bne !+ inc sin_idx+1 !: - //SEG94 [51] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG95 [51] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 lda sin_idx+1 cmp #>SIN_SIZE bcc b1_from_b2 @@ -6236,40 +6237,40 @@ render_sine: { bcc b1_from_b2 !: jmp breturn - //SEG95 render_sine::@return + //SEG96 render_sine::@return breturn: - //SEG96 [52] return + //SEG97 [52] return rts - //SEG97 [53] phi from render_sine::@8 to render_sine::@10 [phi:render_sine::@8->render_sine::@10] + //SEG98 [53] phi from render_sine::@8 to render_sine::@10 [phi:render_sine::@8->render_sine::@10] b10_from_b8: jmp b10 - //SEG98 render_sine::@10 + //SEG99 render_sine::@10 b10: - //SEG99 [49] phi from render_sine::@10 to render_sine::@2 [phi:render_sine::@10->render_sine::@2] + //SEG100 [49] phi from render_sine::@10 to render_sine::@2 [phi:render_sine::@10->render_sine::@2] b2_from_b10: - //SEG100 [49] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@10->render_sine::@2#0] -- register_copy + //SEG101 [49] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@10->render_sine::@2#0] -- register_copy jmp b2 } -//SEG101 bitmap_plot +//SEG102 bitmap_plot // Plot a single dot in the bitmap bitmap_plot: { .label _1 = $10 .label plotter = 6 .label x = 4 .label _3 = 6 - //SEG102 [55] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + //SEG103 [55] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta _3+1 lda bitmap_plot_ylo,x sta _3 - //SEG103 [56] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG104 [56] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG104 [57] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + //SEG105 [57] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -6277,9 +6278,9 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - //SEG105 [58] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 + //SEG106 [58] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 lda x - //SEG106 [59] *((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 + //SEG107 [59] *((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 @@ -6287,22 +6288,22 @@ bitmap_plot: { ldy #0 sta (plotter),y jmp breturn - //SEG107 bitmap_plot::@return + //SEG108 bitmap_plot::@return breturn: - //SEG108 [60] return + //SEG109 [60] return rts } -//SEG109 wrap_y +//SEG110 wrap_y wrap_y: { .label y = 6 - //SEG110 [62] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + //SEG111 [62] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] b1_from_wrap_y: b1_from_b2: - //SEG111 [62] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + //SEG112 [62] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy jmp b1 - //SEG112 wrap_y::@1 + //SEG113 wrap_y::@1 b1: - //SEG113 [63] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 -- vwsz1_ge_vbuc1_then_la1 + //SEG114 [63] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 -- vwsz1_ge_vbuc1_then_la1 lda y cmp #$c8 lda y+1 @@ -6311,29 +6312,29 @@ wrap_y: { eor #$80 !: bpl b2 - //SEG114 [64] phi from wrap_y::@1 wrap_y::@5 to wrap_y::@4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4] + //SEG115 [64] phi from wrap_y::@1 wrap_y::@5 to wrap_y::@4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4] b4_from_b1: b4_from_b5: - //SEG115 [64] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4#0] -- register_copy + //SEG116 [64] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4#0] -- register_copy jmp b4 - //SEG116 wrap_y::@4 + //SEG117 wrap_y::@4 b4: - //SEG117 [65] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 -- vwsz1_lt_0_then_la1 + //SEG118 [65] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 -- vwsz1_lt_0_then_la1 lda y+1 bmi b5 jmp b6 - //SEG118 wrap_y::@6 + //SEG119 wrap_y::@6 b6: - //SEG119 [66] (byte) wrap_y::return#2 ← ((byte)) (signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 + //SEG120 [66] (byte) wrap_y::return#2 ← ((byte)) (signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 lda y jmp breturn - //SEG120 wrap_y::@return + //SEG121 wrap_y::@return breturn: - //SEG121 [67] return + //SEG122 [67] return rts - //SEG122 wrap_y::@5 + //SEG123 wrap_y::@5 b5: - //SEG123 [68] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_plus_vbuc1 + //SEG124 [68] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_plus_vbuc1 clc lda y adc #<$c8 @@ -6342,9 +6343,9 @@ wrap_y: { adc #>$c8 sta y+1 jmp b4_from_b5 - //SEG124 wrap_y::@2 + //SEG125 wrap_y::@2 b2: - //SEG125 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_minus_vbuc1 + //SEG126 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_minus_vbuc1 lda y sec sbc #<$c8 @@ -6354,7 +6355,7 @@ wrap_y: { sta y+1 jmp b1_from_b2 } -//SEG126 sin16s_gen2 +//SEG127 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -6370,28 +6371,28 @@ sin16s_gen2: { .label sintab = 2 .label x = 8 .label i = 4 - //SEG127 [71] call div32u16u - //SEG128 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG128 [71] call div32u16u + //SEG129 [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 + //SEG130 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b3 - //SEG130 sin16s_gen2::@3 + //SEG131 sin16s_gen2::@3 b3: - //SEG131 [73] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 - //SEG132 [74] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] + //SEG132 [73] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + //SEG133 [74] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] b1_from_b3: - //SEG133 [74] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG134 [74] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG134 [74] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[512]) sin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG135 [74] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[512]) sin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #sin sta sintab+1 - //SEG135 [74] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG136 [74] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6399,15 +6400,15 @@ sin16s_gen2: { sta x+2 sta x+3 jmp b1 - //SEG136 [74] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] + //SEG137 [74] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] b1_from_b5: - //SEG137 [74] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy - //SEG138 [74] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy - //SEG139 [74] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy + //SEG138 [74] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy + //SEG139 [74] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy + //SEG140 [74] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy jmp b1 - //SEG140 sin16s_gen2::@1 + //SEG141 sin16s_gen2::@1 b1: - //SEG141 [75] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG142 [75] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -6416,26 +6417,26 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG142 [76] call sin16s + //SEG143 [76] call sin16s jsr sin16s - //SEG143 [77] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG144 [77] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b4 - //SEG144 sin16s_gen2::@4 + //SEG145 sin16s_gen2::@4 b4: - //SEG145 [78] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - //SEG146 [79] call mul16s + //SEG146 [78] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + //SEG147 [79] call mul16s jsr mul16s - //SEG147 [80] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG148 [80] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 jmp b5 - //SEG148 sin16s_gen2::@5 + //SEG149 sin16s_gen2::@5 b5: - //SEG149 [81] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - //SEG150 [82] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG150 [81] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + //SEG151 [82] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG151 [83] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz1 + //SEG152 [83] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz1 clc lda _8 adc #offs sta _8+1 - //SEG152 [84] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG153 [84] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG153 [85] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG154 [85] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -6458,7 +6459,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG154 [86] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG155 [86] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6472,12 +6473,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG155 [87] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG156 [87] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG156 [88] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG157 [88] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>SIN_SIZE bcc b1_from_b5 @@ -6487,12 +6488,12 @@ sin16s_gen2: { bcc b1_from_b5 !: jmp breturn - //SEG157 sin16s_gen2::@return + //SEG158 sin16s_gen2::@return breturn: - //SEG158 [89] return + //SEG159 [89] return rts } -//SEG159 mul16s +//SEG160 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication mul16s: { @@ -6502,43 +6503,43 @@ mul16s: { .label m = $c .label return = $c .label a = $17 - //SEG160 [90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG161 [90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG161 [91] call mul16u - //SEG162 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG162 [91] call mul16u + //SEG163 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //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 + //SEG164 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG165 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG165 [92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG166 [92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b6 - //SEG166 mul16s::@6 + //SEG167 mul16s::@6 b6: - //SEG167 [93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG168 [94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG168 [93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG169 [94] 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 - //SEG169 mul16s::@3 + //SEG170 mul16s::@3 b3: - //SEG170 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG171 [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 + //SEG172 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG172 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG173 [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 - //SEG173 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG174 [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 - //SEG174 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG175 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG175 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG176 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG176 mul16s::@1 + //SEG177 mul16s::@1 b1: jmp b2 - //SEG177 mul16s::@2 + //SEG178 mul16s::@2 b2: - //SEG178 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG179 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG179 mul16s::@return + //SEG180 mul16s::@return breturn: - //SEG180 [101] return + //SEG181 [101] return rts } -//SEG181 mul16u +//SEG182 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $12 @@ -6576,7 +6577,7 @@ mul16u: { .label res = $c .label return = $c .label b = 6 - //SEG182 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG183 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6584,42 +6585,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG183 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG184 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //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 + //SEG185 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG186 [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 - //SEG186 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG187 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG187 mul16u::@1 + //SEG188 mul16u::@1 b1: - //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 + //SEG189 [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 - //SEG189 mul16u::@return + //SEG190 mul16u::@return breturn: - //SEG190 [106] return + //SEG191 [106] return rts - //SEG191 mul16u::@2 + //SEG192 mul16u::@2 b2: - //SEG192 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG193 [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 - //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 + //SEG194 [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 - //SEG194 mul16u::@7 + //SEG195 mul16u::@7 b7: - //SEG195 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG196 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6633,30 +6634,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG196 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG197 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG197 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG198 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG198 mul16u::@4 + //SEG199 mul16u::@4 b4: - //SEG199 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG200 [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 - //SEG200 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG201 [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 - //SEG201 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG202 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //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 + //SEG203 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG204 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG205 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG205 sin16s +//SEG206 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -6674,7 +6675,7 @@ sin16s: { .label x5_128 = 6 .label sinx = $17 .label isUpper = $16 - //SEG206 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG207 [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 @@ -6692,9 +6693,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG207 sin16s::@4 + //SEG208 sin16s::@4 b4: - //SEG208 [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG209 [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 - //SEG209 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG210 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //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 + //SEG211 [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 - //SEG211 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG212 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG212 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG213 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG213 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG214 [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 - //SEG214 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG215 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG215 sin16s::@1 + //SEG216 sin16s::@1 b1: - //SEG216 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG217 [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 @@ -6742,9 +6743,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG217 sin16s::@5 + //SEG218 sin16s::@5 b5: - //SEG218 [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG219 [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 - //SEG219 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG220 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG220 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG221 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG221 sin16s::@2 + //SEG222 sin16s::@2 b2: - //SEG222 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG223 [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 @@ -6774,80 +6775,80 @@ sin16s: { rol _6+3 dey bne !- - //SEG223 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG224 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG224 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [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 - //SEG225 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG226 [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 - //SEG226 [123] call mulu16_sel - //SEG227 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG227 [123] call mulu16_sel + //SEG228 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //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 + //SEG229 [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 - //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 + //SEG230 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG231 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG231 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG232 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b8 - //SEG232 sin16s::@8 + //SEG233 sin16s::@8 b8: - //SEG233 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG234 [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 - //SEG234 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG235 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG235 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG236 [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 - //SEG236 [128] call mulu16_sel - //SEG237 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG237 [128] call mulu16_sel + //SEG238 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //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 + //SEG239 [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 - //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 + //SEG240 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG241 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG241 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG242 [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 - //SEG242 sin16s::@9 + //SEG243 sin16s::@9 b9: - //SEG243 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG244 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG245 [132] call mulu16_sel - //SEG246 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG244 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG245 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG246 [132] call mulu16_sel + //SEG247 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //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 + //SEG248 [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 - //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 + //SEG249 [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 - //SEG249 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG250 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG250 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG251 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b10 - //SEG251 sin16s::@10 + //SEG252 sin16s::@10 b10: - //SEG252 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG253 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG253 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG254 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6855,56 +6856,56 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG254 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG255 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG255 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG256 [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 - //SEG256 [138] call mulu16_sel - //SEG257 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG257 [138] call mulu16_sel + //SEG258 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //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 + //SEG259 [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 - //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 + //SEG260 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG261 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG261 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG262 [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 - //SEG262 sin16s::@11 + //SEG263 sin16s::@11 b11: - //SEG263 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG264 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG265 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG264 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG265 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG266 [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 - //SEG266 [143] call mulu16_sel - //SEG267 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG267 [143] call mulu16_sel + //SEG268 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //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 + //SEG269 [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 - //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 + //SEG270 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG271 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG271 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG272 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b12 - //SEG272 sin16s::@12 + //SEG273 sin16s::@12 b12: - //SEG273 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //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 + //SEG274 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG275 [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 !- - //SEG275 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG276 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6912,14 +6913,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //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 + //SEG277 [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 - //SEG277 sin16s::@6 + //SEG278 sin16s::@6 b6: - //SEG278 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG279 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6929,24 +6930,24 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG279 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG280 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG280 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG281 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG281 sin16s::@3 + //SEG282 sin16s::@3 b3: jmp breturn - //SEG282 sin16s::@return + //SEG283 sin16s::@return breturn: - //SEG283 [151] return + //SEG284 [151] return rts - //SEG284 sin16s::@15 + //SEG285 sin16s::@15 b15: - //SEG285 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG286 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b15 } -//SEG286 mulu16_sel +//SEG287 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -6957,24 +6958,24 @@ mulu16_sel: { .label return = 6 .label return_1 = $19 .label return_10 = $19 - //SEG287 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG288 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG288 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG289 [156] call mul16u - //SEG290 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG289 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG290 [156] call mul16u + //SEG291 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //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 + //SEG292 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG293 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG293 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG294 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b2 - //SEG294 mulu16_sel::@2 + //SEG295 mulu16_sel::@2 b2: - //SEG295 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG296 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG296 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG297 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -6985,64 +6986,64 @@ mulu16_sel: { dex bne !- !e: - //SEG297 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG298 [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 - //SEG298 mulu16_sel::@return + //SEG299 mulu16_sel::@return breturn: - //SEG299 [161] return + //SEG300 [161] return rts } -//SEG300 div32u16u +//SEG301 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $10 .label quotient_lo = 6 .label return = $1b - //SEG301 [163] call divr16u - //SEG302 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG302 [163] call divr16u + //SEG303 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG303 [172] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG304 [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 - //SEG304 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG305 [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 - //SEG305 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG306 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG306 div32u16u::@2 + //SEG307 div32u16u::@2 b2: - //SEG307 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG308 [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 - //SEG308 [166] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG309 [167] call divr16u - //SEG310 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG309 [166] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG310 [167] call divr16u + //SEG311 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG311 [172] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG312 [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 - //SEG312 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG313 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG313 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG314 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b3 - //SEG314 div32u16u::@3 + //SEG315 div32u16u::@3 b3: - //SEG315 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG316 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG316 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG317 [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 @@ -7052,12 +7053,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG317 div32u16u::@return + //SEG318 div32u16u::@return breturn: - //SEG318 [171] return + //SEG319 [171] return rts } -//SEG319 divr16u +//SEG320 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -7067,58 +7068,58 @@ divr16u: { .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG320 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG321 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG321 [173] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG322 [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 - //SEG322 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG323 [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 - //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 + //SEG324 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG325 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG325 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG326 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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 + //SEG327 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG328 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG329 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG330 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG330 divr16u::@1 + //SEG331 divr16u::@1 b1: - //SEG331 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG332 [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 - //SEG332 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG333 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG333 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG334 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG334 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG335 [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 - //SEG335 divr16u::@4 + //SEG336 divr16u::@4 b4: - //SEG336 [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG337 [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 - //SEG337 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG338 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG338 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG339 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG339 divr16u::@2 + //SEG340 divr16u::@2 b2: - //SEG340 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [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 - //SEG341 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG342 [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 - //SEG342 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG343 [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 @@ -7128,14 +7129,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG343 divr16u::@5 + //SEG344 divr16u::@5 b5: - //SEG344 [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG345 [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG345 [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG346 [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 - //SEG346 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG347 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //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 + //SEG348 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG349 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG349 divr16u::@3 + //SEG350 divr16u::@3 b3: - //SEG350 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG351 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG352 [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 - //SEG352 divr16u::@6 + //SEG353 divr16u::@6 b6: - //SEG353 [188] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG354 [188] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG354 divr16u::@return + //SEG355 divr16u::@return breturn: - //SEG355 [189] return + //SEG356 [189] return rts } -//SEG356 bitmap_clear +//SEG357 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 2 .label y = $16 .label _3 = 2 - //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 + //SEG358 [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 - //SEG358 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG359 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG359 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG360 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //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 + //SEG361 [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 - //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 (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG362 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG363 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //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 + //SEG364 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG365 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG365 bitmap_clear::@1 + //SEG366 bitmap_clear::@1 b1: - //SEG366 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG367 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //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 + //SEG368 [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 - //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 (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG369 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG370 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //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 + //SEG371 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG372 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG372 bitmap_clear::@2 + //SEG373 bitmap_clear::@2 b2: - //SEG373 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG374 [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 - //SEG374 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG375 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG375 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG376 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG377 [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 - //SEG377 bitmap_clear::@3 + //SEG378 bitmap_clear::@3 b3: - //SEG378 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG379 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG380 [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 - //SEG380 bitmap_clear::@return + //SEG381 bitmap_clear::@return breturn: - //SEG381 [200] return + //SEG382 [200] return rts } -//SEG382 bitmap_init +//SEG383 bitmap_init // Initialize bitmap plotting tables bitmap_init: { .label _3 = $16 .label yoffs = 2 - //SEG383 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG384 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //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 + //SEG385 [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 - //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 + //SEG386 [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 - //SEG386 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG387 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //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 + //SEG388 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG389 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG389 bitmap_init::@1 + //SEG390 bitmap_init::@1 b1: - //SEG390 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG391 [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 - //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 + //SEG392 [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 - //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 + //SEG393 [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 - //SEG393 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG394 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //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 + //SEG395 [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 - //SEG395 bitmap_init::@2 + //SEG396 bitmap_init::@2 b2: - //SEG396 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG397 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG398 [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 - //SEG398 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG399 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG399 [209] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG400 [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 - //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 + //SEG401 [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 - //SEG401 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG402 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //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 + //SEG403 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG404 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG404 bitmap_init::@3 + //SEG405 bitmap_init::@3 b3: - //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 + //SEG406 [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 - //SEG406 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG407 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG407 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG408 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG408 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG409 [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 - //SEG409 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG410 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG410 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG411 [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 - //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 + //SEG412 [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 - //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 + //SEG413 [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 - //SEG413 bitmap_init::@7 + //SEG414 bitmap_init::@7 b7: - //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 + //SEG415 [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 @@ -7320,64 +7321,63 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 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: - //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 [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 - //SEG417 bitmap_init::@4 + //SEG418 bitmap_init::@4 b4: - //SEG418 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG419 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG420 [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 - //SEG420 bitmap_init::@return + //SEG421 bitmap_init::@return breturn: - //SEG421 [222] return + //SEG422 [222] return rts - //SEG422 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG423 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG423 bitmap_init::@10 + //SEG424 bitmap_init::@10 b10: - //SEG424 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG425 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG425 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG426 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG426 fill -// Simple routines for working with memory +//SEG427 fill // Fill some memory with a value fill: { .const size = $3e8 .label end = SCREEN+size .label addr = 2 - //SEG427 [225] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG428 [225] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG428 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG429 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+1 jmp b1 - //SEG429 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG430 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG430 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG431 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG431 fill::@1 + //SEG432 fill::@1 b1: - //SEG432 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG433 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG433 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG434 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG434 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG435 [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 @@ -7385,9 +7385,9 @@ fill: { cmp #@32] -//SEG6 @32 -//SEG7 [3] call main -//SEG8 [4] phi from @32 to @end [phi:@32->@end] -//SEG9 @end -//SEG10 main +//SEG3 @begin +//SEG4 @29 +//SEG5 kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } }} +//SEG6 [2] phi from @29 to @32 [phi:@29->@32] +//SEG7 @32 +//SEG8 [3] call main +//SEG9 [4] phi from @32 to @end [phi:@32->@end] +//SEG10 @end +//SEG11 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f - //SEG11 asm { sei } + //SEG12 asm { sei } sei - //SEG12 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG13 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG14 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG14 [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 -- _deref_pbuc1=vbuc2 + //SEG15 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG15 main::vicSelectGfxBank1 - //SEG16 [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG16 main::vicSelectGfxBank1 + //SEG17 [9] *((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 - //SEG17 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] - //SEG18 main::vicSelectGfxBank1_toDd001 - //SEG19 main::vicSelectGfxBank1_@1 - //SEG20 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG18 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG19 main::vicSelectGfxBank1_toDd001 + //SEG20 main::vicSelectGfxBank1_@1 + //SEG21 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG21 main::@7 - //SEG22 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG22 main::@7 + //SEG23 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta D016 - //SEG23 [13] phi from main::@7 to main::toD0181 [phi:main::@7->main::toD0181] - //SEG24 main::toD0181 - //SEG25 main::@8 - //SEG26 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG24 [13] phi from main::@7 to main::toD0181 [phi:main::@7->main::toD0181] + //SEG25 main::toD0181 + //SEG26 main::@8 + //SEG27 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG27 [15] call fill - //SEG28 [224] phi from main::@8 to fill [phi:main::@8->fill] + //SEG28 [15] call fill + //SEG29 [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 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG30 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG31 main::@9 + //SEG32 [17] call bitmap_init + //SEG33 [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 - //SEG35 [19] call bitmap_clear + //SEG34 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG35 main::@10 + //SEG36 [19] call bitmap_clear jsr bitmap_clear - //SEG36 [20] phi from main::@10 to main::@11 [phi:main::@10->main::@11] - //SEG37 main::@11 - //SEG38 [21] call sin16s_gen2 - //SEG39 [70] phi from main::@11 to sin16s_gen2 [phi:main::@11->sin16s_gen2] + //SEG37 [20] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG38 main::@11 + //SEG39 [21] call sin16s_gen2 + //SEG40 [70] phi from main::@11 to sin16s_gen2 [phi:main::@11->sin16s_gen2] jsr sin16s_gen2 - //SEG40 [22] phi from main::@11 to main::@12 [phi:main::@11->main::@12] - //SEG41 main::@12 - //SEG42 [23] call render_sine - //SEG43 [25] phi from main::@12 to render_sine [phi:main::@12->render_sine] + //SEG41 [22] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG42 main::@12 + //SEG43 [23] call render_sine + //SEG44 [25] phi from main::@12 to render_sine [phi:main::@12->render_sine] jsr render_sine - //SEG44 main::@2 + //SEG45 main::@2 b2: - //SEG45 [24] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG46 [24] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL jmp b2 } -//SEG46 render_sine +//SEG47 render_sine render_sine: { .label _0 = 6 .label _1 = 6 @@ -8316,27 +8317,27 @@ render_sine: { .label sin2_val = 6 .label xpos = 4 .label sin_idx = 2 - //SEG47 [26] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] - //SEG48 [26] phi (word) render_sine::xpos#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 + //SEG48 [26] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] + //SEG49 [26] phi (word) render_sine::xpos#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 lda #<0 sta xpos sta xpos+1 - //SEG49 [26] phi (word) render_sine::sin_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 + //SEG50 [26] phi (word) render_sine::sin_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 sta sin_idx sta sin_idx+1 - //SEG50 [26] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] - //SEG51 [26] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy - //SEG52 [26] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy - //SEG53 render_sine::@1 + //SEG51 [26] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] + //SEG52 [26] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy + //SEG53 [26] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy + //SEG54 render_sine::@1 b1: - //SEG54 [27] (word~) render_sine::$0 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 + //SEG55 [27] (word~) render_sine::$0 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _0 lda sin_idx+1 rol sta _0+1 - //SEG55 [28] (signed word*~) render_sine::$1 ← (const signed word[512]) sin#0 + (word~) render_sine::$0 -- pwsz1=pwsc1_plus_vwuz1 + //SEG56 [28] (signed word*~) render_sine::$1 ← (const signed word[512]) sin#0 + (word~) render_sine::$0 -- pwsz1=pwsc1_plus_vwuz1 clc lda _1 adc #sin sta _1+1 - //SEG56 [29] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz1 + //SEG57 [29] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz1 ldy #0 lda (sin_val),y tax @@ -8352,31 +8353,31 @@ render_sine: { lda (sin_val),y stx sin_val sta sin_val+1 - //SEG57 [30] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 - //SEG58 [31] call wrap_y - //SEG59 [61] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] - //SEG60 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy + //SEG58 [30] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 + //SEG59 [31] call wrap_y + //SEG60 [61] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] + //SEG61 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy jsr wrap_y - //SEG61 [32] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 - //SEG62 render_sine::@5 - //SEG63 [33] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuxx=vbuaa + //SEG62 [32] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 + //SEG63 render_sine::@5 + //SEG64 [33] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuxx=vbuaa tax - //SEG64 [34] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 - //SEG65 [35] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 - //SEG66 [36] call bitmap_plot - //SEG67 [54] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] - //SEG68 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@5->bitmap_plot#0] -- register_copy - //SEG69 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@5->bitmap_plot#1] -- register_copy + //SEG65 [34] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 + //SEG66 [35] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 + //SEG67 [36] call bitmap_plot + //SEG68 [54] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] + //SEG69 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@5->bitmap_plot#0] -- register_copy + //SEG70 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@5->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG70 render_sine::@6 - //SEG71 [37] (word~) render_sine::$4 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 + //SEG71 render_sine::@6 + //SEG72 [37] (word~) render_sine::$4 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _4 lda sin_idx+1 rol sta _4+1 - //SEG72 [38] (signed word*~) render_sine::$5 ← (const signed word*) sin2#0 + (word~) render_sine::$4 -- pwsz1=pwsc1_plus_vwuz1 + //SEG73 [38] (signed word*~) render_sine::$5 ← (const signed word*) sin2#0 + (word~) render_sine::$4 -- pwsz1=pwsc1_plus_vwuz1 clc lda _5 adc #sin2 sta _5+1 - //SEG73 [39] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$5) -- vwsz1=_deref_pwsz1 + //SEG74 [39] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$5) -- vwsz1=_deref_pwsz1 ldy #0 lda (sin2_val),y tax @@ -8392,7 +8393,7 @@ render_sine: { lda (sin2_val),y stx sin2_val sta sin2_val+1 - //SEG74 [40] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_plus_vbuc1 + //SEG75 [40] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_plus_vbuc1 clc lda wrap_y.y adc #<$a @@ -8400,47 +8401,47 @@ render_sine: { lda wrap_y.y+1 adc #>$a sta wrap_y.y+1 - //SEG75 [41] call wrap_y - //SEG76 [61] phi from render_sine::@6 to wrap_y [phi:render_sine::@6->wrap_y] - //SEG77 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@6->wrap_y#0] -- register_copy + //SEG76 [41] call wrap_y + //SEG77 [61] phi from render_sine::@6 to wrap_y [phi:render_sine::@6->wrap_y] + //SEG78 [61] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@6->wrap_y#0] -- register_copy jsr wrap_y - //SEG78 [42] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 - //SEG79 render_sine::@7 - //SEG80 [43] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa + //SEG79 [42] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + //SEG80 render_sine::@7 + //SEG81 [43] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa tax - //SEG81 [44] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - //SEG82 [45] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - //SEG83 [46] call bitmap_plot - //SEG84 [54] phi from render_sine::@7 to bitmap_plot [phi:render_sine::@7->bitmap_plot] - //SEG85 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@7->bitmap_plot#0] -- register_copy - //SEG86 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@7->bitmap_plot#1] -- register_copy + //SEG82 [44] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + //SEG83 [45] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + //SEG84 [46] call bitmap_plot + //SEG85 [54] phi from render_sine::@7 to bitmap_plot [phi:render_sine::@7->bitmap_plot] + //SEG86 [54] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@7->bitmap_plot#0] -- register_copy + //SEG87 [54] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@7->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG87 render_sine::@8 - //SEG88 [47] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + //SEG88 render_sine::@8 + //SEG89 [47] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc xpos bne !+ inc xpos+1 !: - //SEG89 [48] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@10 -- vwuz1_neq_vwuc1_then_la1 + //SEG90 [48] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@10 -- vwuz1_neq_vwuc1_then_la1 lda xpos+1 cmp #>$140 bne b2 lda xpos cmp #<$140 bne b2 - //SEG90 [49] phi from render_sine::@8 to render_sine::@2 [phi:render_sine::@8->render_sine::@2] - //SEG91 [49] phi (word) render_sine::xpos#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine::@8->render_sine::@2#0] -- vwuz1=vbuc1 + //SEG91 [49] phi from render_sine::@8 to render_sine::@2 [phi:render_sine::@8->render_sine::@2] + //SEG92 [49] phi (word) render_sine::xpos#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_sine::@8->render_sine::@2#0] -- vwuz1=vbuc1 lda #<0 sta xpos sta xpos+1 - //SEG92 render_sine::@2 + //SEG93 render_sine::@2 b2: - //SEG93 [50] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 + //SEG94 [50] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 inc sin_idx bne !+ inc sin_idx+1 !: - //SEG94 [51] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG95 [51] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 lda sin_idx+1 cmp #>SIN_SIZE bcs !b1+ @@ -8453,34 +8454,34 @@ render_sine: { jmp b1 !b1: !: - //SEG95 render_sine::@return - //SEG96 [52] return + //SEG96 render_sine::@return + //SEG97 [52] return rts - //SEG97 [53] phi from render_sine::@8 to render_sine::@10 [phi:render_sine::@8->render_sine::@10] - //SEG98 render_sine::@10 - //SEG99 [49] phi from render_sine::@10 to render_sine::@2 [phi:render_sine::@10->render_sine::@2] - //SEG100 [49] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@10->render_sine::@2#0] -- register_copy + //SEG98 [53] phi from render_sine::@8 to render_sine::@10 [phi:render_sine::@8->render_sine::@10] + //SEG99 render_sine::@10 + //SEG100 [49] phi from render_sine::@10 to render_sine::@2 [phi:render_sine::@10->render_sine::@2] + //SEG101 [49] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@10->render_sine::@2#0] -- register_copy } -//SEG101 bitmap_plot +//SEG102 bitmap_plot // Plot a single dot in the bitmap bitmap_plot: { .label _1 = $10 .label plotter = 6 .label x = 4 .label _3 = 6 - //SEG102 [55] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + //SEG103 [55] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta _3+1 lda bitmap_plot_ylo,x sta _3 - //SEG103 [56] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG104 [56] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG104 [57] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + //SEG105 [57] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -8488,26 +8489,26 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - //SEG105 [58] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 + //SEG106 [58] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 lda x - //SEG106 [59] *((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 + //SEG107 [59] *((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 - //SEG107 bitmap_plot::@return - //SEG108 [60] return + //SEG108 bitmap_plot::@return + //SEG109 [60] return rts } -//SEG109 wrap_y +//SEG110 wrap_y wrap_y: { .label y = 6 - //SEG110 [62] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] - //SEG111 [62] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy - //SEG112 wrap_y::@1 + //SEG111 [62] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + //SEG112 [62] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + //SEG113 wrap_y::@1 b1: - //SEG113 [63] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 -- vwsz1_ge_vbuc1_then_la1 + //SEG114 [63] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 -- vwsz1_ge_vbuc1_then_la1 lda y cmp #$c8 lda y+1 @@ -8516,22 +8517,22 @@ wrap_y: { eor #$80 !: bpl b2 - //SEG114 [64] phi from wrap_y::@1 wrap_y::@5 to wrap_y::@4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4] - //SEG115 [64] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4#0] -- register_copy - //SEG116 wrap_y::@4 + //SEG115 [64] phi from wrap_y::@1 wrap_y::@5 to wrap_y::@4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4] + //SEG116 [64] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@5->wrap_y::@4#0] -- register_copy + //SEG117 wrap_y::@4 b4: - //SEG117 [65] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 -- vwsz1_lt_0_then_la1 + //SEG118 [65] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 -- vwsz1_lt_0_then_la1 lda y+1 bmi b5 - //SEG118 wrap_y::@6 - //SEG119 [66] (byte) wrap_y::return#2 ← ((byte)) (signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 + //SEG119 wrap_y::@6 + //SEG120 [66] (byte) wrap_y::return#2 ← ((byte)) (signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 lda y - //SEG120 wrap_y::@return - //SEG121 [67] return + //SEG121 wrap_y::@return + //SEG122 [67] return rts - //SEG122 wrap_y::@5 + //SEG123 wrap_y::@5 b5: - //SEG123 [68] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_plus_vbuc1 + //SEG124 [68] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_plus_vbuc1 clc lda y adc #<$c8 @@ -8540,9 +8541,9 @@ wrap_y: { adc #>$c8 sta y+1 jmp b4 - //SEG124 wrap_y::@2 + //SEG125 wrap_y::@2 b2: - //SEG125 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_minus_vbuc1 + //SEG126 [69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) 200 -- vwsz1=vwsz1_minus_vbuc1 lda y sec sbc #<$c8 @@ -8552,7 +8553,7 @@ wrap_y: { sta y+1 jmp b1 } -//SEG126 sin16s_gen2 +//SEG127 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -8568,35 +8569,35 @@ sin16s_gen2: { .label sintab = 2 .label x = 8 .label i = 4 - //SEG127 [71] call div32u16u - //SEG128 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG128 [71] call div32u16u + //SEG129 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u - //SEG129 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG130 sin16s_gen2::@3 - //SEG131 [73] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 - //SEG132 [74] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] - //SEG133 [74] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG130 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG131 sin16s_gen2::@3 + //SEG132 [73] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + //SEG133 [74] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1] + //SEG134 [74] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG134 [74] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[512]) sin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG135 [74] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[512]) sin#0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #sin sta sintab+1 - //SEG135 [74] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG136 [74] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 - //SEG136 [74] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] - //SEG137 [74] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy - //SEG138 [74] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy - //SEG139 [74] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy - //SEG140 sin16s_gen2::@1 + //SEG137 [74] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1] + //SEG138 [74] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy + //SEG139 [74] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy + //SEG140 [74] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy + //SEG141 sin16s_gen2::@1 b1: - //SEG141 [75] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG142 [75] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -8605,22 +8606,22 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG142 [76] call sin16s + //SEG143 [76] call sin16s jsr sin16s - //SEG143 [77] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG144 sin16s_gen2::@4 - //SEG145 [78] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - //SEG146 [79] call mul16s + //SEG144 [77] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG145 sin16s_gen2::@4 + //SEG146 [78] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + //SEG147 [79] call mul16s jsr mul16s - //SEG147 [80] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 - //SEG148 sin16s_gen2::@5 - //SEG149 [81] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - //SEG150 [82] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG148 [80] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG149 sin16s_gen2::@5 + //SEG150 [81] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + //SEG151 [82] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG151 [83] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz1 + //SEG152 [83] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsc1_plus_vwsz1 clc lda _8 adc #offs sta _8+1 - //SEG152 [84] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG153 [84] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG153 [85] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG154 [85] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -8643,7 +8644,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG154 [86] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG155 [86] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8657,12 +8658,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG155 [87] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG156 [87] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG156 [88] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG157 [88] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>SIN_SIZE bcc b1 @@ -8671,11 +8672,11 @@ sin16s_gen2: { cmp #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 + //SEG162 [91] call mul16u + //SEG163 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG164 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG165 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG165 [92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG166 mul16s::@6 - //SEG167 [93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG168 [94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG166 [92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG167 mul16s::@6 + //SEG168 [93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG169 [94] 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 b2 - //SEG169 mul16s::@3 - //SEG170 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG170 mul16s::@3 + //SEG171 [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 + //SEG172 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG172 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG173 [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 - //SEG173 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG174 [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 - //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 + //SEG175 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG176 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG177 mul16s::@1 + //SEG178 mul16s::@2 b2: - //SEG178 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG179 mul16s::@return - //SEG180 [101] return + //SEG179 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG180 mul16s::@return + //SEG181 [101] return rts } -//SEG181 mul16u +//SEG182 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $12 @@ -8747,7 +8748,7 @@ mul16u: { .label res = $c .label return = $c .label b = 6 - //SEG182 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG183 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8755,34 +8756,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //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 + //SEG184 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG185 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG186 [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 - //SEG186 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG187 mul16u::@1 + //SEG187 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG188 mul16u::@1 b1: - //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 + //SEG189 [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 - //SEG189 mul16u::@return - //SEG190 [106] return + //SEG190 mul16u::@return + //SEG191 [106] return rts - //SEG191 mul16u::@2 + //SEG192 mul16u::@2 b2: - //SEG192 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG193 [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 - //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 + //SEG194 [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 - //SEG194 mul16u::@7 - //SEG195 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG195 mul16u::@7 + //SEG196 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8796,26 +8797,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //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 + //SEG197 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG198 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG199 mul16u::@4 b4: - //SEG199 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG200 [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 - //SEG200 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG201 [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 - //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 + //SEG202 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG203 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG204 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG205 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG205 sin16s +//SEG206 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -8833,7 +8834,7 @@ sin16s: { .label x5_128 = 6 .label sinx = $17 .label isUpper = $16 - //SEG206 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG207 [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 @@ -8850,8 +8851,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //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 + //SEG210 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG211 [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 - //SEG211 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG212 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG212 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG213 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG213 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG214 [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 - //SEG214 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG215 sin16s::@1 + //SEG215 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG216 sin16s::@1 b1: - //SEG216 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG217 [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 @@ -8896,8 +8897,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //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 + //SEG220 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG221 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG222 sin16s::@2 b2: - //SEG222 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG223 [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 @@ -8924,71 +8925,71 @@ sin16s: { rol _6+3 dey bne !- - //SEG223 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG224 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG224 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [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 - //SEG225 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG226 [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 - //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 + //SEG227 [123] call mulu16_sel + //SEG228 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG229 [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 - //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 + //SEG230 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG231 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG231 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG232 sin16s::@8 - //SEG233 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG232 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG233 sin16s::@8 + //SEG234 [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 - //SEG234 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG235 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG235 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG236 [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 - //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 + //SEG237 [128] call mulu16_sel + //SEG238 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG239 [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 - //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 + //SEG240 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG241 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG241 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG242 [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 - //SEG242 sin16s::@9 - //SEG243 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG244 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //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 + //SEG243 sin16s::@9 + //SEG244 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG245 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG246 [132] call mulu16_sel + //SEG247 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG248 [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 - //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 + //SEG249 [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 - //SEG249 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG250 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG250 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG251 sin16s::@10 - //SEG252 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG253 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG251 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG252 sin16s::@10 + //SEG253 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG254 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8996,50 +8997,50 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG254 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG255 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG255 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG256 [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 - //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 + //SEG257 [138] call mulu16_sel + //SEG258 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG259 [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 - //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 + //SEG260 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG261 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG261 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG262 [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 - //SEG262 sin16s::@11 - //SEG263 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG264 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG265 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG263 sin16s::@11 + //SEG264 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG265 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG266 [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 - //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 + //SEG267 [143] call mulu16_sel + //SEG268 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG269 [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 - //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 + //SEG270 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG271 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG271 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG272 sin16s::@12 - //SEG273 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //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 + //SEG272 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG273 sin16s::@12 + //SEG274 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG275 [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 !- - //SEG275 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG276 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -9047,12 +9048,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //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 + //SEG277 [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 - //SEG277 sin16s::@6 - //SEG278 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG278 sin16s::@6 + //SEG279 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -9062,17 +9063,17 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //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 + //SEG280 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG281 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG282 sin16s::@3 b3: - //SEG282 sin16s::@return - //SEG283 [151] return + //SEG283 sin16s::@return + //SEG284 [151] return rts - //SEG284 sin16s::@15 - //SEG285 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG285 sin16s::@15 + //SEG286 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG286 mulu16_sel +//SEG287 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -9083,21 +9084,21 @@ mulu16_sel: { .label return = 6 .label return_1 = $19 .label return_10 = $19 - //SEG287 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG288 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG288 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //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 + //SEG289 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG290 [156] call mul16u + //SEG291 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG292 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG293 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG293 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG294 mulu16_sel::@2 - //SEG295 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG296 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG294 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG295 mulu16_sel::@2 + //SEG296 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG297 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -9108,55 +9109,55 @@ mulu16_sel: { dex bne !- !e: - //SEG297 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG298 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG298 mulu16_sel::@return - //SEG299 [161] return + //SEG299 mulu16_sel::@return + //SEG300 [161] return rts } -//SEG300 div32u16u +//SEG301 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $10 .label quotient_lo = 6 .label return = $1b - //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 + //SEG302 [163] call divr16u + //SEG303 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG304 [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 - //SEG304 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG305 [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 - //SEG305 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG306 div32u16u::@2 - //SEG307 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG306 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG307 div32u16u::@2 + //SEG308 [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 - //SEG308 [166] (word) divr16u::rem#4 ← (word) rem16u#1 - //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 + //SEG309 [166] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG310 [167] call divr16u + //SEG311 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG312 [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 - //SEG312 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG313 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG313 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG314 div32u16u::@3 - //SEG315 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG316 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG314 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG315 div32u16u::@3 + //SEG316 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG317 [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 @@ -9165,11 +9166,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG317 div32u16u::@return - //SEG318 [171] return + //SEG318 div32u16u::@return + //SEG319 [171] return rts } -//SEG319 divr16u +//SEG320 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -9179,48 +9180,48 @@ divr16u: { .label dividend = 4 .label quotient = 6 .label return = 6 - //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 + //SEG321 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG322 [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 - //SEG322 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG323 [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 - //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 + //SEG324 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG325 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG326 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG327 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG328 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG329 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG330 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG331 divr16u::@1 b1: - //SEG331 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG332 [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 - //SEG332 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG333 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG333 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG334 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG334 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG335 [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 - //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 + //SEG336 divr16u::@4 + //SEG337 [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 - //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 + //SEG338 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG339 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG340 divr16u::@2 b2: - //SEG340 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [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 - //SEG341 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG342 [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 - //SEG342 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG343 [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 @@ -9229,13 +9230,13 @@ divr16u: { cmp #SIN_SIZE sta rem+1 - //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 + //SEG347 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG348 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG349 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG350 divr16u::@3 b3: - //SEG350 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG351 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG352 [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 - //SEG352 divr16u::@6 - //SEG353 [188] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG354 divr16u::@return - //SEG355 [189] return + //SEG353 divr16u::@6 + //SEG354 [188] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG355 divr16u::@return + //SEG356 [189] return rts } -//SEG356 bitmap_clear +//SEG357 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 2 .label y = $16 .label _3 = 2 - //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 + //SEG358 [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 - //SEG358 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //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 + //SEG359 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG360 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG361 [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 - //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 + //SEG362 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG363 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG364 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG365 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG366 bitmap_clear::@1 b1: - //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 + //SEG367 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG368 [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 - //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 + //SEG369 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG370 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG371 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG372 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG373 bitmap_clear::@2 b2: - //SEG373 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG374 [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 - //SEG374 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG375 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG375 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG376 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG377 [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 - //SEG377 bitmap_clear::@3 - //SEG378 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG378 bitmap_clear::@3 + //SEG379 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG380 [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 - //SEG380 bitmap_clear::@return - //SEG381 [200] return + //SEG381 bitmap_clear::@return + //SEG382 [200] return rts } -//SEG382 bitmap_init +//SEG383 bitmap_init // Initialize bitmap plotting tables bitmap_init: { .label _3 = $16 .label yoffs = 2 - //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 + //SEG384 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG385 [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 - //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 + //SEG386 [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 - //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 + //SEG387 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG388 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG389 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG390 bitmap_init::@1 b1: - //SEG390 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG391 [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 - //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 + //SEG392 [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 - //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 + //SEG393 [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 - //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 + //SEG394 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG395 [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 - //SEG395 bitmap_init::@2 + //SEG396 bitmap_init::@2 b2: - //SEG396 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG397 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG398 [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 - //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 + //SEG399 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG400 [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 - //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 + //SEG401 [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 - //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 + //SEG402 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG403 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG404 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG405 bitmap_init::@3 b3: - //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 + //SEG406 [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 - //SEG406 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG407 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG407 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG408 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG408 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG409 [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 - //SEG409 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG410 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG410 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG411 [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 - //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 + //SEG412 [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 - //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 + //SEG413 [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 - //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 + //SEG414 bitmap_init::@7 + //SEG415 [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 @@ -9389,58 +9390,57 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 + //SEG416 [219] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG417 [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 + //SEG418 bitmap_init::@4 b4: - //SEG418 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG419 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG420 [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 - //SEG420 bitmap_init::@return - //SEG421 [222] return + //SEG421 bitmap_init::@return + //SEG422 [222] return rts - //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 + //SEG423 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG424 bitmap_init::@10 + //SEG425 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG426 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } -//SEG426 fill -// Simple routines for working with memory +//SEG427 fill // Fill some memory with a value fill: { .const size = $3e8 .label end = SCREEN+size .label addr = 2 - //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 + //SEG428 [225] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG429 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+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 + //SEG430 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG431 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG432 fill::@1 b1: - //SEG432 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG433 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG433 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG434 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG434 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG435 [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 #@60] +//SEG4 [1] phi from @begin to @60 [phi:@begin->@60] b60_from_bbegin: jmp b60 -//SEG4 @60 +//SEG5 @60 b60: -//SEG5 [2] call main -//SEG6 [4] phi from @60 to main [phi:@60->main] +//SEG6 [2] call main +//SEG7 [4] phi from @60 to main [phi:@60->main] main_from_b60: jsr main -//SEG7 [3] phi from @60 to @end [phi:@60->@end] +//SEG8 [3] phi from @60 to @end [phi:@60->@end] bend_from_b60: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call init - //SEG11 [43] phi from main to init [phi:main->init] + //SEG11 [5] call init + //SEG12 [43] phi from main to init [phi:main->init] init_from_main: jsr init - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG13 [6] phi (byte) sin_idx_y#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) sin_idx_y#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y - //SEG14 [6] phi (byte) sin_idx_x#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) sin_idx_x#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#1] -- vbuz1=vbuc1 lda #0 sta sin_idx_x jmp b2 - //SEG15 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG16 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2_from_b2 - //SEG18 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG19 main::@3 + //SEG20 main::@3 b3: - //SEG20 [9] call anim + //SEG21 [9] call anim jsr anim - //SEG21 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG22 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG22 [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#11 [phi:main::@3->main::@2#0] -- register_copy - //SEG23 [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#11 [phi:main::@3->main::@2#1] -- register_copy + //SEG23 [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#11 [phi:main::@3->main::@2#0] -- register_copy + //SEG24 [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#11 [phi:main::@3->main::@2#1] -- register_copy jmp b2 } -//SEG24 anim +//SEG25 anim anim: { .label _2 = $32 .label _3 = $33 @@ -3596,39 +3594,39 @@ anim: { .label x_msb = 5 .label j2 = 6 .label j = 8 - //SEG25 [10] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG26 [10] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG26 [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 + //SEG27 [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 lda sin_idx_x sta xidx - //SEG27 [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuz1=vbuz2 + //SEG28 [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuz1=vbuz2 lda sin_idx_y sta yidx - //SEG28 [13] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG29 [13] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG29 [13] phi (byte) anim::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 + //SEG30 [13] phi (byte) anim::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG30 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@1#1] -- register_copy - //SEG31 [13] phi (byte) anim::j2#2 = (byte/signed byte/word/signed word/dword/signed dword) 12 [phi:anim->anim::@1#2] -- vbuz1=vbuc1 + //SEG31 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@1#1] -- register_copy + //SEG32 [13] phi (byte) anim::j2#2 = (byte/signed byte/word/signed word/dword/signed dword) 12 [phi:anim->anim::@1#2] -- vbuz1=vbuc1 lda #$c sta j2 - //SEG32 [13] phi (byte) anim::x_msb#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#3] -- vbuz1=vbuc1 + //SEG33 [13] phi (byte) anim::x_msb#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#3] -- vbuz1=vbuc1 lda #0 sta x_msb - //SEG33 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@1#4] -- register_copy + //SEG34 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@1#4] -- register_copy jmp b1 - //SEG34 [13] phi from anim::@3 to anim::@1 [phi:anim::@3->anim::@1] + //SEG35 [13] phi from anim::@3 to anim::@1 [phi:anim::@3->anim::@1] b1_from_b3: - //SEG35 [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@3->anim::@1#0] -- register_copy - //SEG36 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@3->anim::@1#1] -- register_copy - //SEG37 [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@3->anim::@1#2] -- register_copy - //SEG38 [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@3->anim::@1#3] -- register_copy - //SEG39 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@3->anim::@1#4] -- register_copy + //SEG36 [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@3->anim::@1#0] -- register_copy + //SEG37 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@3->anim::@1#1] -- register_copy + //SEG38 [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@3->anim::@1#2] -- register_copy + //SEG39 [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@3->anim::@1#3] -- register_copy + //SEG40 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@3->anim::@1#4] -- register_copy jmp b1 - //SEG40 anim::@1 + //SEG41 anim::@1 b1: - //SEG41 [14] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word/dword/signed dword) 30 + *((const byte[221]) sintab_x#0 + (byte) anim::xidx#3) -- vwuz1=vbuc1_plus_pbuc2_derefidx_vbuz2 + //SEG42 [14] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word/dword/signed dword) 30 + *((const byte[221]) sintab_x#0 + (byte) anim::xidx#3) -- vwuz1=vbuc1_plus_pbuc2_derefidx_vbuz2 ldy xidx lda sintab_x,y clc @@ -3637,311 +3635,311 @@ anim: { lda #0 adc #0 sta x+1 - //SEG42 [15] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG43 [15] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda x_msb asl sta _2 - //SEG43 [16] (byte~) anim::$3 ← > (word) anim::x#0 -- vbuz1=_hi_vwuz2 + //SEG44 [16] (byte~) anim::$3 ← > (word) anim::x#0 -- vbuz1=_hi_vwuz2 lda x+1 sta _3 - //SEG44 [17] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 -- vbuz1=vbuz2_bor_vbuz3 + //SEG45 [17] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 -- vbuz1=vbuz2_bor_vbuz3 lda _2 ora _3 sta x_msb - //SEG45 [18] (byte~) anim::$5 ← < (word) anim::x#0 -- vbuz1=_lo_vwuz2 + //SEG46 [18] (byte~) anim::$5 ← < (word) anim::x#0 -- vbuz1=_lo_vwuz2 lda x sta _5 - //SEG46 [19] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#2) ← (byte~) anim::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG47 [19] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#2) ← (byte~) anim::$5 -- pbuc1_derefidx_vbuz1=vbuz2 lda _5 ldy j2 sta SPRITES_XPOS,y - //SEG47 [20] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#2) ← *((const byte[197]) sintab_y#0 + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG48 [20] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#2) ← *((const byte[197]) sintab_y#0 + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy yidx lda sintab_y,y ldy j2 sta SPRITES_YPOS,y - //SEG48 [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 + //SEG49 [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 lda #$a clc adc xidx sta xidx - //SEG49 [22] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG50 [22] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 -- vbuz1_lt_vbuc1_then_la1 lda xidx cmp #sinlen_x bcc b2_from_b1 jmp b6 - //SEG50 anim::@6 + //SEG51 anim::@6 b6: - //SEG51 [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 -- vbuz1=vbuz1_minus_vbuc1 + //SEG52 [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 -- vbuz1=vbuz1_minus_vbuc1 lda xidx sec sbc #sinlen_x sta xidx - //SEG52 [24] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] + //SEG53 [24] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] b2_from_b1: b2_from_b6: - //SEG53 [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy + //SEG54 [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy jmp b2 - //SEG54 anim::@2 + //SEG55 anim::@2 b2: - //SEG55 [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG56 [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc yidx sta yidx - //SEG56 [26] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG57 [26] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 -- vbuz1_lt_vbuc1_then_la1 lda yidx cmp #sinlen_y bcc b3_from_b2 jmp b7 - //SEG57 anim::@7 + //SEG58 anim::@7 b7: - //SEG58 [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 -- vbuz1=vbuz1_minus_vbuc1 + //SEG59 [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 -- vbuz1=vbuz1_minus_vbuc1 lda yidx sec sbc #sinlen_y sta yidx - //SEG59 [28] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] + //SEG60 [28] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] b3_from_b2: b3_from_b7: - //SEG60 [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy + //SEG61 [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy jmp b3 - //SEG61 anim::@3 + //SEG62 anim::@3 b3: - //SEG62 [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_minus_2 + //SEG63 [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_minus_2 dec j2 dec j2 - //SEG63 [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 + //SEG64 [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG64 [31] if((byte) anim::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto anim::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG65 [31] if((byte) anim::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto anim::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #7 bne b1_from_b3 jmp b8 - //SEG65 anim::@8 + //SEG66 anim::@8 b8: - //SEG66 [32] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 + //SEG67 [32] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 lda x_msb sta SPRITES_XMSB - //SEG67 [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 + //SEG68 [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 inc sin_idx_x - //SEG68 [34] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 -- vbuz1_lt_vbuc1_then_la1 + //SEG69 [34] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_x cmp #sinlen_x bcc b14_from_b8 - //SEG69 [35] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] + //SEG70 [35] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] b4_from_b8: - //SEG70 [35] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 + //SEG71 [35] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_x jmp b4 - //SEG71 anim::@4 + //SEG72 anim::@4 b4: - //SEG72 [36] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 + //SEG73 [36] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 inc sin_idx_y - //SEG73 [37] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 -- vbuz1_lt_vbuc1_then_la1 + //SEG74 [37] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_y cmp #sinlen_y bcc b15_from_b4 - //SEG74 [38] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] + //SEG75 [38] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] b5_from_b4: - //SEG75 [38] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 + //SEG76 [38] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y jmp b5 - //SEG76 anim::@5 + //SEG77 anim::@5 b5: - //SEG77 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG78 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL jmp breturn - //SEG78 anim::@return + //SEG79 anim::@return breturn: - //SEG79 [40] return + //SEG80 [40] return rts - //SEG80 [41] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] + //SEG81 [41] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] b15_from_b4: jmp b15 - //SEG81 anim::@15 + //SEG82 anim::@15 b15: - //SEG82 [38] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] + //SEG83 [38] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] b5_from_b15: - //SEG83 [38] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy + //SEG84 [38] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy jmp b5 - //SEG84 [42] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] + //SEG85 [42] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] b14_from_b8: jmp b14 - //SEG85 anim::@14 + //SEG86 anim::@14 b14: - //SEG86 [35] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] + //SEG87 [35] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] b4_from_b14: - //SEG87 [35] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy + //SEG88 [35] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy jmp b4 } -//SEG88 init +//SEG89 init init: { .label i = 9 - //SEG89 [44] call clear_screen - //SEG90 [65] phi from init to clear_screen [phi:init->clear_screen] + //SEG90 [44] call clear_screen + //SEG91 [65] phi from init to clear_screen [phi:init->clear_screen] clear_screen_from_init: jsr clear_screen - //SEG91 [45] phi from init to init::@1 [phi:init->init::@1] + //SEG92 [45] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG92 [45] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#0] -- vbuz1=vbuc1 + //SEG93 [45] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG93 [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG94 [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG94 [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG95 [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG95 init::@1 + //SEG96 init::@1 b1: - //SEG96 [46] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG97 [46] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #0 sta COLS,y - //SEG97 [47] *((const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG98 [47] *((const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #$b sta COLS+$28,y - //SEG98 [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 + //SEG99 [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG99 [49] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG100 [49] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$28 bne b1_from_b1 - //SEG100 [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG101 [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: jmp b2 - //SEG101 init::@2 + //SEG102 init::@2 b2: - //SEG102 [51] call place_sprites + //SEG103 [51] call place_sprites jsr place_sprites - //SEG103 [52] phi from init::@2 to init::@4 [phi:init::@2->init::@4] + //SEG104 [52] phi from init::@2 to init::@4 [phi:init::@2->init::@4] b4_from_b2: jmp b4 - //SEG104 init::@4 + //SEG105 init::@4 b4: - //SEG105 [53] call gen_sprites - //SEG106 [170] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] + //SEG106 [53] call gen_sprites + //SEG107 [170] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] gen_sprites_from_b4: jsr gen_sprites - //SEG107 [54] phi from init::@4 to init::@5 [phi:init::@4->init::@5] + //SEG108 [54] phi from init::@4 to init::@5 [phi:init::@4->init::@5] b5_from_b4: jmp b5 - //SEG108 init::@5 + //SEG109 init::@5 b5: - //SEG109 [55] call progress_init - //SEG110 [168] phi from init::@5 to progress_init [phi:init::@5->progress_init] + //SEG110 [55] call progress_init + //SEG111 [168] phi from init::@5 to progress_init [phi:init::@5->progress_init] progress_init_from_b5: - //SEG111 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 + //SEG112 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN sta progress_init.line+1 jsr progress_init - //SEG112 [56] phi from init::@5 to init::@6 [phi:init::@5->init::@6] + //SEG113 [56] phi from init::@5 to init::@6 [phi:init::@5->init::@6] b6_from_b5: jmp b6 - //SEG113 init::@6 + //SEG114 init::@6 b6: - //SEG114 [57] call gen_sintab - //SEG115 [71] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] + //SEG115 [57] call gen_sintab + //SEG116 [71] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] gen_sintab_from_b6: - //SEG116 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[221]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 + //SEG117 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[221]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_x sta gen_sintab.sintab+1 - //SEG117 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 + //SEG118 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_x sta gen_sintab.length - //SEG118 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 + //SEG119 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 lda #0 sta gen_sintab.min - //SEG119 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init::@6->gen_sintab#3] -- vbuz1=vbuc1 + //SEG120 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init::@6->gen_sintab#3] -- vbuz1=vbuc1 lda #$ff sta gen_sintab.max jsr gen_sintab - //SEG120 [58] phi from init::@6 to init::@7 [phi:init::@6->init::@7] + //SEG121 [58] phi from init::@6 to init::@7 [phi:init::@6->init::@7] b7_from_b6: jmp b7 - //SEG121 init::@7 + //SEG122 init::@7 b7: - //SEG122 [59] call progress_init - //SEG123 [168] phi from init::@7 to progress_init [phi:init::@7->progress_init] + //SEG123 [59] call progress_init + //SEG124 [168] phi from init::@7 to progress_init [phi:init::@7->progress_init] progress_init_from_b7: - //SEG124 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 + //SEG125 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN+$28 sta progress_init.line+1 jsr progress_init - //SEG125 [60] phi from init::@7 to init::@8 [phi:init::@7->init::@8] + //SEG126 [60] phi from init::@7 to init::@8 [phi:init::@7->init::@8] b8_from_b7: jmp b8 - //SEG126 init::@8 + //SEG127 init::@8 b8: - //SEG127 [61] call gen_sintab - //SEG128 [71] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] + //SEG128 [61] call gen_sintab + //SEG129 [71] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] gen_sintab_from_b8: - //SEG129 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[197]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 + //SEG130 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[197]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_y sta gen_sintab.sintab+1 - //SEG130 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 + //SEG131 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_y sta gen_sintab.length - //SEG131 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 + //SEG132 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 lda #$32 sta gen_sintab.min - //SEG132 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 208 [phi:init::@8->gen_sintab#3] -- vbuz1=vbuc1 + //SEG133 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 208 [phi:init::@8->gen_sintab#3] -- vbuz1=vbuc1 lda #$d0 sta gen_sintab.max jsr gen_sintab - //SEG133 [62] phi from init::@8 to init::@9 [phi:init::@8->init::@9] + //SEG134 [62] phi from init::@8 to init::@9 [phi:init::@8->init::@9] b9_from_b8: jmp b9 - //SEG134 init::@9 + //SEG135 init::@9 b9: - //SEG135 [63] call clear_screen - //SEG136 [65] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] + //SEG136 [63] call clear_screen + //SEG137 [65] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] clear_screen_from_b9: jsr clear_screen jmp breturn - //SEG137 init::@return + //SEG138 init::@return breturn: - //SEG138 [64] return + //SEG139 [64] return rts } -//SEG139 clear_screen +//SEG140 clear_screen clear_screen: { .label sc = $a - //SEG140 [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] + //SEG141 [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] b1_from_clear_screen: - //SEG141 [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 + //SEG142 [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG142 [66] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] + //SEG143 [66] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] b1_from_b1: - //SEG143 [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy + //SEG144 [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy jmp b1 - //SEG144 clear_screen::@1 + //SEG145 clear_screen::@1 b1: - //SEG145 [67] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG146 [67] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG146 [68] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 + //SEG147 [68] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG147 [69] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto clear_screen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [69] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto clear_screen::@1 -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -3951,12 +3949,12 @@ clear_screen: { bcc b1_from_b1 !: jmp breturn - //SEG148 clear_screen::@return + //SEG149 clear_screen::@return breturn: - //SEG149 [70] return + //SEG150 [70] return rts } -//SEG150 gen_sintab +//SEG151 gen_sintab // Generate a sinus table using BASIC floats // - sintab is a pointer to the table to fill // - length is the length of the sine table @@ -3971,295 +3969,295 @@ gen_sintab: { .label min = $d .label length = $e .label sintab = $f - //SEG151 [72] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 -- vwuz1=_word_vbuz2 + //SEG152 [72] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 -- vwuz1=_word_vbuz2 lda max sta setFAC.w lda #0 sta setFAC.w+1 - //SEG152 [73] call setFAC - //SEG153 [154] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] + //SEG153 [73] call setFAC + //SEG154 [154] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] setFAC_from_gen_sintab: - //SEG154 [154] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy + //SEG155 [154] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy jsr setFAC - //SEG155 [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] + //SEG156 [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] b3_from_gen_sintab: jmp b3 - //SEG156 gen_sintab::@3 + //SEG157 gen_sintab::@3 b3: - //SEG157 [75] call setARGtoFAC + //SEG158 [75] call setARGtoFAC jsr setARGtoFAC jmp b4 - //SEG158 gen_sintab::@4 + //SEG159 gen_sintab::@4 b4: - //SEG159 asm { lda#0 ldx#0 ldy#0 } + //SEG160 asm { lda#0 ldx#0 ldy#0 } lda #0 ldx #0 ldy #0 - //SEG160 [77] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 + //SEG161 [77] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 lda min sta setFAC.w lda #0 sta setFAC.w+1 - //SEG161 [78] call setFAC - //SEG162 [154] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] + //SEG162 [78] call setFAC + //SEG163 [154] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] setFAC_from_b4: - //SEG163 [154] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy + //SEG164 [154] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy jsr setFAC - //SEG164 [79] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] + //SEG165 [79] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] b5_from_b4: jmp b5 - //SEG165 gen_sintab::@5 + //SEG166 gen_sintab::@5 b5: - //SEG166 [80] call setMEMtoFAC - //SEG167 [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] + //SEG167 [80] call setMEMtoFAC + //SEG168 [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] setMEMtoFAC_from_b5: - //SEG168 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG169 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG169 [81] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] + //SEG170 [81] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] b6_from_b5: jmp b6 - //SEG170 gen_sintab::@6 + //SEG171 gen_sintab::@6 b6: - //SEG171 [82] call subFACfromARG + //SEG172 [82] call subFACfromARG jsr subFACfromARG - //SEG172 [83] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] + //SEG173 [83] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] b7_from_b6: jmp b7 - //SEG173 gen_sintab::@7 + //SEG174 gen_sintab::@7 b7: - //SEG174 [84] call setMEMtoFAC - //SEG175 [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] + //SEG175 [84] call setMEMtoFAC + //SEG176 [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] setMEMtoFAC_from_b7: - //SEG176 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG177 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG177 [85] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] + //SEG178 [85] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] b8_from_b7: jmp b8 - //SEG178 gen_sintab::@8 + //SEG179 gen_sintab::@8 b8: - //SEG179 [86] call setFAC - //SEG180 [154] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] + //SEG180 [86] call setFAC + //SEG181 [154] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] setFAC_from_b8: - //SEG181 [154] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG182 [154] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 lda #<2 sta setFAC.w lda #>2 sta setFAC.w+1 jsr setFAC - //SEG182 [87] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] + //SEG183 [87] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] b9_from_b8: jmp b9 - //SEG183 gen_sintab::@9 + //SEG184 gen_sintab::@9 b9: - //SEG184 [88] call divMEMbyFAC - //SEG185 [149] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] + //SEG185 [88] call divMEMbyFAC + //SEG186 [149] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] divMEMbyFAC_from_b9: - //SEG186 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG187 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_amp sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG187 [89] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] + //SEG188 [89] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] b10_from_b9: jmp b10 - //SEG188 gen_sintab::@10 + //SEG189 gen_sintab::@10 b10: - //SEG189 [90] call setMEMtoFAC - //SEG190 [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] + //SEG190 [90] call setMEMtoFAC + //SEG191 [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] setMEMtoFAC_from_b10: - //SEG191 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG192 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG192 [91] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] + //SEG193 [91] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] b11_from_b10: jmp b11 - //SEG193 gen_sintab::@11 + //SEG194 gen_sintab::@11 b11: - //SEG194 [92] call addMEMtoFAC - //SEG195 [132] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] + //SEG195 [92] call addMEMtoFAC + //SEG196 [132] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] addMEMtoFAC_from_b11: jsr addMEMtoFAC - //SEG196 [93] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] + //SEG197 [93] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] b12_from_b11: jmp b12 - //SEG197 gen_sintab::@12 + //SEG198 gen_sintab::@12 b12: - //SEG198 [94] call setMEMtoFAC - //SEG199 [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] + //SEG199 [94] call setMEMtoFAC + //SEG200 [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] setMEMtoFAC_from_b12: - //SEG200 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG201 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG201 [95] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] + //SEG202 [95] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] b1_from_b12: - //SEG202 [95] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy - //SEG203 [95] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 + //SEG203 [95] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy + //SEG204 [95] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx - //SEG204 [95] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 + //SEG205 [95] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG205 [95] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] + //SEG206 [95] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] b1_from_b23: - //SEG206 [95] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy - //SEG207 [95] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy - //SEG208 [95] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy + //SEG207 [95] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy + //SEG208 [95] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy + //SEG209 [95] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy jmp b1 - //SEG209 gen_sintab::@1 + //SEG210 gen_sintab::@1 b1: - //SEG210 [96] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 + //SEG211 [96] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG211 [97] call setFAC - //SEG212 [154] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] + //SEG212 [97] call setFAC + //SEG213 [154] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] setFAC_from_b1: - //SEG213 [154] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy + //SEG214 [154] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy jsr setFAC - //SEG214 [98] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] + //SEG215 [98] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] b14_from_b1: jmp b14 - //SEG215 gen_sintab::@14 + //SEG216 gen_sintab::@14 b14: - //SEG216 [99] call mulFACbyMEM - //SEG217 [142] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] + //SEG217 [99] call mulFACbyMEM + //SEG218 [142] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] mulFACbyMEM_from_b14: - //SEG218 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG219 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG219 [100] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] + //SEG220 [100] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] b15_from_b14: jmp b15 - //SEG220 gen_sintab::@15 + //SEG221 gen_sintab::@15 b15: - //SEG221 [101] call setMEMtoFAC - //SEG222 [159] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] + //SEG222 [101] call setMEMtoFAC + //SEG223 [159] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] setMEMtoFAC_from_b15: - //SEG223 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG224 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC jmp b16 - //SEG224 gen_sintab::@16 + //SEG225 gen_sintab::@16 b16: - //SEG225 [102] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 + //SEG226 [102] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 lda length sta setFAC.w lda #0 sta setFAC.w+1 - //SEG226 [103] call setFAC - //SEG227 [154] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] + //SEG227 [103] call setFAC + //SEG228 [154] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] setFAC_from_b16: - //SEG228 [154] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy + //SEG229 [154] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy jsr setFAC - //SEG229 [104] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] + //SEG230 [104] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] b17_from_b16: jmp b17 - //SEG230 gen_sintab::@17 + //SEG231 gen_sintab::@17 b17: - //SEG231 [105] call divMEMbyFAC - //SEG232 [149] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] + //SEG232 [105] call divMEMbyFAC + //SEG233 [149] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] divMEMbyFAC_from_b17: - //SEG233 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG234 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_i sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG234 [106] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] + //SEG235 [106] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] b18_from_b17: jmp b18 - //SEG235 gen_sintab::@18 + //SEG236 gen_sintab::@18 b18: - //SEG236 [107] call sinFAC + //SEG237 [107] call sinFAC jsr sinFAC - //SEG237 [108] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] + //SEG238 [108] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] b19_from_b18: jmp b19 - //SEG238 gen_sintab::@19 + //SEG239 gen_sintab::@19 b19: - //SEG239 [109] call mulFACbyMEM - //SEG240 [142] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] + //SEG240 [109] call mulFACbyMEM + //SEG241 [142] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] mulFACbyMEM_from_b19: - //SEG241 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG242 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_amp sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG242 [110] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] + //SEG243 [110] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] b20_from_b19: jmp b20 - //SEG243 gen_sintab::@20 + //SEG244 gen_sintab::@20 b20: - //SEG244 [111] call addMEMtoFAC - //SEG245 [132] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] + //SEG245 [111] call addMEMtoFAC + //SEG246 [132] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] addMEMtoFAC_from_b20: jsr addMEMtoFAC - //SEG246 [112] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] + //SEG247 [112] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] b21_from_b20: jmp b21 - //SEG247 gen_sintab::@21 + //SEG248 gen_sintab::@21 b21: - //SEG248 [113] call getFAC + //SEG249 [113] call getFAC jsr getFAC - //SEG249 [114] (word) getFAC::return#2 ← (word) getFAC::return#0 -- vwuz1=vwuz2 + //SEG250 [114] (word) getFAC::return#2 ← (word) getFAC::return#0 -- vwuz1=vwuz2 lda getFAC.return sta getFAC.return_2 lda getFAC.return+1 sta getFAC.return_2+1 jmp b22 - //SEG250 gen_sintab::@22 + //SEG251 gen_sintab::@22 b22: - //SEG251 [115] (word~) gen_sintab::$23 ← (word) getFAC::return#2 -- vwuz1=vwuz2 + //SEG252 [115] (word~) gen_sintab::$23 ← (word) getFAC::return#2 -- vwuz1=vwuz2 lda getFAC.return_2 sta _23 lda getFAC.return_2+1 sta _23+1 - //SEG252 [116] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 -- vbuz1=_byte_vwuz2 + //SEG253 [116] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 -- vbuz1=_byte_vwuz2 lda _23 sta _24 - //SEG253 [117] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG254 [117] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 -- pbuz1_derefidx_vbuz2=vbuz3 lda _24 ldy i sta (sintab),y - //SEG254 [118] call progress_inc + //SEG255 [118] call progress_inc jsr progress_inc jmp b23 - //SEG255 gen_sintab::@23 + //SEG256 gen_sintab::@23 b23: - //SEG256 [119] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 + //SEG257 [119] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG257 [120] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG258 [120] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 -- vbuz1_lt_vbuz2_then_la1 lda i cmp length bcc b1_from_b23 jmp breturn - //SEG258 gen_sintab::@return + //SEG259 gen_sintab::@return breturn: - //SEG259 [121] return + //SEG260 [121] return rts f_i: .byte 0, 0, 0, 0, 0 // i * 2 * PI @@ -4267,327 +4265,327 @@ gen_sintab: { // amplitude/2 + min f_amp: .byte 0, 0, 0, 0, 0 } -//SEG260 progress_inc +//SEG261 progress_inc // Increase PETSCII progress one bit // Done by increasing the character until the idx is 8 and then moving to the next char progress_inc: { - //SEG261 [122] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 -- vbuz1=_inc_vbuz1 + //SEG262 [122] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 -- vbuz1=_inc_vbuz1 inc progress_idx - //SEG262 [123] if((byte) progress_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG263 [123] if((byte) progress_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 lda progress_idx cmp #8 bne b1_from_progress_inc jmp b2 - //SEG263 progress_inc::@2 + //SEG264 progress_inc::@2 b2: - //SEG264 [124] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- _deref_pbuz1=_deref_pbuc1 + //SEG265 [124] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 ldy #0 sta (progress_cursor),y - //SEG265 [125] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 -- pbuz1=_inc_pbuz1 + //SEG266 [125] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 -- pbuz1=_inc_pbuz1 inc progress_cursor bne !+ inc progress_cursor+1 !: - //SEG266 [126] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + //SEG267 [126] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] b1_from_b2: - //SEG267 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - //SEG268 [126] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + //SEG268 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + //SEG269 [126] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx jmp b1 - //SEG269 [126] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + //SEG270 [126] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] b1_from_progress_inc: - //SEG270 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy - //SEG271 [126] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy + //SEG271 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy + //SEG272 [126] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy jmp b1 - //SEG272 progress_inc::@1 + //SEG273 progress_inc::@1 b1: - //SEG273 [127] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG274 [127] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy progress_idx lda progress_chars,y ldy #0 sta (progress_cursor),y jmp breturn - //SEG274 progress_inc::@return + //SEG275 progress_inc::@return breturn: - //SEG275 [128] return + //SEG276 [128] return rts // Progress characters progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 } -//SEG276 getFAC +//SEG277 getFAC // word = FAC // Get the value of the FAC (floating point accumulator) as an integer 16bit word // Destroys the value in the FAC in the process getFAC: { .label return = $3a .label return_2 = $35 - //SEG277 asm { jsr$b1aa sty$fe sta$ff } + //SEG278 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe sta $ff - //SEG278 [130] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG279 [130] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 jmp breturn - //SEG279 getFAC::@return + //SEG280 getFAC::@return breturn: - //SEG280 [131] return + //SEG281 [131] return rts } -//SEG281 addMEMtoFAC +//SEG282 addMEMtoFAC // FAC = MEM+FAC // Set FAC to MEM (float saved in memory) plus FAC (float accumulator) // Reads 5 bytes from memory addMEMtoFAC: { - //SEG282 [133] call prepareMEM - //SEG283 [136] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG283 [133] call prepareMEM + //SEG284 [136] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] prepareMEM_from_addMEMtoFAC: - //SEG284 [136] phi (byte*) prepareMEM::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG285 [136] phi (byte*) prepareMEM::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #gen_sintab.f_min sta prepareMEM.mem+1 jsr prepareMEM jmp b1 - //SEG285 addMEMtoFAC::@1 + //SEG286 addMEMtoFAC::@1 b1: - //SEG286 asm { lda$fe ldy$ff jsr$b867 } + //SEG287 asm { lda$fe ldy$ff jsr$b867 } lda $fe ldy $ff jsr $b867 jmp breturn - //SEG287 addMEMtoFAC::@return + //SEG288 addMEMtoFAC::@return breturn: - //SEG288 [135] return + //SEG289 [135] return rts } -//SEG289 prepareMEM +//SEG290 prepareMEM // Prepare MEM pointers for operations using MEM prepareMEM: { .label _0 = $3c .label _1 = $3d .label mem = $15 - //SEG290 [137] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuz1=_lo_pbuz2 + //SEG291 [137] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuz1=_lo_pbuz2 lda mem sta _0 - //SEG291 [138] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuz1 + //SEG292 [138] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuz1 lda _0 sta memLo - //SEG292 [139] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuz1=_hi_pbuz2 + //SEG293 [139] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuz1=_hi_pbuz2 lda mem+1 sta _1 - //SEG293 [140] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuz1 + //SEG294 [140] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuz1 lda _1 sta memHi jmp breturn - //SEG294 prepareMEM::@return + //SEG295 prepareMEM::@return breturn: - //SEG295 [141] return + //SEG296 [141] return rts } -//SEG296 mulFACbyMEM +//SEG297 mulFACbyMEM // FAC = MEM*FAC // Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator) // Reads 5 bytes from memory mulFACbyMEM: { .label mem = $17 - //SEG297 [143] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 -- pbuz1=pbuz2 + //SEG298 [143] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG298 [144] call prepareMEM - //SEG299 [136] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG299 [144] call prepareMEM + //SEG300 [136] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] prepareMEM_from_mulFACbyMEM: - //SEG300 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG301 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG301 mulFACbyMEM::@1 + //SEG302 mulFACbyMEM::@1 b1: - //SEG302 asm { lda$fe ldy$ff jsr$ba28 } + //SEG303 asm { lda$fe ldy$ff jsr$ba28 } lda $fe ldy $ff jsr $ba28 jmp breturn - //SEG303 mulFACbyMEM::@return + //SEG304 mulFACbyMEM::@return breturn: - //SEG304 [146] return + //SEG305 [146] return rts } -//SEG305 sinFAC +//SEG306 sinFAC // FAC = sin(FAC) // Set FAC to sinus of the FAC - sin(FAC) // Sinus is calculated on radians (0-2*PI) sinFAC: { - //SEG306 asm { jsr$e26b } + //SEG307 asm { jsr$e26b } jsr $e26b jmp breturn - //SEG307 sinFAC::@return + //SEG308 sinFAC::@return breturn: - //SEG308 [148] return + //SEG309 [148] return rts } -//SEG309 divMEMbyFAC +//SEG310 divMEMbyFAC // FAC = MEM/FAC // Set FAC to MEM (float saved in memory) divided by FAC (float accumulator) // Reads 5 bytes from memory divMEMbyFAC: { .label mem = $19 - //SEG310 [150] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 -- pbuz1=pbuz2 + //SEG311 [150] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG311 [151] call prepareMEM - //SEG312 [136] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG312 [151] call prepareMEM + //SEG313 [136] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] prepareMEM_from_divMEMbyFAC: - //SEG313 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy + //SEG314 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG314 divMEMbyFAC::@1 + //SEG315 divMEMbyFAC::@1 b1: - //SEG315 asm { lda$fe ldy$ff jsr$bb0f } + //SEG316 asm { lda$fe ldy$ff jsr$bb0f } lda $fe ldy $ff jsr $bb0f jmp breturn - //SEG316 divMEMbyFAC::@return + //SEG317 divMEMbyFAC::@return breturn: - //SEG317 [153] return + //SEG318 [153] return rts } -//SEG318 setFAC +//SEG319 setFAC // FAC = word // Set the FAC (floating point accumulator) to the integer value of a 16bit word setFAC: { .label w = $1b - //SEG319 [155] (byte*~) prepareMEM::mem#8 ← (byte*)(word) setFAC::w#5 -- pbuz1=pbuz2 + //SEG320 [155] (byte*~) prepareMEM::mem#8 ← (byte*)(word) setFAC::w#5 -- pbuz1=pbuz2 lda w sta prepareMEM.mem lda w+1 sta prepareMEM.mem+1 - //SEG320 [156] call prepareMEM - //SEG321 [136] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG321 [156] call prepareMEM + //SEG322 [136] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] prepareMEM_from_setFAC: - //SEG322 [136] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#8 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG323 [136] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#8 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG323 setFAC::@1 + //SEG324 setFAC::@1 b1: - //SEG324 asm { ldy$fe lda$ff jsr$b391 } + //SEG325 asm { ldy$fe lda$ff jsr$b391 } ldy $fe lda $ff jsr $b391 jmp breturn - //SEG325 setFAC::@return + //SEG326 setFAC::@return breturn: - //SEG326 [158] return + //SEG327 [158] return rts } -//SEG327 setMEMtoFAC +//SEG328 setMEMtoFAC // MEM = FAC // Stores the value of the FAC to memory // Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};) setMEMtoFAC: { .label mem = $1d - //SEG328 [160] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 -- pbuz1=pbuz2 + //SEG329 [160] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG329 [161] call prepareMEM - //SEG330 [136] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG330 [161] call prepareMEM + //SEG331 [136] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] prepareMEM_from_setMEMtoFAC: - //SEG331 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG332 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG332 setMEMtoFAC::@1 + //SEG333 setMEMtoFAC::@1 b1: - //SEG333 asm { ldx$fe ldy$ff jsr$bbd4 } + //SEG334 asm { ldx$fe ldy$ff jsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 jmp breturn - //SEG334 setMEMtoFAC::@return + //SEG335 setMEMtoFAC::@return breturn: - //SEG335 [163] return + //SEG336 [163] return rts } -//SEG336 subFACfromARG +//SEG337 subFACfromARG // FAC = ARG-FAC // Set FAC to ARG minus FAC subFACfromARG: { - //SEG337 asm { jsr$b853 } + //SEG338 asm { jsr$b853 } jsr $b853 jmp breturn - //SEG338 subFACfromARG::@return + //SEG339 subFACfromARG::@return breturn: - //SEG339 [165] return + //SEG340 [165] return rts } -//SEG340 setARGtoFAC +//SEG341 setARGtoFAC // ARG = FAC // Set the ARG (floating point argument) to the value of the FAC (floating point accumulator) setARGtoFAC: { - //SEG341 asm { jsr$bc0f } + //SEG342 asm { jsr$bc0f } jsr $bc0f jmp breturn - //SEG342 setARGtoFAC::@return + //SEG343 setARGtoFAC::@return breturn: - //SEG343 [167] return + //SEG344 [167] return rts } -//SEG344 progress_init +//SEG345 progress_init // Initialize the PETSCII progress bar progress_init: { .label line = $13 jmp breturn - //SEG345 progress_init::@return + //SEG346 progress_init::@return breturn: - //SEG346 [169] return + //SEG347 [169] return rts } -//SEG347 gen_sprites +//SEG348 gen_sprites gen_sprites: { .label spr = $20 .label i = $1f - //SEG348 [171] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] + //SEG349 [171] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] b1_from_gen_sprites: - //SEG349 [171] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 + //SEG350 [171] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 lda #sprites sta spr+1 - //SEG350 [171] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 + //SEG351 [171] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG351 [171] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] + //SEG352 [171] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] b1_from_b3: - //SEG352 [171] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy - //SEG353 [171] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy + //SEG353 [171] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy + //SEG354 [171] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy jmp b1 - //SEG354 gen_sprites::@1 + //SEG355 gen_sprites::@1 b1: - //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG356 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cml,y sta gen_chargen_sprite.ch - //SEG356 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 + //SEG357 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 lda spr sta gen_chargen_sprite.sprite lda spr+1 sta gen_chargen_sprite.sprite+1 - //SEG357 [174] call gen_chargen_sprite + //SEG358 [174] call gen_chargen_sprite jsr gen_chargen_sprite jmp b3 - //SEG358 gen_sprites::@3 + //SEG359 gen_sprites::@3 b3: - //SEG359 [175] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuz1=pbuz1_plus_vbuc1 + //SEG360 [175] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuz1=pbuz1_plus_vbuc1 lda spr clc adc #$40 @@ -4595,20 +4593,20 @@ gen_sprites: { bcc !+ inc spr+1 !: - //SEG360 [176] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 + //SEG361 [176] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG361 [177] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG362 [177] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #7 bne b1_from_b3 jmp breturn - //SEG362 gen_sprites::@return + //SEG363 gen_sprites::@return breturn: - //SEG363 [178] return + //SEG364 [178] return rts cml: .text "camelot" } -//SEG364 gen_chargen_sprite +//SEG365 gen_chargen_sprite // Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large) // - c is the character to generate // - sprite is a pointer to the position of the sprite to generate @@ -4627,12 +4625,12 @@ gen_chargen_sprite: { .label x = $24 .label y = $22 .label c = $25 - //SEG365 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuz2 + //SEG366 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuz2 lda ch sta _0 lda #0 sta _0+1 - //SEG366 [180] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG367 [180] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda _0 asl sta _1 @@ -4643,7 +4641,7 @@ gen_chargen_sprite: { rol _1+1 asl _1 rol _1+1 - //SEG367 [181] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz2 + //SEG368 [181] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz2 lda _1 clc adc #CHARGEN sta chargen+1 - //SEG368 asm { sei } + //SEG369 asm { sei } sei - //SEG369 [183] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG370 [183] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG370 [184] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] + //SEG371 [184] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] b1_from_gen_chargen_sprite: - //SEG371 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy - //SEG372 [184] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 + //SEG372 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy + //SEG373 [184] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG373 [184] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] + //SEG374 [184] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] b1_from_b9: - //SEG374 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy - //SEG375 [184] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy + //SEG375 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy + //SEG376 [184] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy jmp b1 - //SEG376 gen_chargen_sprite::@1 + //SEG377 gen_chargen_sprite::@1 b1: - //SEG377 [185] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG378 [185] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG378 [186] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] + //SEG379 [186] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] b2_from_b1: - //SEG379 [186] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 + //SEG380 [186] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG380 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy - //SEG381 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuz1=vbuc1 + //SEG381 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy + //SEG382 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuz1=vbuc1 lda #0 sta s_gen_cnt - //SEG382 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 + //SEG383 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 lda #0 sta s_gen - //SEG383 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy + //SEG384 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy jmp b2 - //SEG384 [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] + //SEG385 [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] b2_from_b8: - //SEG385 [186] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy - //SEG386 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy - //SEG387 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy - //SEG388 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy - //SEG389 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy + //SEG386 [186] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy + //SEG387 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy + //SEG388 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy + //SEG389 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy + //SEG390 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy jmp b2 - //SEG390 gen_chargen_sprite::@2 + //SEG391 gen_chargen_sprite::@2 b2: - //SEG391 [187] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG392 [187] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and bits sta _3 - //SEG392 [188] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_chargen_sprite::@3 -- vbuz1_eq_0_then_la1 + //SEG393 [188] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_chargen_sprite::@3 -- vbuz1_eq_0_then_la1 lda _3 cmp #0 beq b3_from_b2 - //SEG393 [189] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] + //SEG394 [189] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] b6_from_b2: jmp b6 - //SEG394 gen_chargen_sprite::@6 + //SEG395 gen_chargen_sprite::@6 b6: - //SEG395 [190] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] + //SEG396 [190] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] b3_from_b6: - //SEG396 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG397 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #1 sta c jmp b3 - //SEG397 [190] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] + //SEG398 [190] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] b3_from_b2: - //SEG398 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG399 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #0 sta c jmp b3 - //SEG399 gen_chargen_sprite::@3 + //SEG400 gen_chargen_sprite::@3 b3: - //SEG400 [191] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] + //SEG401 [191] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] b4_from_b3: - //SEG401 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy - //SEG402 [191] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuz1=vbuc1 + //SEG402 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy + //SEG403 [191] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuz1=vbuc1 lda #0 sta b - //SEG403 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy - //SEG404 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy + //SEG404 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy + //SEG405 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy jmp b4 - //SEG405 [191] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] + //SEG406 [191] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] b4_from_b5: - //SEG406 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy - //SEG407 [191] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy - //SEG408 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy - //SEG409 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy + //SEG407 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy + //SEG408 [191] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy + //SEG409 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy + //SEG410 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy jmp b4 - //SEG410 gen_chargen_sprite::@4 + //SEG411 gen_chargen_sprite::@4 b4: - //SEG411 [192] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG412 [192] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda s_gen asl sta _6 - //SEG412 [193] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuz2_bor_vbuz3 + //SEG413 [193] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora c sta s_gen - //SEG413 [194] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuz1=_inc_vbuz1 + //SEG414 [194] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuz1=_inc_vbuz1 inc s_gen_cnt - //SEG414 [195] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG415 [195] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@5 -- vbuz1_neq_vbuc1_then_la1 lda s_gen_cnt cmp #8 bne b5_from_b4 jmp b7 - //SEG415 gen_chargen_sprite::@7 + //SEG416 gen_chargen_sprite::@7 b7: - //SEG416 [196] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG417 [196] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #0 sta (sprite),y - //SEG417 [197] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG418 [197] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #3 sta (sprite),y - //SEG418 [198] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG419 [198] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #6 sta (sprite),y - //SEG419 [199] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 + //SEG420 [199] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 inc sprite bne !+ inc sprite+1 !: - //SEG420 [200] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] + //SEG421 [200] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] b5_from_b7: - //SEG421 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy - //SEG422 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuz1=vbuc1 + //SEG422 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy + //SEG423 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuz1=vbuc1 lda #0 sta s_gen_cnt - //SEG423 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 + //SEG424 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 lda #0 sta s_gen jmp b5 - //SEG424 [200] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] + //SEG425 [200] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] b5_from_b4: - //SEG425 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy - //SEG426 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy - //SEG427 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy + //SEG426 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy + //SEG427 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy + //SEG428 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy jmp b5 - //SEG428 gen_chargen_sprite::@5 + //SEG429 gen_chargen_sprite::@5 b5: - //SEG429 [201] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuz1=_inc_vbuz1 + //SEG430 [201] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG430 [202] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_chargen_sprite::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG431 [202] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_chargen_sprite::@4 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #3 bne b4_from_b5 jmp b8 - //SEG431 gen_chargen_sprite::@8 + //SEG432 gen_chargen_sprite::@8 b8: - //SEG432 [203] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG433 [203] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG433 [204] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 + //SEG434 [204] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG434 [205] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG435 [205] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #8 bne b2_from_b8 jmp b9 - //SEG435 gen_chargen_sprite::@9 + //SEG436 gen_chargen_sprite::@9 b9: - //SEG436 [206] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- pbuz1=pbuz1_plus_vbuc1 + //SEG437 [206] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- pbuz1=pbuz1_plus_vbuc1 lda sprite clc adc #6 @@ -4823,27 +4821,27 @@ gen_chargen_sprite: { bcc !+ inc sprite+1 !: - //SEG437 [207] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 + //SEG438 [207] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG438 [208] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG439 [208] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1_from_b9 jmp b10 - //SEG439 gen_chargen_sprite::@10 + //SEG440 gen_chargen_sprite::@10 b10: - //SEG440 [209] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG441 [209] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG441 asm { cli } + //SEG442 asm { cli } cli jmp breturn - //SEG442 gen_chargen_sprite::@return + //SEG443 gen_chargen_sprite::@return breturn: - //SEG443 [211] return + //SEG444 [211] return rts } -//SEG444 place_sprites +//SEG445 place_sprites place_sprites: { .label sprites_ptr = SCREEN+$3f8 .label spr_id = $2b @@ -4853,88 +4851,88 @@ place_sprites: { .label j2_2 = $2e .label j = $2c .label j2_3 = $2e - //SEG445 [212] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG446 [212] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_ENABLE - //SEG446 [213] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG447 [213] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_EXPAND_X - //SEG447 [214] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG448 [214] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_EXPAND_Y - //SEG448 [215] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] + //SEG449 [215] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] b1_from_place_sprites: - //SEG449 [215] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 + //SEG450 [215] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 lda #5 sta col - //SEG450 [215] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 + //SEG451 [215] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 lda #0 sta j2_3 - //SEG451 [215] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word/dword/signed dword) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 + //SEG452 [215] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word/dword/signed dword) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 lda #$3c sta spr_x - //SEG452 [215] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 + //SEG453 [215] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 lda #0 sta j - //SEG453 [215] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 + //SEG454 [215] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 lda #$ff&sprites/$40 sta spr_id jmp b1 - //SEG454 [215] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] + //SEG455 [215] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] b1_from_b1: - //SEG455 [215] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy - //SEG456 [215] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy - //SEG457 [215] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy - //SEG458 [215] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy - //SEG459 [215] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy + //SEG456 [215] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy + //SEG457 [215] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy + //SEG458 [215] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy + //SEG459 [215] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy + //SEG460 [215] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy jmp b1 - //SEG460 place_sprites::@1 + //SEG461 place_sprites::@1 b1: - //SEG461 [216] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG462 [216] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda spr_id ldy j sta sprites_ptr,y - //SEG462 [217] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 + //SEG463 [217] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 inc spr_id - //SEG463 [218] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG464 [218] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda spr_x ldy j2_3 sta SPRITES_XPOS,y - //SEG464 [219] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG465 [219] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- pbuc1_derefidx_vbuz1=vbuc2 ldy j2_3 lda #$50 sta SPRITES_YPOS,y - //SEG465 [220] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG466 [220] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda col ldy j sta SPRITES_COLS,y - //SEG466 [221] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- vbuz1=vbuz1_plus_vbuc1 + //SEG467 [221] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- vbuz1=vbuz1_plus_vbuc1 lda #$20 clc adc spr_x sta spr_x - //SEG467 [222] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word/dword/signed dword) 7^(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG468 [222] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word/dword/signed dword) 7^(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_bxor_vbuc1 lda col eor #7^5 sta col - //SEG468 [223] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuz1=_inc_vbuz2 + //SEG469 [223] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuz1=_inc_vbuz2 ldy j2_3 iny sty j2 - //SEG469 [224] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuz1=_inc_vbuz2 + //SEG470 [224] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuz1=_inc_vbuz2 ldy j2 iny sty j2_2 - //SEG470 [225] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuz1=_inc_vbuz1 + //SEG471 [225] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG471 [226] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto place_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG472 [226] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto place_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #7 bne b1_from_b1 jmp breturn - //SEG472 place_sprites::@return + //SEG473 place_sprites::@return breturn: - //SEG473 [227] return + //SEG474 [227] return rts } sintab_x: .fill $dd, 0 @@ -5273,11 +5271,12 @@ Allocated (was zp ZP_WORD:19) zp ZP_WORD:10 [ progress_cursor#34 progress_init:: Allocated (was zp ZP_WORD:21) zp ZP_WORD:12 [ prepareMEM::mem#5 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#8 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // Processor Port Register controlling RAM/ROM configuration and the datasette .label PROCPORT = 1 // The address of the CHARGEN character set @@ -5293,9 +5292,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label SPRITES_COLS = $d027 // Color Ram .label COLS = $d800 - // Library wrapping the BASIC floating point functions - // See https://www.c64-wiki.com/wiki/Floating_point_arithmetic - // See http://www.pagetable.com/c64rom/c64rom_sc.html // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM .label memLo = $fe .label memHi = $ff @@ -5307,60 +5303,60 @@ ASSEMBLER BEFORE OPTIMIZATION .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @60 [phi:@begin->@60] +//SEG4 [1] phi from @begin to @60 [phi:@begin->@60] b60_from_bbegin: jmp b60 -//SEG4 @60 +//SEG5 @60 b60: -//SEG5 [2] call main -//SEG6 [4] phi from @60 to main [phi:@60->main] +//SEG6 [2] call main +//SEG7 [4] phi from @60 to main [phi:@60->main] main_from_b60: jsr main -//SEG7 [3] phi from @60 to @end [phi:@60->@end] +//SEG8 [3] phi from @60 to @end [phi:@60->@end] bend_from_b60: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call init - //SEG11 [43] phi from main to init [phi:main->init] + //SEG11 [5] call init + //SEG12 [43] phi from main to init [phi:main->init] init_from_main: jsr init - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG13 [6] phi (byte) sin_idx_y#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) sin_idx_y#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y - //SEG14 [6] phi (byte) sin_idx_x#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) sin_idx_x#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#1] -- vbuz1=vbuc1 lda #0 sta sin_idx_x jmp b2 - //SEG15 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG16 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2_from_b2 - //SEG18 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG19 main::@3 + //SEG20 main::@3 b3: - //SEG20 [9] call anim + //SEG21 [9] call anim jsr anim - //SEG21 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG22 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG22 [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#11 [phi:main::@3->main::@2#0] -- register_copy - //SEG23 [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#11 [phi:main::@3->main::@2#1] -- register_copy + //SEG23 [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#11 [phi:main::@3->main::@2#0] -- register_copy + //SEG24 [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#11 [phi:main::@3->main::@2#1] -- register_copy jmp b2 } -//SEG24 anim +//SEG25 anim anim: { .label _2 = 5 .label xidx = 4 @@ -5368,38 +5364,38 @@ anim: { .label x_msb = 5 .label j2 = 6 .label j = 7 - //SEG25 [10] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG26 [10] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG26 [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 + //SEG27 [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 lda sin_idx_x sta xidx - //SEG27 [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuxx=vbuz1 + //SEG28 [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuxx=vbuz1 ldx sin_idx_y - //SEG28 [13] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG29 [13] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG29 [13] phi (byte) anim::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 + //SEG30 [13] phi (byte) anim::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG30 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@1#1] -- register_copy - //SEG31 [13] phi (byte) anim::j2#2 = (byte/signed byte/word/signed word/dword/signed dword) 12 [phi:anim->anim::@1#2] -- vbuz1=vbuc1 + //SEG31 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@1#1] -- register_copy + //SEG32 [13] phi (byte) anim::j2#2 = (byte/signed byte/word/signed word/dword/signed dword) 12 [phi:anim->anim::@1#2] -- vbuz1=vbuc1 lda #$c sta j2 - //SEG32 [13] phi (byte) anim::x_msb#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#3] -- vbuz1=vbuc1 + //SEG33 [13] phi (byte) anim::x_msb#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#3] -- vbuz1=vbuc1 lda #0 sta x_msb - //SEG33 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@1#4] -- register_copy + //SEG34 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@1#4] -- register_copy jmp b1 - //SEG34 [13] phi from anim::@3 to anim::@1 [phi:anim::@3->anim::@1] + //SEG35 [13] phi from anim::@3 to anim::@1 [phi:anim::@3->anim::@1] b1_from_b3: - //SEG35 [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@3->anim::@1#0] -- register_copy - //SEG36 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@3->anim::@1#1] -- register_copy - //SEG37 [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@3->anim::@1#2] -- register_copy - //SEG38 [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@3->anim::@1#3] -- register_copy - //SEG39 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@3->anim::@1#4] -- register_copy + //SEG36 [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@3->anim::@1#0] -- register_copy + //SEG37 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@3->anim::@1#1] -- register_copy + //SEG38 [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@3->anim::@1#2] -- register_copy + //SEG39 [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@3->anim::@1#3] -- register_copy + //SEG40 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@3->anim::@1#4] -- register_copy jmp b1 - //SEG40 anim::@1 + //SEG41 anim::@1 b1: - //SEG41 [14] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word/dword/signed dword) 30 + *((const byte[221]) sintab_x#0 + (byte) anim::xidx#3) -- vwuz1=vbuc1_plus_pbuc2_derefidx_vbuz2 + //SEG42 [14] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word/dword/signed dword) 30 + *((const byte[221]) sintab_x#0 + (byte) anim::xidx#3) -- vwuz1=vbuc1_plus_pbuc2_derefidx_vbuz2 ldy xidx lda sintab_x,y clc @@ -5408,296 +5404,296 @@ anim: { lda #0 adc #0 sta x+1 - //SEG42 [15] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG43 [15] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl _2 - //SEG43 [16] (byte~) anim::$3 ← > (word) anim::x#0 -- vbuaa=_hi_vwuz1 + //SEG44 [16] (byte~) anim::$3 ← > (word) anim::x#0 -- vbuaa=_hi_vwuz1 lda x+1 - //SEG44 [17] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 -- vbuz1=vbuz1_bor_vbuaa + //SEG45 [17] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 -- vbuz1=vbuz1_bor_vbuaa ora x_msb sta x_msb - //SEG45 [18] (byte~) anim::$5 ← < (word) anim::x#0 -- vbuaa=_lo_vwuz1 + //SEG46 [18] (byte~) anim::$5 ← < (word) anim::x#0 -- vbuaa=_lo_vwuz1 lda x - //SEG46 [19] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#2) ← (byte~) anim::$5 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG47 [19] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#2) ← (byte~) anim::$5 -- pbuc1_derefidx_vbuz1=vbuaa ldy j2 sta SPRITES_XPOS,y - //SEG47 [20] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#2) ← *((const byte[197]) sintab_y#0 + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuxx + //SEG48 [20] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#2) ← *((const byte[197]) sintab_y#0 + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuxx lda sintab_y,x ldy j2 sta SPRITES_YPOS,y - //SEG48 [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 + //SEG49 [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 lda #$a clc adc xidx sta xidx - //SEG49 [22] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG50 [22] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 -- vbuz1_lt_vbuc1_then_la1 lda xidx cmp #sinlen_x bcc b2_from_b1 jmp b6 - //SEG50 anim::@6 + //SEG51 anim::@6 b6: - //SEG51 [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 -- vbuz1=vbuz1_minus_vbuc1 + //SEG52 [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 -- vbuz1=vbuz1_minus_vbuc1 lda xidx sec sbc #sinlen_x sta xidx - //SEG52 [24] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] + //SEG53 [24] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] b2_from_b1: b2_from_b6: - //SEG53 [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy + //SEG54 [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy jmp b2 - //SEG54 anim::@2 + //SEG55 anim::@2 b2: - //SEG55 [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuxx=vbuxx_plus_vbuc1 + //SEG56 [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #8 tax - //SEG56 [26] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG57 [26] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #sinlen_y bcc b3_from_b2 jmp b7 - //SEG57 anim::@7 + //SEG58 anim::@7 b7: - //SEG58 [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 -- vbuxx=vbuxx_minus_vbuc1 + //SEG59 [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 -- vbuxx=vbuxx_minus_vbuc1 txa sec sbc #sinlen_y tax - //SEG59 [28] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] + //SEG60 [28] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] b3_from_b2: b3_from_b7: - //SEG60 [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy + //SEG61 [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy jmp b3 - //SEG61 anim::@3 + //SEG62 anim::@3 b3: - //SEG62 [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_minus_2 + //SEG63 [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_minus_2 dec j2 dec j2 - //SEG63 [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 + //SEG64 [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG64 [31] if((byte) anim::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto anim::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG65 [31] if((byte) anim::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto anim::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #7 bne b1_from_b3 jmp b8 - //SEG65 anim::@8 + //SEG66 anim::@8 b8: - //SEG66 [32] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 + //SEG67 [32] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 lda x_msb sta SPRITES_XMSB - //SEG67 [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 + //SEG68 [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 inc sin_idx_x - //SEG68 [34] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 -- vbuz1_lt_vbuc1_then_la1 + //SEG69 [34] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_x cmp #sinlen_x bcc b14_from_b8 - //SEG69 [35] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] + //SEG70 [35] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] b4_from_b8: - //SEG70 [35] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 + //SEG71 [35] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_x jmp b4 - //SEG71 anim::@4 + //SEG72 anim::@4 b4: - //SEG72 [36] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 + //SEG73 [36] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 inc sin_idx_y - //SEG73 [37] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 -- vbuz1_lt_vbuc1_then_la1 + //SEG74 [37] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_y cmp #sinlen_y bcc b15_from_b4 - //SEG74 [38] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] + //SEG75 [38] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] b5_from_b4: - //SEG75 [38] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 + //SEG76 [38] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y jmp b5 - //SEG76 anim::@5 + //SEG77 anim::@5 b5: - //SEG77 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG78 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL jmp breturn - //SEG78 anim::@return + //SEG79 anim::@return breturn: - //SEG79 [40] return + //SEG80 [40] return rts - //SEG80 [41] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] + //SEG81 [41] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] b15_from_b4: jmp b15 - //SEG81 anim::@15 + //SEG82 anim::@15 b15: - //SEG82 [38] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] + //SEG83 [38] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] b5_from_b15: - //SEG83 [38] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy + //SEG84 [38] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy jmp b5 - //SEG84 [42] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] + //SEG85 [42] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] b14_from_b8: jmp b14 - //SEG85 anim::@14 + //SEG86 anim::@14 b14: - //SEG86 [35] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] + //SEG87 [35] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] b4_from_b14: - //SEG87 [35] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy + //SEG88 [35] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy jmp b4 } -//SEG88 init +//SEG89 init init: { - //SEG89 [44] call clear_screen - //SEG90 [65] phi from init to clear_screen [phi:init->clear_screen] + //SEG90 [44] call clear_screen + //SEG91 [65] phi from init to clear_screen [phi:init->clear_screen] clear_screen_from_init: jsr clear_screen - //SEG91 [45] phi from init to init::@1 [phi:init->init::@1] + //SEG92 [45] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG92 [45] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 + //SEG93 [45] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG93 [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG94 [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG94 [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG95 [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG95 init::@1 + //SEG96 init::@1 b1: - //SEG96 [46] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG97 [46] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta COLS,x - //SEG97 [47] *((const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG98 [47] *((const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$b sta COLS+$28,x - //SEG98 [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG99 [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG99 [49] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG100 [49] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b1 - //SEG100 [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG101 [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: jmp b2 - //SEG101 init::@2 + //SEG102 init::@2 b2: - //SEG102 [51] call place_sprites + //SEG103 [51] call place_sprites jsr place_sprites - //SEG103 [52] phi from init::@2 to init::@4 [phi:init::@2->init::@4] + //SEG104 [52] phi from init::@2 to init::@4 [phi:init::@2->init::@4] b4_from_b2: jmp b4 - //SEG104 init::@4 + //SEG105 init::@4 b4: - //SEG105 [53] call gen_sprites - //SEG106 [170] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] + //SEG106 [53] call gen_sprites + //SEG107 [170] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] gen_sprites_from_b4: jsr gen_sprites - //SEG107 [54] phi from init::@4 to init::@5 [phi:init::@4->init::@5] + //SEG108 [54] phi from init::@4 to init::@5 [phi:init::@4->init::@5] b5_from_b4: jmp b5 - //SEG108 init::@5 + //SEG109 init::@5 b5: - //SEG109 [55] call progress_init - //SEG110 [168] phi from init::@5 to progress_init [phi:init::@5->progress_init] + //SEG110 [55] call progress_init + //SEG111 [168] phi from init::@5 to progress_init [phi:init::@5->progress_init] progress_init_from_b5: - //SEG111 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 + //SEG112 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN sta progress_init.line+1 jsr progress_init - //SEG112 [56] phi from init::@5 to init::@6 [phi:init::@5->init::@6] + //SEG113 [56] phi from init::@5 to init::@6 [phi:init::@5->init::@6] b6_from_b5: jmp b6 - //SEG113 init::@6 + //SEG114 init::@6 b6: - //SEG114 [57] call gen_sintab - //SEG115 [71] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] + //SEG115 [57] call gen_sintab + //SEG116 [71] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] gen_sintab_from_b6: - //SEG116 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[221]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 + //SEG117 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[221]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_x sta gen_sintab.sintab+1 - //SEG117 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 + //SEG118 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_x sta gen_sintab.length - //SEG118 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 + //SEG119 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 lda #0 sta gen_sintab.min - //SEG119 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 + //SEG120 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 ldx #$ff jsr gen_sintab - //SEG120 [58] phi from init::@6 to init::@7 [phi:init::@6->init::@7] + //SEG121 [58] phi from init::@6 to init::@7 [phi:init::@6->init::@7] b7_from_b6: jmp b7 - //SEG121 init::@7 + //SEG122 init::@7 b7: - //SEG122 [59] call progress_init - //SEG123 [168] phi from init::@7 to progress_init [phi:init::@7->progress_init] + //SEG123 [59] call progress_init + //SEG124 [168] phi from init::@7 to progress_init [phi:init::@7->progress_init] progress_init_from_b7: - //SEG124 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 + //SEG125 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN+$28 sta progress_init.line+1 jsr progress_init - //SEG125 [60] phi from init::@7 to init::@8 [phi:init::@7->init::@8] + //SEG126 [60] phi from init::@7 to init::@8 [phi:init::@7->init::@8] b8_from_b7: jmp b8 - //SEG126 init::@8 + //SEG127 init::@8 b8: - //SEG127 [61] call gen_sintab - //SEG128 [71] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] + //SEG128 [61] call gen_sintab + //SEG129 [71] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] gen_sintab_from_b8: - //SEG129 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[197]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 + //SEG130 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[197]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_y sta gen_sintab.sintab+1 - //SEG130 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 + //SEG131 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_y sta gen_sintab.length - //SEG131 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 + //SEG132 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 lda #$32 sta gen_sintab.min - //SEG132 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 + //SEG133 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 ldx #$d0 jsr gen_sintab - //SEG133 [62] phi from init::@8 to init::@9 [phi:init::@8->init::@9] + //SEG134 [62] phi from init::@8 to init::@9 [phi:init::@8->init::@9] b9_from_b8: jmp b9 - //SEG134 init::@9 + //SEG135 init::@9 b9: - //SEG135 [63] call clear_screen - //SEG136 [65] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] + //SEG136 [63] call clear_screen + //SEG137 [65] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] clear_screen_from_b9: jsr clear_screen jmp breturn - //SEG137 init::@return + //SEG138 init::@return breturn: - //SEG138 [64] return + //SEG139 [64] return rts } -//SEG139 clear_screen +//SEG140 clear_screen clear_screen: { .label sc = 8 - //SEG140 [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] + //SEG141 [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] b1_from_clear_screen: - //SEG141 [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 + //SEG142 [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG142 [66] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] + //SEG143 [66] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] b1_from_b1: - //SEG143 [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy + //SEG144 [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy jmp b1 - //SEG144 clear_screen::@1 + //SEG145 clear_screen::@1 b1: - //SEG145 [67] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG146 [67] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG146 [68] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 + //SEG147 [68] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG147 [69] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto clear_screen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [69] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto clear_screen::@1 -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -5707,12 +5703,12 @@ clear_screen: { bcc b1_from_b1 !: jmp breturn - //SEG148 clear_screen::@return + //SEG149 clear_screen::@return breturn: - //SEG149 [70] return + //SEG150 [70] return rts } -//SEG150 gen_sintab +//SEG151 gen_sintab // Generate a sinus table using BASIC floats // - sintab is a pointer to the table to fill // - length is the length of the sine table @@ -5725,285 +5721,285 @@ gen_sintab: { .label min = 2 .label length = 3 .label sintab = 8 - //SEG151 [72] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 -- vwuz1=_word_vbuxx + //SEG152 [72] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 -- vwuz1=_word_vbuxx txa sta setFAC.w lda #0 sta setFAC.w+1 - //SEG152 [73] call setFAC - //SEG153 [154] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] + //SEG153 [73] call setFAC + //SEG154 [154] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] setFAC_from_gen_sintab: - //SEG154 [154] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy + //SEG155 [154] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy jsr setFAC - //SEG155 [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] + //SEG156 [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] b3_from_gen_sintab: jmp b3 - //SEG156 gen_sintab::@3 + //SEG157 gen_sintab::@3 b3: - //SEG157 [75] call setARGtoFAC + //SEG158 [75] call setARGtoFAC jsr setARGtoFAC jmp b4 - //SEG158 gen_sintab::@4 + //SEG159 gen_sintab::@4 b4: - //SEG159 asm { lda#0 ldx#0 ldy#0 } + //SEG160 asm { lda#0 ldx#0 ldy#0 } lda #0 ldx #0 ldy #0 - //SEG160 [77] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 + //SEG161 [77] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 lda min sta setFAC.w lda #0 sta setFAC.w+1 - //SEG161 [78] call setFAC - //SEG162 [154] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] + //SEG162 [78] call setFAC + //SEG163 [154] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] setFAC_from_b4: - //SEG163 [154] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy + //SEG164 [154] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy jsr setFAC - //SEG164 [79] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] + //SEG165 [79] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] b5_from_b4: jmp b5 - //SEG165 gen_sintab::@5 + //SEG166 gen_sintab::@5 b5: - //SEG166 [80] call setMEMtoFAC - //SEG167 [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] + //SEG167 [80] call setMEMtoFAC + //SEG168 [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] setMEMtoFAC_from_b5: - //SEG168 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG169 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG169 [81] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] + //SEG170 [81] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] b6_from_b5: jmp b6 - //SEG170 gen_sintab::@6 + //SEG171 gen_sintab::@6 b6: - //SEG171 [82] call subFACfromARG + //SEG172 [82] call subFACfromARG jsr subFACfromARG - //SEG172 [83] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] + //SEG173 [83] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] b7_from_b6: jmp b7 - //SEG173 gen_sintab::@7 + //SEG174 gen_sintab::@7 b7: - //SEG174 [84] call setMEMtoFAC - //SEG175 [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] + //SEG175 [84] call setMEMtoFAC + //SEG176 [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] setMEMtoFAC_from_b7: - //SEG176 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG177 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG177 [85] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] + //SEG178 [85] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] b8_from_b7: jmp b8 - //SEG178 gen_sintab::@8 + //SEG179 gen_sintab::@8 b8: - //SEG179 [86] call setFAC - //SEG180 [154] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] + //SEG180 [86] call setFAC + //SEG181 [154] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] setFAC_from_b8: - //SEG181 [154] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG182 [154] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 lda #<2 sta setFAC.w lda #>2 sta setFAC.w+1 jsr setFAC - //SEG182 [87] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] + //SEG183 [87] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] b9_from_b8: jmp b9 - //SEG183 gen_sintab::@9 + //SEG184 gen_sintab::@9 b9: - //SEG184 [88] call divMEMbyFAC - //SEG185 [149] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] + //SEG185 [88] call divMEMbyFAC + //SEG186 [149] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] divMEMbyFAC_from_b9: - //SEG186 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG187 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_amp sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG187 [89] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] + //SEG188 [89] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] b10_from_b9: jmp b10 - //SEG188 gen_sintab::@10 + //SEG189 gen_sintab::@10 b10: - //SEG189 [90] call setMEMtoFAC - //SEG190 [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] + //SEG190 [90] call setMEMtoFAC + //SEG191 [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] setMEMtoFAC_from_b10: - //SEG191 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG192 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG192 [91] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] + //SEG193 [91] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] b11_from_b10: jmp b11 - //SEG193 gen_sintab::@11 + //SEG194 gen_sintab::@11 b11: - //SEG194 [92] call addMEMtoFAC - //SEG195 [132] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] + //SEG195 [92] call addMEMtoFAC + //SEG196 [132] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] addMEMtoFAC_from_b11: jsr addMEMtoFAC - //SEG196 [93] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] + //SEG197 [93] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] b12_from_b11: jmp b12 - //SEG197 gen_sintab::@12 + //SEG198 gen_sintab::@12 b12: - //SEG198 [94] call setMEMtoFAC - //SEG199 [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] + //SEG199 [94] call setMEMtoFAC + //SEG200 [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] setMEMtoFAC_from_b12: - //SEG200 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG201 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG201 [95] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] + //SEG202 [95] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] b1_from_b12: - //SEG202 [95] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy - //SEG203 [95] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 + //SEG203 [95] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy + //SEG204 [95] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx - //SEG204 [95] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 + //SEG205 [95] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG205 [95] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] + //SEG206 [95] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] b1_from_b23: - //SEG206 [95] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy - //SEG207 [95] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy - //SEG208 [95] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy + //SEG207 [95] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy + //SEG208 [95] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy + //SEG209 [95] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy jmp b1 - //SEG209 gen_sintab::@1 + //SEG210 gen_sintab::@1 b1: - //SEG210 [96] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 + //SEG211 [96] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG211 [97] call setFAC - //SEG212 [154] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] + //SEG212 [97] call setFAC + //SEG213 [154] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] setFAC_from_b1: - //SEG213 [154] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy + //SEG214 [154] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy jsr setFAC - //SEG214 [98] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] + //SEG215 [98] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] b14_from_b1: jmp b14 - //SEG215 gen_sintab::@14 + //SEG216 gen_sintab::@14 b14: - //SEG216 [99] call mulFACbyMEM - //SEG217 [142] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] + //SEG217 [99] call mulFACbyMEM + //SEG218 [142] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] mulFACbyMEM_from_b14: - //SEG218 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG219 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG219 [100] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] + //SEG220 [100] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] b15_from_b14: jmp b15 - //SEG220 gen_sintab::@15 + //SEG221 gen_sintab::@15 b15: - //SEG221 [101] call setMEMtoFAC - //SEG222 [159] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] + //SEG222 [101] call setMEMtoFAC + //SEG223 [159] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] setMEMtoFAC_from_b15: - //SEG223 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG224 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC jmp b16 - //SEG224 gen_sintab::@16 + //SEG225 gen_sintab::@16 b16: - //SEG225 [102] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 + //SEG226 [102] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 lda length sta setFAC.w lda #0 sta setFAC.w+1 - //SEG226 [103] call setFAC - //SEG227 [154] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] + //SEG227 [103] call setFAC + //SEG228 [154] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] setFAC_from_b16: - //SEG228 [154] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy + //SEG229 [154] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy jsr setFAC - //SEG229 [104] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] + //SEG230 [104] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] b17_from_b16: jmp b17 - //SEG230 gen_sintab::@17 + //SEG231 gen_sintab::@17 b17: - //SEG231 [105] call divMEMbyFAC - //SEG232 [149] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] + //SEG232 [105] call divMEMbyFAC + //SEG233 [149] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] divMEMbyFAC_from_b17: - //SEG233 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG234 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_i sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG234 [106] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] + //SEG235 [106] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] b18_from_b17: jmp b18 - //SEG235 gen_sintab::@18 + //SEG236 gen_sintab::@18 b18: - //SEG236 [107] call sinFAC + //SEG237 [107] call sinFAC jsr sinFAC - //SEG237 [108] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] + //SEG238 [108] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] b19_from_b18: jmp b19 - //SEG238 gen_sintab::@19 + //SEG239 gen_sintab::@19 b19: - //SEG239 [109] call mulFACbyMEM - //SEG240 [142] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] + //SEG240 [109] call mulFACbyMEM + //SEG241 [142] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] mulFACbyMEM_from_b19: - //SEG241 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG242 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_amp sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG242 [110] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] + //SEG243 [110] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] b20_from_b19: jmp b20 - //SEG243 gen_sintab::@20 + //SEG244 gen_sintab::@20 b20: - //SEG244 [111] call addMEMtoFAC - //SEG245 [132] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] + //SEG245 [111] call addMEMtoFAC + //SEG246 [132] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] addMEMtoFAC_from_b20: jsr addMEMtoFAC - //SEG246 [112] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] + //SEG247 [112] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] b21_from_b20: jmp b21 - //SEG247 gen_sintab::@21 + //SEG248 gen_sintab::@21 b21: - //SEG248 [113] call getFAC + //SEG249 [113] call getFAC jsr getFAC - //SEG249 [114] (word) getFAC::return#2 ← (word) getFAC::return#0 + //SEG250 [114] (word) getFAC::return#2 ← (word) getFAC::return#0 jmp b22 - //SEG250 gen_sintab::@22 + //SEG251 gen_sintab::@22 b22: - //SEG251 [115] (word~) gen_sintab::$23 ← (word) getFAC::return#2 - //SEG252 [116] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 -- vbuaa=_byte_vwuz1 + //SEG252 [115] (word~) gen_sintab::$23 ← (word) getFAC::return#2 + //SEG253 [116] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 -- vbuaa=_byte_vwuz1 lda _23 - //SEG253 [117] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 -- pbuz1_derefidx_vbuz2=vbuaa + //SEG254 [117] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 -- pbuz1_derefidx_vbuz2=vbuaa ldy i sta (sintab),y - //SEG254 [118] call progress_inc + //SEG255 [118] call progress_inc jsr progress_inc jmp b23 - //SEG255 gen_sintab::@23 + //SEG256 gen_sintab::@23 b23: - //SEG256 [119] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 + //SEG257 [119] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG257 [120] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG258 [120] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 -- vbuz1_lt_vbuz2_then_la1 lda i cmp length bcc b1_from_b23 jmp breturn - //SEG258 gen_sintab::@return + //SEG259 gen_sintab::@return breturn: - //SEG259 [121] return + //SEG260 [121] return rts f_i: .byte 0, 0, 0, 0, 0 // i * 2 * PI @@ -6011,303 +6007,303 @@ gen_sintab: { // amplitude/2 + min f_amp: .byte 0, 0, 0, 0, 0 } -//SEG260 progress_inc +//SEG261 progress_inc // Increase PETSCII progress one bit // Done by increasing the character until the idx is 8 and then moving to the next char progress_inc: { - //SEG261 [122] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 -- vbuz1=_inc_vbuz1 + //SEG262 [122] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 -- vbuz1=_inc_vbuz1 inc progress_idx - //SEG262 [123] if((byte) progress_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG263 [123] if((byte) progress_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 lda progress_idx cmp #8 bne b1_from_progress_inc jmp b2 - //SEG263 progress_inc::@2 + //SEG264 progress_inc::@2 b2: - //SEG264 [124] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- _deref_pbuz1=_deref_pbuc1 + //SEG265 [124] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 ldy #0 sta (progress_cursor),y - //SEG265 [125] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 -- pbuz1=_inc_pbuz1 + //SEG266 [125] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 -- pbuz1=_inc_pbuz1 inc progress_cursor bne !+ inc progress_cursor+1 !: - //SEG266 [126] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + //SEG267 [126] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] b1_from_b2: - //SEG267 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - //SEG268 [126] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + //SEG268 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + //SEG269 [126] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx jmp b1 - //SEG269 [126] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + //SEG270 [126] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] b1_from_progress_inc: - //SEG270 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy - //SEG271 [126] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy + //SEG271 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy + //SEG272 [126] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy jmp b1 - //SEG272 progress_inc::@1 + //SEG273 progress_inc::@1 b1: - //SEG273 [127] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG274 [127] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy progress_idx lda progress_chars,y ldy #0 sta (progress_cursor),y jmp breturn - //SEG274 progress_inc::@return + //SEG275 progress_inc::@return breturn: - //SEG275 [128] return + //SEG276 [128] return rts // Progress characters progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 } -//SEG276 getFAC +//SEG277 getFAC // word = FAC // Get the value of the FAC (floating point accumulator) as an integer 16bit word // Destroys the value in the FAC in the process getFAC: { .label return = $c - //SEG277 asm { jsr$b1aa sty$fe sta$ff } + //SEG278 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe sta $ff - //SEG278 [130] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG279 [130] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 jmp breturn - //SEG279 getFAC::@return + //SEG280 getFAC::@return breturn: - //SEG280 [131] return + //SEG281 [131] return rts } -//SEG281 addMEMtoFAC +//SEG282 addMEMtoFAC // FAC = MEM+FAC // Set FAC to MEM (float saved in memory) plus FAC (float accumulator) // Reads 5 bytes from memory addMEMtoFAC: { - //SEG282 [133] call prepareMEM - //SEG283 [136] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG283 [133] call prepareMEM + //SEG284 [136] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] prepareMEM_from_addMEMtoFAC: - //SEG284 [136] phi (byte*) prepareMEM::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG285 [136] phi (byte*) prepareMEM::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #gen_sintab.f_min sta prepareMEM.mem+1 jsr prepareMEM jmp b1 - //SEG285 addMEMtoFAC::@1 + //SEG286 addMEMtoFAC::@1 b1: - //SEG286 asm { lda$fe ldy$ff jsr$b867 } + //SEG287 asm { lda$fe ldy$ff jsr$b867 } lda $fe ldy $ff jsr $b867 jmp breturn - //SEG287 addMEMtoFAC::@return + //SEG288 addMEMtoFAC::@return breturn: - //SEG288 [135] return + //SEG289 [135] return rts } -//SEG289 prepareMEM +//SEG290 prepareMEM // Prepare MEM pointers for operations using MEM prepareMEM: { .label mem = $c - //SEG290 [137] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuaa=_lo_pbuz1 + //SEG291 [137] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuaa=_lo_pbuz1 lda mem - //SEG291 [138] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuaa + //SEG292 [138] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuaa sta memLo - //SEG292 [139] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuaa=_hi_pbuz1 + //SEG293 [139] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuaa=_hi_pbuz1 lda mem+1 - //SEG293 [140] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuaa + //SEG294 [140] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuaa sta memHi jmp breturn - //SEG294 prepareMEM::@return + //SEG295 prepareMEM::@return breturn: - //SEG295 [141] return + //SEG296 [141] return rts } -//SEG296 mulFACbyMEM +//SEG297 mulFACbyMEM // FAC = MEM*FAC // Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator) // Reads 5 bytes from memory mulFACbyMEM: { .label mem = $c - //SEG297 [143] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 - //SEG298 [144] call prepareMEM - //SEG299 [136] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG298 [143] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 + //SEG299 [144] call prepareMEM + //SEG300 [136] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] prepareMEM_from_mulFACbyMEM: - //SEG300 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG301 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG301 mulFACbyMEM::@1 + //SEG302 mulFACbyMEM::@1 b1: - //SEG302 asm { lda$fe ldy$ff jsr$ba28 } + //SEG303 asm { lda$fe ldy$ff jsr$ba28 } lda $fe ldy $ff jsr $ba28 jmp breturn - //SEG303 mulFACbyMEM::@return + //SEG304 mulFACbyMEM::@return breturn: - //SEG304 [146] return + //SEG305 [146] return rts } -//SEG305 sinFAC +//SEG306 sinFAC // FAC = sin(FAC) // Set FAC to sinus of the FAC - sin(FAC) // Sinus is calculated on radians (0-2*PI) sinFAC: { - //SEG306 asm { jsr$e26b } + //SEG307 asm { jsr$e26b } jsr $e26b jmp breturn - //SEG307 sinFAC::@return + //SEG308 sinFAC::@return breturn: - //SEG308 [148] return + //SEG309 [148] return rts } -//SEG309 divMEMbyFAC +//SEG310 divMEMbyFAC // FAC = MEM/FAC // Set FAC to MEM (float saved in memory) divided by FAC (float accumulator) // Reads 5 bytes from memory divMEMbyFAC: { .label mem = $c - //SEG310 [150] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 - //SEG311 [151] call prepareMEM - //SEG312 [136] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG311 [150] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 + //SEG312 [151] call prepareMEM + //SEG313 [136] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] prepareMEM_from_divMEMbyFAC: - //SEG313 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy + //SEG314 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG314 divMEMbyFAC::@1 + //SEG315 divMEMbyFAC::@1 b1: - //SEG315 asm { lda$fe ldy$ff jsr$bb0f } + //SEG316 asm { lda$fe ldy$ff jsr$bb0f } lda $fe ldy $ff jsr $bb0f jmp breturn - //SEG316 divMEMbyFAC::@return + //SEG317 divMEMbyFAC::@return breturn: - //SEG317 [153] return + //SEG318 [153] return rts } -//SEG318 setFAC +//SEG319 setFAC // FAC = word // Set the FAC (floating point accumulator) to the integer value of a 16bit word setFAC: { .label w = $c - //SEG319 [155] (byte*~) prepareMEM::mem#8 ← (byte*)(word) setFAC::w#5 - //SEG320 [156] call prepareMEM - //SEG321 [136] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG320 [155] (byte*~) prepareMEM::mem#8 ← (byte*)(word) setFAC::w#5 + //SEG321 [156] call prepareMEM + //SEG322 [136] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] prepareMEM_from_setFAC: - //SEG322 [136] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#8 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG323 [136] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#8 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG323 setFAC::@1 + //SEG324 setFAC::@1 b1: - //SEG324 asm { ldy$fe lda$ff jsr$b391 } + //SEG325 asm { ldy$fe lda$ff jsr$b391 } ldy $fe lda $ff jsr $b391 jmp breturn - //SEG325 setFAC::@return + //SEG326 setFAC::@return breturn: - //SEG326 [158] return + //SEG327 [158] return rts } -//SEG327 setMEMtoFAC +//SEG328 setMEMtoFAC // MEM = FAC // Stores the value of the FAC to memory // Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};) setMEMtoFAC: { .label mem = $c - //SEG328 [160] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 - //SEG329 [161] call prepareMEM - //SEG330 [136] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG329 [160] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 + //SEG330 [161] call prepareMEM + //SEG331 [136] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] prepareMEM_from_setMEMtoFAC: - //SEG331 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG332 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG332 setMEMtoFAC::@1 + //SEG333 setMEMtoFAC::@1 b1: - //SEG333 asm { ldx$fe ldy$ff jsr$bbd4 } + //SEG334 asm { ldx$fe ldy$ff jsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 jmp breturn - //SEG334 setMEMtoFAC::@return + //SEG335 setMEMtoFAC::@return breturn: - //SEG335 [163] return + //SEG336 [163] return rts } -//SEG336 subFACfromARG +//SEG337 subFACfromARG // FAC = ARG-FAC // Set FAC to ARG minus FAC subFACfromARG: { - //SEG337 asm { jsr$b853 } + //SEG338 asm { jsr$b853 } jsr $b853 jmp breturn - //SEG338 subFACfromARG::@return + //SEG339 subFACfromARG::@return breturn: - //SEG339 [165] return + //SEG340 [165] return rts } -//SEG340 setARGtoFAC +//SEG341 setARGtoFAC // ARG = FAC // Set the ARG (floating point argument) to the value of the FAC (floating point accumulator) setARGtoFAC: { - //SEG341 asm { jsr$bc0f } + //SEG342 asm { jsr$bc0f } jsr $bc0f jmp breturn - //SEG342 setARGtoFAC::@return + //SEG343 setARGtoFAC::@return breturn: - //SEG343 [167] return + //SEG344 [167] return rts } -//SEG344 progress_init +//SEG345 progress_init // Initialize the PETSCII progress bar progress_init: { .label line = $a jmp breturn - //SEG345 progress_init::@return + //SEG346 progress_init::@return breturn: - //SEG346 [169] return + //SEG347 [169] return rts } -//SEG347 gen_sprites +//SEG348 gen_sprites gen_sprites: { .label spr = 8 .label i = 2 - //SEG348 [171] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] + //SEG349 [171] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] b1_from_gen_sprites: - //SEG349 [171] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 + //SEG350 [171] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 lda #sprites sta spr+1 - //SEG350 [171] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 + //SEG351 [171] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG351 [171] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] + //SEG352 [171] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] b1_from_b3: - //SEG352 [171] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy - //SEG353 [171] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy + //SEG353 [171] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy + //SEG354 [171] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy jmp b1 - //SEG354 gen_sprites::@1 + //SEG355 gen_sprites::@1 b1: - //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG356 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuyy=pbuc1_derefidx_vbuz1 ldx i ldy cml,x - //SEG356 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 + //SEG357 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 lda spr sta gen_chargen_sprite.sprite lda spr+1 sta gen_chargen_sprite.sprite+1 - //SEG357 [174] call gen_chargen_sprite + //SEG358 [174] call gen_chargen_sprite jsr gen_chargen_sprite jmp b3 - //SEG358 gen_sprites::@3 + //SEG359 gen_sprites::@3 b3: - //SEG359 [175] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuz1=pbuz1_plus_vbuc1 + //SEG360 [175] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuz1=pbuz1_plus_vbuc1 lda spr clc adc #$40 @@ -6315,20 +6311,20 @@ gen_sprites: { bcc !+ inc spr+1 !: - //SEG360 [176] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 + //SEG361 [176] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG361 [177] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG362 [177] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #7 bne b1_from_b3 jmp breturn - //SEG362 gen_sprites::@return + //SEG363 gen_sprites::@return breturn: - //SEG363 [178] return + //SEG364 [178] return rts cml: .text "camelot" } -//SEG364 gen_chargen_sprite +//SEG365 gen_chargen_sprite // Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large) // - c is the character to generate // - sprite is a pointer to the position of the sprite to generate @@ -6342,19 +6338,19 @@ gen_chargen_sprite: { .label x = 5 .label y = 3 .label c = 6 - //SEG365 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuyy + //SEG366 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuyy tya sta _0 lda #0 sta _0+1 - //SEG366 [180] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG367 [180] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG367 [181] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz1 + //SEG368 [181] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargen adc #CHARGEN sta chargen+1 - //SEG368 asm { sei } + //SEG369 asm { sei } sei - //SEG369 [183] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG370 [183] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG370 [184] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] + //SEG371 [184] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] b1_from_gen_chargen_sprite: - //SEG371 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy - //SEG372 [184] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 + //SEG372 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy + //SEG373 [184] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG373 [184] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] + //SEG374 [184] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] b1_from_b9: - //SEG374 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy - //SEG375 [184] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy + //SEG375 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy + //SEG376 [184] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy jmp b1 - //SEG376 gen_chargen_sprite::@1 + //SEG377 gen_chargen_sprite::@1 b1: - //SEG377 [185] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG378 [185] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG378 [186] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] + //SEG379 [186] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] b2_from_b1: - //SEG379 [186] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 + //SEG380 [186] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG380 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy - //SEG381 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 + //SEG381 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy + //SEG382 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 ldy #0 - //SEG382 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 + //SEG383 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 lda #0 sta s_gen - //SEG383 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy + //SEG384 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy jmp b2 - //SEG384 [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] + //SEG385 [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] b2_from_b8: - //SEG385 [186] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy - //SEG386 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy - //SEG387 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy - //SEG388 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy - //SEG389 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy + //SEG386 [186] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy + //SEG387 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy + //SEG388 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy + //SEG389 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy + //SEG390 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy jmp b2 - //SEG390 gen_chargen_sprite::@2 + //SEG391 gen_chargen_sprite::@2 b2: - //SEG391 [187] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG392 [187] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG392 [188] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_chargen_sprite::@3 -- vbuaa_eq_0_then_la1 + //SEG393 [188] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_chargen_sprite::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG393 [189] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] + //SEG394 [189] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] b6_from_b2: jmp b6 - //SEG394 gen_chargen_sprite::@6 + //SEG395 gen_chargen_sprite::@6 b6: - //SEG395 [190] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] + //SEG396 [190] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] b3_from_b6: - //SEG396 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG397 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #1 sta c jmp b3 - //SEG397 [190] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] + //SEG398 [190] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] b3_from_b2: - //SEG398 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG399 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #0 sta c jmp b3 - //SEG399 gen_chargen_sprite::@3 + //SEG400 gen_chargen_sprite::@3 b3: - //SEG400 [191] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] + //SEG401 [191] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] b4_from_b3: - //SEG401 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy - //SEG402 [191] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 + //SEG402 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy + //SEG403 [191] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 ldx #0 - //SEG403 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy - //SEG404 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy + //SEG404 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy + //SEG405 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy jmp b4 - //SEG405 [191] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] + //SEG406 [191] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] b4_from_b5: - //SEG406 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy - //SEG407 [191] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy - //SEG408 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy - //SEG409 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy + //SEG407 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy + //SEG408 [191] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy + //SEG409 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy + //SEG410 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy jmp b4 - //SEG410 gen_chargen_sprite::@4 + //SEG411 gen_chargen_sprite::@4 b4: - //SEG411 [192] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG412 [192] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda s_gen asl - //SEG412 [193] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuaa_bor_vbuz2 + //SEG413 [193] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuaa_bor_vbuz2 ora c sta s_gen - //SEG413 [194] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuyy=_inc_vbuyy + //SEG414 [194] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuyy=_inc_vbuyy iny - //SEG414 [195] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@5 -- vbuyy_neq_vbuc1_then_la1 + //SEG415 [195] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@5 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b5_from_b4 jmp b7 - //SEG415 gen_chargen_sprite::@7 + //SEG416 gen_chargen_sprite::@7 b7: - //SEG416 [196] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG417 [196] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #0 sta (sprite),y - //SEG417 [197] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG418 [197] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #3 sta (sprite),y - //SEG418 [198] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG419 [198] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #6 sta (sprite),y - //SEG419 [199] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 + //SEG420 [199] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 inc sprite bne !+ inc sprite+1 !: - //SEG420 [200] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] + //SEG421 [200] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] b5_from_b7: - //SEG421 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy - //SEG422 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 + //SEG422 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy + //SEG423 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 ldy #0 - //SEG423 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 + //SEG424 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 lda #0 sta s_gen jmp b5 - //SEG424 [200] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] + //SEG425 [200] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] b5_from_b4: - //SEG425 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy - //SEG426 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy - //SEG427 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy + //SEG426 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy + //SEG427 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy + //SEG428 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy jmp b5 - //SEG428 gen_chargen_sprite::@5 + //SEG429 gen_chargen_sprite::@5 b5: - //SEG429 [201] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuxx=_inc_vbuxx + //SEG430 [201] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuxx=_inc_vbuxx inx - //SEG430 [202] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_chargen_sprite::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG431 [202] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_chargen_sprite::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne b4_from_b5 jmp b8 - //SEG431 gen_chargen_sprite::@8 + //SEG432 gen_chargen_sprite::@8 b8: - //SEG432 [203] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG433 [203] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG433 [204] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 + //SEG434 [204] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG434 [205] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG435 [205] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #8 bne b2_from_b8 jmp b9 - //SEG435 gen_chargen_sprite::@9 + //SEG436 gen_chargen_sprite::@9 b9: - //SEG436 [206] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- pbuz1=pbuz1_plus_vbuc1 + //SEG437 [206] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- pbuz1=pbuz1_plus_vbuc1 lda sprite clc adc #6 @@ -6525,103 +6521,103 @@ gen_chargen_sprite: { bcc !+ inc sprite+1 !: - //SEG437 [207] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 + //SEG438 [207] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG438 [208] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG439 [208] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1_from_b9 jmp b10 - //SEG439 gen_chargen_sprite::@10 + //SEG440 gen_chargen_sprite::@10 b10: - //SEG440 [209] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG441 [209] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG441 asm { cli } + //SEG442 asm { cli } cli jmp breturn - //SEG442 gen_chargen_sprite::@return + //SEG443 gen_chargen_sprite::@return breturn: - //SEG443 [211] return + //SEG444 [211] return rts } -//SEG444 place_sprites +//SEG445 place_sprites place_sprites: { .label sprites_ptr = SCREEN+$3f8 .label spr_id = 2 .label spr_x = 3 .label col = 4 - //SEG445 [212] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG446 [212] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_ENABLE - //SEG446 [213] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG447 [213] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_EXPAND_X - //SEG447 [214] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG448 [214] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_EXPAND_Y - //SEG448 [215] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] + //SEG449 [215] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] b1_from_place_sprites: - //SEG449 [215] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 + //SEG450 [215] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 lda #5 sta col - //SEG450 [215] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuxx=vbuc1 + //SEG451 [215] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG451 [215] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word/dword/signed dword) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 + //SEG452 [215] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word/dword/signed dword) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 lda #$3c sta spr_x - //SEG452 [215] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1 + //SEG453 [215] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1 ldy #0 - //SEG453 [215] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 + //SEG454 [215] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 lda #$ff&sprites/$40 sta spr_id jmp b1 - //SEG454 [215] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] + //SEG455 [215] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] b1_from_b1: - //SEG455 [215] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy - //SEG456 [215] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy - //SEG457 [215] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy - //SEG458 [215] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy - //SEG459 [215] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy + //SEG456 [215] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy + //SEG457 [215] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy + //SEG458 [215] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy + //SEG459 [215] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy + //SEG460 [215] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy jmp b1 - //SEG460 place_sprites::@1 + //SEG461 place_sprites::@1 b1: - //SEG461 [216] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG462 [216] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda spr_id sta sprites_ptr,y - //SEG462 [217] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 + //SEG463 [217] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 inc spr_id - //SEG463 [218] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG464 [218] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda spr_x sta SPRITES_XPOS,x - //SEG464 [219] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG465 [219] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$50 sta SPRITES_YPOS,x - //SEG465 [220] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG466 [220] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda col sta SPRITES_COLS,y - //SEG466 [221] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- vbuz1=vbuz1_plus_vbuc1 + //SEG467 [221] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- vbuz1=vbuz1_plus_vbuc1 lda #$20 clc adc spr_x sta spr_x - //SEG467 [222] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word/dword/signed dword) 7^(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG468 [222] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word/dword/signed dword) 7^(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_bxor_vbuc1 lda col eor #7^5 sta col - //SEG468 [223] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuxx=_inc_vbuxx + //SEG469 [223] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuxx=_inc_vbuxx inx - //SEG469 [224] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuxx=_inc_vbuxx + //SEG470 [224] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuxx=_inc_vbuxx inx - //SEG470 [225] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuyy=_inc_vbuyy + //SEG471 [225] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuyy=_inc_vbuyy iny - //SEG471 [226] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto place_sprites::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG472 [226] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto place_sprites::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #7 bne b1_from_b1 jmp breturn - //SEG472 place_sprites::@return + //SEG473 place_sprites::@return breturn: - //SEG473 [227] return + //SEG474 [227] return rts } sintab_x: .fill $dd, 0 @@ -7348,11 +7344,12 @@ reg byte x [ place_sprites::j2#1 ] FINAL ASSEMBLER Score: 768741 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // Processor Port Register controlling RAM/ROM configuration and the datasette .label PROCPORT = 1 // The address of the CHARGEN character set @@ -7368,9 +7365,6 @@ Score: 768741 .label SPRITES_COLS = $d027 // Color Ram .label COLS = $d800 - // Library wrapping the BASIC floating point functions - // See https://www.c64-wiki.com/wiki/Floating_point_arithmetic - // See http://www.pagetable.com/c64rom/c64rom_sc.html // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM .label memLo = $fe .label memHi = $ff @@ -7382,41 +7376,41 @@ Score: 768741 .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 -//SEG2 @begin -//SEG3 [1] phi from @begin to @60 [phi:@begin->@60] -//SEG4 @60 -//SEG5 [2] call main -//SEG6 [4] phi from @60 to main [phi:@60->main] -//SEG7 [3] phi from @60 to @end [phi:@60->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @60 [phi:@begin->@60] +//SEG5 @60 +//SEG6 [2] call main +//SEG7 [4] phi from @60 to main [phi:@60->main] +//SEG8 [3] phi from @60 to @end [phi:@60->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call init - //SEG11 [43] phi from main to init [phi:main->init] + //SEG11 [5] call init + //SEG12 [43] phi from main to init [phi:main->init] jsr init - //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] - //SEG13 [6] phi (byte) sin_idx_y#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 + //SEG13 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG14 [6] phi (byte) sin_idx_y#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y - //SEG14 [6] phi (byte) sin_idx_x#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) sin_idx_x#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#1] -- vbuz1=vbuc1 sta sin_idx_x - //SEG15 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG16 main::@2 + //SEG16 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG17 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2 - //SEG18 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG19 main::@3 - //SEG20 [9] call anim + //SEG19 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG20 main::@3 + //SEG21 [9] call anim jsr anim - //SEG21 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] - //SEG22 [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#11 [phi:main::@3->main::@2#0] -- register_copy - //SEG23 [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#11 [phi:main::@3->main::@2#1] -- register_copy + //SEG22 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG23 [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#11 [phi:main::@3->main::@2#0] -- register_copy + //SEG24 [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#11 [phi:main::@3->main::@2#1] -- register_copy jmp b2 } -//SEG24 anim +//SEG25 anim anim: { .label _2 = 5 .label xidx = 4 @@ -7424,34 +7418,34 @@ anim: { .label x_msb = 5 .label j2 = 6 .label j = 7 - //SEG25 [10] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG26 [10] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG26 [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 + //SEG27 [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 lda sin_idx_x sta xidx - //SEG27 [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuxx=vbuz1 + //SEG28 [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuxx=vbuz1 ldx sin_idx_y - //SEG28 [13] phi from anim to anim::@1 [phi:anim->anim::@1] - //SEG29 [13] phi (byte) anim::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 + //SEG29 [13] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG30 [13] phi (byte) anim::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG30 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@1#1] -- register_copy - //SEG31 [13] phi (byte) anim::j2#2 = (byte/signed byte/word/signed word/dword/signed dword) 12 [phi:anim->anim::@1#2] -- vbuz1=vbuc1 + //SEG31 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@1#1] -- register_copy + //SEG32 [13] phi (byte) anim::j2#2 = (byte/signed byte/word/signed word/dword/signed dword) 12 [phi:anim->anim::@1#2] -- vbuz1=vbuc1 lda #$c sta j2 - //SEG32 [13] phi (byte) anim::x_msb#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#3] -- vbuz1=vbuc1 + //SEG33 [13] phi (byte) anim::x_msb#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#3] -- vbuz1=vbuc1 lda #0 sta x_msb - //SEG33 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@1#4] -- register_copy - //SEG34 [13] phi from anim::@3 to anim::@1 [phi:anim::@3->anim::@1] - //SEG35 [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@3->anim::@1#0] -- register_copy - //SEG36 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@3->anim::@1#1] -- register_copy - //SEG37 [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@3->anim::@1#2] -- register_copy - //SEG38 [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@3->anim::@1#3] -- register_copy - //SEG39 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@3->anim::@1#4] -- register_copy - //SEG40 anim::@1 + //SEG34 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@1#4] -- register_copy + //SEG35 [13] phi from anim::@3 to anim::@1 [phi:anim::@3->anim::@1] + //SEG36 [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@3->anim::@1#0] -- register_copy + //SEG37 [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@3->anim::@1#1] -- register_copy + //SEG38 [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@3->anim::@1#2] -- register_copy + //SEG39 [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@3->anim::@1#3] -- register_copy + //SEG40 [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@3->anim::@1#4] -- register_copy + //SEG41 anim::@1 b1: - //SEG41 [14] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word/dword/signed dword) 30 + *((const byte[221]) sintab_x#0 + (byte) anim::xidx#3) -- vwuz1=vbuc1_plus_pbuc2_derefidx_vbuz2 + //SEG42 [14] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word/dword/signed dword) 30 + *((const byte[221]) sintab_x#0 + (byte) anim::xidx#3) -- vwuz1=vbuc1_plus_pbuc2_derefidx_vbuz2 ldy xidx lda sintab_x,y clc @@ -7460,226 +7454,226 @@ anim: { lda #0 adc #0 sta x+1 - //SEG42 [15] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG43 [15] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl _2 - //SEG43 [16] (byte~) anim::$3 ← > (word) anim::x#0 -- vbuaa=_hi_vwuz1 - //SEG44 [17] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 -- vbuz1=vbuz1_bor_vbuaa + //SEG44 [16] (byte~) anim::$3 ← > (word) anim::x#0 -- vbuaa=_hi_vwuz1 + //SEG45 [17] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 -- vbuz1=vbuz1_bor_vbuaa ora x_msb sta x_msb - //SEG45 [18] (byte~) anim::$5 ← < (word) anim::x#0 -- vbuaa=_lo_vwuz1 + //SEG46 [18] (byte~) anim::$5 ← < (word) anim::x#0 -- vbuaa=_lo_vwuz1 lda x - //SEG46 [19] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#2) ← (byte~) anim::$5 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG47 [19] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#2) ← (byte~) anim::$5 -- pbuc1_derefidx_vbuz1=vbuaa ldy j2 sta SPRITES_XPOS,y - //SEG47 [20] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#2) ← *((const byte[197]) sintab_y#0 + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuxx + //SEG48 [20] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#2) ← *((const byte[197]) sintab_y#0 + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuxx lda sintab_y,x sta SPRITES_YPOS,y - //SEG48 [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 + //SEG49 [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vbuz1=vbuz1_plus_vbuc1 lda #$a clc adc xidx sta xidx - //SEG49 [22] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG50 [22] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 -- vbuz1_lt_vbuc1_then_la1 cmp #sinlen_x bcc b2 - //SEG50 anim::@6 - //SEG51 [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 -- vbuz1=vbuz1_minus_vbuc1 + //SEG51 anim::@6 + //SEG52 [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 -- vbuz1=vbuz1_minus_vbuc1 sec sbc #sinlen_x sta xidx - //SEG52 [24] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] - //SEG53 [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy - //SEG54 anim::@2 + //SEG53 [24] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] + //SEG54 [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy + //SEG55 anim::@2 b2: - //SEG55 [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuxx=vbuxx_plus_vbuc1 + //SEG56 [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #8 tax - //SEG56 [26] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG57 [26] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #sinlen_y bcc b3 - //SEG57 anim::@7 - //SEG58 [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 -- vbuxx=vbuxx_minus_vbuc1 + //SEG58 anim::@7 + //SEG59 [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 -- vbuxx=vbuxx_minus_vbuc1 txa sec sbc #sinlen_y tax - //SEG59 [28] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] - //SEG60 [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy - //SEG61 anim::@3 + //SEG60 [28] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] + //SEG61 [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy + //SEG62 anim::@3 b3: - //SEG62 [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_minus_2 + //SEG63 [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_minus_2 dec j2 dec j2 - //SEG63 [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 + //SEG64 [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG64 [31] if((byte) anim::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto anim::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG65 [31] if((byte) anim::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto anim::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #7 bne b1 - //SEG65 anim::@8 - //SEG66 [32] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 + //SEG66 anim::@8 + //SEG67 [32] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 lda x_msb sta SPRITES_XMSB - //SEG67 [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 + //SEG68 [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 inc sin_idx_x - //SEG68 [34] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 -- vbuz1_lt_vbuc1_then_la1 + //SEG69 [34] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_x cmp #sinlen_x bcc b4 - //SEG69 [35] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] - //SEG70 [35] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 + //SEG70 [35] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] + //SEG71 [35] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_x - //SEG71 anim::@4 + //SEG72 anim::@4 b4: - //SEG72 [36] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 + //SEG73 [36] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 inc sin_idx_y - //SEG73 [37] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 -- vbuz1_lt_vbuc1_then_la1 + //SEG74 [37] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_y cmp #sinlen_y bcc b5 - //SEG74 [38] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] - //SEG75 [38] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 + //SEG75 [38] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] + //SEG76 [38] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y - //SEG76 anim::@5 + //SEG77 anim::@5 b5: - //SEG77 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG78 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG78 anim::@return - //SEG79 [40] return + //SEG79 anim::@return + //SEG80 [40] return rts - //SEG80 [41] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] - //SEG81 anim::@15 - //SEG82 [38] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] - //SEG83 [38] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy - //SEG84 [42] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] - //SEG85 anim::@14 - //SEG86 [35] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] - //SEG87 [35] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy + //SEG81 [41] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] + //SEG82 anim::@15 + //SEG83 [38] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] + //SEG84 [38] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy + //SEG85 [42] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] + //SEG86 anim::@14 + //SEG87 [35] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] + //SEG88 [35] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy } -//SEG88 init +//SEG89 init init: { - //SEG89 [44] call clear_screen - //SEG90 [65] phi from init to clear_screen [phi:init->clear_screen] + //SEG90 [44] call clear_screen + //SEG91 [65] phi from init to clear_screen [phi:init->clear_screen] jsr clear_screen - //SEG91 [45] phi from init to init::@1 [phi:init->init::@1] - //SEG92 [45] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 + //SEG92 [45] phi from init to init::@1 [phi:init->init::@1] + //SEG93 [45] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG93 [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG94 [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG95 init::@1 + //SEG94 [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG95 [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG96 init::@1 b1: - //SEG96 [46] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG97 [46] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta COLS,x - //SEG97 [47] *((const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG98 [47] *((const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$b sta COLS+$28,x - //SEG98 [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG99 [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG99 [49] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG100 [49] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1 - //SEG100 [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2] - //SEG101 init::@2 - //SEG102 [51] call place_sprites + //SEG101 [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG102 init::@2 + //SEG103 [51] call place_sprites jsr place_sprites - //SEG103 [52] phi from init::@2 to init::@4 [phi:init::@2->init::@4] - //SEG104 init::@4 - //SEG105 [53] call gen_sprites - //SEG106 [170] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] + //SEG104 [52] phi from init::@2 to init::@4 [phi:init::@2->init::@4] + //SEG105 init::@4 + //SEG106 [53] call gen_sprites + //SEG107 [170] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] jsr gen_sprites - //SEG107 [54] phi from init::@4 to init::@5 [phi:init::@4->init::@5] - //SEG108 init::@5 - //SEG109 [55] call progress_init - //SEG110 [168] phi from init::@5 to progress_init [phi:init::@5->progress_init] - //SEG111 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 + //SEG108 [54] phi from init::@4 to init::@5 [phi:init::@4->init::@5] + //SEG109 init::@5 + //SEG110 [55] call progress_init + //SEG111 [168] phi from init::@5 to progress_init [phi:init::@5->progress_init] + //SEG112 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN sta progress_init.line+1 jsr progress_init - //SEG112 [56] phi from init::@5 to init::@6 [phi:init::@5->init::@6] - //SEG113 init::@6 - //SEG114 [57] call gen_sintab - //SEG115 [71] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] - //SEG116 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[221]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 + //SEG113 [56] phi from init::@5 to init::@6 [phi:init::@5->init::@6] + //SEG114 init::@6 + //SEG115 [57] call gen_sintab + //SEG116 [71] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] + //SEG117 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[221]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_x sta gen_sintab.sintab+1 - //SEG117 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 + //SEG118 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_x sta gen_sintab.length - //SEG118 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 + //SEG119 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 lda #0 sta gen_sintab.min - //SEG119 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 + //SEG120 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 ldx #$ff jsr gen_sintab - //SEG120 [58] phi from init::@6 to init::@7 [phi:init::@6->init::@7] - //SEG121 init::@7 - //SEG122 [59] call progress_init - //SEG123 [168] phi from init::@7 to progress_init [phi:init::@7->progress_init] - //SEG124 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 + //SEG121 [58] phi from init::@6 to init::@7 [phi:init::@6->init::@7] + //SEG122 init::@7 + //SEG123 [59] call progress_init + //SEG124 [168] phi from init::@7 to progress_init [phi:init::@7->progress_init] + //SEG125 [168] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN+$28 sta progress_init.line+1 jsr progress_init - //SEG125 [60] phi from init::@7 to init::@8 [phi:init::@7->init::@8] - //SEG126 init::@8 - //SEG127 [61] call gen_sintab - //SEG128 [71] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] - //SEG129 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[197]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 + //SEG126 [60] phi from init::@7 to init::@8 [phi:init::@7->init::@8] + //SEG127 init::@8 + //SEG128 [61] call gen_sintab + //SEG129 [71] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] + //SEG130 [71] phi (byte*) gen_sintab::sintab#12 = (const byte[197]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_y sta gen_sintab.sintab+1 - //SEG130 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 + //SEG131 [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_y sta gen_sintab.length - //SEG131 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 + //SEG132 [71] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 lda #$32 sta gen_sintab.min - //SEG132 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 + //SEG133 [71] phi (byte) gen_sintab::max#2 = (byte/word/signed word/dword/signed dword) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 ldx #$d0 jsr gen_sintab - //SEG133 [62] phi from init::@8 to init::@9 [phi:init::@8->init::@9] - //SEG134 init::@9 - //SEG135 [63] call clear_screen - //SEG136 [65] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] + //SEG134 [62] phi from init::@8 to init::@9 [phi:init::@8->init::@9] + //SEG135 init::@9 + //SEG136 [63] call clear_screen + //SEG137 [65] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] jsr clear_screen - //SEG137 init::@return - //SEG138 [64] return + //SEG138 init::@return + //SEG139 [64] return rts } -//SEG139 clear_screen +//SEG140 clear_screen clear_screen: { .label sc = 8 - //SEG140 [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] - //SEG141 [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 + //SEG141 [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] + //SEG142 [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG142 [66] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] - //SEG143 [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy - //SEG144 clear_screen::@1 + //SEG143 [66] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] + //SEG144 [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy + //SEG145 clear_screen::@1 b1: - //SEG145 [67] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG146 [67] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG146 [68] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 + //SEG147 [68] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG147 [69] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto clear_screen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [69] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto clear_screen::@1 -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1 @@ -7688,11 +7682,11 @@ clear_screen: { cmp #setFAC] - //SEG154 [154] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy + //SEG153 [73] call setFAC + //SEG154 [154] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] + //SEG155 [154] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy jsr setFAC - //SEG155 [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] - //SEG156 gen_sintab::@3 - //SEG157 [75] call setARGtoFAC + //SEG156 [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] + //SEG157 gen_sintab::@3 + //SEG158 [75] call setARGtoFAC jsr setARGtoFAC - //SEG158 gen_sintab::@4 - //SEG159 asm { lda#0 ldx#0 ldy#0 } + //SEG159 gen_sintab::@4 + //SEG160 asm { lda#0 ldx#0 ldy#0 } lda #0 tax tay - //SEG160 [77] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 + //SEG161 [77] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 lda min sta setFAC.w txa sta setFAC.w+1 - //SEG161 [78] call setFAC - //SEG162 [154] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] - //SEG163 [154] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy + //SEG162 [78] call setFAC + //SEG163 [154] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] + //SEG164 [154] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy jsr setFAC - //SEG164 [79] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] - //SEG165 gen_sintab::@5 - //SEG166 [80] call setMEMtoFAC - //SEG167 [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] - //SEG168 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG165 [79] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] + //SEG166 gen_sintab::@5 + //SEG167 [80] call setMEMtoFAC + //SEG168 [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] + //SEG169 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG169 [81] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] - //SEG170 gen_sintab::@6 - //SEG171 [82] call subFACfromARG + //SEG170 [81] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] + //SEG171 gen_sintab::@6 + //SEG172 [82] call subFACfromARG jsr subFACfromARG - //SEG172 [83] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] - //SEG173 gen_sintab::@7 - //SEG174 [84] call setMEMtoFAC - //SEG175 [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] - //SEG176 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG173 [83] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] + //SEG174 gen_sintab::@7 + //SEG175 [84] call setMEMtoFAC + //SEG176 [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] + //SEG177 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG177 [85] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] - //SEG178 gen_sintab::@8 - //SEG179 [86] call setFAC - //SEG180 [154] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] - //SEG181 [154] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG178 [85] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] + //SEG179 gen_sintab::@8 + //SEG180 [86] call setFAC + //SEG181 [154] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] + //SEG182 [154] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 lda #<2 sta setFAC.w lda #>2 sta setFAC.w+1 jsr setFAC - //SEG182 [87] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] - //SEG183 gen_sintab::@9 - //SEG184 [88] call divMEMbyFAC - //SEG185 [149] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] - //SEG186 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG183 [87] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] + //SEG184 gen_sintab::@9 + //SEG185 [88] call divMEMbyFAC + //SEG186 [149] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] + //SEG187 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_amp sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG187 [89] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] - //SEG188 gen_sintab::@10 - //SEG189 [90] call setMEMtoFAC - //SEG190 [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] - //SEG191 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG188 [89] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] + //SEG189 gen_sintab::@10 + //SEG190 [90] call setMEMtoFAC + //SEG191 [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] + //SEG192 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG192 [91] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] - //SEG193 gen_sintab::@11 - //SEG194 [92] call addMEMtoFAC - //SEG195 [132] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] + //SEG193 [91] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] + //SEG194 gen_sintab::@11 + //SEG195 [92] call addMEMtoFAC + //SEG196 [132] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] jsr addMEMtoFAC - //SEG196 [93] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] - //SEG197 gen_sintab::@12 - //SEG198 [94] call setMEMtoFAC - //SEG199 [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] - //SEG200 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG197 [93] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] + //SEG198 gen_sintab::@12 + //SEG199 [94] call setMEMtoFAC + //SEG200 [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] + //SEG201 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG201 [95] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] - //SEG202 [95] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy - //SEG203 [95] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 + //SEG202 [95] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] + //SEG203 [95] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy + //SEG204 [95] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx - //SEG204 [95] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 + //SEG205 [95] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 sta i - //SEG205 [95] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] - //SEG206 [95] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy - //SEG207 [95] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy - //SEG208 [95] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy - //SEG209 gen_sintab::@1 + //SEG206 [95] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] + //SEG207 [95] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy + //SEG208 [95] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy + //SEG209 [95] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy + //SEG210 gen_sintab::@1 b1: - //SEG210 [96] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 + //SEG211 [96] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG211 [97] call setFAC - //SEG212 [154] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] - //SEG213 [154] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy + //SEG212 [97] call setFAC + //SEG213 [154] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] + //SEG214 [154] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy jsr setFAC - //SEG214 [98] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] - //SEG215 gen_sintab::@14 - //SEG216 [99] call mulFACbyMEM - //SEG217 [142] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] - //SEG218 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG215 [98] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] + //SEG216 gen_sintab::@14 + //SEG217 [99] call mulFACbyMEM + //SEG218 [142] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] + //SEG219 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG219 [100] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] - //SEG220 gen_sintab::@15 - //SEG221 [101] call setMEMtoFAC - //SEG222 [159] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] - //SEG223 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG220 [100] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] + //SEG221 gen_sintab::@15 + //SEG222 [101] call setMEMtoFAC + //SEG223 [159] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] + //SEG224 [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG224 gen_sintab::@16 - //SEG225 [102] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 + //SEG225 gen_sintab::@16 + //SEG226 [102] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 lda length sta setFAC.w lda #0 sta setFAC.w+1 - //SEG226 [103] call setFAC - //SEG227 [154] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] - //SEG228 [154] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy + //SEG227 [103] call setFAC + //SEG228 [154] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] + //SEG229 [154] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy jsr setFAC - //SEG229 [104] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] - //SEG230 gen_sintab::@17 - //SEG231 [105] call divMEMbyFAC - //SEG232 [149] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] - //SEG233 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG230 [104] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] + //SEG231 gen_sintab::@17 + //SEG232 [105] call divMEMbyFAC + //SEG233 [149] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] + //SEG234 [149] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_i sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG234 [106] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] - //SEG235 gen_sintab::@18 - //SEG236 [107] call sinFAC + //SEG235 [106] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] + //SEG236 gen_sintab::@18 + //SEG237 [107] call sinFAC jsr sinFAC - //SEG237 [108] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] - //SEG238 gen_sintab::@19 - //SEG239 [109] call mulFACbyMEM - //SEG240 [142] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] - //SEG241 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG238 [108] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] + //SEG239 gen_sintab::@19 + //SEG240 [109] call mulFACbyMEM + //SEG241 [142] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] + //SEG242 [142] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_amp sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG242 [110] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] - //SEG243 gen_sintab::@20 - //SEG244 [111] call addMEMtoFAC - //SEG245 [132] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] + //SEG243 [110] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] + //SEG244 gen_sintab::@20 + //SEG245 [111] call addMEMtoFAC + //SEG246 [132] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] jsr addMEMtoFAC - //SEG246 [112] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] - //SEG247 gen_sintab::@21 - //SEG248 [113] call getFAC + //SEG247 [112] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] + //SEG248 gen_sintab::@21 + //SEG249 [113] call getFAC jsr getFAC - //SEG249 [114] (word) getFAC::return#2 ← (word) getFAC::return#0 - //SEG250 gen_sintab::@22 - //SEG251 [115] (word~) gen_sintab::$23 ← (word) getFAC::return#2 - //SEG252 [116] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 -- vbuaa=_byte_vwuz1 + //SEG250 [114] (word) getFAC::return#2 ← (word) getFAC::return#0 + //SEG251 gen_sintab::@22 + //SEG252 [115] (word~) gen_sintab::$23 ← (word) getFAC::return#2 + //SEG253 [116] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 -- vbuaa=_byte_vwuz1 lda _23 - //SEG253 [117] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 -- pbuz1_derefidx_vbuz2=vbuaa + //SEG254 [117] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 -- pbuz1_derefidx_vbuz2=vbuaa ldy i sta (sintab),y - //SEG254 [118] call progress_inc + //SEG255 [118] call progress_inc jsr progress_inc - //SEG255 gen_sintab::@23 - //SEG256 [119] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 + //SEG256 gen_sintab::@23 + //SEG257 [119] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG257 [120] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG258 [120] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 -- vbuz1_lt_vbuz2_then_la1 lda i cmp length bcc b1 - //SEG258 gen_sintab::@return - //SEG259 [121] return + //SEG259 gen_sintab::@return + //SEG260 [121] return rts f_i: .byte 0, 0, 0, 0, 0 // i * 2 * PI @@ -7912,252 +7906,252 @@ gen_sintab: { // amplitude/2 + min f_amp: .byte 0, 0, 0, 0, 0 } -//SEG260 progress_inc +//SEG261 progress_inc // Increase PETSCII progress one bit // Done by increasing the character until the idx is 8 and then moving to the next char progress_inc: { - //SEG261 [122] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 -- vbuz1=_inc_vbuz1 + //SEG262 [122] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 -- vbuz1=_inc_vbuz1 inc progress_idx - //SEG262 [123] if((byte) progress_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG263 [123] if((byte) progress_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 lda progress_idx cmp #8 bne b1 - //SEG263 progress_inc::@2 - //SEG264 [124] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- _deref_pbuz1=_deref_pbuc1 + //SEG264 progress_inc::@2 + //SEG265 [124] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 ldy #0 sta (progress_cursor),y - //SEG265 [125] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 -- pbuz1=_inc_pbuz1 + //SEG266 [125] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 -- pbuz1=_inc_pbuz1 inc progress_cursor bne !+ inc progress_cursor+1 !: - //SEG266 [126] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] - //SEG267 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - //SEG268 [126] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + //SEG267 [126] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + //SEG268 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + //SEG269 [126] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx - //SEG269 [126] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] - //SEG270 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy - //SEG271 [126] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy - //SEG272 progress_inc::@1 + //SEG270 [126] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + //SEG271 [126] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy + //SEG272 [126] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy + //SEG273 progress_inc::@1 b1: - //SEG273 [127] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG274 [127] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy progress_idx lda progress_chars,y ldy #0 sta (progress_cursor),y - //SEG274 progress_inc::@return - //SEG275 [128] return + //SEG275 progress_inc::@return + //SEG276 [128] return rts // Progress characters progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 } -//SEG276 getFAC +//SEG277 getFAC // word = FAC // Get the value of the FAC (floating point accumulator) as an integer 16bit word // Destroys the value in the FAC in the process getFAC: { .label return = $c - //SEG277 asm { jsr$b1aa sty$fe sta$ff } + //SEG278 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe sta $ff - //SEG278 [130] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG279 [130] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 - //SEG279 getFAC::@return - //SEG280 [131] return + //SEG280 getFAC::@return + //SEG281 [131] return rts } -//SEG281 addMEMtoFAC +//SEG282 addMEMtoFAC // FAC = MEM+FAC // Set FAC to MEM (float saved in memory) plus FAC (float accumulator) // Reads 5 bytes from memory addMEMtoFAC: { - //SEG282 [133] call prepareMEM - //SEG283 [136] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] - //SEG284 [136] phi (byte*) prepareMEM::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG283 [133] call prepareMEM + //SEG284 [136] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG285 [136] phi (byte*) prepareMEM::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #gen_sintab.f_min sta prepareMEM.mem+1 jsr prepareMEM - //SEG285 addMEMtoFAC::@1 - //SEG286 asm { lda$fe ldy$ff jsr$b867 } + //SEG286 addMEMtoFAC::@1 + //SEG287 asm { lda$fe ldy$ff jsr$b867 } lda $fe ldy $ff jsr $b867 - //SEG287 addMEMtoFAC::@return - //SEG288 [135] return + //SEG288 addMEMtoFAC::@return + //SEG289 [135] return rts } -//SEG289 prepareMEM +//SEG290 prepareMEM // Prepare MEM pointers for operations using MEM prepareMEM: { .label mem = $c - //SEG290 [137] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuaa=_lo_pbuz1 + //SEG291 [137] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuaa=_lo_pbuz1 lda mem - //SEG291 [138] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuaa + //SEG292 [138] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuaa sta memLo - //SEG292 [139] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuaa=_hi_pbuz1 + //SEG293 [139] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuaa=_hi_pbuz1 lda mem+1 - //SEG293 [140] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuaa + //SEG294 [140] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuaa sta memHi - //SEG294 prepareMEM::@return - //SEG295 [141] return + //SEG295 prepareMEM::@return + //SEG296 [141] return rts } -//SEG296 mulFACbyMEM +//SEG297 mulFACbyMEM // FAC = MEM*FAC // Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator) // Reads 5 bytes from memory mulFACbyMEM: { .label mem = $c - //SEG297 [143] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 - //SEG298 [144] call prepareMEM - //SEG299 [136] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] - //SEG300 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG298 [143] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 + //SEG299 [144] call prepareMEM + //SEG300 [136] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG301 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG301 mulFACbyMEM::@1 - //SEG302 asm { lda$fe ldy$ff jsr$ba28 } + //SEG302 mulFACbyMEM::@1 + //SEG303 asm { lda$fe ldy$ff jsr$ba28 } lda $fe ldy $ff jsr $ba28 - //SEG303 mulFACbyMEM::@return - //SEG304 [146] return + //SEG304 mulFACbyMEM::@return + //SEG305 [146] return rts } -//SEG305 sinFAC +//SEG306 sinFAC // FAC = sin(FAC) // Set FAC to sinus of the FAC - sin(FAC) // Sinus is calculated on radians (0-2*PI) sinFAC: { - //SEG306 asm { jsr$e26b } + //SEG307 asm { jsr$e26b } jsr $e26b - //SEG307 sinFAC::@return - //SEG308 [148] return + //SEG308 sinFAC::@return + //SEG309 [148] return rts } -//SEG309 divMEMbyFAC +//SEG310 divMEMbyFAC // FAC = MEM/FAC // Set FAC to MEM (float saved in memory) divided by FAC (float accumulator) // Reads 5 bytes from memory divMEMbyFAC: { .label mem = $c - //SEG310 [150] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 - //SEG311 [151] call prepareMEM - //SEG312 [136] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] - //SEG313 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy + //SEG311 [150] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 + //SEG312 [151] call prepareMEM + //SEG313 [136] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG314 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG314 divMEMbyFAC::@1 - //SEG315 asm { lda$fe ldy$ff jsr$bb0f } + //SEG315 divMEMbyFAC::@1 + //SEG316 asm { lda$fe ldy$ff jsr$bb0f } lda $fe ldy $ff jsr $bb0f - //SEG316 divMEMbyFAC::@return - //SEG317 [153] return + //SEG317 divMEMbyFAC::@return + //SEG318 [153] return rts } -//SEG318 setFAC +//SEG319 setFAC // FAC = word // Set the FAC (floating point accumulator) to the integer value of a 16bit word setFAC: { .label w = $c - //SEG319 [155] (byte*~) prepareMEM::mem#8 ← (byte*)(word) setFAC::w#5 - //SEG320 [156] call prepareMEM - //SEG321 [136] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] - //SEG322 [136] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#8 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG320 [155] (byte*~) prepareMEM::mem#8 ← (byte*)(word) setFAC::w#5 + //SEG321 [156] call prepareMEM + //SEG322 [136] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG323 [136] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#8 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG323 setFAC::@1 - //SEG324 asm { ldy$fe lda$ff jsr$b391 } + //SEG324 setFAC::@1 + //SEG325 asm { ldy$fe lda$ff jsr$b391 } ldy $fe lda $ff jsr $b391 - //SEG325 setFAC::@return - //SEG326 [158] return + //SEG326 setFAC::@return + //SEG327 [158] return rts } -//SEG327 setMEMtoFAC +//SEG328 setMEMtoFAC // MEM = FAC // Stores the value of the FAC to memory // Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};) setMEMtoFAC: { .label mem = $c - //SEG328 [160] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 - //SEG329 [161] call prepareMEM - //SEG330 [136] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] - //SEG331 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG329 [160] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 + //SEG330 [161] call prepareMEM + //SEG331 [136] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG332 [136] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG332 setMEMtoFAC::@1 - //SEG333 asm { ldx$fe ldy$ff jsr$bbd4 } + //SEG333 setMEMtoFAC::@1 + //SEG334 asm { ldx$fe ldy$ff jsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 - //SEG334 setMEMtoFAC::@return - //SEG335 [163] return + //SEG335 setMEMtoFAC::@return + //SEG336 [163] return rts } -//SEG336 subFACfromARG +//SEG337 subFACfromARG // FAC = ARG-FAC // Set FAC to ARG minus FAC subFACfromARG: { - //SEG337 asm { jsr$b853 } + //SEG338 asm { jsr$b853 } jsr $b853 - //SEG338 subFACfromARG::@return - //SEG339 [165] return + //SEG339 subFACfromARG::@return + //SEG340 [165] return rts } -//SEG340 setARGtoFAC +//SEG341 setARGtoFAC // ARG = FAC // Set the ARG (floating point argument) to the value of the FAC (floating point accumulator) setARGtoFAC: { - //SEG341 asm { jsr$bc0f } + //SEG342 asm { jsr$bc0f } jsr $bc0f - //SEG342 setARGtoFAC::@return - //SEG343 [167] return + //SEG343 setARGtoFAC::@return + //SEG344 [167] return rts } -//SEG344 progress_init +//SEG345 progress_init // Initialize the PETSCII progress bar progress_init: { .label line = $a - //SEG345 progress_init::@return - //SEG346 [169] return + //SEG346 progress_init::@return + //SEG347 [169] return rts } -//SEG347 gen_sprites +//SEG348 gen_sprites gen_sprites: { .label spr = 8 .label i = 2 - //SEG348 [171] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] - //SEG349 [171] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 + //SEG349 [171] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] + //SEG350 [171] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 lda #sprites sta spr+1 - //SEG350 [171] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 + //SEG351 [171] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG351 [171] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] - //SEG352 [171] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy - //SEG353 [171] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy - //SEG354 gen_sprites::@1 + //SEG352 [171] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] + //SEG353 [171] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy + //SEG354 [171] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy + //SEG355 gen_sprites::@1 b1: - //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG356 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) -- vbuyy=pbuc1_derefidx_vbuz1 ldx i ldy cml,x - //SEG356 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 + //SEG357 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 lda spr sta gen_chargen_sprite.sprite lda spr+1 sta gen_chargen_sprite.sprite+1 - //SEG357 [174] call gen_chargen_sprite + //SEG358 [174] call gen_chargen_sprite jsr gen_chargen_sprite - //SEG358 gen_sprites::@3 - //SEG359 [175] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuz1=pbuz1_plus_vbuc1 + //SEG359 gen_sprites::@3 + //SEG360 [175] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuz1=pbuz1_plus_vbuc1 lda spr clc adc #$40 @@ -8165,18 +8159,18 @@ gen_sprites: { bcc !+ inc spr+1 !: - //SEG360 [176] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 + //SEG361 [176] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG361 [177] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG362 [177] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #7 bne b1 - //SEG362 gen_sprites::@return - //SEG363 [178] return + //SEG363 gen_sprites::@return + //SEG364 [178] return rts cml: .text "camelot" } -//SEG364 gen_chargen_sprite +//SEG365 gen_chargen_sprite // Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large) // - c is the character to generate // - sprite is a pointer to the position of the sprite to generate @@ -8190,19 +8184,19 @@ gen_chargen_sprite: { .label x = 5 .label y = 3 .label c = 6 - //SEG365 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuyy + //SEG366 [179] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuyy tya sta _0 lda #0 sta _0+1 - //SEG366 [180] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG367 [180] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG367 [181] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz1 + //SEG368 [181] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz1 clc lda chargen adc #CHARGEN sta chargen+1 - //SEG368 asm { sei } + //SEG369 asm { sei } sei - //SEG369 [183] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG370 [183] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG370 [184] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] - //SEG371 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy - //SEG372 [184] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 + //SEG371 [184] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] + //SEG372 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy + //SEG373 [184] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG373 [184] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] - //SEG374 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy - //SEG375 [184] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy - //SEG376 gen_chargen_sprite::@1 + //SEG374 [184] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] + //SEG375 [184] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy + //SEG376 [184] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy + //SEG377 gen_chargen_sprite::@1 b1: - //SEG377 [185] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG378 [185] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG378 [186] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] - //SEG379 [186] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 + //SEG379 [186] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] + //SEG380 [186] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG380 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy - //SEG381 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 + //SEG381 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy + //SEG382 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 tay - //SEG382 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 + //SEG383 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 sta s_gen - //SEG383 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy - //SEG384 [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] - //SEG385 [186] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy - //SEG386 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy - //SEG387 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy - //SEG388 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy - //SEG389 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy - //SEG390 gen_chargen_sprite::@2 + //SEG384 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy + //SEG385 [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] + //SEG386 [186] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy + //SEG387 [186] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy + //SEG388 [186] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy + //SEG389 [186] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy + //SEG390 [186] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy + //SEG391 gen_chargen_sprite::@2 b2: - //SEG391 [187] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG392 [187] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG392 [188] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_chargen_sprite::@3 -- vbuaa_eq_0_then_la1 + //SEG393 [188] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_chargen_sprite::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b6 - //SEG393 [189] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] - //SEG394 gen_chargen_sprite::@6 - //SEG395 [190] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] - //SEG396 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG394 [189] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] + //SEG395 gen_chargen_sprite::@6 + //SEG396 [190] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] + //SEG397 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #1 sta c jmp b3 - //SEG397 [190] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] + //SEG398 [190] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] b6: - //SEG398 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG399 [190] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG399 gen_chargen_sprite::@3 + //SEG400 gen_chargen_sprite::@3 b3: - //SEG400 [191] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] - //SEG401 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy - //SEG402 [191] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 + //SEG401 [191] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] + //SEG402 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy + //SEG403 [191] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 ldx #0 - //SEG403 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy - //SEG404 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy - //SEG405 [191] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] - //SEG406 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy - //SEG407 [191] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy - //SEG408 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy - //SEG409 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy - //SEG410 gen_chargen_sprite::@4 + //SEG404 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy + //SEG405 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy + //SEG406 [191] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] + //SEG407 [191] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy + //SEG408 [191] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy + //SEG409 [191] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy + //SEG410 [191] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy + //SEG411 gen_chargen_sprite::@4 b4: - //SEG411 [192] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG412 [192] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda s_gen asl - //SEG412 [193] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuaa_bor_vbuz2 + //SEG413 [193] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuaa_bor_vbuz2 ora c sta s_gen - //SEG413 [194] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuyy=_inc_vbuyy + //SEG414 [194] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuyy=_inc_vbuyy iny - //SEG414 [195] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@5 -- vbuyy_neq_vbuc1_then_la1 + //SEG415 [195] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@5 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b5 - //SEG415 gen_chargen_sprite::@7 - //SEG416 [196] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG416 gen_chargen_sprite::@7 + //SEG417 [196] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 ldy #0 sta (sprite),y - //SEG417 [197] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG418 [197] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 ldy #3 sta (sprite),y - //SEG418 [198] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG419 [198] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 ldy #6 sta (sprite),y - //SEG419 [199] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 + //SEG420 [199] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 inc sprite bne !+ inc sprite+1 !: - //SEG420 [200] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] - //SEG421 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy - //SEG422 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 + //SEG421 [200] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] + //SEG422 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy + //SEG423 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 ldy #0 - //SEG423 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 + //SEG424 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 tya sta s_gen - //SEG424 [200] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] - //SEG425 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy - //SEG426 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy - //SEG427 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy - //SEG428 gen_chargen_sprite::@5 + //SEG425 [200] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] + //SEG426 [200] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy + //SEG427 [200] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy + //SEG428 [200] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy + //SEG429 gen_chargen_sprite::@5 b5: - //SEG429 [201] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuxx=_inc_vbuxx + //SEG430 [201] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuxx=_inc_vbuxx inx - //SEG430 [202] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_chargen_sprite::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG431 [202] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_chargen_sprite::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne b4 - //SEG431 gen_chargen_sprite::@8 - //SEG432 [203] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG432 gen_chargen_sprite::@8 + //SEG433 [203] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG433 [204] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 + //SEG434 [204] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG434 [205] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG435 [205] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #8 bne b2 - //SEG435 gen_chargen_sprite::@9 - //SEG436 [206] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- pbuz1=pbuz1_plus_vbuc1 + //SEG436 gen_chargen_sprite::@9 + //SEG437 [206] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word/dword/signed dword) 6 -- pbuz1=pbuz1_plus_vbuc1 lda sprite clc adc #6 @@ -8342,91 +8336,91 @@ gen_chargen_sprite: { bcc !+ inc sprite+1 !: - //SEG437 [207] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 + //SEG438 [207] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG438 [208] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG439 [208] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1 - //SEG439 gen_chargen_sprite::@10 - //SEG440 [209] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG440 gen_chargen_sprite::@10 + //SEG441 [209] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG441 asm { cli } + //SEG442 asm { cli } cli - //SEG442 gen_chargen_sprite::@return - //SEG443 [211] return + //SEG443 gen_chargen_sprite::@return + //SEG444 [211] return rts } -//SEG444 place_sprites +//SEG445 place_sprites place_sprites: { .label sprites_ptr = SCREEN+$3f8 .label spr_id = 2 .label spr_x = 3 .label col = 4 - //SEG445 [212] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG446 [212] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_ENABLE - //SEG446 [213] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG447 [213] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_X - //SEG447 [214] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 + //SEG448 [214] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y - //SEG448 [215] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] - //SEG449 [215] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 + //SEG449 [215] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] + //SEG450 [215] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 lda #5 sta col - //SEG450 [215] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuxx=vbuc1 + //SEG451 [215] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG451 [215] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word/dword/signed dword) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 + //SEG452 [215] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word/dword/signed dword) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 lda #$3c sta spr_x - //SEG452 [215] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1 + //SEG453 [215] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1 ldy #0 - //SEG453 [215] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 + //SEG454 [215] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 lda #$ff&sprites/$40 sta spr_id - //SEG454 [215] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] - //SEG455 [215] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy - //SEG456 [215] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy - //SEG457 [215] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy - //SEG458 [215] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy - //SEG459 [215] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy - //SEG460 place_sprites::@1 + //SEG455 [215] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] + //SEG456 [215] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy + //SEG457 [215] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy + //SEG458 [215] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy + //SEG459 [215] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy + //SEG460 [215] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy + //SEG461 place_sprites::@1 b1: - //SEG461 [216] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG462 [216] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda spr_id sta sprites_ptr,y - //SEG462 [217] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 + //SEG463 [217] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 inc spr_id - //SEG463 [218] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG464 [218] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda spr_x sta SPRITES_XPOS,x - //SEG464 [219] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG465 [219] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word/dword/signed dword) 80 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$50 sta SPRITES_YPOS,x - //SEG465 [220] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG466 [220] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuyy=vbuz1 lda col sta SPRITES_COLS,y - //SEG466 [221] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- vbuz1=vbuz1_plus_vbuc1 + //SEG467 [221] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word/dword/signed dword) 32 -- vbuz1=vbuz1_plus_vbuc1 lda #$20 clc adc spr_x sta spr_x - //SEG467 [222] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word/dword/signed dword) 7^(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG468 [222] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word/dword/signed dword) 7^(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz1_bxor_vbuc1 lda col eor #7^5 sta col - //SEG468 [223] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuxx=_inc_vbuxx + //SEG469 [223] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuxx=_inc_vbuxx inx - //SEG469 [224] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuxx=_inc_vbuxx + //SEG470 [224] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuxx=_inc_vbuxx inx - //SEG470 [225] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuyy=_inc_vbuyy + //SEG471 [225] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuyy=_inc_vbuyy iny - //SEG471 [226] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto place_sprites::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG472 [226] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto place_sprites::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #7 bne b1 - //SEG472 place_sprites::@return - //SEG473 [227] return + //SEG473 place_sprites::@return + //SEG474 [227] return rts } sintab_x: .fill $dd, 0 diff --git a/src/test/ref/fibmem.log b/src/test/ref/fibmem.log index 421ddb773..5084f7e27 100644 --- a/src/test/ref/fibmem.log +++ b/src/test/ref/fibmem.log @@ -126,68 +126,69 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::$2 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label fibs = $1100 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label _2 = 3 .label i = 2 - //SEG9 [4] *((const byte[15]) fibs#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte[15]) fibs#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta fibs - //SEG10 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta fibs+1 - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz2 + //SEG17 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz2 ldy i lda fibs,y clc adc fibs+1,y sta _2 - //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG18 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuz1=vbuz2 lda _2 ldy i sta fibs+2,y - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG19 [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$f bcc b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [11] return + //SEG22 [11] return rts } @@ -210,60 +211,61 @@ Uplifting [main] best 365 combination reg byte x [ main::i#2 main::i#1 ] reg byt Uplifting [] best 365 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label fibs = $1100 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte[15]) fibs#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte[15]) fibs#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta fibs - //SEG10 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta fibs+1 - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx + //SEG17 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx lda fibs,x clc adc fibs+1,x - //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG18 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuxx=vbuaa sta fibs+2,x - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #$f bcc b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [11] return + //SEG22 [11] return rts } @@ -312,46 +314,47 @@ reg byte a [ main::$2 ] FINAL ASSEMBLER Score: 263 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label fibs = $1100 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte[15]) fibs#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte[15]) fibs#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta fibs - //SEG10 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta fibs+1 - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 main::@1 + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 main::@1 b1: - //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx + //SEG17 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx lda fibs,x clc adc fibs+1,x - //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG18 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuxx=vbuaa sta fibs+2,x - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #$f bcc b1 - //SEG20 main::@return - //SEG21 [11] return + //SEG21 main::@return + //SEG22 [11] return rts } diff --git a/src/test/ref/fillscreen.log b/src/test/ref/fillscreen.log index 21495c4c6..07e5e6d1d 100644 --- a/src/test/ref/fillscreen.log +++ b/src/test/ref/fillscreen.log @@ -198,90 +198,91 @@ Allocated zp ZP_BYTE:3 [ main::c#0 ] Allocated zp ZP_BYTE:4 [ fillscreen::c#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label c = 3 - //SEG9 [4] (byte) main::c#0 ← *((const byte*) SCREEN#0) -- vbuz1=_deref_pbuc1 + //SEG10 [4] (byte) main::c#0 ← *((const byte*) SCREEN#0) -- vbuz1=_deref_pbuc1 lda SCREEN sta c - //SEG10 [5] (byte) fillscreen::c#0 ← (byte) main::c#0 -- vbuz1=vbuz2 + //SEG11 [5] (byte) fillscreen::c#0 ← (byte) main::c#0 -- vbuz1=vbuz2 lda c sta fillscreen.c - //SEG11 [6] call fillscreen - //SEG12 [8] phi from main to fillscreen [phi:main->fillscreen] + //SEG12 [6] call fillscreen + //SEG13 [8] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [7] return + //SEG15 [7] return rts } -//SEG15 fillscreen +//SEG16 fillscreen fillscreen: { .label SCREEN2 = SCREEN+$100 .label SCREEN3 = SCREEN+$200 .label SCREEN4 = SCREEN+$3e8 .label c = 4 .label j = 2 - //SEG16 [9] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG17 [9] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG17 [9] phi (byte) fillscreen::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fillscreen->fillscreen::@1#0] -- vbuz1=vbuc1 + //SEG18 [9] phi (byte) fillscreen::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fillscreen->fillscreen::@1#0] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG18 [9] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG19 [9] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG19 [9] phi (byte) fillscreen::j#2 = (byte) fillscreen::j#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG20 [9] phi (byte) fillscreen::j#2 = (byte) fillscreen::j#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG20 fillscreen::@1 + //SEG21 fillscreen::@1 b1: - //SEG21 [10] *((const byte*) SCREEN#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG22 [10] *((const byte*) SCREEN#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy j sta SCREEN,y - //SEG22 [11] *((const byte*) fillscreen::SCREEN2#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG23 [11] *((const byte*) fillscreen::SCREEN2#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy j sta SCREEN2,y - //SEG23 [12] *((const byte*) fillscreen::SCREEN3#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG24 [12] *((const byte*) fillscreen::SCREEN3#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy j sta SCREEN3,y - //SEG24 [13] *((const byte*) fillscreen::SCREEN4#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG25 [13] *((const byte*) fillscreen::SCREEN4#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy j sta SCREEN4,y - //SEG25 [14] (byte) fillscreen::j#1 ← ++ (byte) fillscreen::j#2 -- vbuz1=_inc_vbuz1 + //SEG26 [14] (byte) fillscreen::j#1 ← ++ (byte) fillscreen::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG26 [15] if((byte) fillscreen::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fillscreen::@1 -- vbuz1_neq_0_then_la1 + //SEG27 [15] if((byte) fillscreen::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fillscreen::@1 -- vbuz1_neq_0_then_la1 lda j cmp #0 bne b1_from_b1 jmp breturn - //SEG27 fillscreen::@return + //SEG28 fillscreen::@return breturn: - //SEG28 [16] return + //SEG29 [16] return rts } @@ -300,74 +301,75 @@ Uplifting [main] best 412 combination reg byte a [ main::c#0 ] Uplifting [] best 412 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] (byte) main::c#0 ← *((const byte*) SCREEN#0) -- vbuaa=_deref_pbuc1 + //SEG10 [4] (byte) main::c#0 ← *((const byte*) SCREEN#0) -- vbuaa=_deref_pbuc1 lda SCREEN - //SEG10 [5] (byte) fillscreen::c#0 ← (byte) main::c#0 - //SEG11 [6] call fillscreen - //SEG12 [8] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [5] (byte) fillscreen::c#0 ← (byte) main::c#0 + //SEG12 [6] call fillscreen + //SEG13 [8] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [7] return + //SEG15 [7] return rts } -//SEG15 fillscreen +//SEG16 fillscreen fillscreen: { .label SCREEN2 = SCREEN+$100 .label SCREEN3 = SCREEN+$200 .label SCREEN4 = SCREEN+$3e8 - //SEG16 [9] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG17 [9] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG17 [9] phi (byte) fillscreen::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fillscreen->fillscreen::@1#0] -- vbuxx=vbuc1 + //SEG18 [9] phi (byte) fillscreen::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fillscreen->fillscreen::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG18 [9] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG19 [9] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG19 [9] phi (byte) fillscreen::j#2 = (byte) fillscreen::j#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG20 [9] phi (byte) fillscreen::j#2 = (byte) fillscreen::j#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG20 fillscreen::@1 + //SEG21 fillscreen::@1 b1: - //SEG21 [10] *((const byte*) SCREEN#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG22 [10] *((const byte*) SCREEN#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG22 [11] *((const byte*) fillscreen::SCREEN2#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG23 [11] *((const byte*) fillscreen::SCREEN2#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN2,x - //SEG23 [12] *((const byte*) fillscreen::SCREEN3#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG24 [12] *((const byte*) fillscreen::SCREEN3#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN3,x - //SEG24 [13] *((const byte*) fillscreen::SCREEN4#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG25 [13] *((const byte*) fillscreen::SCREEN4#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN4,x - //SEG25 [14] (byte) fillscreen::j#1 ← ++ (byte) fillscreen::j#2 -- vbuxx=_inc_vbuxx + //SEG26 [14] (byte) fillscreen::j#1 ← ++ (byte) fillscreen::j#2 -- vbuxx=_inc_vbuxx inx - //SEG26 [15] if((byte) fillscreen::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fillscreen::@1 -- vbuxx_neq_0_then_la1 + //SEG27 [15] if((byte) fillscreen::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fillscreen::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b1 jmp breturn - //SEG27 fillscreen::@return + //SEG28 fillscreen::@return breturn: - //SEG28 [16] return + //SEG29 [16] return rts } @@ -431,57 +433,58 @@ reg byte a [ fillscreen::c#0 ] FINAL ASSEMBLER Score: 307 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] (byte) main::c#0 ← *((const byte*) SCREEN#0) -- vbuaa=_deref_pbuc1 + //SEG10 [4] (byte) main::c#0 ← *((const byte*) SCREEN#0) -- vbuaa=_deref_pbuc1 lda SCREEN - //SEG10 [5] (byte) fillscreen::c#0 ← (byte) main::c#0 - //SEG11 [6] call fillscreen - //SEG12 [8] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [5] (byte) fillscreen::c#0 ← (byte) main::c#0 + //SEG12 [6] call fillscreen + //SEG13 [8] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen - //SEG13 main::@return - //SEG14 [7] return + //SEG14 main::@return + //SEG15 [7] return rts } -//SEG15 fillscreen +//SEG16 fillscreen fillscreen: { .label SCREEN2 = SCREEN+$100 .label SCREEN3 = SCREEN+$200 .label SCREEN4 = SCREEN+$3e8 - //SEG16 [9] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG17 [9] phi (byte) fillscreen::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fillscreen->fillscreen::@1#0] -- vbuxx=vbuc1 + //SEG17 [9] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG18 [9] phi (byte) fillscreen::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fillscreen->fillscreen::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG18 [9] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG19 [9] phi (byte) fillscreen::j#2 = (byte) fillscreen::j#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG20 fillscreen::@1 + //SEG19 [9] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG20 [9] phi (byte) fillscreen::j#2 = (byte) fillscreen::j#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG21 fillscreen::@1 b1: - //SEG21 [10] *((const byte*) SCREEN#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG22 [10] *((const byte*) SCREEN#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG22 [11] *((const byte*) fillscreen::SCREEN2#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG23 [11] *((const byte*) fillscreen::SCREEN2#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN2,x - //SEG23 [12] *((const byte*) fillscreen::SCREEN3#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG24 [12] *((const byte*) fillscreen::SCREEN3#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN3,x - //SEG24 [13] *((const byte*) fillscreen::SCREEN4#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG25 [13] *((const byte*) fillscreen::SCREEN4#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN4,x - //SEG25 [14] (byte) fillscreen::j#1 ← ++ (byte) fillscreen::j#2 -- vbuxx=_inc_vbuxx + //SEG26 [14] (byte) fillscreen::j#1 ← ++ (byte) fillscreen::j#2 -- vbuxx=_inc_vbuxx inx - //SEG26 [15] if((byte) fillscreen::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fillscreen::@1 -- vbuxx_neq_0_then_la1 + //SEG27 [15] if((byte) fillscreen::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fillscreen::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG27 fillscreen::@return - //SEG28 [16] return + //SEG28 fillscreen::@return + //SEG29 [16] return rts } diff --git a/src/test/ref/flipper-rex2.log b/src/test/ref/flipper-rex2.log index a6488b903..49585d483 100644 --- a/src/test/ref/flipper-rex2.log +++ b/src/test/ref/flipper-rex2.log @@ -692,152 +692,153 @@ Allocated zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ] Allocated zp ZP_BYTE:13 [ prepare::i#2 prepare::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] b4_from_bbegin: jmp b4 -//SEG4 @4 +//SEG5 @4 b4: -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG7 [3] phi from @4 to @end [phi:@4->@end] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label c = 2 - //SEG10 [5] call prepare - //SEG11 [42] phi from main to prepare [phi:main->prepare] + //SEG11 [5] call prepare + //SEG12 [42] phi from main to prepare [phi:main->prepare] prepare_from_main: jsr prepare - //SEG12 [6] phi from main main::@10 to main::@3 [phi:main/main::@10->main::@3] + //SEG13 [6] phi from main main::@10 to main::@3 [phi:main/main::@10->main::@3] b3_from_main: b3_from_b10: - //SEG13 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main/main::@10->main::@3#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main/main::@10->main::@3#0] -- vbuz1=vbuc1 lda #$19 sta c jmp b3 - //SEG14 [6] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG15 [6] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: jmp b3 - //SEG15 [6] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG16 [6] phi from main::@6 to main::@3 [phi:main::@6->main::@3] b3_from_b6: - //SEG16 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + //SEG17 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy jmp b3 - //SEG17 main::@3 + //SEG18 main::@3 b3: - //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b3_from_b3 jmp b4 - //SEG19 main::@4 + //SEG20 main::@4 b4: - //SEG20 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG21 [8] 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 b6 - //SEG21 main::@6 + //SEG22 main::@6 b6: - //SEG22 [9] (byte) main::c#1 ← -- (byte) main::c#4 -- vbuz1=_dec_vbuz1 + //SEG23 [9] (byte) main::c#1 ← -- (byte) main::c#4 -- vbuz1=_dec_vbuz1 dec c - //SEG23 [10] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuz1_neq_0_then_la1 + //SEG24 [10] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b3_from_b6 - //SEG24 [11] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG25 [11] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: jmp b7 - //SEG25 main::@7 + //SEG26 main::@7 b7: - //SEG26 [12] call flip - //SEG27 [26] phi from main::@7 to flip [phi:main::@7->flip] + //SEG27 [12] call flip + //SEG28 [26] phi from main::@7 to flip [phi:main::@7->flip] flip_from_b7: jsr flip - //SEG28 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] + //SEG29 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] b10_from_b7: jmp b10 - //SEG29 main::@10 + //SEG30 main::@10 b10: - //SEG30 [14] call plot - //SEG31 [15] phi from main::@10 to plot [phi:main::@10->plot] + //SEG31 [14] call plot + //SEG32 [15] phi from main::@10 to plot [phi:main::@10->plot] plot_from_b10: jsr plot jmp b3_from_b10 } -//SEG32 plot +//SEG33 plot // Plot buffer on screen plot: { .label i = 6 .label x = 7 .label line = 3 .label y = 5 - //SEG33 [16] phi from plot to plot::@1 [phi:plot->plot::@1] + //SEG34 [16] phi from plot to plot::@1 [phi:plot->plot::@1] b1_from_plot: - //SEG34 [16] phi (byte) plot::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:plot->plot::@1#0] -- vbuz1=vbuc1 + //SEG35 [16] phi (byte) plot::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:plot->plot::@1#0] -- vbuz1=vbuc1 lda #$10 sta y - //SEG35 [16] phi (byte*) plot::line#4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 12 [phi:plot->plot::@1#1] -- pbuz1=pbuc1 + //SEG36 [16] phi (byte*) plot::line#4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 12 [phi:plot->plot::@1#1] -- pbuz1=pbuc1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [16] phi (byte) plot::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot->plot::@1#2] -- vbuz1=vbuc1 + //SEG37 [16] phi (byte) plot::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot->plot::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG37 [16] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG38 [16] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] b1_from_b3: - //SEG38 [16] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy - //SEG39 [16] phi (byte*) plot::line#4 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy - //SEG40 [16] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy + //SEG39 [16] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG40 [16] phi (byte*) plot::line#4 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG41 [16] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy jmp b1 - //SEG41 plot::@1 + //SEG42 plot::@1 b1: - //SEG42 [17] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG43 [17] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] b2_from_b1: - //SEG43 [17] phi (byte) plot::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot::@1->plot::@2#0] -- vbuz1=vbuc1 + //SEG44 [17] phi (byte) plot::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot::@1->plot::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG44 [17] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy + //SEG45 [17] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 - //SEG45 [17] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG46 [17] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] b2_from_b2: - //SEG46 [17] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy - //SEG47 [17] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy + //SEG47 [17] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG48 [17] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy jmp b2 - //SEG48 plot::@2 + //SEG49 plot::@2 b2: - //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 + //SEG50 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 ldy i lda buffer1,y ldy x sta (line),y - //SEG50 [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 -- vbuz1=_inc_vbuz1 + //SEG51 [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG51 [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 -- vbuz1=_inc_vbuz1 + //SEG52 [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG52 [21] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG53 [21] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$10 bcc b2_from_b2 jmp b3 - //SEG53 plot::@3 + //SEG54 plot::@3 b3: - //SEG54 [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG55 [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -845,19 +846,19 @@ plot: { bcc !+ inc line+1 !: - //SEG55 [23] (byte) plot::y#1 ← -- (byte) plot::y#4 -- vbuz1=_dec_vbuz1 + //SEG56 [23] (byte) plot::y#1 ← -- (byte) plot::y#4 -- vbuz1=_dec_vbuz1 dec y - //SEG56 [24] if((byte) plot::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot::@1 -- vbuz1_neq_0_then_la1 + //SEG57 [24] if((byte) plot::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot::@1 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b1_from_b3 jmp breturn - //SEG57 plot::@return + //SEG58 plot::@return breturn: - //SEG58 [25] return + //SEG59 [25] return rts } -//SEG59 flip +//SEG60 flip // Flip buffer flip: { .label srcIdx = 9 @@ -865,129 +866,129 @@ flip: { .label c = $b .label r = 8 .label i = $c - //SEG60 [27] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG61 [27] phi (byte) flip::r#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 + //SEG62 [27] phi (byte) flip::r#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 lda #$10 sta r - //SEG62 [27] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word/dword/signed dword) 15 [phi:flip->flip::@1#1] -- vbuz1=vbuc1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word/dword/signed dword) 15 [phi:flip->flip::@1#1] -- vbuz1=vbuc1 lda #$f sta dstIdx - //SEG63 [27] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip->flip::@1#2] -- vbuz1=vbuc1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip->flip::@1#2] -- vbuz1=vbuc1 lda #0 sta srcIdx jmp b1 - //SEG64 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] b1_from_b4: - //SEG65 [27] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy - //SEG66 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy - //SEG67 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy + //SEG66 [27] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy jmp b1 - //SEG68 flip::@1 + //SEG69 flip::@1 b1: - //SEG69 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] b2_from_b1: - //SEG70 [28] phi (byte) flip::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 + //SEG71 [28] phi (byte) flip::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 lda #$10 sta c - //SEG71 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy - //SEG72 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy jmp b2 - //SEG73 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] b2_from_b2: - //SEG74 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy - //SEG75 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy - //SEG76 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy jmp b2 - //SEG77 flip::@2 + //SEG78 flip::@2 b2: - //SEG78 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG79 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy srcIdx lda buffer1,y ldy dstIdx sta buffer2,y - //SEG79 [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 -- vbuz1=_inc_vbuz1 + //SEG80 [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 -- vbuz1=_inc_vbuz1 inc srcIdx - //SEG80 [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz1_plus_vbuc1 + //SEG81 [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz1_plus_vbuc1 lda #$10 clc adc dstIdx sta dstIdx - //SEG81 [32] (byte) flip::c#1 ← -- (byte) flip::c#2 -- vbuz1=_dec_vbuz1 + //SEG82 [32] (byte) flip::c#1 ← -- (byte) flip::c#2 -- vbuz1=_dec_vbuz1 dec c - //SEG82 [33] if((byte) flip::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@2 -- vbuz1_neq_0_then_la1 + //SEG83 [33] if((byte) flip::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@2 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b2_from_b2 jmp b4 - //SEG83 flip::@4 + //SEG84 flip::@4 b4: - //SEG84 [34] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 -- vbuz1=_dec_vbuz1 + //SEG85 [34] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 -- vbuz1=_dec_vbuz1 dec dstIdx - //SEG85 [35] (byte) flip::r#1 ← -- (byte) flip::r#4 -- vbuz1=_dec_vbuz1 + //SEG86 [35] (byte) flip::r#1 ← -- (byte) flip::r#4 -- vbuz1=_dec_vbuz1 dec r - //SEG86 [36] if((byte) flip::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@1 -- vbuz1_neq_0_then_la1 + //SEG87 [36] if((byte) flip::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@1 -- vbuz1_neq_0_then_la1 lda r cmp #0 bne b1_from_b4 - //SEG87 [37] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG88 [37] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG88 [37] phi (byte) flip::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip::@4->flip::@3#0] -- vbuz1=vbuc1 + //SEG89 [37] phi (byte) flip::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip::@4->flip::@3#0] -- vbuz1=vbuc1 lda #0 sta i jmp b3 - //SEG89 [37] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG90 [37] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] b3_from_b3: - //SEG90 [37] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy + //SEG91 [37] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy jmp b3 - //SEG91 flip::@3 + //SEG92 flip::@3 b3: - //SEG92 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG93 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda buffer2,y sta buffer1,y - //SEG93 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 -- vbuz1=_inc_vbuz1 + //SEG94 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG94 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@3 -- vbuz1_neq_0_then_la1 + //SEG95 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@3 -- vbuz1_neq_0_then_la1 lda i cmp #0 bne b3_from_b3 jmp breturn - //SEG95 flip::@return + //SEG96 flip::@return breturn: - //SEG96 [41] return + //SEG97 [41] return rts } -//SEG97 prepare +//SEG98 prepare // Prepare buffer prepare: { .label i = $d - //SEG98 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG99 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG99 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:prepare->prepare::@1#0] -- vbuz1=vbuc1 + //SEG100 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:prepare->prepare::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG100 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG101 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] b1_from_b1: - //SEG101 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy + //SEG102 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy jmp b1 - //SEG102 prepare::@1 + //SEG103 prepare::@1 b1: - //SEG103 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG104 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta buffer1,y - //SEG104 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 -- vbuz1=_inc_vbuz1 + //SEG105 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG105 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto prepare::@1 -- vbuz1_neq_0_then_la1 + //SEG106 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto prepare::@1 -- vbuz1_neq_0_then_la1 lda i cmp #0 bne b1_from_b1 jmp breturn - //SEG106 prepare::@return + //SEG107 prepare::@return breturn: - //SEG107 [47] return + //SEG108 [47] return rts } buffer1: .fill $10*$10, 0 @@ -1054,142 +1055,143 @@ Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ plot::y#4 plot::y#1 flip::r#4 flip:: Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:5 [ flip::c#2 flip::c#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] b4_from_bbegin: jmp b4 -//SEG4 @4 +//SEG5 @4 b4: -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG7 [3] phi from @4 to @end [phi:@4->@end] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call prepare - //SEG11 [42] phi from main to prepare [phi:main->prepare] + //SEG11 [5] call prepare + //SEG12 [42] phi from main to prepare [phi:main->prepare] prepare_from_main: jsr prepare - //SEG12 [6] phi from main main::@10 to main::@3 [phi:main/main::@10->main::@3] + //SEG13 [6] phi from main main::@10 to main::@3 [phi:main/main::@10->main::@3] b3_from_main: b3_from_b10: - //SEG13 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main/main::@10->main::@3#0] -- vbuxx=vbuc1 + //SEG14 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main/main::@10->main::@3#0] -- vbuxx=vbuc1 ldx #$19 jmp b3 - //SEG14 [6] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG15 [6] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: jmp b3 - //SEG15 [6] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG16 [6] phi from main::@6 to main::@3 [phi:main::@6->main::@3] b3_from_b6: - //SEG16 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + //SEG17 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy jmp b3 - //SEG17 main::@3 + //SEG18 main::@3 b3: - //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b3_from_b3 jmp b4 - //SEG19 main::@4 + //SEG20 main::@4 b4: - //SEG20 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG21 [8] 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 b6 - //SEG21 main::@6 + //SEG22 main::@6 b6: - //SEG22 [9] (byte) main::c#1 ← -- (byte) main::c#4 -- vbuxx=_dec_vbuxx + //SEG23 [9] (byte) main::c#1 ← -- (byte) main::c#4 -- vbuxx=_dec_vbuxx dex - //SEG23 [10] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuxx_neq_0_then_la1 + //SEG24 [10] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b6 - //SEG24 [11] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG25 [11] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: jmp b7 - //SEG25 main::@7 + //SEG26 main::@7 b7: - //SEG26 [12] call flip - //SEG27 [26] phi from main::@7 to flip [phi:main::@7->flip] + //SEG27 [12] call flip + //SEG28 [26] phi from main::@7 to flip [phi:main::@7->flip] flip_from_b7: jsr flip - //SEG28 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] + //SEG29 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] b10_from_b7: jmp b10 - //SEG29 main::@10 + //SEG30 main::@10 b10: - //SEG30 [14] call plot - //SEG31 [15] phi from main::@10 to plot [phi:main::@10->plot] + //SEG31 [14] call plot + //SEG32 [15] phi from main::@10 to plot [phi:main::@10->plot] plot_from_b10: jsr plot jmp b3_from_b10 } -//SEG32 plot +//SEG33 plot // Plot buffer on screen plot: { .label line = 2 .label y = 4 - //SEG33 [16] phi from plot to plot::@1 [phi:plot->plot::@1] + //SEG34 [16] phi from plot to plot::@1 [phi:plot->plot::@1] b1_from_plot: - //SEG34 [16] phi (byte) plot::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:plot->plot::@1#0] -- vbuz1=vbuc1 + //SEG35 [16] phi (byte) plot::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:plot->plot::@1#0] -- vbuz1=vbuc1 lda #$10 sta y - //SEG35 [16] phi (byte*) plot::line#4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 12 [phi:plot->plot::@1#1] -- pbuz1=pbuc1 + //SEG36 [16] phi (byte*) plot::line#4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 12 [phi:plot->plot::@1#1] -- pbuz1=pbuc1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [16] phi (byte) plot::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot->plot::@1#2] -- vbuxx=vbuc1 + //SEG37 [16] phi (byte) plot::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot->plot::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG37 [16] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG38 [16] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] b1_from_b3: - //SEG38 [16] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy - //SEG39 [16] phi (byte*) plot::line#4 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy - //SEG40 [16] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy + //SEG39 [16] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG40 [16] phi (byte*) plot::line#4 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG41 [16] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy jmp b1 - //SEG41 plot::@1 + //SEG42 plot::@1 b1: - //SEG42 [17] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG43 [17] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] b2_from_b1: - //SEG43 [17] phi (byte) plot::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot::@1->plot::@2#0] -- vbuyy=vbuc1 + //SEG44 [17] phi (byte) plot::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot::@1->plot::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG44 [17] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy + //SEG45 [17] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 - //SEG45 [17] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG46 [17] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] b2_from_b2: - //SEG46 [17] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy - //SEG47 [17] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy + //SEG47 [17] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG48 [17] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy jmp b2 - //SEG48 plot::@2 + //SEG49 plot::@2 b2: - //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx + //SEG50 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda buffer1,x sta (line),y - //SEG50 [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 -- vbuxx=_inc_vbuxx + //SEG51 [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 -- vbuxx=_inc_vbuxx inx - //SEG51 [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 -- vbuyy=_inc_vbuyy + //SEG52 [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 -- vbuyy=_inc_vbuyy iny - //SEG52 [21] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 -- vbuyy_lt_vbuc1_then_la1 + //SEG53 [21] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 -- vbuyy_lt_vbuc1_then_la1 cpy #$10 bcc b2_from_b2 jmp b3 - //SEG53 plot::@3 + //SEG54 plot::@3 b3: - //SEG54 [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG55 [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -1197,135 +1199,135 @@ plot: { bcc !+ inc line+1 !: - //SEG55 [23] (byte) plot::y#1 ← -- (byte) plot::y#4 -- vbuz1=_dec_vbuz1 + //SEG56 [23] (byte) plot::y#1 ← -- (byte) plot::y#4 -- vbuz1=_dec_vbuz1 dec y - //SEG56 [24] if((byte) plot::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot::@1 -- vbuz1_neq_0_then_la1 + //SEG57 [24] if((byte) plot::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot::@1 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b1_from_b3 jmp breturn - //SEG57 plot::@return + //SEG58 plot::@return breturn: - //SEG58 [25] return + //SEG59 [25] return rts } -//SEG59 flip +//SEG60 flip // Flip buffer flip: { .label c = 5 .label r = 4 - //SEG60 [27] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG61 [27] phi (byte) flip::r#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 + //SEG62 [27] phi (byte) flip::r#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 lda #$10 sta r - //SEG62 [27] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word/dword/signed dword) 15 [phi:flip->flip::@1#1] -- vbuxx=vbuc1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word/dword/signed dword) 15 [phi:flip->flip::@1#1] -- vbuxx=vbuc1 ldx #$f - //SEG63 [27] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip->flip::@1#2] -- vbuyy=vbuc1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip->flip::@1#2] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG64 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] b1_from_b4: - //SEG65 [27] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy - //SEG66 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy - //SEG67 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy + //SEG66 [27] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy jmp b1 - //SEG68 flip::@1 + //SEG69 flip::@1 b1: - //SEG69 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] b2_from_b1: - //SEG70 [28] phi (byte) flip::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 + //SEG71 [28] phi (byte) flip::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 lda #$10 sta c - //SEG71 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy - //SEG72 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy jmp b2 - //SEG73 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] b2_from_b2: - //SEG74 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy - //SEG75 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy - //SEG76 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy jmp b2 - //SEG77 flip::@2 + //SEG78 flip::@2 b2: - //SEG78 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG79 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda buffer1,y sta buffer2,x - //SEG79 [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 -- vbuyy=_inc_vbuyy + //SEG80 [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 -- vbuyy=_inc_vbuyy iny - //SEG80 [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuxx=vbuxx_plus_vbuc1 + //SEG81 [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #$10 tax - //SEG81 [32] (byte) flip::c#1 ← -- (byte) flip::c#2 -- vbuz1=_dec_vbuz1 + //SEG82 [32] (byte) flip::c#1 ← -- (byte) flip::c#2 -- vbuz1=_dec_vbuz1 dec c - //SEG82 [33] if((byte) flip::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@2 -- vbuz1_neq_0_then_la1 + //SEG83 [33] if((byte) flip::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@2 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b2_from_b2 jmp b4 - //SEG83 flip::@4 + //SEG84 flip::@4 b4: - //SEG84 [34] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 -- vbuxx=_dec_vbuxx + //SEG85 [34] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 -- vbuxx=_dec_vbuxx dex - //SEG85 [35] (byte) flip::r#1 ← -- (byte) flip::r#4 -- vbuz1=_dec_vbuz1 + //SEG86 [35] (byte) flip::r#1 ← -- (byte) flip::r#4 -- vbuz1=_dec_vbuz1 dec r - //SEG86 [36] if((byte) flip::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@1 -- vbuz1_neq_0_then_la1 + //SEG87 [36] if((byte) flip::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@1 -- vbuz1_neq_0_then_la1 lda r cmp #0 bne b1_from_b4 - //SEG87 [37] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG88 [37] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG88 [37] phi (byte) flip::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip::@4->flip::@3#0] -- vbuxx=vbuc1 + //SEG89 [37] phi (byte) flip::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip::@4->flip::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG89 [37] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG90 [37] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] b3_from_b3: - //SEG90 [37] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy + //SEG91 [37] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy jmp b3 - //SEG91 flip::@3 + //SEG92 flip::@3 b3: - //SEG92 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG93 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda buffer2,x sta buffer1,x - //SEG93 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 -- vbuxx=_inc_vbuxx + //SEG94 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 -- vbuxx=_inc_vbuxx inx - //SEG94 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@3 -- vbuxx_neq_0_then_la1 + //SEG95 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b3 jmp breturn - //SEG95 flip::@return + //SEG96 flip::@return breturn: - //SEG96 [41] return + //SEG97 [41] return rts } -//SEG97 prepare +//SEG98 prepare // Prepare buffer prepare: { - //SEG98 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG99 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG99 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:prepare->prepare::@1#0] -- vbuxx=vbuc1 + //SEG100 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:prepare->prepare::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG100 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG101 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] b1_from_b1: - //SEG101 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy + //SEG102 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy jmp b1 - //SEG102 prepare::@1 + //SEG103 prepare::@1 b1: - //SEG103 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG104 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta buffer1,x - //SEG104 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 -- vbuxx=_inc_vbuxx + //SEG105 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 -- vbuxx=_inc_vbuxx inx - //SEG105 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto prepare::@1 -- vbuxx_neq_0_then_la1 + //SEG106 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto prepare::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b1 jmp breturn - //SEG106 prepare::@return + //SEG107 prepare::@return breturn: - //SEG107 [47] return + //SEG108 [47] return rts } buffer1: .fill $10*$10, 0 @@ -1500,105 +1502,106 @@ reg byte x [ prepare::i#2 prepare::i#1 ] FINAL ASSEMBLER Score: 86694 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] -//SEG4 @4 -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] -//SEG7 [3] phi from @4 to @end [phi:@4->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG5 @4 +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call prepare - //SEG11 [42] phi from main to prepare [phi:main->prepare] + //SEG11 [5] call prepare + //SEG12 [42] phi from main to prepare [phi:main->prepare] jsr prepare - //SEG12 [6] phi from main main::@10 to main::@3 [phi:main/main::@10->main::@3] + //SEG13 [6] phi from main main::@10 to main::@3 [phi:main/main::@10->main::@3] b1: - //SEG13 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main/main::@10->main::@3#0] -- vbuxx=vbuc1 + //SEG14 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main/main::@10->main::@3#0] -- vbuxx=vbuc1 ldx #$19 - //SEG14 [6] phi from main::@3 to main::@3 [phi:main::@3->main::@3] - //SEG15 [6] phi from main::@6 to main::@3 [phi:main::@6->main::@3] - //SEG16 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy - //SEG17 main::@3 + //SEG15 [6] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG16 [6] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG17 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy + //SEG18 main::@3 b3: - //SEG18 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b3 - //SEG19 main::@4 + //SEG20 main::@4 b4: - //SEG20 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG21 [8] 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 - //SEG21 main::@6 - //SEG22 [9] (byte) main::c#1 ← -- (byte) main::c#4 -- vbuxx=_dec_vbuxx + //SEG22 main::@6 + //SEG23 [9] (byte) main::c#1 ← -- (byte) main::c#4 -- vbuxx=_dec_vbuxx dex - //SEG23 [10] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuxx_neq_0_then_la1 + //SEG24 [10] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG24 [11] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - //SEG25 main::@7 - //SEG26 [12] call flip - //SEG27 [26] phi from main::@7 to flip [phi:main::@7->flip] + //SEG25 [11] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG26 main::@7 + //SEG27 [12] call flip + //SEG28 [26] phi from main::@7 to flip [phi:main::@7->flip] jsr flip - //SEG28 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] - //SEG29 main::@10 - //SEG30 [14] call plot - //SEG31 [15] phi from main::@10 to plot [phi:main::@10->plot] + //SEG29 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] + //SEG30 main::@10 + //SEG31 [14] call plot + //SEG32 [15] phi from main::@10 to plot [phi:main::@10->plot] jsr plot jmp b1 } -//SEG32 plot +//SEG33 plot // Plot buffer on screen plot: { .label line = 2 .label y = 4 - //SEG33 [16] phi from plot to plot::@1 [phi:plot->plot::@1] - //SEG34 [16] phi (byte) plot::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:plot->plot::@1#0] -- vbuz1=vbuc1 + //SEG34 [16] phi from plot to plot::@1 [phi:plot->plot::@1] + //SEG35 [16] phi (byte) plot::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:plot->plot::@1#0] -- vbuz1=vbuc1 lda #$10 sta y - //SEG35 [16] phi (byte*) plot::line#4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 12 [phi:plot->plot::@1#1] -- pbuz1=pbuc1 + //SEG36 [16] phi (byte*) plot::line#4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 12 [phi:plot->plot::@1#1] -- pbuz1=pbuc1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [16] phi (byte) plot::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot->plot::@1#2] -- vbuxx=vbuc1 + //SEG37 [16] phi (byte) plot::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot->plot::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG37 [16] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] - //SEG38 [16] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy - //SEG39 [16] phi (byte*) plot::line#4 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy - //SEG40 [16] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy - //SEG41 plot::@1 + //SEG38 [16] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG39 [16] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG40 [16] phi (byte*) plot::line#4 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG41 [16] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy + //SEG42 plot::@1 b1: - //SEG42 [17] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] - //SEG43 [17] phi (byte) plot::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot::@1->plot::@2#0] -- vbuyy=vbuc1 + //SEG43 [17] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG44 [17] phi (byte) plot::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plot::@1->plot::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG44 [17] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy - //SEG45 [17] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] - //SEG46 [17] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy - //SEG47 [17] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy - //SEG48 plot::@2 + //SEG45 [17] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy + //SEG46 [17] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG47 [17] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG48 [17] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy + //SEG49 plot::@2 b2: - //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx + //SEG50 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda buffer1,x sta (line),y - //SEG50 [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 -- vbuxx=_inc_vbuxx + //SEG51 [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 -- vbuxx=_inc_vbuxx inx - //SEG51 [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 -- vbuyy=_inc_vbuyy + //SEG52 [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 -- vbuyy=_inc_vbuyy iny - //SEG52 [21] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 -- vbuyy_lt_vbuc1_then_la1 + //SEG53 [21] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 -- vbuyy_lt_vbuc1_then_la1 cpy #$10 bcc b2 - //SEG53 plot::@3 - //SEG54 [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG54 plot::@3 + //SEG55 [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -1606,111 +1609,111 @@ plot: { bcc !+ inc line+1 !: - //SEG55 [23] (byte) plot::y#1 ← -- (byte) plot::y#4 -- vbuz1=_dec_vbuz1 + //SEG56 [23] (byte) plot::y#1 ← -- (byte) plot::y#4 -- vbuz1=_dec_vbuz1 dec y - //SEG56 [24] if((byte) plot::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot::@1 -- vbuz1_neq_0_then_la1 + //SEG57 [24] if((byte) plot::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot::@1 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b1 - //SEG57 plot::@return - //SEG58 [25] return + //SEG58 plot::@return + //SEG59 [25] return rts } -//SEG59 flip +//SEG60 flip // Flip buffer flip: { .label c = 5 .label r = 4 - //SEG60 [27] phi from flip to flip::@1 [phi:flip->flip::@1] - //SEG61 [27] phi (byte) flip::r#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG62 [27] phi (byte) flip::r#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 lda #$10 sta r - //SEG62 [27] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word/dword/signed dword) 15 [phi:flip->flip::@1#1] -- vbuxx=vbuc1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word/dword/signed dword) 15 [phi:flip->flip::@1#1] -- vbuxx=vbuc1 ldx #$f - //SEG63 [27] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip->flip::@1#2] -- vbuyy=vbuc1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip->flip::@1#2] -- vbuyy=vbuc1 ldy #0 - //SEG64 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] - //SEG65 [27] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy - //SEG66 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy - //SEG67 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy - //SEG68 flip::@1 + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG66 [27] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy + //SEG69 flip::@1 b1: - //SEG69 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] - //SEG70 [28] phi (byte) flip::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG71 [28] phi (byte) flip::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 lda #$10 sta c - //SEG71 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy - //SEG72 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy - //SEG73 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] - //SEG74 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy - //SEG75 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy - //SEG76 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy - //SEG77 flip::@2 + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy + //SEG78 flip::@2 b2: - //SEG78 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG79 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda buffer1,y sta buffer2,x - //SEG79 [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 -- vbuyy=_inc_vbuyy + //SEG80 [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 -- vbuyy=_inc_vbuyy iny - //SEG80 [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuxx=vbuxx_plus_vbuc1 + //SEG81 [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #$10 tax - //SEG81 [32] (byte) flip::c#1 ← -- (byte) flip::c#2 -- vbuz1=_dec_vbuz1 + //SEG82 [32] (byte) flip::c#1 ← -- (byte) flip::c#2 -- vbuz1=_dec_vbuz1 dec c - //SEG82 [33] if((byte) flip::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@2 -- vbuz1_neq_0_then_la1 + //SEG83 [33] if((byte) flip::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@2 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b2 - //SEG83 flip::@4 - //SEG84 [34] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 -- vbuxx=_dec_vbuxx + //SEG84 flip::@4 + //SEG85 [34] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 -- vbuxx=_dec_vbuxx dex - //SEG85 [35] (byte) flip::r#1 ← -- (byte) flip::r#4 -- vbuz1=_dec_vbuz1 + //SEG86 [35] (byte) flip::r#1 ← -- (byte) flip::r#4 -- vbuz1=_dec_vbuz1 dec r - //SEG86 [36] if((byte) flip::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@1 -- vbuz1_neq_0_then_la1 + //SEG87 [36] if((byte) flip::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@1 -- vbuz1_neq_0_then_la1 lda r cmp #0 bne b1 - //SEG87 [37] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] - //SEG88 [37] phi (byte) flip::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip::@4->flip::@3#0] -- vbuxx=vbuc1 + //SEG88 [37] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG89 [37] phi (byte) flip::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:flip::@4->flip::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG89 [37] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] - //SEG90 [37] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy - //SEG91 flip::@3 + //SEG90 [37] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG91 [37] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy + //SEG92 flip::@3 b3: - //SEG92 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG93 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda buffer2,x sta buffer1,x - //SEG93 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 -- vbuxx=_inc_vbuxx + //SEG94 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 -- vbuxx=_inc_vbuxx inx - //SEG94 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@3 -- vbuxx_neq_0_then_la1 + //SEG95 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG95 flip::@return - //SEG96 [41] return + //SEG96 flip::@return + //SEG97 [41] return rts } -//SEG97 prepare +//SEG98 prepare // Prepare buffer prepare: { - //SEG98 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] - //SEG99 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:prepare->prepare::@1#0] -- vbuxx=vbuc1 + //SEG99 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG100 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:prepare->prepare::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG100 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] - //SEG101 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy - //SEG102 prepare::@1 + //SEG101 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG102 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy + //SEG103 prepare::@1 b1: - //SEG103 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG104 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta buffer1,x - //SEG104 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 -- vbuxx=_inc_vbuxx + //SEG105 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 -- vbuxx=_inc_vbuxx inx - //SEG105 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto prepare::@1 -- vbuxx_neq_0_then_la1 + //SEG106 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto prepare::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG106 prepare::@return - //SEG107 [47] return + //SEG107 prepare::@return + //SEG108 [47] return rts } buffer1: .fill $10*$10, 0 diff --git a/src/test/ref/forclassicmin.asm b/src/test/ref/forclassicmin.asm index 9ef2d1716..1d89681c6 100644 --- a/src/test/ref/forclassicmin.asm +++ b/src/test/ref/forclassicmin.asm @@ -1,3 +1,4 @@ +// Minimal classic for() loop .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/forclassicmin.log b/src/test/ref/forclassicmin.log index 3b2087fb3..7a0cf60fd 100644 --- a/src/test/ref/forclassicmin.log +++ b/src/test/ref/forclassicmin.log @@ -119,57 +119,59 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal classic for() loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta SCREEN,y - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$64 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } @@ -184,53 +186,55 @@ Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 263 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal classic for() loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$64 bne b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } @@ -278,38 +282,40 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 161 -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal classic for() loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$64 bne b1 - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts } diff --git a/src/test/ref/forincrementassign.asm b/src/test/ref/forincrementassign.asm index 239a56936..52c0af543 100644 --- a/src/test/ref/forincrementassign.asm +++ b/src/test/ref/forincrementassign.asm @@ -1,3 +1,5 @@ +// Classic for() does not allow assignment as increment, eg. for(byte i=0;i<40;i=i+2) {} +// The following should give a program rendering a char on every second char of the first line - but results in a syntax error .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/forincrementassign.log b/src/test/ref/forincrementassign.log index 5b9fb58c8..093393436 100644 --- a/src/test/ref/forincrementassign.log +++ b/src/test/ref/forincrementassign.log @@ -120,60 +120,63 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Classic for() does not allow assignment as increment, eg. for(byte i=0;i<40;i=i+2) {} +// The following should give a program rendering a char on every second char of the first line - but results in a syntax error +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta SCREEN,y - //SEG16 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG17 [7] (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 - //SEG17 [8] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$28 bcc b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } @@ -188,54 +191,57 @@ Uplifting [main] best 283 combination reg byte a [ main::i#2 main::i#1 ] Uplifting [] best 283 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Classic for() does not allow assignment as increment, eg. for(byte i=0;i<40;i=i+2) {} +// The following should give a program rendering a char on every second char of the first line - but results in a syntax error +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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] -- vbuaa=vbuc1 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 lda #0 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuaa=vbuaa + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuaa=vbuaa tax sta SCREEN,x - //SEG16 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_plus_2 + //SEG17 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_plus_2 clc adc #2 - //SEG17 [8] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuaa_lt_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuaa_lt_vbuc1_then_la1 cmp #$28 bcc b1_from_b1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } @@ -283,39 +289,42 @@ reg byte a [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 181 -//SEG0 Basic Upstart +//SEG0 File Comments +// Classic for() does not allow assignment as increment, eg. for(byte i=0;i<40;i=i+2) {} +// The following should give a program rendering a char on every second char of the first line - but results in a syntax error +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 lda #0 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuaa=vbuaa + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuaa=vbuaa tax sta SCREEN,x - //SEG16 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_plus_2 + //SEG17 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_plus_2 clc adc #2 - //SEG17 [8] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuaa_lt_vbuc1_then_la1 + //SEG18 [8] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuaa_lt_vbuc1_then_la1 cmp #$28 bcc b1 - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts } diff --git a/src/test/ref/forrangedwords.log b/src/test/ref/forrangedwords.log index 58210ad47..bfcc920ca 100644 --- a/src/test/ref/forrangedwords.log +++ b/src/test/ref/forrangedwords.log @@ -201,28 +201,29 @@ Allocated zp ZP_BYTE:8 [ main::$4 ] Allocated zp ZP_BYTE:9 [ main::$5 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label SCREEN = $400 .label _0 = 6 @@ -231,74 +232,74 @@ main: { .label _5 = 9 .label w = 2 .label sw = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (word) main::w#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG12 [5] phi (word) main::w#2 = (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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← < (word) main::w#2 -- vbuz1=_lo_vwuz2 + //SEG16 [6] (byte~) main::$0 ← < (word) main::w#2 -- vbuz1=_lo_vwuz2 lda w sta _0 - //SEG16 [7] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 + //SEG17 [7] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 lda _0 sta SCREEN - //SEG17 [8] (byte~) main::$1 ← > (word) main::w#2 -- vbuz1=_hi_vwuz2 + //SEG18 [8] (byte~) main::$1 ← > (word) main::w#2 -- vbuz1=_hi_vwuz2 lda w+1 sta _1 - //SEG18 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 + //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 lda _1 sta SCREEN+1 - //SEG19 [10] (word) main::w#1 ← ++ (word) main::w#2 -- vwuz1=_inc_vwuz1 + //SEG20 [10] (word) main::w#1 ← ++ (word) main::w#2 -- vwuz1=_inc_vwuz1 inc w bne !+ inc w+1 !: - //SEG20 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vwuz1_neq_0_then_la1 + //SEG21 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vwuz1_neq_0_then_la1 lda w bne b1_from_b1 lda w+1 bne b1_from_b1 - //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 + //SEG23 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 lda #<-$7fff sta sw lda #>-$7fff sta sw+1 jmp b2 - //SEG23 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG24 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG24 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG25 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG25 main::@2 + //SEG26 main::@2 b2: - //SEG26 [13] (byte~) main::$4 ← < (signed word) main::sw#2 -- vbuz1=_lo_vwsz2 + //SEG27 [13] (byte~) main::$4 ← < (signed word) main::sw#2 -- vbuz1=_lo_vwsz2 lda sw sta _4 - //SEG27 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuz1 + //SEG28 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuz1 lda _4 sta SCREEN+3 - //SEG28 [15] (byte~) main::$5 ← > (signed word) main::sw#2 -- vbuz1=_hi_vwsz2 + //SEG29 [15] (byte~) main::$5 ← > (signed word) main::sw#2 -- vbuz1=_hi_vwsz2 lda sw+1 sta _5 - //SEG29 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 -- _deref_pbuc1=vbuz1 + //SEG30 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 -- _deref_pbuc1=vbuz1 lda _5 sta SCREEN+4 - //SEG30 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 -- vwsz1=_inc_vwsz1 + //SEG31 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 -- vwsz1=_inc_vwsz1 inc sw bne !+ inc sw+1 !: - //SEG31 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 -- vwsz1_neq_vwuc1_then_la1 + //SEG32 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 -- vwsz1_neq_vwuc1_then_la1 lda sw+1 cmp #>$7fff bne b2_from_b2 @@ -306,9 +307,9 @@ main: { cmp #<$7fff bne b2_from_b2 jmp breturn - //SEG32 main::@return + //SEG33 main::@return breturn: - //SEG33 [19] return + //SEG34 [19] return rts } @@ -336,92 +337,93 @@ Uplifting [] best 1158 combination Coalescing zero page register [ zp ZP_WORD:2 [ main::w#2 main::w#1 ] ] with [ zp ZP_WORD:4 [ main::sw#2 main::sw#1 ] ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label SCREEN = $400 .label w = 2 .label sw = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (word) main::w#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG12 [5] phi (word) main::w#2 = (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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← < (word) main::w#2 -- vbuaa=_lo_vwuz1 + //SEG16 [6] (byte~) main::$0 ← < (word) main::w#2 -- vbuaa=_lo_vwuz1 lda w - //SEG16 [7] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + //SEG17 [7] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa sta SCREEN - //SEG17 [8] (byte~) main::$1 ← > (word) main::w#2 -- vbuaa=_hi_vwuz1 + //SEG18 [8] (byte~) main::$1 ← > (word) main::w#2 -- vbuaa=_hi_vwuz1 lda w+1 - //SEG18 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa sta SCREEN+1 - //SEG19 [10] (word) main::w#1 ← ++ (word) main::w#2 -- vwuz1=_inc_vwuz1 + //SEG20 [10] (word) main::w#1 ← ++ (word) main::w#2 -- vwuz1=_inc_vwuz1 inc w bne !+ inc w+1 !: - //SEG20 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vwuz1_neq_0_then_la1 + //SEG21 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vwuz1_neq_0_then_la1 lda w bne b1_from_b1 lda w+1 bne b1_from_b1 - //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 + //SEG23 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 lda #<-$7fff sta sw lda #>-$7fff sta sw+1 jmp b2 - //SEG23 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG24 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG24 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG25 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG25 main::@2 + //SEG26 main::@2 b2: - //SEG26 [13] (byte~) main::$4 ← < (signed word) main::sw#2 -- vbuaa=_lo_vwsz1 + //SEG27 [13] (byte~) main::$4 ← < (signed word) main::sw#2 -- vbuaa=_lo_vwsz1 lda sw - //SEG27 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa + //SEG28 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa sta SCREEN+3 - //SEG28 [15] (byte~) main::$5 ← > (signed word) main::sw#2 -- vbuaa=_hi_vwsz1 + //SEG29 [15] (byte~) main::$5 ← > (signed word) main::sw#2 -- vbuaa=_hi_vwsz1 lda sw+1 - //SEG29 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 -- _deref_pbuc1=vbuaa + //SEG30 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 -- _deref_pbuc1=vbuaa sta SCREEN+4 - //SEG30 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 -- vwsz1=_inc_vwsz1 + //SEG31 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 -- vwsz1=_inc_vwsz1 inc sw bne !+ inc sw+1 !: - //SEG31 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 -- vwsz1_neq_vwuc1_then_la1 + //SEG32 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 -- vwsz1_neq_vwuc1_then_la1 lda sw+1 cmp #>$7fff bne b2_from_b2 @@ -429,9 +431,9 @@ main: { cmp #<$7fff bne b2_from_b2 jmp breturn - //SEG32 main::@return + //SEG33 main::@return breturn: - //SEG33 [19] return + //SEG34 [19] return rts } @@ -500,82 +502,83 @@ reg byte a [ main::$5 ] FINAL ASSEMBLER Score: 976 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 .label w = 2 .label sw = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (word) main::w#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (word) main::w#2 = (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 from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← < (word) main::w#2 -- vbuaa=_lo_vwuz1 + //SEG16 [6] (byte~) main::$0 ← < (word) main::w#2 -- vbuaa=_lo_vwuz1 lda w - //SEG16 [7] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + //SEG17 [7] *((const byte*) main::SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa sta SCREEN - //SEG17 [8] (byte~) main::$1 ← > (word) main::w#2 -- vbuaa=_hi_vwuz1 + //SEG18 [8] (byte~) main::$1 ← > (word) main::w#2 -- vbuaa=_hi_vwuz1 lda w+1 - //SEG18 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa sta SCREEN+1 - //SEG19 [10] (word) main::w#1 ← ++ (word) main::w#2 -- vwuz1=_inc_vwuz1 + //SEG20 [10] (word) main::w#1 ← ++ (word) main::w#2 -- vwuz1=_inc_vwuz1 inc w bne !+ inc w+1 !: - //SEG20 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vwuz1_neq_0_then_la1 + //SEG21 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vwuz1_neq_0_then_la1 lda w bne b1 lda w+1 bne b1 - //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG22 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 + //SEG22 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG23 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 lda #<-$7fff sta sw lda #>-$7fff sta sw+1 - //SEG23 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG24 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG25 main::@2 + //SEG24 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG25 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG26 main::@2 b2: - //SEG26 [13] (byte~) main::$4 ← < (signed word) main::sw#2 -- vbuaa=_lo_vwsz1 + //SEG27 [13] (byte~) main::$4 ← < (signed word) main::sw#2 -- vbuaa=_lo_vwsz1 lda sw - //SEG27 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa + //SEG28 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 -- _deref_pbuc1=vbuaa sta SCREEN+3 - //SEG28 [15] (byte~) main::$5 ← > (signed word) main::sw#2 -- vbuaa=_hi_vwsz1 + //SEG29 [15] (byte~) main::$5 ← > (signed word) main::sw#2 -- vbuaa=_hi_vwsz1 lda sw+1 - //SEG29 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 -- _deref_pbuc1=vbuaa + //SEG30 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 -- _deref_pbuc1=vbuaa sta SCREEN+4 - //SEG30 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 -- vwsz1=_inc_vwsz1 + //SEG31 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 -- vwsz1=_inc_vwsz1 inc sw bne !+ inc sw+1 !: - //SEG31 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 -- vwsz1_neq_vwuc1_then_la1 + //SEG32 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 -- vwsz1_neq_vwuc1_then_la1 lda sw+1 cmp #>$7fff bne b2 lda sw cmp #<$7fff bne b2 - //SEG32 main::@return - //SEG33 [19] return + //SEG33 main::@return + //SEG34 [19] return rts } diff --git a/src/test/ref/forrangemin.asm b/src/test/ref/forrangemin.asm index 77d2ba557..42b6f5191 100644 --- a/src/test/ref/forrangemin.asm +++ b/src/test/ref/forrangemin.asm @@ -1,3 +1,4 @@ +// Minimal range based for() loop .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/forrangemin.log b/src/test/ref/forrangemin.log index 4135d3cda..3c941afcb 100644 --- a/src/test/ref/forrangemin.log +++ b/src/test/ref/forrangemin.log @@ -181,81 +181,83 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal range based for() loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN1 = $400 .label SCREEN2 = $500 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 .label j = 3 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG16 [6] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta SCREEN1,y - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_neq_0_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_neq_0_then_la1 lda i cmp #0 bne b1_from_b1 - //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG19 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG20 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #$64 sta j jmp b2 - //SEG20 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG21 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG21 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG22 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG24 [10] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy j tya sta SCREEN2,y - //SEG24 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 + //SEG25 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 dec j - //SEG25 [12] if((byte) main::j#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG26 [12] if((byte) main::j#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$ff bne b2_from_b2 jmp breturn - //SEG26 main::@return + //SEG27 main::@return breturn: - //SEG27 [13] return + //SEG28 [13] return rts } @@ -271,73 +273,75 @@ Uplifting [main] best 478 combination reg byte x [ main::i#2 main::i#1 ] reg byt Uplifting [] best 478 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal range based for() loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN1 = $400 .label SCREEN2 = $500 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN1,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b1 - //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG19 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG20 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #$64 jmp b2 - //SEG20 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG21 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG21 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG22 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG24 [10] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN2,x - //SEG24 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuxx=_dec_vbuxx + //SEG25 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuxx=_dec_vbuxx dex - //SEG25 [12] if((byte) main::j#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG26 [12] if((byte) main::j#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b2_from_b2 jmp breturn - //SEG26 main::@return + //SEG27 main::@return breturn: - //SEG27 [13] return + //SEG28 [13] return rts } @@ -397,54 +401,56 @@ reg byte x [ main::j#2 main::j#1 ] FINAL ASSEMBLER Score: 316 -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal range based for() loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN1 = $400 .label SCREEN2 = $500 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN1,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG19 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG19 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #$64 - //SEG20 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG21 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG22 main::@2 + //SEG21 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG22 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG23 main::@2 b2: - //SEG23 [10] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG24 [10] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN2,x - //SEG24 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuxx=_dec_vbuxx + //SEG25 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuxx=_dec_vbuxx dex - //SEG25 [12] if((byte) main::j#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG26 [12] if((byte) main::j#1!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b2 - //SEG26 main::@return - //SEG27 [13] return + //SEG27 main::@return + //SEG28 [13] return rts } diff --git a/src/test/ref/forrangesymbolic.asm b/src/test/ref/forrangesymbolic.asm index c004ba5b4..652307ddc 100644 --- a/src/test/ref/forrangesymbolic.asm +++ b/src/test/ref/forrangesymbolic.asm @@ -1,8 +1,8 @@ +// Range-based for does not recognize symbolic constants. +// The following should work but gives a not-constant exception .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Range-based for does not recognize symbolic constants. -// The following should work but gives a not-constant exception main: { .label BITMAP = $2000 .label b = 2 diff --git a/src/test/ref/forrangesymbolic.log b/src/test/ref/forrangesymbolic.log index 61e5dd8d4..42815cf20 100644 --- a/src/test/ref/forrangesymbolic.log +++ b/src/test/ref/forrangesymbolic.log @@ -111,58 +111,59 @@ Complete equivalence classes Allocated zp ZP_WORD:2 [ main::b#2 main::b#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Range-based for does not recognize symbolic constants. +// The following should work but gives a not-constant exception +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Range-based for does not recognize symbolic constants. -// The following should work but gives a not-constant exception +//SEG10 main main: { .label BITMAP = $2000 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::b#2 = (const byte*) main::BITMAP#0+(word/signed word/dword/signed dword) 8191 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::b#2 = (const byte*) main::BITMAP#0+(word/signed word/dword/signed dword) 8191 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #BITMAP+$1fff sta b+1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte*) main::b#2 = (byte*) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte*) main::b#2 = (byte*) main::b#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 90 -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 90 -- _deref_pbuz1=vbuc1 lda #$5a ldy #0 sta (b),y - //SEG16 [7] (byte*) main::b#1 ← -- (byte*) main::b#2 -- pbuz1=_dec_pbuz1 + //SEG17 [7] (byte*) main::b#1 ← -- (byte*) main::b#2 -- pbuz1=_dec_pbuz1 lda b bne !+ dec b+1 !: dec b - //SEG17 [8] if((byte*) main::b#1!=(byte*)(const byte*) main::BITMAP#0-(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG18 [8] if((byte*) main::b#1!=(byte*)(const byte*) main::BITMAP#0-(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP-1 bne b1_from_b1 @@ -170,9 +171,9 @@ main: { cmp #@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Range-based for does not recognize symbolic constants. -// The following should work but gives a not-constant exception +//SEG10 main main: { .label BITMAP = $2000 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::b#2 = (const byte*) main::BITMAP#0+(word/signed word/dword/signed dword) 8191 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::b#2 = (const byte*) main::BITMAP#0+(word/signed word/dword/signed dword) 8191 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #BITMAP+$1fff sta b+1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte*) main::b#2 = (byte*) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte*) main::b#2 = (byte*) main::b#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 90 -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 90 -- _deref_pbuz1=vbuc1 lda #$5a ldy #0 sta (b),y - //SEG16 [7] (byte*) main::b#1 ← -- (byte*) main::b#2 -- pbuz1=_dec_pbuz1 + //SEG17 [7] (byte*) main::b#1 ← -- (byte*) main::b#2 -- pbuz1=_dec_pbuz1 lda b bne !+ dec b+1 !: dec b - //SEG17 [8] if((byte*) main::b#1!=(byte*)(const byte*) main::BITMAP#0-(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG18 [8] if((byte*) main::b#1!=(byte*)(const byte*) main::BITMAP#0-(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP-1 bne b1_from_b1 @@ -249,9 +251,9 @@ main: { cmp #@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Range-based for does not recognize symbolic constants. -// The following should work but gives a not-constant exception +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label BITMAP = $2000 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte*) main::b#2 = (const byte*) main::BITMAP#0+(word/signed word/dword/signed dword) 8191 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte*) main::b#2 = (const byte*) main::BITMAP#0+(word/signed word/dword/signed dword) 8191 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #BITMAP+$1fff sta b+1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte*) main::b#2 = (byte*) main::b#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte*) main::b#2 = (byte*) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 90 -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 90 -- _deref_pbuz1=vbuc1 lda #$5a ldy #0 sta (b),y - //SEG16 [7] (byte*) main::b#1 ← -- (byte*) main::b#2 -- pbuz1=_dec_pbuz1 + //SEG17 [7] (byte*) main::b#1 ← -- (byte*) main::b#2 -- pbuz1=_dec_pbuz1 lda b bne !+ dec b+1 !: dec b - //SEG17 [8] if((byte*) main::b#1!=(byte*)(const byte*) main::BITMAP#0-(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG18 [8] if((byte*) main::b#1!=(byte*)(const byte*) main::BITMAP#0-(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP-1 bne b1 lda b cmp #@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Tests a sub-optimal fragment synthesis -// vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc1_band_vbuxx < vbuaa=pbuz1_derefidx_vbuaa_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:11.5 +//SEG9 main main: { .label screen = $400 .label a1 = 5 .label a2 = 7 - //SEG9 [4] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/word/signed word/dword/signed dword) 240 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/word/signed word/dword/signed dword) 240 -- _deref_pbuc1=vbuc2 lda #$f0 sta $450+2 - //SEG10 [5] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta $450+3 - //SEG11 [6] call fct - //SEG12 [15] phi from main to fct [phi:main->fct] + //SEG12 [6] call fct + //SEG13 [15] phi from main to fct [phi:main->fct] fct_from_main: - //SEG13 [15] phi (byte*) fct::z#2 = ((byte*))(word/signed word/dword/signed dword) 1104 [phi:main->fct#0] -- pbuz1=pbuc1 + //SEG14 [15] phi (byte*) fct::z#2 = ((byte*))(word/signed word/dword/signed dword) 1104 [phi:main->fct#0] -- pbuz1=pbuc1 lda #<$450 sta fct.z lda #>$450 sta fct.z+1 - //SEG14 [15] phi (byte) fct::x#2 = (byte/word/signed word/dword/signed dword) 170 [phi:main->fct#1] -- vbuxx=vbuc1 + //SEG15 [15] phi (byte) fct::x#2 = (byte/word/signed word/dword/signed dword) 170 [phi:main->fct#1] -- vbuxx=vbuc1 ldx #$aa jsr fct - //SEG15 [7] (byte) fct::return#0 ← (byte) fct::return#2 -- vbuz1=vbuz2 + //SEG16 [7] (byte) fct::return#0 ← (byte) fct::return#2 -- vbuz1=vbuz2 lda fct.return_2 sta fct.return jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [8] (byte) main::a1#0 ← (byte) fct::return#0 -- vbuz1=vbuz2 + //SEG18 [8] (byte) main::a1#0 ← (byte) fct::return#0 -- vbuz1=vbuz2 lda fct.return sta a1 - //SEG18 [9] *((const byte*) main::screen#0) ← (byte) main::a1#0 -- _deref_pbuc1=vbuz1 + //SEG19 [9] *((const byte*) main::screen#0) ← (byte) main::a1#0 -- _deref_pbuc1=vbuz1 lda a1 sta screen - //SEG19 [10] call fct - //SEG20 [15] phi from main::@1 to fct [phi:main::@1->fct] + //SEG20 [10] call fct + //SEG21 [15] phi from main::@1 to fct [phi:main::@1->fct] fct_from_b1: - //SEG21 [15] phi (byte*) fct::z#2 = ++((byte*))(word/signed word/dword/signed dword) 1104 [phi:main::@1->fct#0] -- pbuz1=pbuc1 + //SEG22 [15] phi (byte*) fct::z#2 = ++((byte*))(word/signed word/dword/signed dword) 1104 [phi:main::@1->fct#0] -- pbuz1=pbuc1 lda #<$450+1 sta fct.z lda #>$450+1 sta fct.z+1 - //SEG22 [15] phi (byte) fct::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 85 [phi:main::@1->fct#1] -- vbuxx=vbuc1 + //SEG23 [15] phi (byte) fct::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 85 [phi:main::@1->fct#1] -- vbuxx=vbuc1 ldx #$55 jsr fct - //SEG23 [11] (byte) fct::return#1 ← (byte) fct::return#2 -- vbuz1=vbuz2 + //SEG24 [11] (byte) fct::return#1 ← (byte) fct::return#2 -- vbuz1=vbuz2 lda fct.return_2 sta fct.return_1 jmp b2 - //SEG24 main::@2 + //SEG25 main::@2 b2: - //SEG25 [12] (byte) main::a2#0 ← (byte) fct::return#1 -- vbuz1=vbuz2 + //SEG26 [12] (byte) main::a2#0 ← (byte) fct::return#1 -- vbuz1=vbuz2 lda fct.return_1 sta a2 - //SEG26 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a2#0 -- _deref_pbuc1=vbuz1 + //SEG27 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a2#0 -- _deref_pbuc1=vbuz1 lda a2 sta screen+1 jmp breturn - //SEG27 main::@return + //SEG28 main::@return breturn: - //SEG28 [14] return + //SEG29 [14] return rts } -//SEG29 fct +//SEG30 fct fct: { .label return = 4 .label return_1 = 6 .label return_2 = 8 .label z = 2 - //SEG30 [16] (byte) fct::return#2 ← (byte) fct::x#2 & *((byte*) fct::z#2 + (byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=vbuxx_band_pbuz2_derefidx_vbuc1 + //SEG31 [16] (byte) fct::return#2 ← (byte) fct::x#2 & *((byte*) fct::z#2 + (byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=vbuxx_band_pbuz2_derefidx_vbuc1 ldy #2 txa and (z),y sta return_2 jmp breturn - //SEG31 fct::@return + //SEG32 fct::@return breturn: - //SEG32 [17] return + //SEG33 [17] return rts } @@ -369,89 +370,90 @@ Uplifting [main] best 101 combination reg byte a [ main::a1#0 ] reg byte a [ mai Uplifting [] best 101 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests a sub-optimal fragment synthesis +// vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc1_band_vbuxx < vbuaa=pbuz1_derefidx_vbuaa_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:11.5 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Tests a sub-optimal fragment synthesis -// vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc1_band_vbuxx < vbuaa=pbuz1_derefidx_vbuaa_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:11.5 +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/word/signed word/dword/signed dword) 240 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/word/signed word/dword/signed dword) 240 -- _deref_pbuc1=vbuc2 lda #$f0 sta $450+2 - //SEG10 [5] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta $450+3 - //SEG11 [6] call fct - //SEG12 [15] phi from main to fct [phi:main->fct] + //SEG12 [6] call fct + //SEG13 [15] phi from main to fct [phi:main->fct] fct_from_main: - //SEG13 [15] phi (byte*) fct::z#2 = ((byte*))(word/signed word/dword/signed dword) 1104 [phi:main->fct#0] -- pbuz1=pbuc1 + //SEG14 [15] phi (byte*) fct::z#2 = ((byte*))(word/signed word/dword/signed dword) 1104 [phi:main->fct#0] -- pbuz1=pbuc1 lda #<$450 sta fct.z lda #>$450 sta fct.z+1 - //SEG14 [15] phi (byte) fct::x#2 = (byte/word/signed word/dword/signed dword) 170 [phi:main->fct#1] -- vbuxx=vbuc1 + //SEG15 [15] phi (byte) fct::x#2 = (byte/word/signed word/dword/signed dword) 170 [phi:main->fct#1] -- vbuxx=vbuc1 ldx #$aa jsr fct - //SEG15 [7] (byte) fct::return#0 ← (byte) fct::return#2 + //SEG16 [7] (byte) fct::return#0 ← (byte) fct::return#2 jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [8] (byte) main::a1#0 ← (byte) fct::return#0 - //SEG18 [9] *((const byte*) main::screen#0) ← (byte) main::a1#0 -- _deref_pbuc1=vbuaa + //SEG18 [8] (byte) main::a1#0 ← (byte) fct::return#0 + //SEG19 [9] *((const byte*) main::screen#0) ← (byte) main::a1#0 -- _deref_pbuc1=vbuaa sta screen - //SEG19 [10] call fct - //SEG20 [15] phi from main::@1 to fct [phi:main::@1->fct] + //SEG20 [10] call fct + //SEG21 [15] phi from main::@1 to fct [phi:main::@1->fct] fct_from_b1: - //SEG21 [15] phi (byte*) fct::z#2 = ++((byte*))(word/signed word/dword/signed dword) 1104 [phi:main::@1->fct#0] -- pbuz1=pbuc1 + //SEG22 [15] phi (byte*) fct::z#2 = ++((byte*))(word/signed word/dword/signed dword) 1104 [phi:main::@1->fct#0] -- pbuz1=pbuc1 lda #<$450+1 sta fct.z lda #>$450+1 sta fct.z+1 - //SEG22 [15] phi (byte) fct::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 85 [phi:main::@1->fct#1] -- vbuxx=vbuc1 + //SEG23 [15] phi (byte) fct::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 85 [phi:main::@1->fct#1] -- vbuxx=vbuc1 ldx #$55 jsr fct - //SEG23 [11] (byte) fct::return#1 ← (byte) fct::return#2 + //SEG24 [11] (byte) fct::return#1 ← (byte) fct::return#2 jmp b2 - //SEG24 main::@2 + //SEG25 main::@2 b2: - //SEG25 [12] (byte) main::a2#0 ← (byte) fct::return#1 - //SEG26 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a2#0 -- _deref_pbuc1=vbuaa + //SEG26 [12] (byte) main::a2#0 ← (byte) fct::return#1 + //SEG27 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a2#0 -- _deref_pbuc1=vbuaa sta screen+1 jmp breturn - //SEG27 main::@return + //SEG28 main::@return breturn: - //SEG28 [14] return + //SEG29 [14] return rts } -//SEG29 fct +//SEG30 fct fct: { .label z = 2 - //SEG30 [16] (byte) fct::return#2 ← (byte) fct::x#2 & *((byte*) fct::z#2 + (byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 + //SEG31 [16] (byte) fct::return#2 ← (byte) fct::x#2 & *((byte*) fct::z#2 + (byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 ldy #2 txa and (z),y jmp breturn - //SEG31 fct::@return + //SEG32 fct::@return breturn: - //SEG32 [17] return + //SEG33 [17] return rts } @@ -521,71 +523,72 @@ reg byte a [ fct::return#2 ] FINAL ASSEMBLER Score: 77 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests a sub-optimal fragment synthesis +// vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc1_band_vbuxx < vbuaa=pbuz1_derefidx_vbuaa_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:11.5 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main -// Tests a sub-optimal fragment synthesis -// vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc1_band_vbuxx < vbuaa=pbuz1_derefidx_vbuaa_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:11.5 +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/word/signed word/dword/signed dword) 240 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/word/signed word/dword/signed dword) 240 -- _deref_pbuc1=vbuc2 lda #$f0 sta $450+2 - //SEG10 [5] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *(((byte*))(word/signed word/dword/signed dword) 1104+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 lda #$f sta $450+3 - //SEG11 [6] call fct - //SEG12 [15] phi from main to fct [phi:main->fct] - //SEG13 [15] phi (byte*) fct::z#2 = ((byte*))(word/signed word/dword/signed dword) 1104 [phi:main->fct#0] -- pbuz1=pbuc1 + //SEG12 [6] call fct + //SEG13 [15] phi from main to fct [phi:main->fct] + //SEG14 [15] phi (byte*) fct::z#2 = ((byte*))(word/signed word/dword/signed dword) 1104 [phi:main->fct#0] -- pbuz1=pbuc1 lda #<$450 sta fct.z lda #>$450 sta fct.z+1 - //SEG14 [15] phi (byte) fct::x#2 = (byte/word/signed word/dword/signed dword) 170 [phi:main->fct#1] -- vbuxx=vbuc1 + //SEG15 [15] phi (byte) fct::x#2 = (byte/word/signed word/dword/signed dword) 170 [phi:main->fct#1] -- vbuxx=vbuc1 ldx #$aa jsr fct - //SEG15 [7] (byte) fct::return#0 ← (byte) fct::return#2 - //SEG16 main::@1 - //SEG17 [8] (byte) main::a1#0 ← (byte) fct::return#0 - //SEG18 [9] *((const byte*) main::screen#0) ← (byte) main::a1#0 -- _deref_pbuc1=vbuaa + //SEG16 [7] (byte) fct::return#0 ← (byte) fct::return#2 + //SEG17 main::@1 + //SEG18 [8] (byte) main::a1#0 ← (byte) fct::return#0 + //SEG19 [9] *((const byte*) main::screen#0) ← (byte) main::a1#0 -- _deref_pbuc1=vbuaa sta screen - //SEG19 [10] call fct - //SEG20 [15] phi from main::@1 to fct [phi:main::@1->fct] - //SEG21 [15] phi (byte*) fct::z#2 = ++((byte*))(word/signed word/dword/signed dword) 1104 [phi:main::@1->fct#0] -- pbuz1=pbuc1 + //SEG20 [10] call fct + //SEG21 [15] phi from main::@1 to fct [phi:main::@1->fct] + //SEG22 [15] phi (byte*) fct::z#2 = ++((byte*))(word/signed word/dword/signed dword) 1104 [phi:main::@1->fct#0] -- pbuz1=pbuc1 lda #<$450+1 sta fct.z lda #>$450+1 sta fct.z+1 - //SEG22 [15] phi (byte) fct::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 85 [phi:main::@1->fct#1] -- vbuxx=vbuc1 + //SEG23 [15] phi (byte) fct::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 85 [phi:main::@1->fct#1] -- vbuxx=vbuc1 ldx #$55 jsr fct - //SEG23 [11] (byte) fct::return#1 ← (byte) fct::return#2 - //SEG24 main::@2 - //SEG25 [12] (byte) main::a2#0 ← (byte) fct::return#1 - //SEG26 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a2#0 -- _deref_pbuc1=vbuaa + //SEG24 [11] (byte) fct::return#1 ← (byte) fct::return#2 + //SEG25 main::@2 + //SEG26 [12] (byte) main::a2#0 ← (byte) fct::return#1 + //SEG27 [13] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a2#0 -- _deref_pbuc1=vbuaa sta screen+1 - //SEG27 main::@return - //SEG28 [14] return + //SEG28 main::@return + //SEG29 [14] return rts } -//SEG29 fct +//SEG30 fct fct: { .label z = 2 - //SEG30 [16] (byte) fct::return#2 ← (byte) fct::x#2 & *((byte*) fct::z#2 + (byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 + //SEG31 [16] (byte) fct::return#2 ← (byte) fct::x#2 & *((byte*) fct::z#2 + (byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 ldy #2 txa and (z),y - //SEG31 fct::@return - //SEG32 [17] return + //SEG32 fct::@return + //SEG33 [17] return rts } diff --git a/src/test/ref/halfscii.log b/src/test/ref/halfscii.log index 08aac50db..d9988fea3 100644 --- a/src/test/ref/halfscii.log +++ b/src/test/ref/halfscii.log @@ -800,31 +800,32 @@ Allocated zp ZP_BYTE:36 [ main::bits#3 ] Allocated zp ZP_BYTE:37 [ main::bits_gen#7 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label CHARGEN = $d000 .label PROCPORT = 1 .label D018 = $d018 .label CHARSET4 = $2800 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label _1 = $d .label _2 = $e @@ -863,32 +864,32 @@ main: { .label bits_gen_14 = 8 .label bits_gen_15 = 9 .label bits_gen_16 = 9 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG13 [6] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #CHARSET4 sta charset4+1 - //SEG13 [6] phi (byte*) main::chargen#10 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) main::chargen#10 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG14 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG15 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG15 [6] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG16 [6] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG16 [6] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG17 [6] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy jmp b1 - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 + //SEG19 [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 lda chargen clc adc #1 @@ -896,211 +897,211 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG19 [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG20 [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$60 ldy #0 and (chargen),y sta _1 - //SEG20 [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG21 [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$60 ldy #0 and (chargen1),y sta _2 - //SEG21 [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_ror_2 + //SEG22 [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_ror_2 lda _2 lsr lsr sta _3 - //SEG22 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 -- vbuz1=vbuz2_bor_vbuz3 + //SEG23 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 -- vbuz1=vbuz2_bor_vbuz3 lda _1 ora _3 sta _4 - //SEG23 [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG24 [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda _4 lsr sta _5 - //SEG24 [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_ror_2 + //SEG25 [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_ror_2 lda _5 lsr lsr sta _6 - //SEG25 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG26 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _6 lda bits_count,y sta bits - //SEG26 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG27 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 lda bits cmp #2 bcc b2_from_b1 - //SEG27 [16] phi from main::@1 to main::@7 [phi:main::@1->main::@7] + //SEG28 [16] phi from main::@1 to main::@7 [phi:main::@1->main::@7] b7_from_b1: jmp b7 - //SEG28 main::@7 + //SEG29 main::@7 b7: - //SEG29 [17] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG30 [17] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG30 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->main::@2#0] -- vbuz1=vbuc1 + //SEG31 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->main::@2#0] -- vbuz1=vbuc1 lda #1 sta bits_gen_9 jmp b2 - //SEG31 [17] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG32 [17] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG32 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG33 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta bits_gen_9 jmp b2 - //SEG33 main::@2 + //SEG34 main::@2 b2: - //SEG34 [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG35 [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda bits_gen_9 asl sta bits_gen - //SEG35 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG36 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$18 ldy #0 and (chargen),y sta _11 - //SEG36 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG37 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$18 ldy #0 and (chargen1),y sta _12 - //SEG37 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_ror_2 + //SEG38 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_ror_2 lda _12 lsr lsr sta _13 - //SEG38 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 -- vbuz1=vbuz2_bor_vbuz3 + //SEG39 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 -- vbuz1=vbuz2_bor_vbuz3 lda _11 ora _13 sta _14 - //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG40 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda _14 lsr sta _15 - //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG41 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _15 lda bits_count,y sta bits_1 - //SEG41 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG42 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3 -- vbuz1_lt_vbuc1_then_la1 lda bits_1 cmp #2 bcc b3_from_b2 jmp b8 - //SEG42 main::@8 + //SEG43 main::@8 b8: - //SEG43 [26] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG44 [26] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc bits_gen - //SEG44 [27] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] + //SEG45 [27] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] b3_from_b2: b3_from_b8: - //SEG45 [27] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy + //SEG46 [27] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy jmp b3 - //SEG46 main::@3 + //SEG47 main::@3 b3: - //SEG47 [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG48 [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda bits_gen asl sta bits_gen_14 - //SEG48 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG49 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #6 ldy #0 and (chargen),y sta _20 - //SEG49 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG50 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda _20 asl sta _21 - //SEG50 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG51 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #6 ldy #0 and (chargen1),y sta _22 - //SEG51 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG52 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda _22 lsr sta _23 - //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 -- vbuz1=vbuz2_bor_vbuz3 + //SEG53 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 -- vbuz1=vbuz2_bor_vbuz3 lda _21 ora _23 sta _24 - //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG54 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _24 lda bits_count,y sta bits_2 - //SEG54 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG55 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4 -- vbuz1_lt_vbuc1_then_la1 lda bits_2 cmp #2 bcc b4_from_b3 jmp b9 - //SEG55 main::@9 + //SEG56 main::@9 b9: - //SEG56 [36] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG57 [36] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc bits_gen_6 - //SEG57 [37] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] + //SEG58 [37] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] b4_from_b3: b4_from_b9: - //SEG58 [37] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy + //SEG59 [37] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy jmp b4 - //SEG59 main::@4 + //SEG60 main::@4 b4: - //SEG60 [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG61 [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda bits_gen_13 asl sta bits_gen_16 - //SEG61 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG62 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #1 ldy #0 and (chargen),y sta _29 - //SEG62 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG63 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda _29 asl asl sta _30 - //SEG63 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG64 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #1 ldy #0 and (chargen1),y sta _31 - //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 -- vbuz1=vbuz2_bor_vbuz3 + //SEG65 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 -- vbuz1=vbuz2_bor_vbuz3 lda _30 ora _31 sta _32 - //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG66 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _32 lda bits_count,y sta bits_3 - //SEG66 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5 -- vbuz1_lt_vbuc1_then_la1 + //SEG67 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5 -- vbuz1_lt_vbuc1_then_la1 lda bits_3 cmp #2 bcc b5_from_b4 jmp b10 - //SEG67 main::@10 + //SEG68 main::@10 b10: - //SEG68 [45] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG69 [45] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc bits_gen_8 - //SEG69 [46] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] + //SEG70 [46] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] b5_from_b10: b5_from_b4: - //SEG70 [46] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy + //SEG71 [46] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy jmp b5 - //SEG71 main::@5 + //SEG72 main::@5 b5: - //SEG72 [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG73 [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda bits_gen_15 asl sta bits_gen_7 - //SEG73 [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 -- _deref_pbuz1=vbuz2 + //SEG74 [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 -- _deref_pbuz1=vbuz2 lda bits_gen_7 ldy #0 sta (charset4),y - //SEG74 [49] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 -- pbuz1=_inc_pbuz1 + //SEG75 [49] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 -- pbuz1=_inc_pbuz1 inc charset4 bne !+ inc charset4+1 !: - //SEG75 [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pbuz1=pbuz1_plus_2 + //SEG76 [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pbuz1=pbuz1_plus_2 lda chargen clc adc #2 @@ -1108,7 +1109,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG76 [51] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word/dword/signed dword) 2048) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG77 [51] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word/dword/signed dword) 2048) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1_from_b5 @@ -1118,45 +1119,45 @@ main: { bcc b1_from_b5 !: jmp b11 - //SEG77 main::@11 + //SEG78 main::@11 b11: - //SEG78 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG79 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG79 asm { cli } + //SEG80 asm { cli } cli - //SEG80 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG81 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG81 [54] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->main::@6#0] -- vbuz1=vbuc1 + //SEG82 [54] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->main::@6#0] -- vbuz1=vbuc1 lda #0 sta i jmp b6 - //SEG82 [54] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG83 [54] phi from main::@6 to main::@6 [phi:main::@6->main::@6] b6_from_b6: - //SEG83 [54] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy + //SEG84 [54] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy jmp b6 - //SEG84 main::@6 + //SEG85 main::@6 b6: - //SEG85 [55] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG86 [55] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta SCREEN,y - //SEG86 [56] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG87 [56] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG87 [57] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6 -- vbuz1_neq_0_then_la1 + //SEG88 [57] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6 -- vbuz1_neq_0_then_la1 lda i cmp #0 bne b6_from_b6 jmp b12 - //SEG88 main::@12 + //SEG89 main::@12 b12: - //SEG89 [58] *((const byte*) D018#0) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 + //SEG90 [58] *((const byte*) D018#0) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 lda #$19 sta D018 jmp breturn - //SEG90 main::@return + //SEG91 main::@return breturn: - //SEG91 [59] return + //SEG92 [59] return rts } bits_count: .byte 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 @@ -1336,31 +1337,32 @@ Allocated (was zp ZP_WORD:11) zp ZP_WORD:6 [ main::chargen1#0 ] Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:8 [ main::$1 main::$11 main::$21 main::$30 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label CHARGEN = $d000 .label PROCPORT = 1 .label D018 = $d018 .label CHARSET4 = $2800 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label _1 = 8 .label _11 = 8 @@ -1369,32 +1371,32 @@ main: { .label chargen1 = 6 .label charset4 = 4 .label chargen = 2 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG13 [6] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #CHARSET4 sta charset4+1 - //SEG13 [6] phi (byte*) main::chargen#10 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) main::chargen#10 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG14 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG15 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG15 [6] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG16 [6] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG16 [6] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG17 [6] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy jmp b1 - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 + //SEG19 [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 lda chargen clc adc #1 @@ -1402,170 +1404,170 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG19 [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG20 [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$60 ldy #0 and (chargen),y sta _1 - //SEG20 [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG21 [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #$60 ldy #0 and (chargen1),y - //SEG21 [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 + //SEG22 [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG22 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 -- vbuaa=vbuz1_bor_vbuaa + //SEG23 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG23 [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG24 [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG24 [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 + //SEG25 [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG25 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG26 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) -- vbuaa=pbuc1_derefidx_vbuaa tay lda bits_count,y - //SEG26 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2 -- vbuaa_lt_vbuc1_then_la1 + //SEG27 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2 -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b2_from_b1 - //SEG27 [16] phi from main::@1 to main::@7 [phi:main::@1->main::@7] + //SEG28 [16] phi from main::@1 to main::@7 [phi:main::@1->main::@7] b7_from_b1: jmp b7 - //SEG28 main::@7 + //SEG29 main::@7 b7: - //SEG29 [17] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG30 [17] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG30 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->main::@2#0] -- vbuaa=vbuc1 + //SEG31 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->main::@2#0] -- vbuaa=vbuc1 lda #1 jmp b2 - //SEG31 [17] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG32 [17] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG32 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuaa=vbuc1 + //SEG33 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuaa=vbuc1 lda #0 jmp b2 - //SEG33 main::@2 + //SEG34 main::@2 b2: - //SEG34 [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuaa_rol_1 + //SEG35 [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuaa_rol_1 asl tax - //SEG35 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG36 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$18 ldy #0 and (chargen),y sta _11 - //SEG36 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG37 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #$18 ldy #0 and (chargen1),y - //SEG37 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 + //SEG38 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG38 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 -- vbuaa=vbuz1_bor_vbuaa + //SEG39 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 -- vbuaa=vbuz1_bor_vbuaa ora _11 - //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG40 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG41 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) -- vbuaa=pbuc1_derefidx_vbuaa tay lda bits_count,y - //SEG41 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3 -- vbuaa_lt_vbuc1_then_la1 + //SEG42 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3 -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b3_from_b2 jmp b8 - //SEG42 main::@8 + //SEG43 main::@8 b8: - //SEG43 [26] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG44 [26] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG44 [27] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] + //SEG45 [27] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] b3_from_b2: b3_from_b8: - //SEG45 [27] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy + //SEG46 [27] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy jmp b3 - //SEG46 main::@3 + //SEG47 main::@3 b3: - //SEG47 [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 + //SEG48 [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 txa asl tax - //SEG48 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG49 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #6 ldy #0 and (chargen),y - //SEG49 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuaa_rol_1 + //SEG50 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuaa_rol_1 asl sta _21 - //SEG50 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG51 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #6 ldy #0 and (chargen1),y - //SEG51 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG52 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 -- vbuaa=vbuz1_bor_vbuaa + //SEG53 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 -- vbuaa=vbuz1_bor_vbuaa ora _21 - //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG54 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) -- vbuaa=pbuc1_derefidx_vbuaa tay lda bits_count,y - //SEG54 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4 -- vbuaa_lt_vbuc1_then_la1 + //SEG55 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4 -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b4_from_b3 jmp b9 - //SEG55 main::@9 + //SEG56 main::@9 b9: - //SEG56 [36] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG57 [36] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG57 [37] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] + //SEG58 [37] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] b4_from_b3: b4_from_b9: - //SEG58 [37] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy + //SEG59 [37] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy jmp b4 - //SEG59 main::@4 + //SEG60 main::@4 b4: - //SEG60 [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 + //SEG61 [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 txa asl tax - //SEG61 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG62 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #1 ldy #0 and (chargen),y - //SEG62 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuaa_rol_2 + //SEG63 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuaa_rol_2 asl asl sta _30 - //SEG63 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG64 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #1 ldy #0 and (chargen1),y - //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 -- vbuaa=vbuz1_bor_vbuaa + //SEG65 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 -- vbuaa=vbuz1_bor_vbuaa ora _30 - //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG66 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) -- vbuaa=pbuc1_derefidx_vbuaa tay lda bits_count,y - //SEG66 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5 -- vbuaa_lt_vbuc1_then_la1 + //SEG67 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5 -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b5_from_b4 jmp b10 - //SEG67 main::@10 + //SEG68 main::@10 b10: - //SEG68 [45] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG69 [45] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG69 [46] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] + //SEG70 [46] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] b5_from_b10: b5_from_b4: - //SEG70 [46] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy + //SEG71 [46] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy jmp b5 - //SEG71 main::@5 + //SEG72 main::@5 b5: - //SEG72 [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG73 [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG73 [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 -- _deref_pbuz1=vbuaa + //SEG74 [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 -- _deref_pbuz1=vbuaa ldy #0 sta (charset4),y - //SEG74 [49] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 -- pbuz1=_inc_pbuz1 + //SEG75 [49] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 -- pbuz1=_inc_pbuz1 inc charset4 bne !+ inc charset4+1 !: - //SEG75 [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pbuz1=pbuz1_plus_2 + //SEG76 [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pbuz1=pbuz1_plus_2 lda chargen clc adc #2 @@ -1573,7 +1575,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG76 [51] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word/dword/signed dword) 2048) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG77 [51] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word/dword/signed dword) 2048) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1_from_b5 @@ -1583,42 +1585,42 @@ main: { bcc b1_from_b5 !: jmp b11 - //SEG77 main::@11 + //SEG78 main::@11 b11: - //SEG78 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG79 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG79 asm { cli } + //SEG80 asm { cli } cli - //SEG80 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG81 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG81 [54] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->main::@6#0] -- vbuxx=vbuc1 + //SEG82 [54] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->main::@6#0] -- vbuxx=vbuc1 ldx #0 jmp b6 - //SEG82 [54] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG83 [54] phi from main::@6 to main::@6 [phi:main::@6->main::@6] b6_from_b6: - //SEG83 [54] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy + //SEG84 [54] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy jmp b6 - //SEG84 main::@6 + //SEG85 main::@6 b6: - //SEG85 [55] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG86 [55] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG86 [56] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG87 [56] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG87 [57] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6 -- vbuxx_neq_0_then_la1 + //SEG88 [57] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6 -- vbuxx_neq_0_then_la1 cpx #0 bne b6_from_b6 jmp b12 - //SEG88 main::@12 + //SEG89 main::@12 b12: - //SEG89 [58] *((const byte*) D018#0) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 + //SEG90 [58] *((const byte*) D018#0) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 lda #$19 sta D018 jmp breturn - //SEG90 main::@return + //SEG91 main::@return breturn: - //SEG91 [59] return + //SEG92 [59] return rts } bits_count: .byte 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 @@ -1804,23 +1806,24 @@ reg byte a [ main::bits_gen#7 ] FINAL ASSEMBLER Score: 3108 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label CHARGEN = $d000 .label PROCPORT = 1 .label D018 = $d018 .label CHARSET4 = $2800 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label _1 = 8 .label _11 = 8 @@ -1829,28 +1832,28 @@ main: { .label chargen1 = 6 .label charset4 = 4 .label chargen = 2 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG12 [6] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #CHARSET4 sta charset4+1 - //SEG13 [6] phi (byte*) main::chargen#10 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) main::chargen#10 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 - //SEG14 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG15 [6] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG16 [6] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy - //SEG17 main::@1 + //SEG15 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG16 [6] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG17 [6] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG18 main::@1 b1: - //SEG18 [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 + //SEG19 [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 lda chargen clc adc #1 @@ -1858,146 +1861,146 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG19 [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG20 [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$60 ldy #0 and (chargen),y sta _1 - //SEG20 [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG21 [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 96 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #$60 and (chargen1),y - //SEG21 [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 + //SEG22 [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG22 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 -- vbuaa=vbuz1_bor_vbuaa + //SEG23 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG23 [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG24 [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG24 [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 + //SEG25 [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG25 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG26 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) -- vbuaa=pbuc1_derefidx_vbuaa tay lda bits_count,y - //SEG26 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2 -- vbuaa_lt_vbuc1_then_la1 + //SEG27 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2 -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b7 - //SEG27 [16] phi from main::@1 to main::@7 [phi:main::@1->main::@7] - //SEG28 main::@7 - //SEG29 [17] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG30 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->main::@2#0] -- vbuaa=vbuc1 + //SEG28 [16] phi from main::@1 to main::@7 [phi:main::@1->main::@7] + //SEG29 main::@7 + //SEG30 [17] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG31 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@7->main::@2#0] -- vbuaa=vbuc1 lda #1 jmp b2 - //SEG31 [17] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG32 [17] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b7: - //SEG32 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuaa=vbuc1 + //SEG33 [17] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuaa=vbuc1 lda #0 - //SEG33 main::@2 + //SEG34 main::@2 b2: - //SEG34 [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuaa_rol_1 + //SEG35 [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuaa_rol_1 asl tax - //SEG35 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG36 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=_deref_pbuz2_band_vbuc1 lda #$18 ldy #0 and (chargen),y sta _11 - //SEG36 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG37 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #$18 and (chargen1),y - //SEG37 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 + //SEG38 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG38 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 -- vbuaa=vbuz1_bor_vbuaa + //SEG39 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 -- vbuaa=vbuz1_bor_vbuaa ora _11 - //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG40 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG41 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) -- vbuaa=pbuc1_derefidx_vbuaa tay lda bits_count,y - //SEG41 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3 -- vbuaa_lt_vbuc1_then_la1 + //SEG42 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3 -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b3 - //SEG42 main::@8 - //SEG43 [26] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG43 main::@8 + //SEG44 [26] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG44 [27] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] - //SEG45 [27] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy - //SEG46 main::@3 + //SEG45 [27] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] + //SEG46 [27] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy + //SEG47 main::@3 b3: - //SEG47 [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 + //SEG48 [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 txa asl tax - //SEG48 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG49 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #6 ldy #0 and (chargen),y - //SEG49 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuaa_rol_1 + //SEG50 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuaa_rol_1 asl sta _21 - //SEG50 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG51 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 6 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #6 and (chargen1),y - //SEG51 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG52 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 -- vbuaa=vbuz1_bor_vbuaa + //SEG53 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 -- vbuaa=vbuz1_bor_vbuaa ora _21 - //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG54 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) -- vbuaa=pbuc1_derefidx_vbuaa tay lda bits_count,y - //SEG54 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4 -- vbuaa_lt_vbuc1_then_la1 + //SEG55 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4 -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b4 - //SEG55 main::@9 - //SEG56 [36] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG56 main::@9 + //SEG57 [36] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG57 [37] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] - //SEG58 [37] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy - //SEG59 main::@4 + //SEG58 [37] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] + //SEG59 [37] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy + //SEG60 main::@4 b4: - //SEG60 [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 + //SEG61 [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 txa asl tax - //SEG61 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG62 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #1 ldy #0 and (chargen),y - //SEG62 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuaa_rol_2 + //SEG63 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuaa_rol_2 asl asl sta _30 - //SEG63 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG64 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuz1_band_vbuc1 lda #1 and (chargen1),y - //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 -- vbuaa=vbuz1_bor_vbuaa + //SEG65 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 -- vbuaa=vbuz1_bor_vbuaa ora _30 - //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG66 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) -- vbuaa=pbuc1_derefidx_vbuaa tay lda bits_count,y - //SEG66 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5 -- vbuaa_lt_vbuc1_then_la1 + //SEG67 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5 -- vbuaa_lt_vbuc1_then_la1 cmp #2 bcc b5 - //SEG67 main::@10 - //SEG68 [45] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG68 main::@10 + //SEG69 [45] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG69 [46] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] - //SEG70 [46] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy - //SEG71 main::@5 + //SEG70 [46] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] + //SEG71 [46] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy + //SEG72 main::@5 b5: - //SEG72 [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG73 [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG73 [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 -- _deref_pbuz1=vbuaa + //SEG74 [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 -- _deref_pbuz1=vbuaa ldy #0 sta (charset4),y - //SEG74 [49] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 -- pbuz1=_inc_pbuz1 + //SEG75 [49] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 -- pbuz1=_inc_pbuz1 inc charset4 bne !+ inc charset4+1 !: - //SEG75 [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pbuz1=pbuz1_plus_2 + //SEG76 [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pbuz1=pbuz1_plus_2 lda chargen clc adc #2 @@ -2005,7 +2008,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG76 [51] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word/dword/signed dword) 2048) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG77 [51] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word/dword/signed dword) 2048) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcs !b1+ @@ -2018,33 +2021,33 @@ main: { jmp b1 !b1: !: - //SEG77 main::@11 - //SEG78 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG78 main::@11 + //SEG79 [52] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG79 asm { cli } + //SEG80 asm { cli } cli - //SEG80 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6] - //SEG81 [54] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->main::@6#0] -- vbuxx=vbuc1 + //SEG81 [54] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG82 [54] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->main::@6#0] -- vbuxx=vbuc1 ldx #0 - //SEG82 [54] phi from main::@6 to main::@6 [phi:main::@6->main::@6] - //SEG83 [54] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy - //SEG84 main::@6 + //SEG83 [54] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG84 [54] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy + //SEG85 main::@6 b6: - //SEG85 [55] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG86 [55] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG86 [56] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG87 [56] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG87 [57] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6 -- vbuxx_neq_0_then_la1 + //SEG88 [57] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6 -- vbuxx_neq_0_then_la1 cpx #0 bne b6 - //SEG88 main::@12 - //SEG89 [58] *((const byte*) D018#0) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 + //SEG89 main::@12 + //SEG90 [58] *((const byte*) D018#0) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 lda #$19 sta D018 - //SEG90 main::@return - //SEG91 [59] return + //SEG91 main::@return + //SEG92 [59] return rts } bits_count: .byte 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 diff --git a/src/test/ref/helloworld2-inline.log b/src/test/ref/helloworld2-inline.log index 9b3cc51e0..b475ae567 100644 --- a/src/test/ref/helloworld2-inline.log +++ b/src/test/ref/helloworld2-inline.log @@ -286,115 +286,116 @@ Allocated zp ZP_BYTE:4 [ main::print22_i#2 main::print22_i#1 ] Allocated zp ZP_BYTE:5 [ main::print22_j#2 main::print22_j#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label print22_at = screen+$50 .label print21_j = 3 .label print21_i = 2 .label print22_j = 5 .label print22_i = 4 - //SEG10 [5] phi from main to main::print21 [phi:main->main::print21] + //SEG11 [5] phi from main to main::print21 [phi:main->main::print21] print21_from_main: jmp print21 - //SEG11 main::print21 + //SEG12 main::print21 print21: - //SEG12 [6] phi from main::print21 to main::print21_@1 [phi:main::print21->main::print21_@1] + //SEG13 [6] phi from main::print21 to main::print21_@1 [phi:main::print21->main::print21_@1] print21_b1_from_print21: - //SEG13 [6] phi (byte) main::print21_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::print21_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#0] -- vbuz1=vbuc1 lda #0 sta print21_j - //SEG14 [6] phi (byte) main::print21_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) main::print21_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#1] -- vbuz1=vbuc1 lda #0 sta print21_i jmp print21_b1 - //SEG15 [6] phi from main::print21_@1 to main::print21_@1 [phi:main::print21_@1->main::print21_@1] + //SEG16 [6] phi from main::print21_@1 to main::print21_@1 [phi:main::print21_@1->main::print21_@1] print21_b1_from_print21_b1: - //SEG16 [6] phi (byte) main::print21_j#2 = (byte) main::print21_j#1 [phi:main::print21_@1->main::print21_@1#0] -- register_copy - //SEG17 [6] phi (byte) main::print21_i#2 = (byte) main::print21_i#1 [phi:main::print21_@1->main::print21_@1#1] -- register_copy + //SEG17 [6] phi (byte) main::print21_j#2 = (byte) main::print21_j#1 [phi:main::print21_@1->main::print21_@1#0] -- register_copy + //SEG18 [6] phi (byte) main::print21_i#2 = (byte) main::print21_i#1 [phi:main::print21_@1->main::print21_@1#1] -- register_copy jmp print21_b1 - //SEG18 main::print21_@1 + //SEG19 main::print21_@1 print21_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy print21_i lda print21_msg,y ldy print21_j sta screen,y - //SEG20 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG21 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda print21_j clc adc #2 sta print21_j - //SEG21 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuz1=_inc_vbuz1 + //SEG22 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuz1=_inc_vbuz1 inc print21_i - //SEG22 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG23 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy print21_i lda print21_msg,y cmp #'@' bne print21_b1_from_print21_b1 - //SEG23 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22] + //SEG24 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22] print22_from_print21_b1: jmp print22 - //SEG24 main::print22 + //SEG25 main::print22 print22: - //SEG25 [12] phi from main::print22 to main::print22_@1 [phi:main::print22->main::print22_@1] + //SEG26 [12] phi from main::print22 to main::print22_@1 [phi:main::print22->main::print22_@1] print22_b1_from_print22: - //SEG26 [12] phi (byte) main::print22_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#0] -- vbuz1=vbuc1 + //SEG27 [12] phi (byte) main::print22_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#0] -- vbuz1=vbuc1 lda #0 sta print22_j - //SEG27 [12] phi (byte) main::print22_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#1] -- vbuz1=vbuc1 + //SEG28 [12] phi (byte) main::print22_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#1] -- vbuz1=vbuc1 lda #0 sta print22_i jmp print22_b1 - //SEG28 [12] phi from main::print22_@1 to main::print22_@1 [phi:main::print22_@1->main::print22_@1] + //SEG29 [12] phi from main::print22_@1 to main::print22_@1 [phi:main::print22_@1->main::print22_@1] print22_b1_from_print22_b1: - //SEG29 [12] phi (byte) main::print22_j#2 = (byte) main::print22_j#1 [phi:main::print22_@1->main::print22_@1#0] -- register_copy - //SEG30 [12] phi (byte) main::print22_i#2 = (byte) main::print22_i#1 [phi:main::print22_@1->main::print22_@1#1] -- register_copy + //SEG30 [12] phi (byte) main::print22_j#2 = (byte) main::print22_j#1 [phi:main::print22_@1->main::print22_@1#0] -- register_copy + //SEG31 [12] phi (byte) main::print22_i#2 = (byte) main::print22_i#1 [phi:main::print22_@1->main::print22_@1#1] -- register_copy jmp print22_b1 - //SEG31 main::print22_@1 + //SEG32 main::print22_@1 print22_b1: - //SEG32 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy print22_i lda print21_msg,y ldy print22_j sta print22_at,y - //SEG33 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG34 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda print22_j clc adc #2 sta print22_j - //SEG34 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuz1=_inc_vbuz1 + //SEG35 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuz1=_inc_vbuz1 inc print22_i - //SEG35 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG36 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy print22_i lda print21_msg,y cmp #'@' bne print22_b1_from_print22_b1 jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [17] return + //SEG38 [17] return rts print21_msg: .text "hello world!@" } @@ -425,97 +426,98 @@ Uplifting [main] best 744 combination reg byte y [ main::print21_i#2 main::print Uplifting [] best 744 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label print22_at = screen+$50 - //SEG10 [5] phi from main to main::print21 [phi:main->main::print21] + //SEG11 [5] phi from main to main::print21 [phi:main->main::print21] print21_from_main: jmp print21 - //SEG11 main::print21 + //SEG12 main::print21 print21: - //SEG12 [6] phi from main::print21 to main::print21_@1 [phi:main::print21->main::print21_@1] + //SEG13 [6] phi from main::print21 to main::print21_@1 [phi:main::print21->main::print21_@1] print21_b1_from_print21: - //SEG13 [6] phi (byte) main::print21_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#0] -- vbuxx=vbuc1 + //SEG14 [6] phi (byte) main::print21_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG14 [6] phi (byte) main::print21_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#1] -- vbuyy=vbuc1 + //SEG15 [6] phi (byte) main::print21_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#1] -- vbuyy=vbuc1 ldy #0 jmp print21_b1 - //SEG15 [6] phi from main::print21_@1 to main::print21_@1 [phi:main::print21_@1->main::print21_@1] + //SEG16 [6] phi from main::print21_@1 to main::print21_@1 [phi:main::print21_@1->main::print21_@1] print21_b1_from_print21_b1: - //SEG16 [6] phi (byte) main::print21_j#2 = (byte) main::print21_j#1 [phi:main::print21_@1->main::print21_@1#0] -- register_copy - //SEG17 [6] phi (byte) main::print21_i#2 = (byte) main::print21_i#1 [phi:main::print21_@1->main::print21_@1#1] -- register_copy + //SEG17 [6] phi (byte) main::print21_j#2 = (byte) main::print21_j#1 [phi:main::print21_@1->main::print21_@1#0] -- register_copy + //SEG18 [6] phi (byte) main::print21_i#2 = (byte) main::print21_i#1 [phi:main::print21_@1->main::print21_@1#1] -- register_copy jmp print21_b1 - //SEG18 main::print21_@1 + //SEG19 main::print21_@1 print21_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print21_msg,y sta screen,x - //SEG20 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 + //SEG21 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 inx inx - //SEG21 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuyy=_inc_vbuyy + //SEG22 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuyy=_inc_vbuyy iny - //SEG22 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG23 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print21_msg,y cmp #'@' bne print21_b1_from_print21_b1 - //SEG23 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22] + //SEG24 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22] print22_from_print21_b1: jmp print22 - //SEG24 main::print22 + //SEG25 main::print22 print22: - //SEG25 [12] phi from main::print22 to main::print22_@1 [phi:main::print22->main::print22_@1] + //SEG26 [12] phi from main::print22 to main::print22_@1 [phi:main::print22->main::print22_@1] print22_b1_from_print22: - //SEG26 [12] phi (byte) main::print22_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#0] -- vbuxx=vbuc1 + //SEG27 [12] phi (byte) main::print22_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG27 [12] phi (byte) main::print22_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#1] -- vbuyy=vbuc1 + //SEG28 [12] phi (byte) main::print22_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#1] -- vbuyy=vbuc1 ldy #0 jmp print22_b1 - //SEG28 [12] phi from main::print22_@1 to main::print22_@1 [phi:main::print22_@1->main::print22_@1] + //SEG29 [12] phi from main::print22_@1 to main::print22_@1 [phi:main::print22_@1->main::print22_@1] print22_b1_from_print22_b1: - //SEG29 [12] phi (byte) main::print22_j#2 = (byte) main::print22_j#1 [phi:main::print22_@1->main::print22_@1#0] -- register_copy - //SEG30 [12] phi (byte) main::print22_i#2 = (byte) main::print22_i#1 [phi:main::print22_@1->main::print22_@1#1] -- register_copy + //SEG30 [12] phi (byte) main::print22_j#2 = (byte) main::print22_j#1 [phi:main::print22_@1->main::print22_@1#0] -- register_copy + //SEG31 [12] phi (byte) main::print22_i#2 = (byte) main::print22_i#1 [phi:main::print22_@1->main::print22_@1#1] -- register_copy jmp print22_b1 - //SEG31 main::print22_@1 + //SEG32 main::print22_@1 print22_b1: - //SEG32 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print21_msg,y sta print22_at,x - //SEG33 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 + //SEG34 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 inx inx - //SEG34 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuyy=_inc_vbuyy + //SEG35 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuyy=_inc_vbuyy iny - //SEG35 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG36 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print21_msg,y cmp #'@' bne print22_b1_from_print22_b1 jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [17] return + //SEG38 [17] return rts print21_msg: .text "hello world!@" } @@ -599,72 +601,73 @@ reg byte x [ main::print22_j#2 main::print22_j#1 ] FINAL ASSEMBLER Score: 576 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label print22_at = screen+$50 - //SEG10 [5] phi from main to main::print21 [phi:main->main::print21] - //SEG11 main::print21 - //SEG12 [6] phi from main::print21 to main::print21_@1 [phi:main::print21->main::print21_@1] - //SEG13 [6] phi (byte) main::print21_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::print21 [phi:main->main::print21] + //SEG12 main::print21 + //SEG13 [6] phi from main::print21 to main::print21_@1 [phi:main::print21->main::print21_@1] + //SEG14 [6] phi (byte) main::print21_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG14 [6] phi (byte) main::print21_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#1] -- vbuyy=vbuc1 + //SEG15 [6] phi (byte) main::print21_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print21->main::print21_@1#1] -- vbuyy=vbuc1 ldy #0 - //SEG15 [6] phi from main::print21_@1 to main::print21_@1 [phi:main::print21_@1->main::print21_@1] - //SEG16 [6] phi (byte) main::print21_j#2 = (byte) main::print21_j#1 [phi:main::print21_@1->main::print21_@1#0] -- register_copy - //SEG17 [6] phi (byte) main::print21_i#2 = (byte) main::print21_i#1 [phi:main::print21_@1->main::print21_@1#1] -- register_copy - //SEG18 main::print21_@1 + //SEG16 [6] phi from main::print21_@1 to main::print21_@1 [phi:main::print21_@1->main::print21_@1] + //SEG17 [6] phi (byte) main::print21_j#2 = (byte) main::print21_j#1 [phi:main::print21_@1->main::print21_@1#0] -- register_copy + //SEG18 [6] phi (byte) main::print21_i#2 = (byte) main::print21_i#1 [phi:main::print21_@1->main::print21_@1#1] -- register_copy + //SEG19 main::print21_@1 print21_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print21_msg,y sta screen,x - //SEG20 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 + //SEG21 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 inx inx - //SEG21 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuyy=_inc_vbuyy + //SEG22 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuyy=_inc_vbuyy iny - //SEG22 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG23 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print21_msg,y cmp #'@' bne print21_b1 - //SEG23 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22] - //SEG24 main::print22 - //SEG25 [12] phi from main::print22 to main::print22_@1 [phi:main::print22->main::print22_@1] - //SEG26 [12] phi (byte) main::print22_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#0] -- vbuxx=vbuc1 + //SEG24 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22] + //SEG25 main::print22 + //SEG26 [12] phi from main::print22 to main::print22_@1 [phi:main::print22->main::print22_@1] + //SEG27 [12] phi (byte) main::print22_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG27 [12] phi (byte) main::print22_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#1] -- vbuyy=vbuc1 + //SEG28 [12] phi (byte) main::print22_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print22->main::print22_@1#1] -- vbuyy=vbuc1 ldy #0 - //SEG28 [12] phi from main::print22_@1 to main::print22_@1 [phi:main::print22_@1->main::print22_@1] - //SEG29 [12] phi (byte) main::print22_j#2 = (byte) main::print22_j#1 [phi:main::print22_@1->main::print22_@1#0] -- register_copy - //SEG30 [12] phi (byte) main::print22_i#2 = (byte) main::print22_i#1 [phi:main::print22_@1->main::print22_@1#1] -- register_copy - //SEG31 main::print22_@1 + //SEG29 [12] phi from main::print22_@1 to main::print22_@1 [phi:main::print22_@1->main::print22_@1] + //SEG30 [12] phi (byte) main::print22_j#2 = (byte) main::print22_j#1 [phi:main::print22_@1->main::print22_@1#0] -- register_copy + //SEG31 [12] phi (byte) main::print22_i#2 = (byte) main::print22_i#1 [phi:main::print22_@1->main::print22_@1#1] -- register_copy + //SEG32 main::print22_@1 print22_b1: - //SEG32 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print21_msg,y sta print22_at,x - //SEG33 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 + //SEG34 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 inx inx - //SEG34 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuyy=_inc_vbuyy + //SEG35 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuyy=_inc_vbuyy iny - //SEG35 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG36 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print21_msg,y cmp #'@' bne print22_b1 - //SEG36 main::@return - //SEG37 [17] return + //SEG37 main::@return + //SEG38 [17] return rts print21_msg: .text "hello world!@" } diff --git a/src/test/ref/helloworld2.log b/src/test/ref/helloworld2.log index a5832ff11..a4794d043 100644 --- a/src/test/ref/helloworld2.log +++ b/src/test/ref/helloworld2.log @@ -222,102 +222,103 @@ Allocated zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ] Allocated zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print2 - //SEG11 [9] phi from main to print2 [phi:main->print2] + //SEG11 [5] call print2 + //SEG12 [9] phi from main to print2 [phi:main->print2] print2_from_main: - //SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1 + //SEG13 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1 lda #screen sta print2.at+1 jsr print2 - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [7] call print2 - //SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2] + //SEG16 [7] call print2 + //SEG17 [9] phi from main::@1 to print2 [phi:main::@1->print2] print2_from_b1: - //SEG17 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1 + //SEG18 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1 lda #screen+$50 sta print2.at+1 jsr print2 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [8] return + //SEG20 [8] return rts hello: .text "hello world!@" } -//SEG20 print2 +//SEG21 print2 print2: { .label j = 5 .label i = 4 .label at = 2 - //SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@1] + //SEG22 [10] phi from print2 to print2::@1 [phi:print2->print2::@1] b1_from_print2: - //SEG22 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuz1=vbuc1 + //SEG23 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG23 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuz1=vbuc1 + //SEG24 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG24 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1] + //SEG25 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1] b1_from_b1: - //SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy - //SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy + //SEG26 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy + //SEG27 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy jmp b1 - //SEG27 print2::@1 + //SEG28 print2::@1 b1: - //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 + //SEG29 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 ldy i lda main.hello,y ldy j sta (at),y - //SEG29 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG30 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda j clc adc #2 sta j - //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 -- vbuz1=_inc_vbuz1 + //SEG31 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG31 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG32 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy i lda main.hello,y cmp #'@' bne b1_from_b1 jmp breturn - //SEG32 print2::@return + //SEG33 print2::@return breturn: - //SEG33 [15] return + //SEG34 [15] return rts } @@ -342,93 +343,94 @@ Uplifting [main] best 447 combination Uplifting [] best 447 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print2 - //SEG11 [9] phi from main to print2 [phi:main->print2] + //SEG11 [5] call print2 + //SEG12 [9] phi from main to print2 [phi:main->print2] print2_from_main: - //SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1 + //SEG13 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1 lda #screen sta print2.at+1 jsr print2 - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [7] call print2 - //SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2] + //SEG16 [7] call print2 + //SEG17 [9] phi from main::@1 to print2 [phi:main::@1->print2] print2_from_b1: - //SEG17 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1 + //SEG18 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1 lda #screen+$50 sta print2.at+1 jsr print2 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [8] return + //SEG20 [8] return rts hello: .text "hello world!@" } -//SEG20 print2 +//SEG21 print2 print2: { .label at = 2 - //SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@1] + //SEG22 [10] phi from print2 to print2::@1 [phi:print2->print2::@1] b1_from_print2: - //SEG22 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuyy=vbuc1 + //SEG23 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG23 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuxx=vbuc1 + //SEG24 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG24 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1] + //SEG25 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1] b1_from_b1: - //SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy - //SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy + //SEG26 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy + //SEG27 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy jmp b1 - //SEG27 print2::@1 + //SEG28 print2::@1 b1: - //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx + //SEG29 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda main.hello,x sta (at),y - //SEG29 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuyy=vbuyy_plus_2 + //SEG30 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuyy=vbuyy_plus_2 iny iny - //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 -- vbuxx=_inc_vbuxx + //SEG31 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 -- vbuxx=_inc_vbuxx inx - //SEG31 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG32 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda main.hello,x cmp #'@' bne b1_from_b1 jmp breturn - //SEG32 print2::@return + //SEG33 print2::@return breturn: - //SEG33 [15] return + //SEG34 [15] return rts } @@ -496,71 +498,72 @@ reg byte y [ print2::j#2 print2::j#1 ] FINAL ASSEMBLER Score: 339 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print2 - //SEG11 [9] phi from main to print2 [phi:main->print2] - //SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1 + //SEG11 [5] call print2 + //SEG12 [9] phi from main to print2 [phi:main->print2] + //SEG13 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1 lda #screen sta print2.at+1 jsr print2 - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG14 main::@1 - //SEG15 [7] call print2 - //SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2] - //SEG17 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1 + //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 main::@1 + //SEG16 [7] call print2 + //SEG17 [9] phi from main::@1 to print2 [phi:main::@1->print2] + //SEG18 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1 lda #screen+$50 sta print2.at+1 jsr print2 - //SEG18 main::@return - //SEG19 [8] return + //SEG19 main::@return + //SEG20 [8] return rts hello: .text "hello world!@" } -//SEG20 print2 +//SEG21 print2 print2: { .label at = 2 - //SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@1] - //SEG22 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuyy=vbuc1 + //SEG22 [10] phi from print2 to print2::@1 [phi:print2->print2::@1] + //SEG23 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG23 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuxx=vbuc1 + //SEG24 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG24 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1] - //SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy - //SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy - //SEG27 print2::@1 + //SEG25 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1] + //SEG26 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy + //SEG27 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy + //SEG28 print2::@1 b1: - //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx + //SEG29 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda main.hello,x sta (at),y - //SEG29 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuyy=vbuyy_plus_2 + //SEG30 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuyy=vbuyy_plus_2 iny iny - //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 -- vbuxx=_inc_vbuxx + //SEG31 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 -- vbuxx=_inc_vbuxx inx - //SEG31 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG32 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda main.hello,x cmp #'@' bne b1 - //SEG32 print2::@return - //SEG33 [15] return + //SEG33 print2::@return + //SEG34 [15] return rts } diff --git a/src/test/ref/ifmin.asm b/src/test/ref/ifmin.asm index 1973e92c6..7488ba778 100644 --- a/src/test/ref/ifmin.asm +++ b/src/test/ref/ifmin.asm @@ -1,3 +1,4 @@ +// Minimal if() test .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/ifmin.log b/src/test/ref/ifmin.log index 6008a374c..aad947fae 100644 --- a/src/test/ref/ifmin.log +++ b/src/test/ref/ifmin.log @@ -149,66 +149,68 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal if() test +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG16 [6] if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@2 -- vbuz1_ge_vbuc1_then_la1 lda i cmp #$32 bcs b2 jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [7] *((const byte*) SCREEN#0) ← (byte) main::i#2 -- _deref_pbuc1=vbuz1 + //SEG18 [7] *((const byte*) SCREEN#0) ← (byte) main::i#2 -- _deref_pbuc1=vbuz1 lda i sta SCREEN jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG20 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG21 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$64 bcc b1_from_b2 jmp breturn - //SEG21 main::@return + //SEG22 main::@return breturn: - //SEG22 [10] return + //SEG23 [10] return rts } @@ -223,61 +225,63 @@ Uplifting [main] best 338 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 338 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal if() test +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@2 -- vbuxx_ge_vbuc1_then_la1 + //SEG16 [6] if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@2 -- vbuxx_ge_vbuc1_then_la1 cpx #$32 bcs b2 jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [7] *((const byte*) SCREEN#0) ← (byte) main::i#2 -- _deref_pbuc1=vbuxx + //SEG18 [7] *((const byte*) SCREEN#0) ← (byte) main::i#2 -- _deref_pbuc1=vbuxx stx SCREEN jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG20 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG21 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #$64 bcc b1_from_b2 jmp breturn - //SEG21 main::@return + //SEG22 main::@return breturn: - //SEG22 [10] return + //SEG23 [10] return rts } @@ -330,43 +334,45 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 176 -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal if() test +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@2 -- vbuxx_ge_vbuc1_then_la1 + //SEG16 [6] if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@2 -- vbuxx_ge_vbuc1_then_la1 cpx #$32 bcs b2 - //SEG16 main::@3 - //SEG17 [7] *((const byte*) SCREEN#0) ← (byte) main::i#2 -- _deref_pbuc1=vbuxx + //SEG17 main::@3 + //SEG18 [7] *((const byte*) SCREEN#0) ← (byte) main::i#2 -- _deref_pbuc1=vbuxx stx SCREEN - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG20 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG21 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #$64 bcc b1 - //SEG21 main::@return - //SEG22 [10] return + //SEG22 main::@return + //SEG23 [10] return rts } diff --git a/src/test/ref/immzero.asm b/src/test/ref/immzero.asm index 724fbe946..518f5ae81 100644 --- a/src/test/ref/immzero.asm +++ b/src/test/ref/immzero.asm @@ -1,7 +1,7 @@ +// Tests that immediate zero values are reused - even when assigning to words .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Tests that immediate zero values are reused - even when assigning to words main: { .label w = 2 lda #<0 diff --git a/src/test/ref/immzero.log b/src/test/ref/immzero.log index 22212aebb..adc737243 100644 --- a/src/test/ref/immzero.log +++ b/src/test/ref/immzero.log @@ -134,52 +134,53 @@ 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 +//SEG0 File Comments +// Tests that immediate zero values are reused - even when assigning to words +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Tests that immediate zero values are reused - even when assigning to words +//SEG10 main main: { .label i = 2 .label w = 3 .label j = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //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 + //SEG12 [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 + //SEG13 [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] + //SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //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 + //SEG15 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#1 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuz2 + //SEG18 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuz2 lda i clc adc w @@ -187,16 +188,16 @@ main: { lda #0 adc w+1 sta w+1 - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 -- vbuz1=_inc_vbuz1 + //SEG19 [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 + //SEG20 [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 cmp #$b bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [9] return + //SEG22 [9] return rts } @@ -216,49 +217,50 @@ 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 +//SEG0 File Comments +// Tests that immediate zero values are reused - even when assigning to words +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Tests that immediate zero values are reused - even when assigning to words +//SEG10 main main: { .label w = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //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 + //SEG12 [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 + //SEG13 [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] + //SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //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 + //SEG15 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#1 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuxx + //SEG18 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuxx txa clc adc w @@ -266,15 +268,15 @@ main: { lda #0 adc w+1 sta w+1 - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 -- vbuxx=_inc_vbuxx + //SEG19 [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 + //SEG20 [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 bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [9] return + //SEG22 [9] return rts } @@ -328,35 +330,36 @@ zp ZP_WORD:2 [ main::w#2 main::w#1 ] FINAL ASSEMBLER Score: 351 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that immediate zero values are reused - even when assigning to words +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Tests that immediate zero values are reused - even when assigning to words +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label w = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //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 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 + //SEG13 [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 (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 + //SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG15 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#1 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuxx + //SEG18 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuxx txa clc adc w @@ -364,13 +367,13 @@ main: { lda #0 adc w+1 sta w+1 - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 -- vbuxx=_inc_vbuxx + //SEG19 [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 + //SEG20 [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 bne b1 - //SEG20 main::@return - //SEG21 [9] return + //SEG21 main::@return + //SEG22 [9] return rts } diff --git a/src/test/ref/importing.log b/src/test/ref/importing.log index db1d3e8ec..8a0e37725 100644 --- a/src/test/ref/importing.log +++ b/src/test/ref/importing.log @@ -80,40 +80,41 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const RED = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta screen - //SEG10 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL jmp breturn - //SEG11 main::@return + //SEG12 main::@return breturn: - //SEG12 [6] return + //SEG13 [6] return rts } @@ -129,40 +130,41 @@ Uplifting [main] best 33 combination Uplifting [] best 33 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const RED = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta screen - //SEG10 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL jmp breturn - //SEG11 main::@return + //SEG12 main::@return breturn: - //SEG12 [6] return + //SEG13 [6] return rts } @@ -202,30 +204,31 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 18 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 .const RED = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta screen - //SEG10 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) BGCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL - //SEG11 main::@return - //SEG12 [6] return + //SEG12 main::@return + //SEG13 [6] return rts } diff --git a/src/test/ref/incd020.asm b/src/test/ref/incd020.asm index 1a8d55175..3c7ab4b70 100644 --- a/src/test/ref/incd020.asm +++ b/src/test/ref/incd020.asm @@ -1,3 +1,5 @@ +// Incrementing / decrementing pointer content should result in code modifying the memory location - eg. inc $d020. +// Currently it does not but instead leads to just reading the value a few times. .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/incd020.log b/src/test/ref/incd020.log index 48aa15030..7025e25dc 100644 --- a/src/test/ref/incd020.log +++ b/src/test/ref/incd020.log @@ -93,36 +93,39 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Incrementing / decrementing pointer content should result in code modifying the memory location - eg. inc $d020. +// Currently it does not but instead leads to just reading the value a few times. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d020 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { jmp b1 - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG12 [6] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG13 [6] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL jmp b1 } @@ -137,36 +140,39 @@ Uplifting [main] best 192 combination Uplifting [] best 192 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Incrementing / decrementing pointer content should result in code modifying the memory location - eg. inc $d020. +// Currently it does not but instead leads to just reading the value a few times. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d020 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { jmp b1 - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG12 [6] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG13 [6] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL jmp b1 } @@ -203,26 +209,29 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 150 -//SEG0 Basic Upstart +//SEG0 File Comments +// Incrementing / decrementing pointer content should result in code modifying the memory location - eg. inc $d020. +// Currently it does not but instead leads to just reading the value a few times. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d020 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG12 [6] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG13 [6] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL jmp b1 } diff --git a/src/test/ref/incrementinarray.log b/src/test/ref/incrementinarray.log index a287d1f78..832cde901 100644 --- a/src/test/ref/incrementinarray.log +++ b/src/test/ref/incrementinarray.log @@ -497,111 +497,112 @@ Allocated zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cu Allocated zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 7 .label print_line_cursor = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] b20_from_bbegin: jmp b20 -//SEG4 @20 +//SEG5 @20 b20: -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] main_from_b20: jsr main -//SEG7 [3] phi from @20 to @end [phi:@20->@end] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] bend_from_b20: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] call print_cls - //SEG11 [27] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [27] 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] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG14 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG15 [6] phi (byte*) print_char_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] call print_str - //SEG18 [20] phi from main::@1 to print_str [phi:main::@1->print_str] + //SEG18 [7] call print_str + //SEG19 [20] phi from main::@1 to print_str [phi:main::@1->print_str] print_str_from_b1: jsr print_str - //SEG19 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG20 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG20 main::@4 + //SEG21 main::@4 b4: - //SEG21 [9] call print_ln - //SEG22 [15] phi from main::@4 to print_ln [phi:main::@4->print_ln] + //SEG22 [9] call print_ln + //SEG23 [15] phi from main::@4 to print_ln [phi:main::@4->print_ln] print_ln_from_b4: jsr print_ln jmp b5 - //SEG23 main::@5 + //SEG24 main::@5 b5: - //SEG24 [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) -- _deref_pbuc1=_inc__deref_pbuc2 + //SEG25 [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) -- _deref_pbuc1=_inc__deref_pbuc2 lda txt+1 clc adc #1 sta txt+1 - //SEG25 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG26 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG26 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG27 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b6 jmp breturn - //SEG27 main::@return + //SEG28 main::@return breturn: - //SEG28 [13] return + //SEG29 [13] return rts - //SEG29 main::@6 + //SEG30 main::@6 b6: - //SEG30 [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG31 [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 sta print_char_cursor+1 - //SEG31 [6] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG32 [6] phi from main::@6 to main::@1 [phi:main::@6->main::@1] 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#30 [phi:main::@6->main::@1#2] -- register_copy + //SEG33 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy + //SEG34 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy + //SEG35 [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 +//SEG36 print_ln // Print a newline print_ln: { - //SEG36 [16] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG37 [16] 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: - //SEG37 [16] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG38 [16] 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 - //SEG38 print_ln::@1 + //SEG39 print_ln::@1 b1: - //SEG39 [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG40 [17] (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 @@ -609,7 +610,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG40 [18] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG41 [18] 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 @@ -619,87 +620,87 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG41 print_ln::@return + //SEG42 print_ln::@return breturn: - //SEG42 [19] return + //SEG43 [19] return rts } -//SEG43 print_str +//SEG44 print_str // Print a zero-terminated string print_str: { .label str = 5 - //SEG44 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] + //SEG45 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] b1_from_print_str: - //SEG45 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy - //SEG46 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG46 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy + //SEG47 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #txt sta str+1 jmp b1 - //SEG47 print_str::@1 + //SEG48 print_str::@1 b1: - //SEG48 [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG49 [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG49 print_str::@return + //SEG50 print_str::@return breturn: - //SEG50 [23] return + //SEG51 [23] return rts - //SEG51 print_str::@2 + //SEG52 print_str::@2 b2: - //SEG52 [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG53 [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG53 [25] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#12 -- pbuz1=_inc_pbuz1 + //SEG54 [25] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#12 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG54 [26] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG55 [26] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG55 [21] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] + //SEG56 [21] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] b1_from_b2: - //SEG56 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG57 [21] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy + //SEG57 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy + //SEG58 [21] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy jmp b1 } -//SEG58 print_cls +//SEG59 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 9 - //SEG59 [28] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG60 [28] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG60 [28] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG61 [28] 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 - //SEG61 [28] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG62 [28] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG62 [28] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG63 [28] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG63 print_cls::@1 + //SEG64 print_cls::@1 b1: - //SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG65 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG66 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG66 [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 -- pbuz1_neq_pbuc1_then_la1 + //SEG67 [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 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -707,9 +708,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG67 print_cls::@return + //SEG68 print_cls::@return breturn: - //SEG68 [32] return + //SEG69 [32] return rts } txt: .text "camelot@" @@ -757,108 +758,109 @@ 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#30 print_char_cursor#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 6 .label print_line_cursor = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] b20_from_bbegin: jmp b20 -//SEG4 @20 +//SEG5 @20 b20: -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] main_from_b20: jsr main -//SEG7 [3] phi from @20 to @end [phi:@20->@end] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] bend_from_b20: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [27] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [27] 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] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG14 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG14 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG15 [6] phi (byte*) print_char_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] call print_str - //SEG18 [20] phi from main::@1 to print_str [phi:main::@1->print_str] + //SEG18 [7] call print_str + //SEG19 [20] phi from main::@1 to print_str [phi:main::@1->print_str] print_str_from_b1: jsr print_str - //SEG19 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG20 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG20 main::@4 + //SEG21 main::@4 b4: - //SEG21 [9] call print_ln - //SEG22 [15] phi from main::@4 to print_ln [phi:main::@4->print_ln] + //SEG22 [9] call print_ln + //SEG23 [15] phi from main::@4 to print_ln [phi:main::@4->print_ln] print_ln_from_b4: jsr print_ln jmp b5 - //SEG23 main::@5 + //SEG24 main::@5 b5: - //SEG24 [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) -- _deref_pbuc1=_inc__deref_pbuc2 + //SEG25 [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) -- _deref_pbuc1=_inc__deref_pbuc2 lda txt+1 clc adc #1 sta txt+1 - //SEG25 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG26 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG26 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG27 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b6 jmp breturn - //SEG27 main::@return + //SEG28 main::@return breturn: - //SEG28 [13] return + //SEG29 [13] return rts - //SEG29 main::@6 + //SEG30 main::@6 b6: - //SEG30 [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG31 [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 sta print_char_cursor+1 - //SEG31 [6] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG32 [6] phi from main::@6 to main::@1 [phi:main::@6->main::@1] 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#30 [phi:main::@6->main::@1#2] -- register_copy + //SEG33 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy + //SEG34 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy + //SEG35 [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 +//SEG36 print_ln // Print a newline print_ln: { - //SEG36 [16] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG37 [16] 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: - //SEG37 [16] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG38 [16] 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 - //SEG38 print_ln::@1 + //SEG39 print_ln::@1 b1: - //SEG39 [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG40 [17] (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 @@ -866,7 +868,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG40 [18] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG41 [18] 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 @@ -876,87 +878,87 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG41 print_ln::@return + //SEG42 print_ln::@return breturn: - //SEG42 [19] return + //SEG43 [19] return rts } -//SEG43 print_str +//SEG44 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG44 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] + //SEG45 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] b1_from_print_str: - //SEG45 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy - //SEG46 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG46 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy + //SEG47 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #txt sta str+1 jmp b1 - //SEG47 print_str::@1 + //SEG48 print_str::@1 b1: - //SEG48 [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG49 [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG49 print_str::@return + //SEG50 print_str::@return breturn: - //SEG50 [23] return + //SEG51 [23] return rts - //SEG51 print_str::@2 + //SEG52 print_str::@2 b2: - //SEG52 [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG53 [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG53 [25] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#12 -- pbuz1=_inc_pbuz1 + //SEG54 [25] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#12 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG54 [26] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG55 [26] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG55 [21] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] + //SEG56 [21] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] b1_from_b2: - //SEG56 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG57 [21] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy + //SEG57 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy + //SEG58 [21] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy jmp b1 } -//SEG58 print_cls +//SEG59 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG59 [28] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG60 [28] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG60 [28] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG61 [28] 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 - //SEG61 [28] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG62 [28] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG62 [28] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG63 [28] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG63 print_cls::@1 + //SEG64 print_cls::@1 b1: - //SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG65 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG66 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG66 [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 -- pbuz1_neq_pbuc1_then_la1 + //SEG67 [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 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -964,9 +966,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG67 print_cls::@return + //SEG68 print_cls::@return breturn: - //SEG68 [32] return + //SEG69 [32] return rts } txt: .text "camelot@" @@ -1076,83 +1078,84 @@ zp ZP_WORD:6 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 pr FINAL ASSEMBLER Score: 11122 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 6 .label print_line_cursor = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] -//SEG4 @20 -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] -//SEG7 [3] phi from @20 to @end [phi:@20->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG5 @20 +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [27] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [27] 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) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG14 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG15 [6] phi (byte*) print_char_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] call print_str - //SEG18 [20] phi from main::@1 to print_str [phi:main::@1->print_str] + //SEG18 [7] call print_str + //SEG19 [20] phi from main::@1 to print_str [phi:main::@1->print_str] jsr print_str - //SEG19 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] - //SEG20 main::@4 - //SEG21 [9] call print_ln - //SEG22 [15] phi from main::@4 to print_ln [phi:main::@4->print_ln] + //SEG20 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG21 main::@4 + //SEG22 [9] call print_ln + //SEG23 [15] phi from main::@4 to print_ln [phi:main::@4->print_ln] jsr print_ln - //SEG23 main::@5 - //SEG24 [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) -- _deref_pbuc1=_inc__deref_pbuc2 + //SEG24 main::@5 + //SEG25 [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) -- _deref_pbuc1=_inc__deref_pbuc2 lda txt+1 clc adc #1 sta txt+1 - //SEG25 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG26 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG26 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG27 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b6 - //SEG27 main::@return - //SEG28 [13] return + //SEG28 main::@return + //SEG29 [13] return rts - //SEG29 main::@6 + //SEG30 main::@6 b6: - //SEG30 [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG31 [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 sta print_char_cursor+1 - //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#30 [phi:main::@6->main::@1#2] -- register_copy + //SEG32 [6] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG33 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy + //SEG34 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy + //SEG35 [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 +//SEG36 print_ln // Print a newline print_ln: { - //SEG36 [16] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG37 [16] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG38 print_ln::@1 + //SEG37 [16] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG38 [16] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG39 print_ln::@1 b1: - //SEG39 [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG40 [17] (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 @@ -1160,7 +1163,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG40 [18] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG41 [18] 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 @@ -1169,84 +1172,84 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG41 print_ln::@return - //SEG42 [19] return + //SEG42 print_ln::@return + //SEG43 [19] return rts } -//SEG43 print_str +//SEG44 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG44 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] - //SEG45 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy - //SEG46 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG45 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] + //SEG46 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy + //SEG47 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #txt sta str+1 - //SEG47 print_str::@1 + //SEG48 print_str::@1 b1: - //SEG48 [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG49 [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG49 print_str::@return - //SEG50 [23] return + //SEG50 print_str::@return + //SEG51 [23] return rts - //SEG51 print_str::@2 + //SEG52 print_str::@2 b2: - //SEG52 [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG53 [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG53 [25] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#12 -- pbuz1=_inc_pbuz1 + //SEG54 [25] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#12 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG54 [26] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG55 [26] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG55 [21] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] - //SEG56 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG57 [21] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy + //SEG56 [21] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] + //SEG57 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy + //SEG58 [21] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy jmp b1 } -//SEG58 print_cls +//SEG59 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG59 [28] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG60 [28] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG60 [28] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG61 [28] 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 - //SEG61 [28] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG62 [28] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG63 print_cls::@1 + //SEG62 [28] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG63 [28] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG64 print_cls::@1 b1: - //SEG64 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG65 [29] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG65 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG66 [30] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG66 [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 -- pbuz1_neq_pbuc1_then_la1 + //SEG67 [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 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG67 print_cls::@return - //SEG68 [32] return + //SEG68 print_cls::@return + //SEG69 [32] return rts } txt: .text "camelot@" diff --git a/src/test/ref/infloop-error.asm b/src/test/ref/infloop-error.asm index e9c7431ee..6114ffab2 100644 --- a/src/test/ref/infloop-error.asm +++ b/src/test/ref/infloop-error.asm @@ -1,3 +1,4 @@ +// Results in infinite compile loop as the compiler keeps trying to remove the same (empty) alias .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/infloop-error.log b/src/test/ref/infloop-error.log index 7802d8231..a53734923 100644 --- a/src/test/ref/infloop-error.log +++ b/src/test/ref/infloop-error.log @@ -266,100 +266,102 @@ Allocated zp ZP_BYTE:3 [ main::min#2 main::min#3 main::min#9 ] Allocated zp ZP_BYTE:4 [ main::max#2 main::max#3 main::max#9 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Results in infinite compile loop as the compiler keeps trying to remove the same (empty) alias +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label pos = 2 .label min = 3 .label max = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::max#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::max#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta max - //SEG12 [5] phi (byte) main::min#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::min#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #$ff sta min - //SEG13 [5] phi (byte) main::pos#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 + //SEG14 [5] phi (byte) main::pos#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 lda #0 sta pos jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b2 - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [6] (byte) main::pos#1 ← ++ (byte) main::pos#2 -- vbuz1=_inc_vbuz1 + //SEG17 [6] (byte) main::pos#1 ← ++ (byte) main::pos#2 -- vbuz1=_inc_vbuz1 inc pos - //SEG17 [7] if((byte) main::pos#1>=(byte) main::min#2) goto main::@4 -- vbuz1_ge_vbuz2_then_la1 + //SEG18 [7] if((byte) main::pos#1>=(byte) main::min#2) goto main::@4 -- vbuz1_ge_vbuz2_then_la1 lda pos cmp min bcs b4_from_b2 jmp b8 - //SEG18 main::@8 + //SEG19 main::@8 b8: - //SEG19 [8] (byte~) main::min#9 ← (byte) main::pos#1 -- vbuz1=vbuz2 + //SEG20 [8] (byte~) main::min#9 ← (byte) main::pos#1 -- vbuz1=vbuz2 lda pos sta min - //SEG20 [9] phi from main::@2 main::@8 to main::@4 [phi:main::@2/main::@8->main::@4] + //SEG21 [9] phi from main::@2 main::@8 to main::@4 [phi:main::@2/main::@8->main::@4] b4_from_b2: b4_from_b8: - //SEG21 [9] phi (byte) main::min#3 = (byte) main::min#2 [phi:main::@2/main::@8->main::@4#0] -- register_copy + //SEG22 [9] phi (byte) main::min#3 = (byte) main::min#2 [phi:main::@2/main::@8->main::@4#0] -- register_copy jmp b4 - //SEG22 main::@4 + //SEG23 main::@4 b4: - //SEG23 [10] if((byte) main::pos#1<=(byte) main::max#2) goto main::@5 -- vbuz1_le_vbuz2_then_la1 + //SEG24 [10] if((byte) main::pos#1<=(byte) main::max#2) goto main::@5 -- vbuz1_le_vbuz2_then_la1 lda max cmp pos bcs b5_from_b4 jmp b9 - //SEG24 main::@9 + //SEG25 main::@9 b9: - //SEG25 [11] (byte~) main::max#9 ← (byte) main::pos#1 -- vbuz1=vbuz2 + //SEG26 [11] (byte~) main::max#9 ← (byte) main::pos#1 -- vbuz1=vbuz2 lda pos sta max - //SEG26 [12] phi from main::@4 main::@9 to main::@5 [phi:main::@4/main::@9->main::@5] + //SEG27 [12] phi from main::@4 main::@9 to main::@5 [phi:main::@4/main::@9->main::@5] b5_from_b4: b5_from_b9: - //SEG27 [12] phi (byte) main::max#3 = (byte) main::max#2 [phi:main::@4/main::@9->main::@5#0] -- register_copy + //SEG28 [12] phi (byte) main::max#3 = (byte) main::max#2 [phi:main::@4/main::@9->main::@5#0] -- register_copy jmp b5 - //SEG28 main::@5 + //SEG29 main::@5 b5: - //SEG29 [13] *((const byte*) SCREEN#0) ← (byte) main::min#3 -- _deref_pbuc1=vbuz1 + //SEG30 [13] *((const byte*) SCREEN#0) ← (byte) main::min#3 -- _deref_pbuc1=vbuz1 lda min sta SCREEN - //SEG30 [14] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::max#3 -- _deref_pbuc1=vbuz1 + //SEG31 [14] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::max#3 -- _deref_pbuc1=vbuz1 lda max sta SCREEN+1 - //SEG31 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::pos#1 -- _deref_pbuc1=vbuz1 + //SEG32 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::pos#1 -- _deref_pbuc1=vbuz1 lda pos sta SCREEN+2 - //SEG32 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG33 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG33 [5] phi (byte) main::max#2 = (byte) main::max#3 [phi:main::@5->main::@1#0] -- register_copy - //SEG34 [5] phi (byte) main::min#2 = (byte) main::min#3 [phi:main::@5->main::@1#1] -- register_copy - //SEG35 [5] phi (byte) main::pos#2 = (byte) main::pos#1 [phi:main::@5->main::@1#2] -- register_copy + //SEG34 [5] phi (byte) main::max#2 = (byte) main::max#3 [phi:main::@5->main::@1#0] -- register_copy + //SEG35 [5] phi (byte) main::min#2 = (byte) main::min#3 [phi:main::@5->main::@1#1] -- register_copy + //SEG36 [5] phi (byte) main::pos#2 = (byte) main::pos#1 [phi:main::@5->main::@1#2] -- register_copy jmp b1 } @@ -376,90 +378,92 @@ Uplifting [main] best 652 combination reg byte x [ main::min#2 main::min#3 main: Uplifting [] best 652 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Results in infinite compile loop as the compiler keeps trying to remove the same (empty) alias +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::max#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG12 [5] phi (byte) main::max#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi (byte) main::min#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::min#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #$ff - //SEG13 [5] phi (byte) main::pos#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuaa=vbuc1 + //SEG14 [5] phi (byte) main::pos#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuaa=vbuc1 lda #0 jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b2 - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [6] (byte) main::pos#1 ← ++ (byte) main::pos#2 -- vbuaa=_inc_vbuaa + //SEG17 [6] (byte) main::pos#1 ← ++ (byte) main::pos#2 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG17 [7] if((byte) main::pos#1>=(byte) main::min#2) goto main::@4 -- vbuaa_ge_vbuxx_then_la1 + //SEG18 [7] if((byte) main::pos#1>=(byte) main::min#2) goto main::@4 -- vbuaa_ge_vbuxx_then_la1 stx $ff cmp $ff bcs b4_from_b2 jmp b8 - //SEG18 main::@8 + //SEG19 main::@8 b8: - //SEG19 [8] (byte~) main::min#9 ← (byte) main::pos#1 -- vbuxx=vbuaa + //SEG20 [8] (byte~) main::min#9 ← (byte) main::pos#1 -- vbuxx=vbuaa tax - //SEG20 [9] phi from main::@2 main::@8 to main::@4 [phi:main::@2/main::@8->main::@4] + //SEG21 [9] phi from main::@2 main::@8 to main::@4 [phi:main::@2/main::@8->main::@4] b4_from_b2: b4_from_b8: - //SEG21 [9] phi (byte) main::min#3 = (byte) main::min#2 [phi:main::@2/main::@8->main::@4#0] -- register_copy + //SEG22 [9] phi (byte) main::min#3 = (byte) main::min#2 [phi:main::@2/main::@8->main::@4#0] -- register_copy jmp b4 - //SEG22 main::@4 + //SEG23 main::@4 b4: - //SEG23 [10] if((byte) main::pos#1<=(byte) main::max#2) goto main::@5 -- vbuaa_le_vbuyy_then_la1 + //SEG24 [10] if((byte) main::pos#1<=(byte) main::max#2) goto main::@5 -- vbuaa_le_vbuyy_then_la1 sta $ff cpy $ff bcs b5_from_b4 jmp b9 - //SEG24 main::@9 + //SEG25 main::@9 b9: - //SEG25 [11] (byte~) main::max#9 ← (byte) main::pos#1 -- vbuyy=vbuaa + //SEG26 [11] (byte~) main::max#9 ← (byte) main::pos#1 -- vbuyy=vbuaa tay - //SEG26 [12] phi from main::@4 main::@9 to main::@5 [phi:main::@4/main::@9->main::@5] + //SEG27 [12] phi from main::@4 main::@9 to main::@5 [phi:main::@4/main::@9->main::@5] b5_from_b4: b5_from_b9: - //SEG27 [12] phi (byte) main::max#3 = (byte) main::max#2 [phi:main::@4/main::@9->main::@5#0] -- register_copy + //SEG28 [12] phi (byte) main::max#3 = (byte) main::max#2 [phi:main::@4/main::@9->main::@5#0] -- register_copy jmp b5 - //SEG28 main::@5 + //SEG29 main::@5 b5: - //SEG29 [13] *((const byte*) SCREEN#0) ← (byte) main::min#3 -- _deref_pbuc1=vbuxx + //SEG30 [13] *((const byte*) SCREEN#0) ← (byte) main::min#3 -- _deref_pbuc1=vbuxx stx SCREEN - //SEG30 [14] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::max#3 -- _deref_pbuc1=vbuyy + //SEG31 [14] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::max#3 -- _deref_pbuc1=vbuyy sty SCREEN+1 - //SEG31 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::pos#1 -- _deref_pbuc1=vbuaa + //SEG32 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::pos#1 -- _deref_pbuc1=vbuaa sta SCREEN+2 - //SEG32 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG33 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG33 [5] phi (byte) main::max#2 = (byte) main::max#3 [phi:main::@5->main::@1#0] -- register_copy - //SEG34 [5] phi (byte) main::min#2 = (byte) main::min#3 [phi:main::@5->main::@1#1] -- register_copy - //SEG35 [5] phi (byte) main::pos#2 = (byte) main::pos#1 [phi:main::@5->main::@1#2] -- register_copy + //SEG34 [5] phi (byte) main::max#2 = (byte) main::max#3 [phi:main::@5->main::@1#0] -- register_copy + //SEG35 [5] phi (byte) main::min#2 = (byte) main::min#3 [phi:main::@5->main::@1#1] -- register_copy + //SEG36 [5] phi (byte) main::pos#2 = (byte) main::pos#1 [phi:main::@5->main::@1#2] -- register_copy jmp b1 } @@ -532,66 +536,68 @@ reg byte y [ main::max#2 main::max#3 main::max#9 ] FINAL ASSEMBLER Score: 460 -//SEG0 Basic Upstart +//SEG0 File Comments +// Results in infinite compile loop as the compiler keeps trying to remove the same (empty) alias +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::max#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::max#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi (byte) main::min#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::min#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #$ff - //SEG13 [5] phi (byte) main::pos#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuaa=vbuc1 + //SEG14 [5] phi (byte) main::pos#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuaa=vbuc1 tya - //SEG14 main::@1 - //SEG15 main::@2 + //SEG15 main::@1 + //SEG16 main::@2 b2: - //SEG16 [6] (byte) main::pos#1 ← ++ (byte) main::pos#2 -- vbuaa=_inc_vbuaa + //SEG17 [6] (byte) main::pos#1 ← ++ (byte) main::pos#2 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG17 [7] if((byte) main::pos#1>=(byte) main::min#2) goto main::@4 -- vbuaa_ge_vbuxx_then_la1 + //SEG18 [7] if((byte) main::pos#1>=(byte) main::min#2) goto main::@4 -- vbuaa_ge_vbuxx_then_la1 stx $ff cmp $ff bcs b4 - //SEG18 main::@8 - //SEG19 [8] (byte~) main::min#9 ← (byte) main::pos#1 -- vbuxx=vbuaa + //SEG19 main::@8 + //SEG20 [8] (byte~) main::min#9 ← (byte) main::pos#1 -- vbuxx=vbuaa tax - //SEG20 [9] phi from main::@2 main::@8 to main::@4 [phi:main::@2/main::@8->main::@4] - //SEG21 [9] phi (byte) main::min#3 = (byte) main::min#2 [phi:main::@2/main::@8->main::@4#0] -- register_copy - //SEG22 main::@4 + //SEG21 [9] phi from main::@2 main::@8 to main::@4 [phi:main::@2/main::@8->main::@4] + //SEG22 [9] phi (byte) main::min#3 = (byte) main::min#2 [phi:main::@2/main::@8->main::@4#0] -- register_copy + //SEG23 main::@4 b4: - //SEG23 [10] if((byte) main::pos#1<=(byte) main::max#2) goto main::@5 -- vbuaa_le_vbuyy_then_la1 + //SEG24 [10] if((byte) main::pos#1<=(byte) main::max#2) goto main::@5 -- vbuaa_le_vbuyy_then_la1 sta $ff cpy $ff bcs b5 - //SEG24 main::@9 - //SEG25 [11] (byte~) main::max#9 ← (byte) main::pos#1 -- vbuyy=vbuaa + //SEG25 main::@9 + //SEG26 [11] (byte~) main::max#9 ← (byte) main::pos#1 -- vbuyy=vbuaa tay - //SEG26 [12] phi from main::@4 main::@9 to main::@5 [phi:main::@4/main::@9->main::@5] - //SEG27 [12] phi (byte) main::max#3 = (byte) main::max#2 [phi:main::@4/main::@9->main::@5#0] -- register_copy - //SEG28 main::@5 + //SEG27 [12] phi from main::@4 main::@9 to main::@5 [phi:main::@4/main::@9->main::@5] + //SEG28 [12] phi (byte) main::max#3 = (byte) main::max#2 [phi:main::@4/main::@9->main::@5#0] -- register_copy + //SEG29 main::@5 b5: - //SEG29 [13] *((const byte*) SCREEN#0) ← (byte) main::min#3 -- _deref_pbuc1=vbuxx + //SEG30 [13] *((const byte*) SCREEN#0) ← (byte) main::min#3 -- _deref_pbuc1=vbuxx stx SCREEN - //SEG30 [14] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::max#3 -- _deref_pbuc1=vbuyy + //SEG31 [14] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::max#3 -- _deref_pbuc1=vbuyy sty SCREEN+1 - //SEG31 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::pos#1 -- _deref_pbuc1=vbuaa + //SEG32 [15] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::pos#1 -- _deref_pbuc1=vbuaa sta SCREEN+2 - //SEG32 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG33 [5] phi (byte) main::max#2 = (byte) main::max#3 [phi:main::@5->main::@1#0] -- register_copy - //SEG34 [5] phi (byte) main::min#2 = (byte) main::min#3 [phi:main::@5->main::@1#1] -- register_copy - //SEG35 [5] phi (byte) main::pos#2 = (byte) main::pos#1 [phi:main::@5->main::@1#2] -- register_copy + //SEG33 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG34 [5] phi (byte) main::max#2 = (byte) main::max#3 [phi:main::@5->main::@1#0] -- register_copy + //SEG35 [5] phi (byte) main::min#2 = (byte) main::min#3 [phi:main::@5->main::@1#1] -- register_copy + //SEG36 [5] phi (byte) main::pos#2 = (byte) main::pos#1 [phi:main::@5->main::@1#2] -- register_copy jmp b2 } diff --git a/src/test/ref/init-volatiles.asm b/src/test/ref/init-volatiles.asm index bec7432ac..23965ecd9 100644 --- a/src/test/ref/init-volatiles.asm +++ b/src/test/ref/init-volatiles.asm @@ -1,3 +1,4 @@ +// Illustrates a problem where volatiles with initializers are initialized outside the main()-routine .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" diff --git a/src/test/ref/init-volatiles.log b/src/test/ref/init-volatiles.log index f67d80651..c7766a7b5 100644 --- a/src/test/ref/init-volatiles.log +++ b/src/test/ref/init-volatiles.log @@ -129,57 +129,59 @@ Allocated zp ZP_BYTE:2 [ x#5 x#0 x#1 ] Allocated zp ZP_BYTE:3 [ x#2 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates a problem where volatiles with initializers are initialized outside the main()-routine +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label x = 2 .label x_2 = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuz1=vbuc1 +//SEG4 [0] (byte) x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuz1=vbuc1 lda #$c sta x -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG5 @1 +//SEG6 @1 b1: -//SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG7 [2] call main +//SEG8 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { - //SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] + //SEG12 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] b1_from_main: b1_from_b1: - //SEG12 [5] phi (byte) x#5 = (byte) x#0 [phi:main/main::@1->main::@1#0] -- register_copy + //SEG13 [5] phi (byte) x#5 = (byte) x#0 [phi:main/main::@1->main::@1#0] -- register_copy jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) x#1 ← ++ (byte) x#5 -- vbuz1=_inc_vbuz1 + //SEG15 [6] (byte) x#1 ← ++ (byte) x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG15 [7] if((byte) x#1<(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG16 [7] if((byte) x#1<(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$32 bcc b1_from_b1 jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [8] (byte) x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG18 [8] (byte) x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta x_2 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } @@ -203,56 +205,58 @@ Uplifting [] best 216 combination zp ZP_BYTE:3 [ x#2 ] Coalescing zero page register [ zp ZP_BYTE:2 [ x#5 x#0 x#1 ] ] with [ zp ZP_BYTE:3 [ x#2 ] ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates a problem where volatiles with initializers are initialized outside the main()-routine +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label x = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuz1=vbuc1 +//SEG4 [0] (byte) x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuz1=vbuc1 lda #$c sta x -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG5 @1 +//SEG6 @1 b1: -//SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG7 [2] call main +//SEG8 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { - //SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] + //SEG12 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] b1_from_main: b1_from_b1: - //SEG12 [5] phi (byte) x#5 = (byte) x#0 [phi:main/main::@1->main::@1#0] -- register_copy + //SEG13 [5] phi (byte) x#5 = (byte) x#0 [phi:main/main::@1->main::@1#0] -- register_copy jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) x#1 ← ++ (byte) x#5 -- vbuz1=_inc_vbuz1 + //SEG15 [6] (byte) x#1 ← ++ (byte) x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG15 [7] if((byte) x#1<(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG16 [7] if((byte) x#1<(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$32 bcc b1_from_b1 jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [8] (byte) x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG18 [8] (byte) x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta x jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } @@ -296,42 +300,44 @@ zp ZP_BYTE:2 [ x#5 x#0 x#1 x#2 ] FINAL ASSEMBLER Score: 147 -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates a problem where volatiles with initializers are initialized outside the main()-routine +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label x = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuz1=vbuc1 +//SEG4 [0] (byte) x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- vbuz1=vbuc1 lda #$c sta x -//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG5 @1 -//SEG6 [2] call main -//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG5 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG6 @1 +//SEG7 [2] call main +//SEG8 [4] phi from @1 to main [phi:@1->main] jsr main -//SEG8 [3] phi from @1 to @end [phi:@1->@end] -//SEG9 @end -//SEG10 main +//SEG9 [3] phi from @1 to @end [phi:@1->@end] +//SEG10 @end +//SEG11 main main: { - //SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] - //SEG12 [5] phi (byte) x#5 = (byte) x#0 [phi:main/main::@1->main::@1#0] -- register_copy - //SEG13 main::@1 + //SEG12 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1] + //SEG13 [5] phi (byte) x#5 = (byte) x#0 [phi:main/main::@1->main::@1#0] -- register_copy + //SEG14 main::@1 b1: - //SEG14 [6] (byte) x#1 ← ++ (byte) x#5 -- vbuz1=_inc_vbuz1 + //SEG15 [6] (byte) x#1 ← ++ (byte) x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG15 [7] if((byte) x#1<(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG16 [7] if((byte) x#1<(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$32 bcc b1 - //SEG16 main::@3 - //SEG17 [8] (byte) x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG17 main::@3 + //SEG18 [8] (byte) x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta x - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts } diff --git a/src/test/ref/inline-asm.log b/src/test/ref/inline-asm.log index ad6014b6b..a24521d87 100644 --- a/src/test/ref/inline-asm.log +++ b/src/test/ref/inline-asm.log @@ -62,28 +62,29 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- } + //SEG10 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- } lda #'a' ldx #$ff !: @@ -94,9 +95,9 @@ main: { dex bne !- jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -111,28 +112,29 @@ Uplifting [main] best 49 combination Uplifting [] best 49 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- } + //SEG10 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- } lda #'a' ldx #$ff !: @@ -143,9 +145,9 @@ main: { dex bne !- jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -179,20 +181,21 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 34 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- } + //SEG10 asm { lda#'a' ldx#$ff !: sta$0400,x sta$0500,x sta$0600,x sta$0700,x dex bne!- } lda #'a' ldx #$ff !: @@ -202,8 +205,8 @@ main: { sta $700,x dex bne !- - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/inline-assignment.log b/src/test/ref/inline-assignment.log index 1c7e447ec..157087575 100644 --- a/src/test/ref/inline-assignment.log +++ b/src/test/ref/inline-assignment.log @@ -119,62 +119,63 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::a#0 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label a = 2 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta a jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuz1=vbuz1 ldy a tya sta SCREEN,y - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 80 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 80 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuz1=vbuz1 ldy a tya sta SCREEN+$50,y - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::a#0 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::a#0 -- vbuz1=_inc_vbuz1 inc i - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$28 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -189,56 +190,57 @@ Uplifting [main] best 333 combination reg byte x [ main::a#0 main::i#1 ] Uplifting [] best 333 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 80 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 80 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$50,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::a#0 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::a#0 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -287,41 +289,42 @@ reg byte x [ main::a#0 main::i#1 ] FINAL ASSEMBLER Score: 231 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 80 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 80 + (byte) main::a#0) ← (byte) main::a#0 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$50,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::a#0 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::a#0 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1 - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts } diff --git a/src/test/ref/inline-function-if.asm b/src/test/ref/inline-function-if.asm index e3173f2e6..8e2a3555f 100644 --- a/src/test/ref/inline-function-if.asm +++ b/src/test/ref/inline-function-if.asm @@ -1,3 +1,4 @@ +// Test inlining a slightly complex print function (containing an if) .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/inline-function-if.log b/src/test/ref/inline-function-if.log index a9f1cd16f..1fcfaad61 100644 --- a/src/test/ref/inline-function-if.log +++ b/src/test/ref/inline-function-if.log @@ -270,59 +270,61 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inlining a slightly complex print function (containing an if) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const toUpper1_ch = 'c' .const toUpper2_ch = 'm' .const toUpper1_res = toUpper1_ch+$40 - //SEG10 [5] phi from main to main::toUpper1 [phi:main->main::toUpper1] + //SEG11 [5] phi from main to main::toUpper1 [phi:main->main::toUpper1] toUpper1_from_main: jmp toUpper1 - //SEG11 main::toUpper1 + //SEG12 main::toUpper1 toUpper1: jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] *((const byte*) screen#0) ← (const byte) main::toUpper1_res#1 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) screen#0) ← (const byte) main::toUpper1_res#1 -- _deref_pbuc1=vbuc2 lda #toUpper1_res sta screen - //SEG14 [7] phi from main::@1 to main::toUpper2 [phi:main::@1->main::toUpper2] + //SEG15 [7] phi from main::@1 to main::toUpper2 [phi:main::@1->main::toUpper2] toUpper2_from_b1: jmp toUpper2 - //SEG15 main::toUpper2 + //SEG16 main::toUpper2 toUpper2: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::toUpper2_ch#0 -- _deref_pbuc1=vbuc2 + //SEG18 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::toUpper2_ch#0 -- _deref_pbuc1=vbuc2 lda #toUpper2_ch sta screen+1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } @@ -338,59 +340,61 @@ Uplifting [main] best 99 combination Uplifting [] best 99 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inlining a slightly complex print function (containing an if) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const toUpper1_ch = 'c' .const toUpper2_ch = 'm' .const toUpper1_res = toUpper1_ch+$40 - //SEG10 [5] phi from main to main::toUpper1 [phi:main->main::toUpper1] + //SEG11 [5] phi from main to main::toUpper1 [phi:main->main::toUpper1] toUpper1_from_main: jmp toUpper1 - //SEG11 main::toUpper1 + //SEG12 main::toUpper1 toUpper1: jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] *((const byte*) screen#0) ← (const byte) main::toUpper1_res#1 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) screen#0) ← (const byte) main::toUpper1_res#1 -- _deref_pbuc1=vbuc2 lda #toUpper1_res sta screen - //SEG14 [7] phi from main::@1 to main::toUpper2 [phi:main::@1->main::toUpper2] + //SEG15 [7] phi from main::@1 to main::toUpper2 [phi:main::@1->main::toUpper2] toUpper2_from_b1: jmp toUpper2 - //SEG15 main::toUpper2 + //SEG16 main::toUpper2 toUpper2: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::toUpper2_ch#0 -- _deref_pbuc1=vbuc2 + //SEG18 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::toUpper2_ch#0 -- _deref_pbuc1=vbuc2 lda #toUpper2_ch sta screen+1 jmp breturn - //SEG18 main::@return + //SEG19 main::@return breturn: - //SEG19 [9] return + //SEG20 [9] return rts } @@ -454,38 +458,40 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 18 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inlining a slightly complex print function (containing an if) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .const toUpper1_ch = 'c' .const toUpper2_ch = 'm' .const toUpper1_res = toUpper1_ch+$40 - //SEG10 [5] phi from main to main::toUpper1 [phi:main->main::toUpper1] - //SEG11 main::toUpper1 - //SEG12 main::@1 - //SEG13 [6] *((const byte*) screen#0) ← (const byte) main::toUpper1_res#1 -- _deref_pbuc1=vbuc2 + //SEG11 [5] phi from main to main::toUpper1 [phi:main->main::toUpper1] + //SEG12 main::toUpper1 + //SEG13 main::@1 + //SEG14 [6] *((const byte*) screen#0) ← (const byte) main::toUpper1_res#1 -- _deref_pbuc1=vbuc2 lda #toUpper1_res sta screen - //SEG14 [7] phi from main::@1 to main::toUpper2 [phi:main::@1->main::toUpper2] - //SEG15 main::toUpper2 - //SEG16 main::@2 - //SEG17 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::toUpper2_ch#0 -- _deref_pbuc1=vbuc2 + //SEG15 [7] phi from main::@1 to main::toUpper2 [phi:main::@1->main::toUpper2] + //SEG16 main::toUpper2 + //SEG17 main::@2 + //SEG18 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::toUpper2_ch#0 -- _deref_pbuc1=vbuc2 lda #toUpper2_ch sta screen+1 - //SEG18 main::@return - //SEG19 [9] return + //SEG19 main::@return + //SEG20 [9] return rts } diff --git a/src/test/ref/inline-function-level2.asm b/src/test/ref/inline-function-level2.asm index 7a98fb90e..f8c502c41 100644 --- a/src/test/ref/inline-function-level2.asm +++ b/src/test/ref/inline-function-level2.asm @@ -1,8 +1,8 @@ +// Inline functions in two levels .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" .label cur_line = 4 -// Inline functions in two levels main: { .const line1_xpos = 2 .const line1_xadd = $40 diff --git a/src/test/ref/inline-function-level2.log b/src/test/ref/inline-function-level2.log index 6e0e6d456..0b36380d9 100644 --- a/src/test/ref/inline-function-level2.log +++ b/src/test/ref/inline-function-level2.log @@ -542,32 +542,33 @@ Allocated zp ZP_BYTE:17 [ main::plot2_xpos#0 ] Allocated zp ZP_WORD:18 [ main::plot2_$0#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline functions in two levels +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label cur_line = 6 .label cur_line_10 = $b .label cur_line_11 = $b -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Inline functions in two levels +//SEG10 main main: { .const line1_xpos = 2 .const line1_xadd = $40 @@ -586,30 +587,30 @@ main: { .label plot2__0 = $12 .label line2_pos = 9 .label line2_i = $d - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bcc b1_from_b1 @@ -618,42 +619,42 @@ main: { cmp #<$400+$3e8 bcc b1_from_b1 !: - //SEG18 [9] phi from main::@1 to main::line1 [phi:main::@1->main::line1] + //SEG19 [9] phi from main::@1 to main::line1 [phi:main::@1->main::line1] line1_from_b1: jmp line1 - //SEG19 main::line1 + //SEG20 main::line1 line1: - //SEG20 [10] phi from main::line1 to main::line1_@1 [phi:main::line1->main::line1_@1] + //SEG21 [10] phi from main::line1 to main::line1_@1 [phi:main::line1->main::line1_@1] line1_b1_from_line1: - //SEG21 [10] phi (byte) main::line1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line1->main::line1_@1#0] -- vbuz1=vbuc1 + //SEG22 [10] phi (byte) main::line1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line1->main::line1_@1#0] -- vbuz1=vbuc1 lda #0 sta line1_i - //SEG22 [10] phi (byte*) cur_line#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line1->main::line1_@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) cur_line#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line1->main::line1_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line lda #>$400 sta cur_line+1 - //SEG23 [10] phi (word) main::line1_pos#2 = (const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line1->main::line1_@1#2] -- vwuz1=vwuc1 + //SEG24 [10] phi (word) main::line1_pos#2 = (const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line1->main::line1_@1#2] -- vwuz1=vwuc1 lda #line1_xpos*$100 sta line1_pos+1 jmp line1_b1 - //SEG24 [10] phi from main::@4 to main::line1_@1 [phi:main::@4->main::line1_@1] + //SEG25 [10] phi from main::@4 to main::line1_@1 [phi:main::@4->main::line1_@1] line1_b1_from_b4: - //SEG25 [10] phi (byte) main::line1_i#2 = (byte) main::line1_i#1 [phi:main::@4->main::line1_@1#0] -- register_copy - //SEG26 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy - //SEG27 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy + //SEG26 [10] phi (byte) main::line1_i#2 = (byte) main::line1_i#1 [phi:main::@4->main::line1_@1#0] -- register_copy + //SEG27 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy + //SEG28 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy jmp line1_b1 - //SEG28 main::line1_@1 + //SEG29 main::line1_@1 line1_b1: - //SEG29 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 -- vbuz1=_hi_vwuz2 + //SEG30 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 -- vbuz1=_hi_vwuz2 lda line1_pos+1 sta plot1_xpos jmp plot1 - //SEG30 main::plot1 + //SEG31 main::plot1 plot1: - //SEG31 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG32 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 -- pbuz1=pbuz2_plus_vbuz3 lda plot1_xpos clc adc cur_line @@ -661,14 +662,14 @@ main: { lda #0 adc cur_line+1 sta plot1__0+1 - //SEG32 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 -- _deref_pbuz1=vbuc1 + //SEG33 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 -- _deref_pbuz1=vbuc1 lda #line1_ch ldy #0 sta (plot1__0),y jmp b4 - //SEG33 main::@4 + //SEG34 main::@4 b4: - //SEG34 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 + //SEG35 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 clc lda line1_pos adc #line1_xadd sta line1_pos+1 - //SEG35 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG36 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -684,48 +685,48 @@ main: { bcc !+ inc cur_line+1 !: - //SEG36 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 -- vbuz1=_inc_vbuz1 + //SEG37 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 -- vbuz1=_inc_vbuz1 inc line1_i - //SEG37 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG38 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 -- vbuz1_lt_vbuc1_then_la1 lda line1_i cmp #line1_ysize bcc line1_b1_from_b4 - //SEG38 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] + //SEG39 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] line2_from_b4: jmp line2 - //SEG39 main::line2 + //SEG40 main::line2 line2: - //SEG40 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] + //SEG41 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] line2_b1_from_line2: - //SEG41 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuz1=vbuc1 + //SEG42 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuz1=vbuc1 lda #0 sta line2_i - //SEG42 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 + //SEG43 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line_10 lda #>$400 sta cur_line_10+1 - //SEG43 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 + //SEG44 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 lda #line2_xpos*$100 sta line2_pos+1 jmp line2_b1 - //SEG44 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] + //SEG45 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] line2_b1_from_b6: - //SEG45 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy - //SEG46 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy - //SEG47 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy + //SEG46 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy + //SEG47 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy + //SEG48 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy jmp line2_b1 - //SEG48 main::line2_@1 + //SEG49 main::line2_@1 line2_b1: - //SEG49 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuz1=_hi_vwuz2 + //SEG50 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuz1=_hi_vwuz2 lda line2_pos+1 sta plot2_xpos jmp plot2 - //SEG50 main::plot2 + //SEG51 main::plot2 plot2: - //SEG51 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 -- pbuz1=pbuz2_plus_vbuz3 + //SEG52 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 -- pbuz1=pbuz2_plus_vbuz3 lda plot2_xpos clc adc cur_line_10 @@ -733,14 +734,14 @@ main: { lda #0 adc cur_line_10+1 sta plot2__0+1 - //SEG52 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 -- _deref_pbuz1=vbuc1 + //SEG53 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 -- _deref_pbuz1=vbuc1 lda #line2_ch ldy #0 sta (plot2__0),y jmp b6 - //SEG53 main::@6 + //SEG54 main::@6 b6: - //SEG54 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 + //SEG55 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 clc lda line2_pos adc #line2_xadd sta line2_pos+1 - //SEG55 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG56 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cur_line_11 clc adc #$28 @@ -756,16 +757,16 @@ main: { bcc !+ inc cur_line_11+1 !: - //SEG56 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 -- vbuz1=_inc_vbuz1 + //SEG57 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 -- vbuz1=_inc_vbuz1 inc line2_i - //SEG57 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG58 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 -- vbuz1_lt_vbuc1_then_la1 lda line2_i cmp #line2_ysize bcc line2_b1_from_b6 jmp breturn - //SEG58 main::@return + //SEG59 main::@return breturn: - //SEG59 [27] return + //SEG60 [27] return rts } @@ -824,30 +825,31 @@ Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ cur_line#13 cur_line#1 cur_line#10 c Allocated (was zp ZP_WORD:15) zp ZP_WORD:6 [ main::plot1_$0#0 main::plot2_$0#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline functions in two levels +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label cur_line = 4 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Inline functions in two levels +//SEG10 main main: { .const line1_xpos = 2 .const line1_xadd = $40 @@ -862,30 +864,30 @@ main: { .label line1_pos = 2 .label plot2__0 = 6 .label line2_pos = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bcc b1_from_b1 @@ -894,54 +896,54 @@ main: { cmp #<$400+$3e8 bcc b1_from_b1 !: - //SEG18 [9] phi from main::@1 to main::line1 [phi:main::@1->main::line1] + //SEG19 [9] phi from main::@1 to main::line1 [phi:main::@1->main::line1] line1_from_b1: jmp line1 - //SEG19 main::line1 + //SEG20 main::line1 line1: - //SEG20 [10] phi from main::line1 to main::line1_@1 [phi:main::line1->main::line1_@1] + //SEG21 [10] phi from main::line1 to main::line1_@1 [phi:main::line1->main::line1_@1] line1_b1_from_line1: - //SEG21 [10] phi (byte) main::line1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line1->main::line1_@1#0] -- vbuxx=vbuc1 + //SEG22 [10] phi (byte) main::line1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line1->main::line1_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG22 [10] phi (byte*) cur_line#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line1->main::line1_@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) cur_line#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line1->main::line1_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line lda #>$400 sta cur_line+1 - //SEG23 [10] phi (word) main::line1_pos#2 = (const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line1->main::line1_@1#2] -- vwuz1=vwuc1 + //SEG24 [10] phi (word) main::line1_pos#2 = (const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line1->main::line1_@1#2] -- vwuz1=vwuc1 lda #line1_xpos*$100 sta line1_pos+1 jmp line1_b1 - //SEG24 [10] phi from main::@4 to main::line1_@1 [phi:main::@4->main::line1_@1] + //SEG25 [10] phi from main::@4 to main::line1_@1 [phi:main::@4->main::line1_@1] line1_b1_from_b4: - //SEG25 [10] phi (byte) main::line1_i#2 = (byte) main::line1_i#1 [phi:main::@4->main::line1_@1#0] -- register_copy - //SEG26 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy - //SEG27 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy + //SEG26 [10] phi (byte) main::line1_i#2 = (byte) main::line1_i#1 [phi:main::@4->main::line1_@1#0] -- register_copy + //SEG27 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy + //SEG28 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy jmp line1_b1 - //SEG28 main::line1_@1 + //SEG29 main::line1_@1 line1_b1: - //SEG29 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 -- vbuaa=_hi_vwuz1 + //SEG30 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 -- vbuaa=_hi_vwuz1 lda line1_pos+1 jmp plot1 - //SEG30 main::plot1 + //SEG31 main::plot1 plot1: - //SEG31 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 -- pbuz1=pbuz2_plus_vbuaa + //SEG32 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 -- pbuz1=pbuz2_plus_vbuaa clc adc cur_line sta plot1__0 lda #0 adc cur_line+1 sta plot1__0+1 - //SEG32 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 -- _deref_pbuz1=vbuc1 + //SEG33 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 -- _deref_pbuz1=vbuc1 lda #line1_ch ldy #0 sta (plot1__0),y jmp b4 - //SEG33 main::@4 + //SEG34 main::@4 b4: - //SEG34 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 + //SEG35 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 clc lda line1_pos adc #line1_xadd sta line1_pos+1 - //SEG35 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG36 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -957,59 +959,59 @@ main: { bcc !+ inc cur_line+1 !: - //SEG36 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 -- vbuxx=_inc_vbuxx + //SEG37 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 -- vbuxx=_inc_vbuxx inx - //SEG37 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG38 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 -- vbuxx_lt_vbuc1_then_la1 cpx #line1_ysize bcc line1_b1_from_b4 - //SEG38 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] + //SEG39 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] line2_from_b4: jmp line2 - //SEG39 main::line2 + //SEG40 main::line2 line2: - //SEG40 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] + //SEG41 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] line2_b1_from_line2: - //SEG41 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuxx=vbuc1 + //SEG42 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG42 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 + //SEG43 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line lda #>$400 sta cur_line+1 - //SEG43 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 + //SEG44 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 lda #line2_xpos*$100 sta line2_pos+1 jmp line2_b1 - //SEG44 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] + //SEG45 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] line2_b1_from_b6: - //SEG45 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy - //SEG46 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy - //SEG47 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy + //SEG46 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy + //SEG47 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy + //SEG48 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy jmp line2_b1 - //SEG48 main::line2_@1 + //SEG49 main::line2_@1 line2_b1: - //SEG49 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuaa=_hi_vwuz1 + //SEG50 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuaa=_hi_vwuz1 lda line2_pos+1 jmp plot2 - //SEG50 main::plot2 + //SEG51 main::plot2 plot2: - //SEG51 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 -- pbuz1=pbuz2_plus_vbuaa + //SEG52 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 -- pbuz1=pbuz2_plus_vbuaa clc adc cur_line sta plot2__0 lda #0 adc cur_line+1 sta plot2__0+1 - //SEG52 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 -- _deref_pbuz1=vbuc1 + //SEG53 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 -- _deref_pbuz1=vbuc1 lda #line2_ch ldy #0 sta (plot2__0),y jmp b6 - //SEG53 main::@6 + //SEG54 main::@6 b6: - //SEG54 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 + //SEG55 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 clc lda line2_pos adc #line2_xadd sta line2_pos+1 - //SEG55 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG56 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -1025,15 +1027,15 @@ main: { bcc !+ inc cur_line+1 !: - //SEG56 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 -- vbuxx=_inc_vbuxx + //SEG57 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 -- vbuxx=_inc_vbuxx inx - //SEG57 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG58 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 -- vbuxx_lt_vbuc1_then_la1 cpx #line2_ysize bcc line2_b1_from_b6 jmp breturn - //SEG58 main::@return + //SEG59 main::@return breturn: - //SEG59 [27] return + //SEG60 [27] return rts } @@ -1165,21 +1167,22 @@ reg byte a [ main::plot2_xpos#0 ] FINAL ASSEMBLER Score: 2366 -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline functions in two levels +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label cur_line = 4 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main -// Inline functions in two levels +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 main main: { .const line1_xpos = 2 .const line1_xadd = $40 @@ -1194,26 +1197,26 @@ main: { .label line1_pos = 2 .label plot2__0 = 6 .label line2_pos = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bcc b1 @@ -1222,43 +1225,43 @@ main: { cmp #<$400+$3e8 bcc b1 !: - //SEG18 [9] phi from main::@1 to main::line1 [phi:main::@1->main::line1] - //SEG19 main::line1 - //SEG20 [10] phi from main::line1 to main::line1_@1 [phi:main::line1->main::line1_@1] - //SEG21 [10] phi (byte) main::line1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line1->main::line1_@1#0] -- vbuxx=vbuc1 + //SEG19 [9] phi from main::@1 to main::line1 [phi:main::@1->main::line1] + //SEG20 main::line1 + //SEG21 [10] phi from main::line1 to main::line1_@1 [phi:main::line1->main::line1_@1] + //SEG22 [10] phi (byte) main::line1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line1->main::line1_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG22 [10] phi (byte*) cur_line#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line1->main::line1_@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) cur_line#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line1->main::line1_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line lda #>$400 sta cur_line+1 - //SEG23 [10] phi (word) main::line1_pos#2 = (const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line1->main::line1_@1#2] -- vwuz1=vwuc1 + //SEG24 [10] phi (word) main::line1_pos#2 = (const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line1->main::line1_@1#2] -- vwuz1=vwuc1 lda #line1_xpos*$100 sta line1_pos+1 - //SEG24 [10] phi from main::@4 to main::line1_@1 [phi:main::@4->main::line1_@1] - //SEG25 [10] phi (byte) main::line1_i#2 = (byte) main::line1_i#1 [phi:main::@4->main::line1_@1#0] -- register_copy - //SEG26 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy - //SEG27 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy - //SEG28 main::line1_@1 + //SEG25 [10] phi from main::@4 to main::line1_@1 [phi:main::@4->main::line1_@1] + //SEG26 [10] phi (byte) main::line1_i#2 = (byte) main::line1_i#1 [phi:main::@4->main::line1_@1#0] -- register_copy + //SEG27 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy + //SEG28 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy + //SEG29 main::line1_@1 line1_b1: - //SEG29 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 -- vbuaa=_hi_vwuz1 + //SEG30 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 -- vbuaa=_hi_vwuz1 lda line1_pos+1 - //SEG30 main::plot1 - //SEG31 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 -- pbuz1=pbuz2_plus_vbuaa + //SEG31 main::plot1 + //SEG32 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 -- pbuz1=pbuz2_plus_vbuaa clc adc cur_line sta plot1__0 lda #0 adc cur_line+1 sta plot1__0+1 - //SEG32 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 -- _deref_pbuz1=vbuc1 + //SEG33 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 -- _deref_pbuz1=vbuc1 lda #line1_ch ldy #0 sta (plot1__0),y - //SEG33 main::@4 - //SEG34 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 + //SEG34 main::@4 + //SEG35 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 clc lda line1_pos adc #line1_xadd sta line1_pos+1 - //SEG35 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG36 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -1274,48 +1277,48 @@ main: { bcc !+ inc cur_line+1 !: - //SEG36 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 -- vbuxx=_inc_vbuxx + //SEG37 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 -- vbuxx=_inc_vbuxx inx - //SEG37 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG38 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 -- vbuxx_lt_vbuc1_then_la1 cpx #line1_ysize bcc line1_b1 - //SEG38 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] - //SEG39 main::line2 - //SEG40 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] - //SEG41 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuxx=vbuc1 + //SEG39 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] + //SEG40 main::line2 + //SEG41 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] + //SEG42 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG42 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 + //SEG43 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line lda #>$400 sta cur_line+1 - //SEG43 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 + //SEG44 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 lda #line2_xpos*$100 sta line2_pos+1 - //SEG44 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] - //SEG45 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy - //SEG46 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy - //SEG47 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy - //SEG48 main::line2_@1 + //SEG45 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] + //SEG46 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy + //SEG47 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy + //SEG48 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy + //SEG49 main::line2_@1 line2_b1: - //SEG49 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuaa=_hi_vwuz1 + //SEG50 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 -- vbuaa=_hi_vwuz1 lda line2_pos+1 - //SEG50 main::plot2 - //SEG51 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 -- pbuz1=pbuz2_plus_vbuaa + //SEG51 main::plot2 + //SEG52 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 -- pbuz1=pbuz2_plus_vbuaa clc adc cur_line sta plot2__0 lda #0 adc cur_line+1 sta plot2__0+1 - //SEG52 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 -- _deref_pbuz1=vbuc1 + //SEG53 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 -- _deref_pbuz1=vbuc1 lda #line2_ch ldy #0 sta (plot2__0),y - //SEG53 main::@6 - //SEG54 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 + //SEG54 main::@6 + //SEG55 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 -- vwuz1=vwuz1_plus_vbuc1 clc lda line2_pos adc #line2_xadd sta line2_pos+1 - //SEG55 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG56 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -1331,13 +1334,13 @@ main: { bcc !+ inc cur_line+1 !: - //SEG56 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 -- vbuxx=_inc_vbuxx + //SEG57 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 -- vbuxx=_inc_vbuxx inx - //SEG57 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG58 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 -- vbuxx_lt_vbuc1_then_la1 cpx #line2_ysize bcc line2_b1 - //SEG58 main::@return - //SEG59 [27] return + //SEG59 main::@return + //SEG60 [27] return rts } diff --git a/src/test/ref/inline-function-min.asm b/src/test/ref/inline-function-min.asm index 660569959..ddf85ae07 100644 --- a/src/test/ref/inline-function-min.asm +++ b/src/test/ref/inline-function-min.asm @@ -1,3 +1,4 @@ +// Test minimal inline function .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/inline-function-min.log b/src/test/ref/inline-function-min.log index 22afbd671..f0afa1774 100644 --- a/src/test/ref/inline-function-min.log +++ b/src/test/ref/inline-function-min.log @@ -265,29 +265,31 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test minimal inline function +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const sum1_a = 2 .const sum1_b = 1 @@ -298,43 +300,43 @@ main: { .const sum1_return = sum1_a+sum1_b .const sum2_return = sum2_a+sum2_b .const sum3_return = sum3_a+sum3_b - //SEG10 [5] phi from main to main::sum1 [phi:main->main::sum1] + //SEG11 [5] phi from main to main::sum1 [phi:main->main::sum1] sum1_from_main: jmp sum1 - //SEG11 main::sum1 + //SEG12 main::sum1 sum1: jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] *((const byte*) screen#0) ← (const byte) main::sum1_return#0 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) screen#0) ← (const byte) main::sum1_return#0 -- _deref_pbuc1=vbuc2 lda #sum1_return sta screen - //SEG14 [7] phi from main::@1 to main::sum2 [phi:main::@1->main::sum2] + //SEG15 [7] phi from main::@1 to main::sum2 [phi:main::@1->main::sum2] sum2_from_b1: jmp sum2 - //SEG15 main::sum2 + //SEG16 main::sum2 sum2: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::sum2_return#0 -- _deref_pbuc1=vbuc2 + //SEG18 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::sum2_return#0 -- _deref_pbuc1=vbuc2 lda #sum2_return sta screen+1 - //SEG18 [9] phi from main::@2 to main::sum3 [phi:main::@2->main::sum3] + //SEG19 [9] phi from main::@2 to main::sum3 [phi:main::@2->main::sum3] sum3_from_b2: jmp sum3 - //SEG19 main::sum3 + //SEG20 main::sum3 sum3: jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [10] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) main::sum3_return#0 -- _deref_pbuc1=vbuc2 + //SEG22 [10] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) main::sum3_return#0 -- _deref_pbuc1=vbuc2 lda #sum3_return sta screen+2 jmp breturn - //SEG22 main::@return + //SEG23 main::@return breturn: - //SEG23 [11] return + //SEG24 [11] return rts } @@ -351,29 +353,31 @@ Uplifting [main] best 138 combination Uplifting [] best 138 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test minimal inline function +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const sum1_a = 2 .const sum1_b = 1 @@ -384,43 +388,43 @@ main: { .const sum1_return = sum1_a+sum1_b .const sum2_return = sum2_a+sum2_b .const sum3_return = sum3_a+sum3_b - //SEG10 [5] phi from main to main::sum1 [phi:main->main::sum1] + //SEG11 [5] phi from main to main::sum1 [phi:main->main::sum1] sum1_from_main: jmp sum1 - //SEG11 main::sum1 + //SEG12 main::sum1 sum1: jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] *((const byte*) screen#0) ← (const byte) main::sum1_return#0 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) screen#0) ← (const byte) main::sum1_return#0 -- _deref_pbuc1=vbuc2 lda #sum1_return sta screen - //SEG14 [7] phi from main::@1 to main::sum2 [phi:main::@1->main::sum2] + //SEG15 [7] phi from main::@1 to main::sum2 [phi:main::@1->main::sum2] sum2_from_b1: jmp sum2 - //SEG15 main::sum2 + //SEG16 main::sum2 sum2: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::sum2_return#0 -- _deref_pbuc1=vbuc2 + //SEG18 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::sum2_return#0 -- _deref_pbuc1=vbuc2 lda #sum2_return sta screen+1 - //SEG18 [9] phi from main::@2 to main::sum3 [phi:main::@2->main::sum3] + //SEG19 [9] phi from main::@2 to main::sum3 [phi:main::@2->main::sum3] sum3_from_b2: jmp sum3 - //SEG19 main::sum3 + //SEG20 main::sum3 sum3: jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [10] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) main::sum3_return#0 -- _deref_pbuc1=vbuc2 + //SEG22 [10] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) main::sum3_return#0 -- _deref_pbuc1=vbuc2 lda #sum3_return sta screen+2 jmp breturn - //SEG22 main::@return + //SEG23 main::@return breturn: - //SEG23 [11] return + //SEG24 [11] return rts } @@ -499,20 +503,22 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 24 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test minimal inline function +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .const sum1_a = 2 .const sum1_b = 1 @@ -523,26 +529,26 @@ main: { .const sum1_return = sum1_a+sum1_b .const sum2_return = sum2_a+sum2_b .const sum3_return = sum3_a+sum3_b - //SEG10 [5] phi from main to main::sum1 [phi:main->main::sum1] - //SEG11 main::sum1 - //SEG12 main::@1 - //SEG13 [6] *((const byte*) screen#0) ← (const byte) main::sum1_return#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] phi from main to main::sum1 [phi:main->main::sum1] + //SEG12 main::sum1 + //SEG13 main::@1 + //SEG14 [6] *((const byte*) screen#0) ← (const byte) main::sum1_return#0 -- _deref_pbuc1=vbuc2 lda #sum1_return sta screen - //SEG14 [7] phi from main::@1 to main::sum2 [phi:main::@1->main::sum2] - //SEG15 main::sum2 - //SEG16 main::@2 - //SEG17 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::sum2_return#0 -- _deref_pbuc1=vbuc2 + //SEG15 [7] phi from main::@1 to main::sum2 [phi:main::@1->main::sum2] + //SEG16 main::sum2 + //SEG17 main::@2 + //SEG18 [8] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::sum2_return#0 -- _deref_pbuc1=vbuc2 lda #sum2_return sta screen+1 - //SEG18 [9] phi from main::@2 to main::sum3 [phi:main::@2->main::sum3] - //SEG19 main::sum3 - //SEG20 main::@3 - //SEG21 [10] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) main::sum3_return#0 -- _deref_pbuc1=vbuc2 + //SEG19 [9] phi from main::@2 to main::sum3 [phi:main::@2->main::sum3] + //SEG20 main::sum3 + //SEG21 main::@3 + //SEG22 [10] *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) main::sum3_return#0 -- _deref_pbuc1=vbuc2 lda #sum3_return sta screen+2 - //SEG22 main::@return - //SEG23 [11] return + //SEG23 main::@return + //SEG24 [11] return rts } diff --git a/src/test/ref/inline-function-print.asm b/src/test/ref/inline-function-print.asm index 14f5b2cdd..585de6014 100644 --- a/src/test/ref/inline-function-print.asm +++ b/src/test/ref/inline-function-print.asm @@ -1,3 +1,4 @@ +// TEst inlining a slightly complex print function (containing a loop) .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/inline-function-print.log b/src/test/ref/inline-function-print.log index ec9aea933..9d4ea1ca6 100644 --- a/src/test/ref/inline-function-print.log +++ b/src/test/ref/inline-function-print.log @@ -290,115 +290,117 @@ Allocated zp ZP_BYTE:4 [ main::print2_i#2 main::print2_i#1 ] Allocated zp ZP_BYTE:5 [ main::print2_j#2 main::print2_j#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// TEst inlining a slightly complex print function (containing a loop) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label print2_at = screen+2*$28 .label print1_j = 3 .label print1_i = 2 .label print2_j = 5 .label print2_i = 4 - //SEG10 [5] phi from main to main::print1 [phi:main->main::print1] + //SEG11 [5] phi from main to main::print1 [phi:main->main::print1] print1_from_main: jmp print1 - //SEG11 main::print1 + //SEG12 main::print1 print1: - //SEG12 [6] phi from main::print1 to main::print1_@1 [phi:main::print1->main::print1_@1] + //SEG13 [6] phi from main::print1 to main::print1_@1 [phi:main::print1->main::print1_@1] print1_b1_from_print1: - //SEG13 [6] phi (byte) main::print1_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::print1_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#0] -- vbuz1=vbuc1 lda #0 sta print1_j - //SEG14 [6] phi (byte) main::print1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) main::print1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#1] -- vbuz1=vbuc1 lda #0 sta print1_i jmp print1_b1 - //SEG15 [6] phi from main::print1_@1 to main::print1_@1 [phi:main::print1_@1->main::print1_@1] + //SEG16 [6] phi from main::print1_@1 to main::print1_@1 [phi:main::print1_@1->main::print1_@1] print1_b1_from_print1_b1: - //SEG16 [6] phi (byte) main::print1_j#2 = (byte) main::print1_j#1 [phi:main::print1_@1->main::print1_@1#0] -- register_copy - //SEG17 [6] phi (byte) main::print1_i#2 = (byte) main::print1_i#1 [phi:main::print1_@1->main::print1_@1#1] -- register_copy + //SEG17 [6] phi (byte) main::print1_j#2 = (byte) main::print1_j#1 [phi:main::print1_@1->main::print1_@1#0] -- register_copy + //SEG18 [6] phi (byte) main::print1_i#2 = (byte) main::print1_i#1 [phi:main::print1_@1->main::print1_@1#1] -- register_copy jmp print1_b1 - //SEG18 main::print1_@1 + //SEG19 main::print1_@1 print1_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG20 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy print1_i lda print1_msg,y ldy print1_j sta screen,y - //SEG20 [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG21 [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda print1_j clc adc #2 sta print1_j - //SEG21 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 -- vbuz1=_inc_vbuz1 + //SEG22 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 -- vbuz1=_inc_vbuz1 inc print1_i - //SEG22 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG23 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy print1_i lda print1_msg,y cmp #'@' bne print1_b1_from_print1_b1 - //SEG23 [11] phi from main::print1_@1 to main::print2 [phi:main::print1_@1->main::print2] + //SEG24 [11] phi from main::print1_@1 to main::print2 [phi:main::print1_@1->main::print2] print2_from_print1_b1: jmp print2 - //SEG24 main::print2 + //SEG25 main::print2 print2: - //SEG25 [12] phi from main::print2 to main::print2_@1 [phi:main::print2->main::print2_@1] + //SEG26 [12] phi from main::print2 to main::print2_@1 [phi:main::print2->main::print2_@1] print2_b1_from_print2: - //SEG26 [12] phi (byte) main::print2_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#0] -- vbuz1=vbuc1 + //SEG27 [12] phi (byte) main::print2_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#0] -- vbuz1=vbuc1 lda #0 sta print2_j - //SEG27 [12] phi (byte) main::print2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#1] -- vbuz1=vbuc1 + //SEG28 [12] phi (byte) main::print2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#1] -- vbuz1=vbuc1 lda #0 sta print2_i jmp print2_b1 - //SEG28 [12] phi from main::print2_@1 to main::print2_@1 [phi:main::print2_@1->main::print2_@1] + //SEG29 [12] phi from main::print2_@1 to main::print2_@1 [phi:main::print2_@1->main::print2_@1] print2_b1_from_print2_b1: - //SEG29 [12] phi (byte) main::print2_j#2 = (byte) main::print2_j#1 [phi:main::print2_@1->main::print2_@1#0] -- register_copy - //SEG30 [12] phi (byte) main::print2_i#2 = (byte) main::print2_i#1 [phi:main::print2_@1->main::print2_@1#1] -- register_copy + //SEG30 [12] phi (byte) main::print2_j#2 = (byte) main::print2_j#1 [phi:main::print2_@1->main::print2_@1#0] -- register_copy + //SEG31 [12] phi (byte) main::print2_i#2 = (byte) main::print2_i#1 [phi:main::print2_@1->main::print2_@1#1] -- register_copy jmp print2_b1 - //SEG31 main::print2_@1 + //SEG32 main::print2_@1 print2_b1: - //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG33 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy print2_i lda print1_msg,y ldy print2_j sta print2_at,y - //SEG33 [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG34 [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda print2_j clc adc #2 sta print2_j - //SEG34 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 -- vbuz1=_inc_vbuz1 + //SEG35 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 -- vbuz1=_inc_vbuz1 inc print2_i - //SEG35 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG36 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy print2_i lda print1_msg,y cmp #'@' bne print2_b1_from_print2_b1 jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [17] return + //SEG38 [17] return rts print1_msg: .text "hello world!@" } @@ -429,97 +431,99 @@ Uplifting [main] best 744 combination reg byte y [ main::print1_i#2 main::print1 Uplifting [] best 744 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// TEst inlining a slightly complex print function (containing a loop) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label print2_at = screen+2*$28 - //SEG10 [5] phi from main to main::print1 [phi:main->main::print1] + //SEG11 [5] phi from main to main::print1 [phi:main->main::print1] print1_from_main: jmp print1 - //SEG11 main::print1 + //SEG12 main::print1 print1: - //SEG12 [6] phi from main::print1 to main::print1_@1 [phi:main::print1->main::print1_@1] + //SEG13 [6] phi from main::print1 to main::print1_@1 [phi:main::print1->main::print1_@1] print1_b1_from_print1: - //SEG13 [6] phi (byte) main::print1_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#0] -- vbuxx=vbuc1 + //SEG14 [6] phi (byte) main::print1_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG14 [6] phi (byte) main::print1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#1] -- vbuyy=vbuc1 + //SEG15 [6] phi (byte) main::print1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#1] -- vbuyy=vbuc1 ldy #0 jmp print1_b1 - //SEG15 [6] phi from main::print1_@1 to main::print1_@1 [phi:main::print1_@1->main::print1_@1] + //SEG16 [6] phi from main::print1_@1 to main::print1_@1 [phi:main::print1_@1->main::print1_@1] print1_b1_from_print1_b1: - //SEG16 [6] phi (byte) main::print1_j#2 = (byte) main::print1_j#1 [phi:main::print1_@1->main::print1_@1#0] -- register_copy - //SEG17 [6] phi (byte) main::print1_i#2 = (byte) main::print1_i#1 [phi:main::print1_@1->main::print1_@1#1] -- register_copy + //SEG17 [6] phi (byte) main::print1_j#2 = (byte) main::print1_j#1 [phi:main::print1_@1->main::print1_@1#0] -- register_copy + //SEG18 [6] phi (byte) main::print1_i#2 = (byte) main::print1_i#1 [phi:main::print1_@1->main::print1_@1#1] -- register_copy jmp print1_b1 - //SEG18 main::print1_@1 + //SEG19 main::print1_@1 print1_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG20 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print1_msg,y sta screen,x - //SEG20 [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 + //SEG21 [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 inx inx - //SEG21 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 -- vbuyy=_inc_vbuyy + //SEG22 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 -- vbuyy=_inc_vbuyy iny - //SEG22 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG23 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print1_msg,y cmp #'@' bne print1_b1_from_print1_b1 - //SEG23 [11] phi from main::print1_@1 to main::print2 [phi:main::print1_@1->main::print2] + //SEG24 [11] phi from main::print1_@1 to main::print2 [phi:main::print1_@1->main::print2] print2_from_print1_b1: jmp print2 - //SEG24 main::print2 + //SEG25 main::print2 print2: - //SEG25 [12] phi from main::print2 to main::print2_@1 [phi:main::print2->main::print2_@1] + //SEG26 [12] phi from main::print2 to main::print2_@1 [phi:main::print2->main::print2_@1] print2_b1_from_print2: - //SEG26 [12] phi (byte) main::print2_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#0] -- vbuxx=vbuc1 + //SEG27 [12] phi (byte) main::print2_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG27 [12] phi (byte) main::print2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#1] -- vbuyy=vbuc1 + //SEG28 [12] phi (byte) main::print2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#1] -- vbuyy=vbuc1 ldy #0 jmp print2_b1 - //SEG28 [12] phi from main::print2_@1 to main::print2_@1 [phi:main::print2_@1->main::print2_@1] + //SEG29 [12] phi from main::print2_@1 to main::print2_@1 [phi:main::print2_@1->main::print2_@1] print2_b1_from_print2_b1: - //SEG29 [12] phi (byte) main::print2_j#2 = (byte) main::print2_j#1 [phi:main::print2_@1->main::print2_@1#0] -- register_copy - //SEG30 [12] phi (byte) main::print2_i#2 = (byte) main::print2_i#1 [phi:main::print2_@1->main::print2_@1#1] -- register_copy + //SEG30 [12] phi (byte) main::print2_j#2 = (byte) main::print2_j#1 [phi:main::print2_@1->main::print2_@1#0] -- register_copy + //SEG31 [12] phi (byte) main::print2_i#2 = (byte) main::print2_i#1 [phi:main::print2_@1->main::print2_@1#1] -- register_copy jmp print2_b1 - //SEG31 main::print2_@1 + //SEG32 main::print2_@1 print2_b1: - //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG33 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print1_msg,y sta print2_at,x - //SEG33 [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 + //SEG34 [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 inx inx - //SEG34 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 -- vbuyy=_inc_vbuyy + //SEG35 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 -- vbuyy=_inc_vbuyy iny - //SEG35 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG36 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print1_msg,y cmp #'@' bne print2_b1_from_print2_b1 jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [17] return + //SEG38 [17] return rts print1_msg: .text "hello world!@" } @@ -603,72 +607,74 @@ reg byte x [ main::print2_j#2 main::print2_j#1 ] FINAL ASSEMBLER Score: 576 -//SEG0 Basic Upstart +//SEG0 File Comments +// TEst inlining a slightly complex print function (containing a loop) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label print2_at = screen+2*$28 - //SEG10 [5] phi from main to main::print1 [phi:main->main::print1] - //SEG11 main::print1 - //SEG12 [6] phi from main::print1 to main::print1_@1 [phi:main::print1->main::print1_@1] - //SEG13 [6] phi (byte) main::print1_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::print1 [phi:main->main::print1] + //SEG12 main::print1 + //SEG13 [6] phi from main::print1 to main::print1_@1 [phi:main::print1->main::print1_@1] + //SEG14 [6] phi (byte) main::print1_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG14 [6] phi (byte) main::print1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#1] -- vbuyy=vbuc1 + //SEG15 [6] phi (byte) main::print1_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print1->main::print1_@1#1] -- vbuyy=vbuc1 ldy #0 - //SEG15 [6] phi from main::print1_@1 to main::print1_@1 [phi:main::print1_@1->main::print1_@1] - //SEG16 [6] phi (byte) main::print1_j#2 = (byte) main::print1_j#1 [phi:main::print1_@1->main::print1_@1#0] -- register_copy - //SEG17 [6] phi (byte) main::print1_i#2 = (byte) main::print1_i#1 [phi:main::print1_@1->main::print1_@1#1] -- register_copy - //SEG18 main::print1_@1 + //SEG16 [6] phi from main::print1_@1 to main::print1_@1 [phi:main::print1_@1->main::print1_@1] + //SEG17 [6] phi (byte) main::print1_j#2 = (byte) main::print1_j#1 [phi:main::print1_@1->main::print1_@1#0] -- register_copy + //SEG18 [6] phi (byte) main::print1_i#2 = (byte) main::print1_i#1 [phi:main::print1_@1->main::print1_@1#1] -- register_copy + //SEG19 main::print1_@1 print1_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG20 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print1_msg,y sta screen,x - //SEG20 [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 + //SEG21 [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 inx inx - //SEG21 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 -- vbuyy=_inc_vbuyy + //SEG22 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 -- vbuyy=_inc_vbuyy iny - //SEG22 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG23 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print1_msg,y cmp #'@' bne print1_b1 - //SEG23 [11] phi from main::print1_@1 to main::print2 [phi:main::print1_@1->main::print2] - //SEG24 main::print2 - //SEG25 [12] phi from main::print2 to main::print2_@1 [phi:main::print2->main::print2_@1] - //SEG26 [12] phi (byte) main::print2_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#0] -- vbuxx=vbuc1 + //SEG24 [11] phi from main::print1_@1 to main::print2 [phi:main::print1_@1->main::print2] + //SEG25 main::print2 + //SEG26 [12] phi from main::print2 to main::print2_@1 [phi:main::print2->main::print2_@1] + //SEG27 [12] phi (byte) main::print2_j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG27 [12] phi (byte) main::print2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#1] -- vbuyy=vbuc1 + //SEG28 [12] phi (byte) main::print2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::print2->main::print2_@1#1] -- vbuyy=vbuc1 ldy #0 - //SEG28 [12] phi from main::print2_@1 to main::print2_@1 [phi:main::print2_@1->main::print2_@1] - //SEG29 [12] phi (byte) main::print2_j#2 = (byte) main::print2_j#1 [phi:main::print2_@1->main::print2_@1#0] -- register_copy - //SEG30 [12] phi (byte) main::print2_i#2 = (byte) main::print2_i#1 [phi:main::print2_@1->main::print2_@1#1] -- register_copy - //SEG31 main::print2_@1 + //SEG29 [12] phi from main::print2_@1 to main::print2_@1 [phi:main::print2_@1->main::print2_@1] + //SEG30 [12] phi (byte) main::print2_j#2 = (byte) main::print2_j#1 [phi:main::print2_@1->main::print2_@1#0] -- register_copy + //SEG31 [12] phi (byte) main::print2_i#2 = (byte) main::print2_i#1 [phi:main::print2_@1->main::print2_@1#1] -- register_copy + //SEG32 main::print2_@1 print2_b1: - //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG33 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print1_msg,y sta print2_at,x - //SEG33 [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 + //SEG34 [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2 inx inx - //SEG34 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 -- vbuyy=_inc_vbuyy + //SEG35 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 -- vbuyy=_inc_vbuyy iny - //SEG35 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG36 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print1_msg,y cmp #'@' bne print2_b1 - //SEG36 main::@return - //SEG37 [17] return + //SEG37 main::@return + //SEG38 [17] return rts print1_msg: .text "hello world!@" } diff --git a/src/test/ref/inline-function.asm b/src/test/ref/inline-function.asm index a55247be4..935365cda 100644 --- a/src/test/ref/inline-function.asm +++ b/src/test/ref/inline-function.asm @@ -1,3 +1,5 @@ +// Test inline function +// Splits screen so upper half is lower case and lower half lower case .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/inline-function.log b/src/test/ref/inline-function.log index 5c341af00..0cfded775 100644 --- a/src/test/ref/inline-function.log +++ b/src/test/ref/inline-function.log @@ -583,77 +583,80 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline function +// Splits screen so upper half is lower case and lower half lower case +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label D018 = $d018 .label BGCOL = $d021 .label screen = $400 .label charset1 = $1000 .label charset2 = $1800 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .const toD0181_return = screen/$40|charset1/$400 .const toD0182_return = screen/$40|charset2/$400 - //SEG9 asm { sei } + //SEG10 asm { sei } sei jmp b4 - //SEG10 main::@4 + //SEG11 main::@4 b4: - //SEG11 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG12 [5] 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 - //SEG12 [6] phi from main::@4 to main::toD0181 [phi:main::@4->main::toD0181] + //SEG13 [6] phi from main::@4 to main::toD0181 [phi:main::@4->main::toD0181] toD0181_from_b4: jmp toD0181 - //SEG13 main::toD0181 + //SEG14 main::toD0181 toD0181: jmp b19 - //SEG14 main::@19 + //SEG15 main::@19 b19: - //SEG15 [7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG16 [7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG16 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG17 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta BGCOL jmp b7 - //SEG17 main::@7 + //SEG18 main::@7 b7: - //SEG18 [9] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 98) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [9] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 98) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$62 bne b7 - //SEG19 [10] phi from main::@7 to main::toD0182 [phi:main::@7->main::toD0182] + //SEG20 [10] phi from main::@7 to main::toD0182 [phi:main::@7->main::toD0182] toD0182_from_b7: jmp toD0182 - //SEG20 main::toD0182 + //SEG21 main::toD0182 toD0182: jmp b20 - //SEG21 main::@20 + //SEG22 main::@20 b20: - //SEG22 [11] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 + //SEG23 [11] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 lda #toD0182_return sta D018 - //SEG23 [12] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 + //SEG24 [12] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 lda #$b sta BGCOL jmp b4 @@ -675,77 +678,80 @@ Uplifting [main] best 2137 combination Uplifting [] best 2137 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline function +// Splits screen so upper half is lower case and lower half lower case +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label D018 = $d018 .label BGCOL = $d021 .label screen = $400 .label charset1 = $1000 .label charset2 = $1800 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .const toD0181_return = screen/$40|charset1/$400 .const toD0182_return = screen/$40|charset2/$400 - //SEG9 asm { sei } + //SEG10 asm { sei } sei jmp b4 - //SEG10 main::@4 + //SEG11 main::@4 b4: - //SEG11 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG12 [5] 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 - //SEG12 [6] phi from main::@4 to main::toD0181 [phi:main::@4->main::toD0181] + //SEG13 [6] phi from main::@4 to main::toD0181 [phi:main::@4->main::toD0181] toD0181_from_b4: jmp toD0181 - //SEG13 main::toD0181 + //SEG14 main::toD0181 toD0181: jmp b19 - //SEG14 main::@19 + //SEG15 main::@19 b19: - //SEG15 [7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG16 [7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG16 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG17 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta BGCOL jmp b7 - //SEG17 main::@7 + //SEG18 main::@7 b7: - //SEG18 [9] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 98) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [9] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 98) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$62 bne b7 - //SEG19 [10] phi from main::@7 to main::toD0182 [phi:main::@7->main::toD0182] + //SEG20 [10] phi from main::@7 to main::toD0182 [phi:main::@7->main::toD0182] toD0182_from_b7: jmp toD0182 - //SEG20 main::toD0182 + //SEG21 main::toD0182 toD0182: jmp b20 - //SEG21 main::@20 + //SEG22 main::@20 b20: - //SEG22 [11] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 + //SEG23 [11] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 lda #toD0182_return sta D018 - //SEG23 [12] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 + //SEG24 [12] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 lda #$b sta BGCOL jmp b4 @@ -828,57 +834,60 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 1972 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline function +// Splits screen so upper half is lower case and lower half lower case +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label D018 = $d018 .label BGCOL = $d021 .label screen = $400 .label charset1 = $1000 .label charset2 = $1800 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { .const toD0181_return = screen/$40|charset1/$400 .const toD0182_return = screen/$40|charset2/$400 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 main::@4 + //SEG11 main::@4 b4: - //SEG11 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG12 [5] 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 - //SEG12 [6] phi from main::@4 to main::toD0181 [phi:main::@4->main::toD0181] - //SEG13 main::toD0181 - //SEG14 main::@19 - //SEG15 [7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG13 [6] phi from main::@4 to main::toD0181 [phi:main::@4->main::toD0181] + //SEG14 main::toD0181 + //SEG15 main::@19 + //SEG16 [7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG16 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG17 [8] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta BGCOL - //SEG17 main::@7 + //SEG18 main::@7 b7: - //SEG18 [9] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 98) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [9] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 98) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$62 bne b7 - //SEG19 [10] phi from main::@7 to main::toD0182 [phi:main::@7->main::toD0182] - //SEG20 main::toD0182 - //SEG21 main::@20 - //SEG22 [11] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 + //SEG20 [10] phi from main::@7 to main::toD0182 [phi:main::@7->main::toD0182] + //SEG21 main::toD0182 + //SEG22 main::@20 + //SEG23 [11] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 lda #toD0182_return sta D018 - //SEG23 [12] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 + //SEG24 [12] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 lda #$b sta BGCOL jmp b4 diff --git a/src/test/ref/inline-string-2.asm b/src/test/ref/inline-string-2.asm index 7dd17e62b..a7a245443 100644 --- a/src/test/ref/inline-string-2.asm +++ b/src/test/ref/inline-string-2.asm @@ -1,8 +1,8 @@ +// Inline Strings in assignments .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" .label screen = 2 -// Inline Strings in assignments main: { lda #<$400 sta screen diff --git a/src/test/ref/inline-string-2.log b/src/test/ref/inline-string-2.log index 3ce1a889b..223014947 100644 --- a/src/test/ref/inline-string-2.log +++ b/src/test/ref/inline-string-2.log @@ -313,144 +313,145 @@ Allocated zp ZP_WORD:5 [ print_msg::msg#2 ] Allocated zp ZP_WORD:7 [ print::msg#2 print::msg#0 print::msg#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline Strings in assignments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Inline Strings in assignments +//SEG10 main main: { - //SEG10 [5] call print_msg - //SEG11 [9] phi from main to print_msg [phi:main->print_msg] + //SEG11 [5] call print_msg + //SEG12 [9] phi from main to print_msg [phi:main->print_msg] print_msg_from_main: - //SEG12 [9] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_msg#0] -- pbuz1=pbuc1 + //SEG13 [9] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_msg#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG13 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->print_msg#1] -- vbuz1=vbuc1 + //SEG14 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->print_msg#1] -- vbuz1=vbuc1 lda #1 sta print_msg.idx jsr print_msg - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] call print_msg - //SEG17 [9] phi from main::@1 to print_msg [phi:main::@1->print_msg] + //SEG17 [7] call print_msg + //SEG18 [9] phi from main::@1 to print_msg [phi:main::@1->print_msg] print_msg_from_b1: - //SEG18 [9] phi (byte*) screen#18 = (byte*) screen#14 [phi:main::@1->print_msg#0] -- register_copy - //SEG19 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@1->print_msg#1] -- vbuz1=vbuc1 + //SEG19 [9] phi (byte*) screen#18 = (byte*) screen#14 [phi:main::@1->print_msg#0] -- register_copy + //SEG20 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@1->print_msg#1] -- vbuz1=vbuc1 lda #2 sta print_msg.idx jsr print_msg jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [8] return + //SEG22 [8] return rts } -//SEG22 print_msg +//SEG23 print_msg print_msg: { .label idx = 2 .label msg = 5 - //SEG23 [10] if((byte) print_msg::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto print_msg::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG24 [10] if((byte) print_msg::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto print_msg::@2 -- vbuz1_eq_vbuc1_then_la1 lda idx cmp #1 beq b2_from_print_msg - //SEG24 [11] phi from print_msg to print_msg::@3 [phi:print_msg->print_msg::@3] + //SEG25 [11] phi from print_msg to print_msg::@3 [phi:print_msg->print_msg::@3] b3_from_print_msg: jmp b3 - //SEG25 print_msg::@3 + //SEG26 print_msg::@3 b3: - //SEG26 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] + //SEG27 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] b2_from_b3: - //SEG27 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG28 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_1 sta msg+1 jmp b2 - //SEG28 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] + //SEG29 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] b2_from_print_msg: - //SEG29 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG30 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_0 sta msg+1 jmp b2 - //SEG30 print_msg::@2 + //SEG31 print_msg::@2 b2: - //SEG31 [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#2 -- pbuz1=pbuz2 + //SEG32 [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#2 -- pbuz1=pbuz2 lda msg sta print.msg lda msg+1 sta print.msg+1 - //SEG32 [14] call print - //SEG33 [16] phi from print_msg::@2 to print [phi:print_msg::@2->print] + //SEG33 [14] call print + //SEG34 [16] phi from print_msg::@2 to print [phi:print_msg::@2->print] print_from_b2: jsr print jmp breturn - //SEG34 print_msg::@return + //SEG35 print_msg::@return breturn: - //SEG35 [15] return + //SEG36 [15] return rts msg_0: .text "Hello @" msg_1: .text "World!@" } -//SEG36 print +//SEG37 print print: { .label msg = 7 - //SEG37 [17] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] + //SEG38 [17] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] b1_from_print: b1_from_b2: - //SEG38 [17] phi (byte*) screen#14 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy - //SEG39 [17] phi (byte*) print::msg#2 = (byte*) print::msg#0 [phi:print/print::@2->print::@1#1] -- register_copy + //SEG39 [17] phi (byte*) screen#14 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy + //SEG40 [17] phi (byte*) print::msg#2 = (byte*) print::msg#0 [phi:print/print::@2->print::@1#1] -- register_copy jmp b1 - //SEG40 print::@1 + //SEG41 print::@1 b1: - //SEG41 [18] if(*((byte*) print::msg#2)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG42 [18] if(*((byte*) print::msg#2)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (msg),y cmp #'@' bne b2 jmp breturn - //SEG42 print::@return + //SEG43 print::@return breturn: - //SEG43 [19] return + //SEG44 [19] return rts - //SEG44 print::@2 + //SEG45 print::@2 b2: - //SEG45 [20] *((byte*) screen#14) ← *((byte*) print::msg#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG46 [20] *((byte*) screen#14) ← *((byte*) print::msg#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (msg),y ldy #0 sta (screen),y - //SEG46 [21] (byte*) screen#6 ← ++ (byte*) screen#14 -- pbuz1=_inc_pbuz1 + //SEG47 [21] (byte*) screen#6 ← ++ (byte*) screen#14 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG47 [22] (byte*) print::msg#1 ← ++ (byte*) print::msg#2 -- pbuz1=_inc_pbuz1 + //SEG48 [22] (byte*) print::msg#1 ← ++ (byte*) print::msg#2 -- pbuz1=_inc_pbuz1 inc msg bne !+ inc msg+1 @@ -482,136 +483,137 @@ Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ screen#18 screen#14 screen#6 ] Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ print_msg::msg#2 print::msg#2 print::msg#0 print::msg#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline Strings in assignments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Inline Strings in assignments +//SEG10 main main: { - //SEG10 [5] call print_msg - //SEG11 [9] phi from main to print_msg [phi:main->print_msg] + //SEG11 [5] call print_msg + //SEG12 [9] phi from main to print_msg [phi:main->print_msg] print_msg_from_main: - //SEG12 [9] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_msg#0] -- pbuz1=pbuc1 + //SEG13 [9] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_msg#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG13 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->print_msg#1] -- vbuxx=vbuc1 + //SEG14 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->print_msg#1] -- vbuxx=vbuc1 ldx #1 jsr print_msg - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] call print_msg - //SEG17 [9] phi from main::@1 to print_msg [phi:main::@1->print_msg] + //SEG17 [7] call print_msg + //SEG18 [9] phi from main::@1 to print_msg [phi:main::@1->print_msg] print_msg_from_b1: - //SEG18 [9] phi (byte*) screen#18 = (byte*) screen#14 [phi:main::@1->print_msg#0] -- register_copy - //SEG19 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@1->print_msg#1] -- vbuxx=vbuc1 + //SEG19 [9] phi (byte*) screen#18 = (byte*) screen#14 [phi:main::@1->print_msg#0] -- register_copy + //SEG20 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@1->print_msg#1] -- vbuxx=vbuc1 ldx #2 jsr print_msg jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [8] return + //SEG22 [8] return rts } -//SEG22 print_msg +//SEG23 print_msg print_msg: { .label msg = 4 - //SEG23 [10] if((byte) print_msg::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto print_msg::@2 -- vbuxx_eq_vbuc1_then_la1 + //SEG24 [10] if((byte) print_msg::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto print_msg::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #1 beq b2_from_print_msg - //SEG24 [11] phi from print_msg to print_msg::@3 [phi:print_msg->print_msg::@3] + //SEG25 [11] phi from print_msg to print_msg::@3 [phi:print_msg->print_msg::@3] b3_from_print_msg: jmp b3 - //SEG25 print_msg::@3 + //SEG26 print_msg::@3 b3: - //SEG26 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] + //SEG27 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] b2_from_b3: - //SEG27 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG28 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_1 sta msg+1 jmp b2 - //SEG28 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] + //SEG29 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] b2_from_print_msg: - //SEG29 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG30 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_0 sta msg+1 jmp b2 - //SEG30 print_msg::@2 + //SEG31 print_msg::@2 b2: - //SEG31 [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#2 - //SEG32 [14] call print - //SEG33 [16] phi from print_msg::@2 to print [phi:print_msg::@2->print] + //SEG32 [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#2 + //SEG33 [14] call print + //SEG34 [16] phi from print_msg::@2 to print [phi:print_msg::@2->print] print_from_b2: jsr print jmp breturn - //SEG34 print_msg::@return + //SEG35 print_msg::@return breturn: - //SEG35 [15] return + //SEG36 [15] return rts msg_0: .text "Hello @" msg_1: .text "World!@" } -//SEG36 print +//SEG37 print print: { .label msg = 4 - //SEG37 [17] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] + //SEG38 [17] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] b1_from_print: b1_from_b2: - //SEG38 [17] phi (byte*) screen#14 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy - //SEG39 [17] phi (byte*) print::msg#2 = (byte*) print::msg#0 [phi:print/print::@2->print::@1#1] -- register_copy + //SEG39 [17] phi (byte*) screen#14 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy + //SEG40 [17] phi (byte*) print::msg#2 = (byte*) print::msg#0 [phi:print/print::@2->print::@1#1] -- register_copy jmp b1 - //SEG40 print::@1 + //SEG41 print::@1 b1: - //SEG41 [18] if(*((byte*) print::msg#2)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG42 [18] if(*((byte*) print::msg#2)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (msg),y cmp #'@' bne b2 jmp breturn - //SEG42 print::@return + //SEG43 print::@return breturn: - //SEG43 [19] return + //SEG44 [19] return rts - //SEG44 print::@2 + //SEG45 print::@2 b2: - //SEG45 [20] *((byte*) screen#14) ← *((byte*) print::msg#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG46 [20] *((byte*) screen#14) ← *((byte*) print::msg#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (msg),y ldy #0 sta (screen),y - //SEG46 [21] (byte*) screen#6 ← ++ (byte*) screen#14 -- pbuz1=_inc_pbuz1 + //SEG47 [21] (byte*) screen#6 ← ++ (byte*) screen#14 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG47 [22] (byte*) print::msg#1 ← ++ (byte*) print::msg#2 -- pbuz1=_inc_pbuz1 + //SEG48 [22] (byte*) print::msg#1 ← ++ (byte*) print::msg#2 -- pbuz1=_inc_pbuz1 inc msg bne !+ inc msg+1 @@ -699,106 +701,107 @@ zp ZP_WORD:4 [ print_msg::msg#2 print::msg#2 print::msg#0 print::msg#1 ] FINAL ASSEMBLER Score: 612 -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline Strings in assignments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main -// Inline Strings in assignments +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print_msg - //SEG11 [9] phi from main to print_msg [phi:main->print_msg] - //SEG12 [9] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_msg#0] -- pbuz1=pbuc1 + //SEG11 [5] call print_msg + //SEG12 [9] phi from main to print_msg [phi:main->print_msg] + //SEG13 [9] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_msg#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG13 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->print_msg#1] -- vbuxx=vbuc1 + //SEG14 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->print_msg#1] -- vbuxx=vbuc1 ldx #1 jsr print_msg - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG15 main::@1 - //SEG16 [7] call print_msg - //SEG17 [9] phi from main::@1 to print_msg [phi:main::@1->print_msg] - //SEG18 [9] phi (byte*) screen#18 = (byte*) screen#14 [phi:main::@1->print_msg#0] -- register_copy - //SEG19 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@1->print_msg#1] -- vbuxx=vbuc1 + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG16 main::@1 + //SEG17 [7] call print_msg + //SEG18 [9] phi from main::@1 to print_msg [phi:main::@1->print_msg] + //SEG19 [9] phi (byte*) screen#18 = (byte*) screen#14 [phi:main::@1->print_msg#0] -- register_copy + //SEG20 [9] phi (byte) print_msg::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@1->print_msg#1] -- vbuxx=vbuc1 ldx #2 jsr print_msg - //SEG20 main::@return - //SEG21 [8] return + //SEG21 main::@return + //SEG22 [8] return rts } -//SEG22 print_msg +//SEG23 print_msg print_msg: { .label msg = 4 - //SEG23 [10] if((byte) print_msg::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto print_msg::@2 -- vbuxx_eq_vbuc1_then_la1 + //SEG24 [10] if((byte) print_msg::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto print_msg::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #1 beq b1 - //SEG24 [11] phi from print_msg to print_msg::@3 [phi:print_msg->print_msg::@3] - //SEG25 print_msg::@3 - //SEG26 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] - //SEG27 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG25 [11] phi from print_msg to print_msg::@3 [phi:print_msg->print_msg::@3] + //SEG26 print_msg::@3 + //SEG27 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] + //SEG28 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_1 sta msg+1 jmp b2 - //SEG28 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] + //SEG29 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] b1: - //SEG29 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG30 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_0 sta msg+1 - //SEG30 print_msg::@2 + //SEG31 print_msg::@2 b2: - //SEG31 [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#2 - //SEG32 [14] call print - //SEG33 [16] phi from print_msg::@2 to print [phi:print_msg::@2->print] + //SEG32 [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#2 + //SEG33 [14] call print + //SEG34 [16] phi from print_msg::@2 to print [phi:print_msg::@2->print] jsr print - //SEG34 print_msg::@return - //SEG35 [15] return + //SEG35 print_msg::@return + //SEG36 [15] return rts msg_0: .text "Hello @" msg_1: .text "World!@" } -//SEG36 print +//SEG37 print print: { .label msg = 4 - //SEG37 [17] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] - //SEG38 [17] phi (byte*) screen#14 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy - //SEG39 [17] phi (byte*) print::msg#2 = (byte*) print::msg#0 [phi:print/print::@2->print::@1#1] -- register_copy - //SEG40 print::@1 + //SEG38 [17] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] + //SEG39 [17] phi (byte*) screen#14 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy + //SEG40 [17] phi (byte*) print::msg#2 = (byte*) print::msg#0 [phi:print/print::@2->print::@1#1] -- register_copy + //SEG41 print::@1 b1: - //SEG41 [18] if(*((byte*) print::msg#2)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG42 [18] if(*((byte*) print::msg#2)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (msg),y cmp #'@' bne b2 - //SEG42 print::@return - //SEG43 [19] return + //SEG43 print::@return + //SEG44 [19] return rts - //SEG44 print::@2 + //SEG45 print::@2 b2: - //SEG45 [20] *((byte*) screen#14) ← *((byte*) print::msg#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG46 [20] *((byte*) screen#14) ← *((byte*) print::msg#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (msg),y sta (screen),y - //SEG46 [21] (byte*) screen#6 ← ++ (byte*) screen#14 -- pbuz1=_inc_pbuz1 + //SEG47 [21] (byte*) screen#6 ← ++ (byte*) screen#14 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG47 [22] (byte*) print::msg#1 ← ++ (byte*) print::msg#2 -- pbuz1=_inc_pbuz1 + //SEG48 [22] (byte*) print::msg#1 ← ++ (byte*) print::msg#2 -- pbuz1=_inc_pbuz1 inc msg bne !+ inc msg+1 diff --git a/src/test/ref/inline-string-3.asm b/src/test/ref/inline-string-3.asm index b81e58f25..2802ee551 100644 --- a/src/test/ref/inline-string-3.asm +++ b/src/test/ref/inline-string-3.asm @@ -1,9 +1,9 @@ -.pc = $801 "Basic" -:BasicUpstart(main) -.pc = $80d "Program" // Test assigning address of inline string to pointer // The result should be an labelled .text in the ASM // Erroneously tries to inline the string completely leading to a CompileError +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" main: { .label PTR = $9ffe .label SCREEN = $400 diff --git a/src/test/ref/inline-string-3.log b/src/test/ref/inline-string-3.log index 5934be250..943413088 100644 --- a/src/test/ref/inline-string-3.log +++ b/src/test/ref/inline-string-3.log @@ -119,52 +119,53 @@ Complete equivalence classes Allocated zp ZP_WORD:2 [ main::$6 ] INITIAL ASM -//SEG0 Basic Upstart -.pc = $801 "Basic" -:BasicUpstart(bbegin) -.pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -b1_from_bbegin: - jmp b1 -//SEG4 @1 -b1: -//SEG5 [2] call main - jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -bend_from_b1: - jmp bend -//SEG7 @end -bend: -//SEG8 main +//SEG0 File Comments // Test assigning address of inline string to pointer // The result should be an labelled .text in the ASM // Erroneously tries to inline the string completely leading to a CompileError +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG5 @1 +b1: +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main main: { .label PTR = $9ffe .label SCREEN = $400 .label _6 = 2 - //SEG9 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 lda #>STRING sta PTR+1 - //SEG11 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG12 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda PTR sta _6 lda PTR+1 sta _6+1 - //SEG12 [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) -- _deref_pbuc1=_deref_pbuz1 + //SEG13 [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) -- _deref_pbuc1=_deref_pbuz1 ldy #0 lda (_6),y sta SCREEN jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [8] return + //SEG15 [8] return rts STRING: .text "camelot" } @@ -184,52 +185,53 @@ Uplifting [main] best 58 combination zp ZP_WORD:2 [ main::$6 ] Uplifting [] best 58 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart -.pc = $801 "Basic" -:BasicUpstart(bbegin) -.pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -b1_from_bbegin: - jmp b1 -//SEG4 @1 -b1: -//SEG5 [2] call main - jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -bend_from_b1: - jmp bend -//SEG7 @end -bend: -//SEG8 main +//SEG0 File Comments // Test assigning address of inline string to pointer // The result should be an labelled .text in the ASM // Erroneously tries to inline the string completely leading to a CompileError +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG5 @1 +b1: +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main main: { .label PTR = $9ffe .label SCREEN = $400 .label _6 = 2 - //SEG9 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 lda #>STRING sta PTR+1 - //SEG11 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG12 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda PTR sta _6 lda PTR+1 sta _6+1 - //SEG12 [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) -- _deref_pbuc1=_deref_pbuz1 + //SEG13 [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) -- _deref_pbuc1=_deref_pbuz1 ldy #0 lda (_6),y sta SCREEN jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [8] return + //SEG15 [8] return rts STRING: .text "camelot" } @@ -273,42 +275,43 @@ zp ZP_WORD:2 [ main::$6 ] FINAL ASSEMBLER Score: 43 -//SEG0 Basic Upstart -.pc = $801 "Basic" -:BasicUpstart(main) -.pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG0 File Comments // Test assigning address of inline string to pointer // The result should be an labelled .text in the ASM // Erroneously tries to inline the string completely leading to a CompileError +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label PTR = $9ffe .label SCREEN = $400 .label _6 = 2 - //SEG9 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 lda #(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 -- _deref_pbuc1=vbuc2 lda #>STRING sta PTR+1 - //SEG11 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG12 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda PTR sta _6 lda PTR+1 sta _6+1 - //SEG12 [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) -- _deref_pbuc1=_deref_pbuz1 + //SEG13 [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) -- _deref_pbuc1=_deref_pbuz1 ldy #0 lda (_6),y sta SCREEN - //SEG13 main::@return - //SEG14 [8] return + //SEG14 main::@return + //SEG15 [8] return rts STRING: .text "camelot" } diff --git a/src/test/ref/inline-string.asm b/src/test/ref/inline-string.asm index 950a02d42..8ff1edf6a 100644 --- a/src/test/ref/inline-string.asm +++ b/src/test/ref/inline-string.asm @@ -1,3 +1,4 @@ +// Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text). .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" @@ -48,5 +49,4 @@ print: { !: jmp b1 } - // Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text). msg1: .text "message 1 @" diff --git a/src/test/ref/inline-string.log b/src/test/ref/inline-string.log index 801e543a8..4873f017e 100644 --- a/src/test/ref/inline-string.log +++ b/src/test/ref/inline-string.log @@ -247,123 +247,124 @@ Allocated zp ZP_WORD:2 [ screen#18 screen#12 screen#5 ] Allocated zp ZP_WORD:4 [ print::msg#4 print::msg#6 print::msg#3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text). +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print - //SEG11 [11] phi from main to print [phi:main->print] + //SEG11 [5] call print + //SEG12 [11] phi from main to print [phi:main->print] print_from_main: - //SEG12 [11] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print#0] -- pbuz1=pbuc1 + //SEG13 [11] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG13 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 + //SEG14 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 lda #msg1 sta print.msg+1 jsr print - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] call print - //SEG17 [11] phi from main::@1 to print [phi:main::@1->print] + //SEG17 [7] call print + //SEG18 [11] phi from main::@1 to print [phi:main::@1->print] print_from_b1: - //SEG18 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy - //SEG19 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 + //SEG19 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy + //SEG20 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 lda #msg2 sta print.msg+1 jsr print - //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [9] call print - //SEG23 [11] phi from main::@2 to print [phi:main::@2->print] + //SEG23 [9] call print + //SEG24 [11] phi from main::@2 to print [phi:main::@2->print] print_from_b2: - //SEG24 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@2->print#0] -- register_copy - //SEG25 [11] phi (byte*) print::msg#6 = (const string) main::msg [phi:main::@2->print#1] -- pbuz1=pbuc1 + //SEG25 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@2->print#0] -- register_copy + //SEG26 [11] phi (byte*) print::msg#6 = (const string) main::msg [phi:main::@2->print#1] -- pbuz1=pbuc1 lda #msg sta print.msg+1 jsr print jmp breturn - //SEG26 main::@return + //SEG27 main::@return breturn: - //SEG27 [10] return + //SEG28 [10] return rts msg: .text "message 3 @" msg2: .text "message 2 @" } -//SEG28 print +//SEG29 print print: { .label msg = 4 - //SEG29 [12] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] + //SEG30 [12] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] b1_from_print: b1_from_b2: - //SEG30 [12] phi (byte*) screen#12 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy - //SEG31 [12] phi (byte*) print::msg#4 = (byte*) print::msg#6 [phi:print/print::@2->print::@1#1] -- register_copy + //SEG31 [12] phi (byte*) screen#12 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy + //SEG32 [12] phi (byte*) print::msg#4 = (byte*) print::msg#6 [phi:print/print::@2->print::@1#1] -- register_copy jmp b1 - //SEG32 print::@1 + //SEG33 print::@1 b1: - //SEG33 [13] if(*((byte*) print::msg#4)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG34 [13] if(*((byte*) print::msg#4)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (msg),y cmp #'@' bne b2 jmp breturn - //SEG34 print::@return + //SEG35 print::@return breturn: - //SEG35 [14] return + //SEG36 [14] return rts - //SEG36 print::@2 + //SEG37 print::@2 b2: - //SEG37 [15] *((byte*) screen#12) ← *((byte*) print::msg#4) -- _deref_pbuz1=_deref_pbuz2 + //SEG38 [15] *((byte*) screen#12) ← *((byte*) print::msg#4) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (msg),y ldy #0 sta (screen),y - //SEG38 [16] (byte*) screen#5 ← ++ (byte*) screen#12 -- pbuz1=_inc_pbuz1 + //SEG39 [16] (byte*) screen#5 ← ++ (byte*) screen#12 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG39 [17] (byte*) print::msg#3 ← ++ (byte*) print::msg#4 -- pbuz1=_inc_pbuz1 + //SEG40 [17] (byte*) print::msg#3 ← ++ (byte*) print::msg#4 -- pbuz1=_inc_pbuz1 inc msg bne !+ inc msg+1 !: jmp b1_from_b2 } - // Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text). msg1: .text "message 1 @" REGISTER UPLIFT POTENTIAL REGISTERS @@ -382,123 +383,124 @@ Uplifting [] best 706 combination zp ZP_WORD:2 [ screen#18 screen#12 screen#5 ] Uplifting [main] best 706 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text). +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print - //SEG11 [11] phi from main to print [phi:main->print] + //SEG11 [5] call print + //SEG12 [11] phi from main to print [phi:main->print] print_from_main: - //SEG12 [11] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print#0] -- pbuz1=pbuc1 + //SEG13 [11] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG13 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 + //SEG14 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 lda #msg1 sta print.msg+1 jsr print - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] call print - //SEG17 [11] phi from main::@1 to print [phi:main::@1->print] + //SEG17 [7] call print + //SEG18 [11] phi from main::@1 to print [phi:main::@1->print] print_from_b1: - //SEG18 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy - //SEG19 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 + //SEG19 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy + //SEG20 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 lda #msg2 sta print.msg+1 jsr print - //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [9] call print - //SEG23 [11] phi from main::@2 to print [phi:main::@2->print] + //SEG23 [9] call print + //SEG24 [11] phi from main::@2 to print [phi:main::@2->print] print_from_b2: - //SEG24 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@2->print#0] -- register_copy - //SEG25 [11] phi (byte*) print::msg#6 = (const string) main::msg [phi:main::@2->print#1] -- pbuz1=pbuc1 + //SEG25 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@2->print#0] -- register_copy + //SEG26 [11] phi (byte*) print::msg#6 = (const string) main::msg [phi:main::@2->print#1] -- pbuz1=pbuc1 lda #msg sta print.msg+1 jsr print jmp breturn - //SEG26 main::@return + //SEG27 main::@return breturn: - //SEG27 [10] return + //SEG28 [10] return rts msg: .text "message 3 @" msg2: .text "message 2 @" } -//SEG28 print +//SEG29 print print: { .label msg = 4 - //SEG29 [12] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] + //SEG30 [12] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] b1_from_print: b1_from_b2: - //SEG30 [12] phi (byte*) screen#12 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy - //SEG31 [12] phi (byte*) print::msg#4 = (byte*) print::msg#6 [phi:print/print::@2->print::@1#1] -- register_copy + //SEG31 [12] phi (byte*) screen#12 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy + //SEG32 [12] phi (byte*) print::msg#4 = (byte*) print::msg#6 [phi:print/print::@2->print::@1#1] -- register_copy jmp b1 - //SEG32 print::@1 + //SEG33 print::@1 b1: - //SEG33 [13] if(*((byte*) print::msg#4)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG34 [13] if(*((byte*) print::msg#4)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (msg),y cmp #'@' bne b2 jmp breturn - //SEG34 print::@return + //SEG35 print::@return breturn: - //SEG35 [14] return + //SEG36 [14] return rts - //SEG36 print::@2 + //SEG37 print::@2 b2: - //SEG37 [15] *((byte*) screen#12) ← *((byte*) print::msg#4) -- _deref_pbuz1=_deref_pbuz2 + //SEG38 [15] *((byte*) screen#12) ← *((byte*) print::msg#4) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (msg),y ldy #0 sta (screen),y - //SEG38 [16] (byte*) screen#5 ← ++ (byte*) screen#12 -- pbuz1=_inc_pbuz1 + //SEG39 [16] (byte*) screen#5 ← ++ (byte*) screen#12 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG39 [17] (byte*) print::msg#3 ← ++ (byte*) print::msg#4 -- pbuz1=_inc_pbuz1 + //SEG40 [17] (byte*) print::msg#3 ← ++ (byte*) print::msg#4 -- pbuz1=_inc_pbuz1 inc msg bne !+ inc msg+1 !: jmp b1_from_b2 } - // Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text). msg1: .text "message 1 @" ASSEMBLER OPTIMIZATIONS @@ -570,96 +572,97 @@ zp ZP_WORD:4 [ print::msg#4 print::msg#6 print::msg#3 ] FINAL ASSEMBLER Score: 605 -//SEG0 Basic Upstart +//SEG0 File Comments +// Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text). +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print - //SEG11 [11] phi from main to print [phi:main->print] - //SEG12 [11] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print#0] -- pbuz1=pbuc1 + //SEG11 [5] call print + //SEG12 [11] phi from main to print [phi:main->print] + //SEG13 [11] phi (byte*) screen#18 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG13 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 + //SEG14 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 lda #msg1 sta print.msg+1 jsr print - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG15 main::@1 - //SEG16 [7] call print - //SEG17 [11] phi from main::@1 to print [phi:main::@1->print] - //SEG18 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy - //SEG19 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG16 main::@1 + //SEG17 [7] call print + //SEG18 [11] phi from main::@1 to print [phi:main::@1->print] + //SEG19 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy + //SEG20 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 lda #msg2 sta print.msg+1 jsr print - //SEG20 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG21 main::@2 - //SEG22 [9] call print - //SEG23 [11] phi from main::@2 to print [phi:main::@2->print] - //SEG24 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@2->print#0] -- register_copy - //SEG25 [11] phi (byte*) print::msg#6 = (const string) main::msg [phi:main::@2->print#1] -- pbuz1=pbuc1 + //SEG21 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 main::@2 + //SEG23 [9] call print + //SEG24 [11] phi from main::@2 to print [phi:main::@2->print] + //SEG25 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@2->print#0] -- register_copy + //SEG26 [11] phi (byte*) print::msg#6 = (const string) main::msg [phi:main::@2->print#1] -- pbuz1=pbuc1 lda #msg sta print.msg+1 jsr print - //SEG26 main::@return - //SEG27 [10] return + //SEG27 main::@return + //SEG28 [10] return rts msg: .text "message 3 @" msg2: .text "message 2 @" } -//SEG28 print +//SEG29 print print: { .label msg = 4 - //SEG29 [12] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] - //SEG30 [12] phi (byte*) screen#12 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy - //SEG31 [12] phi (byte*) print::msg#4 = (byte*) print::msg#6 [phi:print/print::@2->print::@1#1] -- register_copy - //SEG32 print::@1 + //SEG30 [12] phi from print print::@2 to print::@1 [phi:print/print::@2->print::@1] + //SEG31 [12] phi (byte*) screen#12 = (byte*) screen#18 [phi:print/print::@2->print::@1#0] -- register_copy + //SEG32 [12] phi (byte*) print::msg#4 = (byte*) print::msg#6 [phi:print/print::@2->print::@1#1] -- register_copy + //SEG33 print::@1 b1: - //SEG33 [13] if(*((byte*) print::msg#4)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG34 [13] if(*((byte*) print::msg#4)!=(byte) '@') goto print::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (msg),y cmp #'@' bne b2 - //SEG34 print::@return - //SEG35 [14] return + //SEG35 print::@return + //SEG36 [14] return rts - //SEG36 print::@2 + //SEG37 print::@2 b2: - //SEG37 [15] *((byte*) screen#12) ← *((byte*) print::msg#4) -- _deref_pbuz1=_deref_pbuz2 + //SEG38 [15] *((byte*) screen#12) ← *((byte*) print::msg#4) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (msg),y sta (screen),y - //SEG38 [16] (byte*) screen#5 ← ++ (byte*) screen#12 -- pbuz1=_inc_pbuz1 + //SEG39 [16] (byte*) screen#5 ← ++ (byte*) screen#12 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG39 [17] (byte*) print::msg#3 ← ++ (byte*) print::msg#4 -- pbuz1=_inc_pbuz1 + //SEG40 [17] (byte*) print::msg#3 ← ++ (byte*) print::msg#4 -- pbuz1=_inc_pbuz1 inc msg bne !+ inc msg+1 !: jmp b1 } - // Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text). msg1: .text "message 1 @" diff --git a/src/test/ref/inline-word.log b/src/test/ref/inline-word.log index 35482bcf5..20f3fe163 100644 --- a/src/test/ref/inline-word.log +++ b/src/test/ref/inline-word.log @@ -204,86 +204,87 @@ Allocated zp ZP_BYTE:3 [ main::l#2 main::l#1 ] Allocated zp ZP_WORD:4 [ main::w#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label w = 4 .label l = 3 .label h = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta h jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::h#4 = (byte) main::h#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::h#4 = (byte) main::h#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #4 sta l jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG18 [6] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuz3 + //SEG21 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuz3 ldy h lda his,y sta w+1 lda l sta w - //SEG21 [8] *((byte*)(word) main::w#0) ← (byte) '*' -- _deref_pbuz1=vbuc1 + //SEG22 [8] *((byte*)(word) main::w#0) ← (byte) '*' -- _deref_pbuz1=vbuc1 lda #'*' ldy #0 sta (w),y - //SEG22 [9] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuz1=_inc_vbuz1 + //SEG23 [9] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG23 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG24 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #8 bne b2_from_b2 jmp b3 - //SEG24 main::@3 + //SEG25 main::@3 b3: - //SEG25 [11] (byte) main::h#1 ← ++ (byte) main::h#4 -- vbuz1=_inc_vbuz1 + //SEG26 [11] (byte) main::h#1 ← ++ (byte) main::h#4 -- vbuz1=_inc_vbuz1 inc h - //SEG26 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG27 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda h cmp #3 bne b1_from_b3 jmp breturn - //SEG27 main::@return + //SEG28 main::@return breturn: - //SEG28 [13] return + //SEG29 [13] return rts his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200 } @@ -312,82 +313,83 @@ Uplifting [main] best 4383 combination zp ZP_BYTE:2 [ main::h#4 main::h#1 ] Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ main::w#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label w = 3 .label h = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta h jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::h#4 = (byte) main::h#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::h#4 = (byte) main::h#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG17 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #4 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG18 [6] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuxx + //SEG21 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuxx ldy h lda his,y sta w+1 stx w - //SEG21 [8] *((byte*)(word) main::w#0) ← (byte) '*' -- _deref_pbuz1=vbuc1 + //SEG22 [8] *((byte*)(word) main::w#0) ← (byte) '*' -- _deref_pbuz1=vbuc1 lda #'*' ldy #0 sta (w),y - //SEG22 [9] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuxx=_inc_vbuxx + //SEG23 [9] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuxx=_inc_vbuxx inx - //SEG23 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG24 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp b3 - //SEG24 main::@3 + //SEG25 main::@3 b3: - //SEG25 [11] (byte) main::h#1 ← ++ (byte) main::h#4 -- vbuz1=_inc_vbuz1 + //SEG26 [11] (byte) main::h#1 ← ++ (byte) main::h#4 -- vbuz1=_inc_vbuz1 inc h - //SEG26 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG27 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda h cmp #3 bne b1_from_b3 jmp breturn - //SEG27 main::@return + //SEG28 main::@return breturn: - //SEG28 [13] return + //SEG29 [13] return rts his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200 } @@ -455,61 +457,62 @@ zp ZP_WORD:3 [ main::w#0 ] FINAL ASSEMBLER Score: 3381 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label w = 3 .label h = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta h - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG13 [5] phi (byte) main::h#4 = (byte) main::h#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi (byte) main::h#4 = (byte) main::h#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #4 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG18 [6] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG19 main::@2 + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG19 [6] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG20 main::@2 b2: - //SEG20 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuxx + //SEG21 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuxx ldy h lda his,y sta w+1 stx w - //SEG21 [8] *((byte*)(word) main::w#0) ← (byte) '*' -- _deref_pbuz1=vbuc1 + //SEG22 [8] *((byte*)(word) main::w#0) ← (byte) '*' -- _deref_pbuz1=vbuc1 lda #'*' ldy #0 sta (w),y - //SEG22 [9] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuxx=_inc_vbuxx + //SEG23 [9] (byte) main::l#1 ← ++ (byte) main::l#2 -- vbuxx=_inc_vbuxx inx - //SEG23 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG24 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG24 main::@3 - //SEG25 [11] (byte) main::h#1 ← ++ (byte) main::h#4 -- vbuz1=_inc_vbuz1 + //SEG25 main::@3 + //SEG26 [11] (byte) main::h#1 ← ++ (byte) main::h#4 -- vbuz1=_inc_vbuz1 inc h - //SEG26 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG27 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda h cmp #3 bne b1 - //SEG27 main::@return - //SEG28 [13] return + //SEG28 main::@return + //SEG29 [13] return rts his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200 } diff --git a/src/test/ref/inlinearrayproblem.asm b/src/test/ref/inlinearrayproblem.asm index 29d12b3a7..082ecef2b 100644 --- a/src/test/ref/inlinearrayproblem.asm +++ b/src/test/ref/inlinearrayproblem.asm @@ -1,3 +1,5 @@ +// Arrays / strings allocated inline destroy functions (because they are allocated where the call enters. +// The following places the text at the start of the main-function - and JSR's straight into the text - not the code. .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/inlinearrayproblem.log b/src/test/ref/inlinearrayproblem.log index 03b769405..96a30ba44 100644 --- a/src/test/ref/inlinearrayproblem.log +++ b/src/test/ref/inlinearrayproblem.log @@ -153,62 +153,65 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Arrays / strings allocated inline destroy functions (because they are allocated where the call enters. +// The following places the text at the start of the main-function - and JSR's straight into the text - not the code. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = $400+$28 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda txt,y sta SCREEN,y - //SEG16 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG17 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda data,y sta SCREEN2,y - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts txt: .text "qwe" data: .byte 1, 2, 3 @@ -230,57 +233,60 @@ Uplifting [main] best 383 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 383 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Arrays / strings allocated inline destroy functions (because they are allocated where the call enters. +// The following places the text at the start of the main-function - and JSR's straight into the text - not the code. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = $400+$28 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda txt,x sta SCREEN,x - //SEG16 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG17 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda data,x sta SCREEN2,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts txt: .text "qwe" data: .byte 1, 2, 3 @@ -336,42 +342,45 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 281 -//SEG0 Basic Upstart +//SEG0 File Comments +// Arrays / strings allocated inline destroy functions (because they are allocated where the call enters. +// The following places the text at the start of the main-function - and JSR's straight into the text - not the code. +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = $400+$28 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda txt,x sta SCREEN,x - //SEG16 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG17 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda data,x sta SCREEN2,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts txt: .text "qwe" data: .byte 1, 2, 3 diff --git a/src/test/ref/inmem-const-array.log b/src/test/ref/inmem-const-array.log index f2e1b4173..0ef11866c 100644 --- a/src/test/ref/inmem-const-array.log +++ b/src/test/ref/inmem-const-array.log @@ -235,94 +235,95 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::j#3 main::j#4 main::j#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const WHITE = 1 .const RED = 2 .const GREEN = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label screen = $400 .label cols = $d800 .label j = 3 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::i#2 = (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::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG14 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG18 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #'*' sta screen,y - //SEG18 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG19 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy j lda colseq,y ldy i sta cols,y - //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuz1=_inc_vbuz1 + //SEG20 [8] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuz1=_inc_vbuz1 inc j - //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG21 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #3 bne b6_from_b1 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG23 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG23 main::@2 + //SEG24 main::@2 b2: - //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG25 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG26 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$28 bne b1_from_b2 jmp breturn - //SEG26 main::@return + //SEG27 main::@return breturn: - //SEG27 [13] return + //SEG28 [13] return rts - //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG29 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG29 main::@6 + //SEG30 main::@6 b6: - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG31 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG32 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 colseq: .byte WHITE, RED, GREEN } @@ -345,84 +346,85 @@ Uplifting [main] best 553 combination reg byte y [ main::j#3 main::j#4 main::j#1 Uplifting [] best 553 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const WHITE = 1 .const RED = 2 .const GREEN = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label screen = $400 .label cols = $d800 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG12 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::i#2 = (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::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG14 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG18 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x - //SEG18 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG19 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda colseq,y sta cols,x - //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuyy=_inc_vbuyy + //SEG20 [8] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuyy=_inc_vbuyy iny - //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 + //SEG21 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 cpy #3 bne b6_from_b1 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG23 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG23 main::@2 + //SEG24 main::@2 b2: - //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG25 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG26 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b2 jmp breturn - //SEG26 main::@return + //SEG27 main::@return breturn: - //SEG27 [13] return + //SEG28 [13] return rts - //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG29 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG29 main::@6 + //SEG30 main::@6 b6: - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG31 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG32 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 colseq: .byte WHITE, RED, GREEN } @@ -499,63 +501,64 @@ reg byte y [ main::j#3 main::j#4 main::j#1 ] FINAL ASSEMBLER Score: 361 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .const WHITE = 1 .const RED = 2 .const GREEN = 5 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label screen = $400 .label cols = $d800 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG14 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy - //SEG16 main::@1 + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG15 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG18 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x - //SEG18 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG19 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda colseq,y sta cols,x - //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuyy=_inc_vbuyy + //SEG20 [8] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuyy=_inc_vbuyy iny - //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 + //SEG21 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 cpy #3 bne b2 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG22 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG23 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG23 main::@2 + //SEG24 main::@2 b2: - //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG25 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG26 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1 - //SEG26 main::@return - //SEG27 [13] return + //SEG27 main::@return + //SEG28 [13] return rts - //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] - //SEG29 main::@6 - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG29 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG30 main::@6 + //SEG31 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG32 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy colseq: .byte WHITE, RED, GREEN } diff --git a/src/test/ref/inmemarray.log b/src/test/ref/inmemarray.log index ad2698295..c5e5d1a07 100644 --- a/src/test/ref/inmemarray.log +++ b/src/test/ref/inmemarray.log @@ -190,86 +190,87 @@ Allocated zp ZP_BYTE:2 [ main::j#3 main::j#4 main::j#1 ] Allocated zp ZP_BYTE:3 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label j = 2 .label i = 3 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG12 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG18 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy j lda TXT,y ldy i sta SCREEN,y - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuz1=_inc_vbuz1 + //SEG19 [7] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuz1=_inc_vbuz1 inc j - //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #8 bne b6_from_b1 - //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG21 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG22 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG24 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG24 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG25 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$65 bne b1_from_b2 jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [12] return + //SEG27 [12] return rts - //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG28 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG28 main::@6 + //SEG29 main::@6 b6: - //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG30 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG30 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG31 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } TXT: .byte 3, 1, $d, 5, $c, $f, $14, $20 @@ -290,77 +291,78 @@ Uplifting [main] best 483 combination reg byte y [ main::j#3 main::j#4 main::j#1 Uplifting [] best 483 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 - //SEG12 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + //SEG13 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG18 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda TXT,y sta SCREEN,x - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuyy=_inc_vbuyy + //SEG19 [7] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuyy=_inc_vbuyy iny - //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b6_from_b1 - //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG21 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG22 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG24 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG24 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG25 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1_from_b2 jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [12] return + //SEG27 [12] return rts - //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG28 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG28 main::@6 + //SEG29 main::@6 b6: - //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG30 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG30 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG31 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } TXT: .byte 3, 1, $d, 5, $c, $f, $14, $20 @@ -429,56 +431,57 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 291 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + //SEG13 [5] phi (byte) main::j#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 ldy #0 - //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy - //SEG16 main::@1 + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG18 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda TXT,y sta SCREEN,x - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuyy=_inc_vbuyy + //SEG19 [7] (byte) main::j#1 ← ++ (byte) main::j#3 -- vbuyy=_inc_vbuyy iny - //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b2 - //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG21 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG24 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG24 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG25 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1 - //SEG25 main::@return - //SEG26 [12] return + //SEG26 main::@return + //SEG27 [12] return rts - //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] - //SEG28 main::@6 - //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - //SEG30 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG28 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG29 main::@6 + //SEG30 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG31 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy } TXT: .byte 3, 1, $d, 5, $c, $f, $14, $20 diff --git a/src/test/ref/inmemstring.log b/src/test/ref/inmemstring.log index f36df8822..dedd290d9 100644 --- a/src/test/ref/inmemstring.log +++ b/src/test/ref/inmemstring.log @@ -195,75 +195,76 @@ Allocated zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] Allocated zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 .label cursor = 3 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 - //SEG12 [5] phi (byte) main::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::i#3 = (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::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG14 [5] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy + //SEG15 [5] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG18 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda TEXT,y ldy #0 sta (cursor),y - //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuz1=_inc_vbuz1 + //SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuz1=_inc_vbuz1 inc i - //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b6_from_b1 - //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG21 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG22 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG24 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG24 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG25 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b2 @@ -273,18 +274,18 @@ main: { bcc b1_from_b2 !: jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [12] return + //SEG27 [12] return rts - //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG28 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG28 main::@6 + //SEG29 main::@6 b6: - //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG30 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG30 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG31 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } TEXT: .text "camelot " @@ -308,70 +309,71 @@ Uplifting [] best 828 combination Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::cursor#2 main::cursor#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label cursor = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 - //SEG12 [5] phi (byte) main::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::i#3 = (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::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG14 [5] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy + //SEG15 [5] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG18 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda TEXT,x ldy #0 sta (cursor),y - //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuxx=_inc_vbuxx + //SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuxx=_inc_vbuxx inx - //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6_from_b1 - //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG21 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG22 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG24 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG24 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG25 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b2 @@ -381,18 +383,18 @@ main: { bcc b1_from_b2 !: jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [12] return + //SEG27 [12] return rts - //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG28 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG28 main::@6 + //SEG29 main::@6 b6: - //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG30 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG30 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG31 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } TEXT: .text "camelot " @@ -462,55 +464,56 @@ zp ZP_WORD:2 [ main::cursor#2 main::cursor#1 ] FINAL ASSEMBLER Score: 636 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label cursor = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 - //SEG12 [5] phi (byte) main::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG14 [5] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy - //SEG16 main::@1 + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG15 [5] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG18 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda TEXT,x ldy #0 sta (cursor),y - //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuxx=_inc_vbuxx + //SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#3 -- vbuxx=_inc_vbuxx inx - //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG21 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 -- pbuz1=_inc_pbuz1 + //SEG24 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG24 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG25 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -519,13 +522,13 @@ main: { cmp #main::@6] - //SEG28 main::@6 - //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - //SEG30 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG28 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG29 main::@6 + //SEG30 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG31 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy } TEXT: .text "camelot " diff --git a/src/test/ref/interrupt-volatile-reuse-problem1.asm b/src/test/ref/interrupt-volatile-reuse-problem1.asm index b1f613d55..e53b2e5ad 100644 --- a/src/test/ref/interrupt-volatile-reuse-problem1.asm +++ b/src/test/ref/interrupt-volatile-reuse-problem1.asm @@ -1,7 +1,7 @@ +// Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" - // Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles .label KERNEL_IRQ = $314 .label SCREEN = $400 .label col1 = 2 diff --git a/src/test/ref/interrupt-volatile-reuse-problem1.log b/src/test/ref/interrupt-volatile-reuse-problem1.log index 57b99a6bb..8e340464f 100644 --- a/src/test/ref/interrupt-volatile-reuse-problem1.log +++ b/src/test/ref/interrupt-volatile-reuse-problem1.log @@ -152,72 +152,73 @@ Allocated zp ZP_BYTE:4 [ col1#1 ] Allocated zp ZP_BYTE:5 [ col2#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label SCREEN = $400 .label col1 = 2 .label col2 = 3 .label col1_1 = 4 .label col2_1 = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta col1 -//SEG4 [1] (byte) col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuc1 +//SEG5 [1] (byte) col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuc1 lda #8 sta col2 -//SEG5 [2] phi from @begin to @2 [phi:@begin->@2] +//SEG6 [2] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG6 @2 +//SEG7 @2 b2: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @2 to @end [phi:@2->@end] +//SEG9 [4] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { - //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG12 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [6] return + //SEG14 [6] return rts } -//SEG14 irq +//SEG15 irq irq: { - //SEG15 entry interrupt(KERNEL_MIN) - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 + //SEG16 entry interrupt(KERNEL_MIN) + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 lda col1 sta SCREEN+$28 - //SEG17 [8] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz2 + //SEG18 [8] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz2 ldy col1 iny sty col1_1 - //SEG18 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) col2#0 -- _deref_pbuc1=vbuz1 + //SEG19 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) col2#0 -- _deref_pbuc1=vbuz1 lda col2 sta SCREEN+$29 - //SEG19 [10] (byte) col2#1 ← ++ (byte) col2#0 -- vbuz1=_inc_vbuz2 + //SEG20 [10] (byte) col2#1 ← ++ (byte) col2#0 -- vbuz1=_inc_vbuz2 ldy col2 iny sty col2_1 jmp breturn - //SEG20 irq::@return + //SEG21 irq::@return breturn: - //SEG21 [11] return - exit interrupt(KERNEL_MIN) + //SEG22 [11] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -254,66 +255,67 @@ Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ col1#0 ] ] Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ col2#0 ] ] with [ zp ZP_BYTE:5 [ col2#1 ] ] - score: 1 ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label SCREEN = $400 .label col1 = 2 .label col2 = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta col1 -//SEG4 [1] (byte) col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuc1 +//SEG5 [1] (byte) col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuc1 lda #8 sta col2 -//SEG5 [2] phi from @begin to @2 [phi:@begin->@2] +//SEG6 [2] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG6 @2 +//SEG7 @2 b2: -//SEG7 [3] call main +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @2 to @end [phi:@2->@end] +//SEG9 [4] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG9 @end +//SEG10 @end bend: -//SEG10 main +//SEG11 main main: { - //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG12 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [6] return + //SEG14 [6] return rts } -//SEG14 irq +//SEG15 irq irq: { - //SEG15 entry interrupt(KERNEL_MIN) - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 + //SEG16 entry interrupt(KERNEL_MIN) + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 lda col1 sta SCREEN+$28 - //SEG17 [8] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz1 inc col1 - //SEG18 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) col2#0 -- _deref_pbuc1=vbuz1 + //SEG19 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) col2#0 -- _deref_pbuc1=vbuz1 lda col2 sta SCREEN+$29 - //SEG19 [10] (byte) col2#1 ← ++ (byte) col2#0 -- vbuz1=_inc_vbuz1 + //SEG20 [10] (byte) col2#1 ← ++ (byte) col2#0 -- vbuz1=_inc_vbuz1 inc col2 jmp breturn - //SEG20 irq::@return + //SEG21 irq::@return breturn: - //SEG21 [11] return - exit interrupt(KERNEL_MIN) + //SEG22 [11] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -358,56 +360,57 @@ zp ZP_BYTE:3 [ col2#0 col2#1 ] FINAL ASSEMBLER Score: 61 -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label SCREEN = $400 .label col1 = 2 .label col2 = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta col1 -//SEG4 [1] (byte) col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuc1 +//SEG5 [1] (byte) col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuc1 lda #8 sta col2 -//SEG5 [2] phi from @begin to @2 [phi:@begin->@2] -//SEG6 @2 -//SEG7 [3] call main +//SEG6 [2] phi from @begin to @2 [phi:@begin->@2] +//SEG7 @2 +//SEG8 [3] call main jsr main -//SEG8 [4] phi from @2 to @end [phi:@2->@end] -//SEG9 @end -//SEG10 main +//SEG9 [4] phi from @2 to @end [phi:@2->@end] +//SEG10 @end +//SEG11 main main: { - //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG12 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG12 main::@return - //SEG13 [6] return + //SEG13 main::@return + //SEG14 [6] return rts } -//SEG14 irq +//SEG15 irq irq: { - //SEG15 entry interrupt(KERNEL_MIN) - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 + //SEG16 entry interrupt(KERNEL_MIN) + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 lda col1 sta SCREEN+$28 - //SEG17 [8] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz1 inc col1 - //SEG18 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) col2#0 -- _deref_pbuc1=vbuz1 + //SEG19 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 41) ← (byte) col2#0 -- _deref_pbuc1=vbuz1 lda col2 sta SCREEN+$29 - //SEG19 [10] (byte) col2#1 ← ++ (byte) col2#0 -- vbuz1=_inc_vbuz1 + //SEG20 [10] (byte) col2#1 ← ++ (byte) col2#0 -- vbuz1=_inc_vbuz1 inc col2 - //SEG20 irq::@return - //SEG21 [11] return - exit interrupt(KERNEL_MIN) + //SEG21 irq::@return + //SEG22 [11] return - exit interrupt(KERNEL_MIN) jmp $ea81 } diff --git a/src/test/ref/interrupt-volatile-reuse-problem2.asm b/src/test/ref/interrupt-volatile-reuse-problem2.asm index d6e360b6d..d2b1ae162 100644 --- a/src/test/ref/interrupt-volatile-reuse-problem2.asm +++ b/src/test/ref/interrupt-volatile-reuse-problem2.asm @@ -1,7 +1,7 @@ +// Illustrates problem where volatiles reuse ZP addresses of other variables .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" - // Illustrates problem where volatiles reuse ZP addresses of other variables .label KERNEL_IRQ = $314 .label IRQ_STATUS = $d019 .label SCREEN = $400 diff --git a/src/test/ref/interrupt-volatile-reuse-problem2.log b/src/test/ref/interrupt-volatile-reuse-problem2.log index d9fe9dd84..9b92558a4 100644 --- a/src/test/ref/interrupt-volatile-reuse-problem2.log +++ b/src/test/ref/interrupt-volatile-reuse-problem2.log @@ -294,141 +294,142 @@ Allocated zp ZP_BYTE:6 [ main::$1 ] Allocated zp ZP_BYTE:7 [ col1#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem where volatiles reuse ZP addresses of other variables +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem where volatiles reuse ZP addresses of other variables +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label IRQ_STATUS = $d019 .label SCREEN = $400 .label col1 = 5 .label col1_1 = 7 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta col1 -//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG5 @2 +//SEG6 @2 b2: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _1 = 6 .label a = 4 .label y = 3 .label x = 2 - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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::@10 to main::@4 [phi:main/main::@10->main::@4] + //SEG12 [5] phi from main main::@10 to main::@4 [phi:main/main::@10->main::@4] b4_from_main: b4_from_b10: - //SEG12 [5] phi (byte) main::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main/main::@10->main::@4#0] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main/main::@10->main::@4#0] -- vbuz1=vbuc1 lda #0 sta x jmp b4 - //SEG13 main::@4 + //SEG14 main::@4 b4: - //SEG14 [6] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG15 [6] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: - //SEG15 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@5#0] -- vbuz1=vbuc1 + //SEG16 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG16 [6] phi from main::@9 to main::@5 [phi:main::@9->main::@5] + //SEG17 [6] phi from main::@9 to main::@5 [phi:main::@9->main::@5] b5_from_b9: - //SEG17 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@9->main::@5#0] -- register_copy + //SEG18 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@9->main::@5#0] -- register_copy jmp b5 - //SEG18 main::@5 + //SEG19 main::@5 b5: - //SEG19 [7] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG20 [7] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: - //SEG20 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#0] -- vbuz1=vbuc1 + //SEG21 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#0] -- vbuz1=vbuc1 lda #0 sta a jmp b6 - //SEG21 [7] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG22 [7] phi from main::@6 to main::@6 [phi:main::@6->main::@6] b6_from_b6: - //SEG22 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@6->main::@6#0] -- register_copy + //SEG23 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@6->main::@6#0] -- register_copy jmp b6 - //SEG23 main::@6 + //SEG24 main::@6 b6: - //SEG24 [8] (byte~) main::$1 ← (byte) main::a#2 + (byte) main::y#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG25 [8] (byte~) main::$1 ← (byte) main::a#2 + (byte) main::y#4 -- vbuz1=vbuz2_plus_vbuz3 lda a clc adc y sta _1 - //SEG25 [9] *((const byte*) SCREEN#0 + (byte) main::x#6) ← (byte~) main::$1 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG26 [9] *((const byte*) SCREEN#0 + (byte) main::x#6) ← (byte~) main::$1 -- pbuc1_derefidx_vbuz1=vbuz2 lda _1 ldy x sta SCREEN,y - //SEG26 [10] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuz1=_inc_vbuz1 + //SEG27 [10] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuz1=_inc_vbuz1 inc a - //SEG27 [11] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG28 [11] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda a cmp #$b bne b6_from_b6 jmp b9 - //SEG28 main::@9 + //SEG29 main::@9 b9: - //SEG29 [12] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuz1=_inc_vbuz1 + //SEG30 [12] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG30 [13] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG31 [13] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$b bne b5_from_b9 jmp b10 - //SEG31 main::@10 + //SEG32 main::@10 b10: - //SEG32 [14] (byte) main::x#1 ← ++ (byte) main::x#6 -- vbuz1=_inc_vbuz1 + //SEG33 [14] (byte) main::x#1 ← ++ (byte) main::x#6 -- vbuz1=_inc_vbuz1 inc x - //SEG33 [15] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@13 -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@13 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$b bne b13_from_b10 jmp b4_from_b10 - //SEG34 [16] phi from main::@10 to main::@13 [phi:main::@10->main::@13] + //SEG35 [16] phi from main::@10 to main::@13 [phi:main::@10->main::@13] b13_from_b10: jmp b13 - //SEG35 main::@13 + //SEG36 main::@13 b13: - //SEG36 [5] phi from main::@13 to main::@4 [phi:main::@13->main::@4] + //SEG37 [5] phi from main::@13 to main::@4 [phi:main::@13->main::@4] b4_from_b13: - //SEG37 [5] phi (byte) main::x#6 = (byte) main::x#1 [phi:main::@13->main::@4#0] -- register_copy + //SEG38 [5] phi (byte) main::x#6 = (byte) main::x#1 [phi:main::@13->main::@4#0] -- register_copy jmp b4 } -//SEG38 irq +//SEG39 irq irq: { - //SEG39 entry interrupt(KERNEL_MIN) - //SEG40 [17] *((const byte*) IRQ_STATUS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG40 entry interrupt(KERNEL_MIN) + //SEG41 [17] *((const byte*) IRQ_STATUS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta IRQ_STATUS - //SEG41 asm { lda$dc0d } + //SEG42 asm { lda$dc0d } lda $dc0d - //SEG42 [19] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 + //SEG43 [19] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 lda col1 sta SCREEN+$28 - //SEG43 [20] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz2 + //SEG44 [20] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz2 ldy col1 iny sty col1_1 jmp breturn - //SEG44 irq::@return + //SEG45 irq::@return breturn: - //SEG45 [21] return - exit interrupt(KERNEL_MIN) + //SEG46 [21] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -477,128 +478,129 @@ Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::y#4 main::y#1 ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ col1#0 col1#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem where volatiles reuse ZP addresses of other variables +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem where volatiles reuse ZP addresses of other variables +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label IRQ_STATUS = $d019 .label SCREEN = $400 .label col1 = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta col1 -//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG5 @2 +//SEG6 @2 b2: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label y = 2 - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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::@10 to main::@4 [phi:main/main::@10->main::@4] + //SEG12 [5] phi from main main::@10 to main::@4 [phi:main/main::@10->main::@4] b4_from_main: b4_from_b10: - //SEG12 [5] phi (byte) main::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main/main::@10->main::@4#0] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main/main::@10->main::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG13 main::@4 + //SEG14 main::@4 b4: - //SEG14 [6] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG15 [6] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: - //SEG15 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@5#0] -- vbuz1=vbuc1 + //SEG16 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@5#0] -- vbuz1=vbuc1 lda #0 sta y jmp b5 - //SEG16 [6] phi from main::@9 to main::@5 [phi:main::@9->main::@5] + //SEG17 [6] phi from main::@9 to main::@5 [phi:main::@9->main::@5] b5_from_b9: - //SEG17 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@9->main::@5#0] -- register_copy + //SEG18 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@9->main::@5#0] -- register_copy jmp b5 - //SEG18 main::@5 + //SEG19 main::@5 b5: - //SEG19 [7] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG20 [7] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: - //SEG20 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#0] -- vbuyy=vbuc1 + //SEG21 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#0] -- vbuyy=vbuc1 ldy #0 jmp b6 - //SEG21 [7] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG22 [7] phi from main::@6 to main::@6 [phi:main::@6->main::@6] b6_from_b6: - //SEG22 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@6->main::@6#0] -- register_copy + //SEG23 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@6->main::@6#0] -- register_copy jmp b6 - //SEG23 main::@6 + //SEG24 main::@6 b6: - //SEG24 [8] (byte~) main::$1 ← (byte) main::a#2 + (byte) main::y#4 -- vbuaa=vbuyy_plus_vbuz1 + //SEG25 [8] (byte~) main::$1 ← (byte) main::a#2 + (byte) main::y#4 -- vbuaa=vbuyy_plus_vbuz1 tya clc adc y - //SEG25 [9] *((const byte*) SCREEN#0 + (byte) main::x#6) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG26 [9] *((const byte*) SCREEN#0 + (byte) main::x#6) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG26 [10] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuyy=_inc_vbuyy + //SEG27 [10] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuyy=_inc_vbuyy iny - //SEG27 [11] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 + //SEG28 [11] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 cpy #$b bne b6_from_b6 jmp b9 - //SEG28 main::@9 + //SEG29 main::@9 b9: - //SEG29 [12] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuz1=_inc_vbuz1 + //SEG30 [12] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG30 [13] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG31 [13] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$b bne b5_from_b9 jmp b10 - //SEG31 main::@10 + //SEG32 main::@10 b10: - //SEG32 [14] (byte) main::x#1 ← ++ (byte) main::x#6 -- vbuxx=_inc_vbuxx + //SEG33 [14] (byte) main::x#1 ← ++ (byte) main::x#6 -- vbuxx=_inc_vbuxx inx - //SEG33 [15] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@13 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@13 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b13_from_b10 jmp b4_from_b10 - //SEG34 [16] phi from main::@10 to main::@13 [phi:main::@10->main::@13] + //SEG35 [16] phi from main::@10 to main::@13 [phi:main::@10->main::@13] b13_from_b10: jmp b13 - //SEG35 main::@13 + //SEG36 main::@13 b13: - //SEG36 [5] phi from main::@13 to main::@4 [phi:main::@13->main::@4] + //SEG37 [5] phi from main::@13 to main::@4 [phi:main::@13->main::@4] b4_from_b13: - //SEG37 [5] phi (byte) main::x#6 = (byte) main::x#1 [phi:main::@13->main::@4#0] -- register_copy + //SEG38 [5] phi (byte) main::x#6 = (byte) main::x#1 [phi:main::@13->main::@4#0] -- register_copy jmp b4 } -//SEG38 irq +//SEG39 irq irq: { - //SEG39 entry interrupt(KERNEL_MIN) - //SEG40 [17] *((const byte*) IRQ_STATUS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG40 entry interrupt(KERNEL_MIN) + //SEG41 [17] *((const byte*) IRQ_STATUS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta IRQ_STATUS - //SEG41 asm { lda$dc0d } + //SEG42 asm { lda$dc0d } lda $dc0d - //SEG42 [19] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 + //SEG43 [19] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 lda col1 sta SCREEN+$28 - //SEG43 [20] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz1 + //SEG44 [20] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz1 inc col1 jmp breturn - //SEG44 irq::@return + //SEG45 irq::@return breturn: - //SEG45 [21] return - exit interrupt(KERNEL_MIN) + //SEG46 [21] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -688,101 +690,102 @@ reg byte a [ main::$1 ] FINAL ASSEMBLER Score: 223698 -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem where volatiles reuse ZP addresses of other variables +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem where volatiles reuse ZP addresses of other variables +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label IRQ_STATUS = $d019 .label SCREEN = $400 .label col1 = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [0] (byte) col1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta col1 -//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG5 @2 -//SEG6 [2] call main +//SEG5 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG6 @2 +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label y = 2 - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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::@10 to main::@4 [phi:main/main::@10->main::@4] + //SEG12 [5] phi from main main::@10 to main::@4 [phi:main/main::@10->main::@4] b1: - //SEG12 [5] phi (byte) main::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main/main::@10->main::@4#0] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::x#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main/main::@10->main::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG13 main::@4 + //SEG14 main::@4 b4: - //SEG14 [6] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - //SEG15 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@5#0] -- vbuz1=vbuc1 + //SEG15 [6] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG16 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@5#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG16 [6] phi from main::@9 to main::@5 [phi:main::@9->main::@5] - //SEG17 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@9->main::@5#0] -- register_copy - //SEG18 main::@5 + //SEG17 [6] phi from main::@9 to main::@5 [phi:main::@9->main::@5] + //SEG18 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@9->main::@5#0] -- register_copy + //SEG19 main::@5 b5: - //SEG19 [7] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG20 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#0] -- vbuyy=vbuc1 + //SEG20 [7] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG21 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#0] -- vbuyy=vbuc1 ldy #0 - //SEG21 [7] phi from main::@6 to main::@6 [phi:main::@6->main::@6] - //SEG22 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@6->main::@6#0] -- register_copy - //SEG23 main::@6 + //SEG22 [7] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG23 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@6->main::@6#0] -- register_copy + //SEG24 main::@6 b6: - //SEG24 [8] (byte~) main::$1 ← (byte) main::a#2 + (byte) main::y#4 -- vbuaa=vbuyy_plus_vbuz1 + //SEG25 [8] (byte~) main::$1 ← (byte) main::a#2 + (byte) main::y#4 -- vbuaa=vbuyy_plus_vbuz1 tya clc adc y - //SEG25 [9] *((const byte*) SCREEN#0 + (byte) main::x#6) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG26 [9] *((const byte*) SCREEN#0 + (byte) main::x#6) ← (byte~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG26 [10] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuyy=_inc_vbuyy + //SEG27 [10] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuyy=_inc_vbuyy iny - //SEG27 [11] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 + //SEG28 [11] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 -- vbuyy_neq_vbuc1_then_la1 cpy #$b bne b6 - //SEG28 main::@9 - //SEG29 [12] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuz1=_inc_vbuz1 + //SEG29 main::@9 + //SEG30 [12] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG30 [13] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG31 [13] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@5 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$b bne b5 - //SEG31 main::@10 - //SEG32 [14] (byte) main::x#1 ← ++ (byte) main::x#6 -- vbuxx=_inc_vbuxx + //SEG32 main::@10 + //SEG33 [14] (byte) main::x#1 ← ++ (byte) main::x#6 -- vbuxx=_inc_vbuxx inx - //SEG33 [15] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@13 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@13 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b4 jmp b1 - //SEG34 [16] phi from main::@10 to main::@13 [phi:main::@10->main::@13] - //SEG35 main::@13 - //SEG36 [5] phi from main::@13 to main::@4 [phi:main::@13->main::@4] - //SEG37 [5] phi (byte) main::x#6 = (byte) main::x#1 [phi:main::@13->main::@4#0] -- register_copy + //SEG35 [16] phi from main::@10 to main::@13 [phi:main::@10->main::@13] + //SEG36 main::@13 + //SEG37 [5] phi from main::@13 to main::@4 [phi:main::@13->main::@4] + //SEG38 [5] phi (byte) main::x#6 = (byte) main::x#1 [phi:main::@13->main::@4#0] -- register_copy } -//SEG38 irq +//SEG39 irq irq: { - //SEG39 entry interrupt(KERNEL_MIN) - //SEG40 [17] *((const byte*) IRQ_STATUS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG40 entry interrupt(KERNEL_MIN) + //SEG41 [17] *((const byte*) IRQ_STATUS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta IRQ_STATUS - //SEG41 asm { lda$dc0d } + //SEG42 asm { lda$dc0d } lda $dc0d - //SEG42 [19] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 + //SEG43 [19] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte) col1#0 -- _deref_pbuc1=vbuz1 lda col1 sta SCREEN+$28 - //SEG43 [20] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz1 + //SEG44 [20] (byte) col1#1 ← ++ (byte) col1#0 -- vbuz1=_inc_vbuz1 inc col1 - //SEG44 irq::@return - //SEG45 [21] return - exit interrupt(KERNEL_MIN) + //SEG45 irq::@return + //SEG46 [21] return - exit interrupt(KERNEL_MIN) jmp $ea81 } diff --git a/src/test/ref/irq-hardware-clobber-jsr.asm b/src/test/ref/irq-hardware-clobber-jsr.asm index 98e2df8ab..9a301991a 100644 --- a/src/test/ref/irq-hardware-clobber-jsr.asm +++ b/src/test/ref/irq-hardware-clobber-jsr.asm @@ -1,7 +1,7 @@ +// A minimal working raster hardware IRQ with clobber-based register savings .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written diff --git a/src/test/ref/irq-hardware-clobber-jsr.log b/src/test/ref/irq-hardware-clobber-jsr.log index 16a275c11..e00669fe5 100644 --- a/src/test/ref/irq-hardware-clobber-jsr.log +++ b/src/test/ref/irq-hardware-clobber-jsr.log @@ -538,12 +538,13 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster hardware IRQ with clobber-based register savings +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -571,70 +572,70 @@ INITIAL ASM // The colors of the C64 .const BLACK = 0 .const WHITE = 1 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] b7_from_bbegin: jmp b7 -//SEG4 @7 +//SEG5 @7 b7: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] +//SEG7 [3] phi from @7 to @end [phi:@7->@end] bend_from_b7: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_CLOBBER) + //SEG22 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG22 [15] call do_irq + //SEG23 [15] call do_irq jsr do_irq jmp breturn - //SEG23 irq::@return + //SEG24 irq::@return breturn: - //SEG24 [16] return - exit interrupt(HARDWARE_CLOBBER) + //SEG25 [16] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -643,21 +644,21 @@ irq: { ldy #00 rti } -//SEG25 do_irq +//SEG26 do_irq do_irq: { - //SEG26 [17] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG27 [17] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG27 [18] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG28 [18] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG28 [19] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG29 [19] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG29 do_irq::@return + //SEG30 do_irq::@return breturn: - //SEG30 [20] return + //SEG31 [20] return rts } @@ -685,20 +686,21 @@ Uplifting [irq] best 329 combination Uplifting [do_irq] best 329 combination Uplifting [] best 329 combination Interrupt procedure irq clobbers ANZ -Removing interrupt register storage stx regx+1 in SEG21 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage sty regy+1 in SEG21 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regx: in SEG24 [16] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldx #00 in SEG24 [16] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG24 [16] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG24 [16] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage stx regx+1 in SEG22 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG22 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regx: in SEG25 [16] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldx #00 in SEG25 [16] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG25 [16] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG25 [16] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster hardware IRQ with clobber-based register savings +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -726,87 +728,87 @@ ASSEMBLER BEFORE OPTIMIZATION // The colors of the C64 .const BLACK = 0 .const WHITE = 1 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] b7_from_bbegin: jmp b7 -//SEG4 @7 +//SEG5 @7 b7: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] +//SEG7 [3] phi from @7 to @end [phi:@7->@end] bend_from_b7: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_CLOBBER) + //SEG22 entry interrupt(HARDWARE_CLOBBER) sta rega+1 - //SEG22 [15] call do_irq + //SEG23 [15] call do_irq jsr do_irq jmp breturn - //SEG23 irq::@return + //SEG24 irq::@return breturn: - //SEG24 [16] return - exit interrupt(HARDWARE_CLOBBER) + //SEG25 [16] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 rti } -//SEG25 do_irq +//SEG26 do_irq do_irq: { - //SEG26 [17] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG27 [17] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG27 [18] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG28 [18] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG28 [19] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG29 [19] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG29 do_irq::@return + //SEG30 do_irq::@return breturn: - //SEG30 [20] return + //SEG31 [20] return rts } @@ -942,12 +944,13 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() FINAL ASSEMBLER Score: 224 -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster hardware IRQ with clobber-based register savings +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -975,74 +978,74 @@ Score: 224 // The colors of the C64 .const BLACK = 0 .const WHITE = 1 -//SEG2 @begin -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -//SEG4 @7 -//SEG5 [2] call main -//SEG6 [3] phi from @7 to @end [phi:@7->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG5 @7 +//SEG6 [2] call main +//SEG7 [3] phi from @7 to @end [phi:@7->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_CLOBBER) + //SEG22 entry interrupt(HARDWARE_CLOBBER) sta rega+1 - //SEG22 [15] call do_irq + //SEG23 [15] call do_irq jsr do_irq - //SEG23 irq::@return - //SEG24 [16] return - exit interrupt(HARDWARE_CLOBBER) + //SEG24 irq::@return + //SEG25 [16] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 rti } -//SEG25 do_irq +//SEG26 do_irq do_irq: { - //SEG26 [17] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG27 [17] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG27 [18] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG28 [18] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG28 [19] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG29 [19] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG29 do_irq::@return - //SEG30 [20] return + //SEG30 do_irq::@return + //SEG31 [20] return rts } diff --git a/src/test/ref/irq-hardware-clobber.asm b/src/test/ref/irq-hardware-clobber.asm index d1ee69005..391b520f9 100644 --- a/src/test/ref/irq-hardware-clobber.asm +++ b/src/test/ref/irq-hardware-clobber.asm @@ -1,3 +1,4 @@ +// A minimal working raster hardware IRQ with clobber-based register savings .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/irq-hardware-clobber.log b/src/test/ref/irq-hardware-clobber.log index e98f855c2..a95c59c96 100644 --- a/src/test/ref/irq-hardware-clobber.log +++ b/src/test/ref/irq-hardware-clobber.log @@ -219,11 +219,13 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster hardware IRQ with clobber-based register savings +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label HARDWARE_IRQ = $fffe .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -244,78 +246,78 @@ INITIAL ASM .label PROCPORT = 1 // RAM in $A000, $E000 I/O in $D000 .const PROCPORT_RAM_IO = $35 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main // RAM in $A000, $E000 CHAR ROM in $D000 main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_CLOBBER) + //SEG22 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG22 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG23 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG24 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG25 irq::@return + //SEG26 irq::@return breturn: - //SEG26 [17] return - exit interrupt(HARDWARE_CLOBBER) + //SEG27 [17] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -347,19 +349,21 @@ Uplifting [main] best 314 combination Uplifting [irq] best 314 combination Uplifting [] best 314 combination Interrupt procedure irq clobbers ANZ -Removing interrupt register storage stx regx+1 in SEG21 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage sty regy+1 in SEG21 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regx: in SEG26 [17] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldx #00 in SEG26 [17] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG26 [17] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG26 [17] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage stx regx+1 in SEG22 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG22 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regx: in SEG27 [17] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldx #00 in SEG27 [17] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG27 [17] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG27 [17] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster hardware IRQ with clobber-based register savings +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label HARDWARE_IRQ = $fffe .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -380,76 +384,76 @@ ASSEMBLER BEFORE OPTIMIZATION .label PROCPORT = 1 // RAM in $A000, $E000 I/O in $D000 .const PROCPORT_RAM_IO = $35 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main // RAM in $A000, $E000 CHAR ROM in $D000 main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_CLOBBER) + //SEG22 entry interrupt(HARDWARE_CLOBBER) sta rega+1 - //SEG22 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG23 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG24 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG25 irq::@return + //SEG26 irq::@return breturn: - //SEG26 [17] return - exit interrupt(HARDWARE_CLOBBER) + //SEG27 [17] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 rti @@ -524,11 +528,13 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() FINAL ASSEMBLER Score: 212 -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster hardware IRQ with clobber-based register savings +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label HARDWARE_IRQ = $fffe .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -549,65 +555,65 @@ Score: 212 .label PROCPORT = 1 // RAM in $A000, $E000 I/O in $D000 .const PROCPORT_RAM_IO = $35 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main // RAM in $A000, $E000 CHAR ROM in $D000 main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_CLOBBER) + //SEG22 entry interrupt(HARDWARE_CLOBBER) sta rega+1 - //SEG22 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG23 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG24 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG25 irq::@return - //SEG26 [17] return - exit interrupt(HARDWARE_CLOBBER) + //SEG26 irq::@return + //SEG27 [17] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 rti diff --git a/src/test/ref/irq-hardware.asm b/src/test/ref/irq-hardware.asm index 0506f1a6a..8ddfde4b5 100644 --- a/src/test/ref/irq-hardware.asm +++ b/src/test/ref/irq-hardware.asm @@ -1,3 +1,4 @@ +// A minimal working raster IRQ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/irq-hardware.log b/src/test/ref/irq-hardware.log index 8493a96cf..53e396596 100644 --- a/src/test/ref/irq-hardware.log +++ b/src/test/ref/irq-hardware.log @@ -219,11 +219,13 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label HARDWARE_IRQ = $fffe .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -244,78 +246,78 @@ INITIAL ASM .label PROCPORT = 1 // RAM in $A000, $E000 I/O in $D000 .const PROCPORT_RAM_IO = $35 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main // RAM in $A000, $E000 CHAR ROM in $D000 main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_ALL) + //SEG22 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG22 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG23 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG24 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG25 irq::@return + //SEG26 irq::@return breturn: - //SEG26 [17] return - exit interrupt(HARDWARE_ALL) + //SEG27 [17] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -348,11 +350,13 @@ Uplifting [irq] best 314 combination Uplifting [] best 314 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label HARDWARE_IRQ = $fffe .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -373,78 +377,78 @@ ASSEMBLER BEFORE OPTIMIZATION .label PROCPORT = 1 // RAM in $A000, $E000 I/O in $D000 .const PROCPORT_RAM_IO = $35 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main // RAM in $A000, $E000 CHAR ROM in $D000 main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_ALL) + //SEG22 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG22 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG23 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG24 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG25 irq::@return + //SEG26 irq::@return breturn: - //SEG26 [17] return - exit interrupt(HARDWARE_ALL) + //SEG27 [17] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: @@ -523,11 +527,13 @@ interrupt(HARDWARE_ALL)(void()) irq() FINAL ASSEMBLER Score: 296 -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label HARDWARE_IRQ = $fffe .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -548,67 +554,67 @@ Score: 296 .label PROCPORT = 1 // RAM in $A000, $E000 I/O in $D000 .const PROCPORT_RAM_IO = $35 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main // RAM in $A000, $E000 CHAR ROM in $D000 main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG13 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG14 [8] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG14 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 [9] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG15 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG16 [10] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG16 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irq() -- _deref_pptc1=pprc2 + //SEG17 [11] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta HARDWARE_IRQ+1 - //SEG17 asm { cli } + //SEG18 asm { cli } cli - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 [13] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG20 irq +//SEG21 irq // Interrupt Routine irq: { - //SEG21 entry interrupt(HARDWARE_ALL) + //SEG22 entry interrupt(HARDWARE_ALL) sta rega+1 stx regx+1 sty regy+1 - //SEG22 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG23 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG24 [15] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG24 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG25 [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG25 irq::@return - //SEG26 [17] return - exit interrupt(HARDWARE_ALL) + //SEG26 irq::@return + //SEG27 [17] return - exit interrupt(HARDWARE_ALL) rega: lda #00 regx: diff --git a/src/test/ref/irq-kernel-minimal.asm b/src/test/ref/irq-kernel-minimal.asm index 26c8dc135..c786110bc 100644 --- a/src/test/ref/irq-kernel-minimal.asm +++ b/src/test/ref/irq-kernel-minimal.asm @@ -1,3 +1,4 @@ +// A minimal working IRQ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/irq-kernel-minimal.log b/src/test/ref/irq-kernel-minimal.log index 29f23b7b4..6e5760b29 100644 --- a/src/test/ref/irq-kernel-minimal.log +++ b/src/test/ref/irq-kernel-minimal.log @@ -487,63 +487,65 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 // The vector used when the KERNAL serves IRQ interrupts .label KERNEL_IRQ = $314 // The colors of the C64 .const BLACK = 0 .const WHITE = 1 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main // Setup the IRQ routine main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG11 asm { cli } + //SEG12 asm { cli } cli jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [7] return + //SEG14 [7] return rts } -//SEG14 irq +//SEG15 irq // The Interrupt Handler irq: { - //SEG15 entry interrupt(KERNEL_KEYBOARD) - //SEG16 [8] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG16 entry interrupt(KERNEL_KEYBOARD) + //SEG17 [8] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG17 [9] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG18 [9] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL jmp breturn - //SEG18 irq::@return + //SEG19 irq::@return breturn: - //SEG19 [10] return - exit interrupt(KERNEL_KEYBOARD) + //SEG20 [10] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } @@ -562,63 +564,65 @@ Uplifting [irq] best 55 combination Uplifting [] best 55 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 // The vector used when the KERNAL serves IRQ interrupts .label KERNEL_IRQ = $314 // The colors of the C64 .const BLACK = 0 .const WHITE = 1 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main // Setup the IRQ routine main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG11 asm { cli } + //SEG12 asm { cli } cli jmp breturn - //SEG12 main::@return + //SEG13 main::@return breturn: - //SEG13 [7] return + //SEG14 [7] return rts } -//SEG14 irq +//SEG15 irq // The Interrupt Handler irq: { - //SEG15 entry interrupt(KERNEL_KEYBOARD) - //SEG16 [8] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG16 entry interrupt(KERNEL_KEYBOARD) + //SEG17 [8] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG17 [9] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG18 [9] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL jmp breturn - //SEG18 irq::@return + //SEG19 irq::@return breturn: - //SEG19 [10] return - exit interrupt(KERNEL_KEYBOARD) + //SEG20 [10] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } @@ -739,51 +743,53 @@ interrupt(KERNEL_KEYBOARD)(void()) irq() FINAL ASSEMBLER Score: 37 -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BGCOL = $d021 // The vector used when the KERNAL serves IRQ interrupts .label KERNEL_IRQ = $314 // The colors of the C64 .const BLACK = 0 .const WHITE = 1 -//SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 -//SEG5 [2] call main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG5 @6 +//SEG6 [2] call main +//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG8 @end +//SEG9 main // Setup the IRQ routine main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [5] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG11 asm { cli } + //SEG12 asm { cli } cli - //SEG12 main::@return - //SEG13 [7] return + //SEG13 main::@return + //SEG14 [7] return rts } -//SEG14 irq +//SEG15 irq // The Interrupt Handler irq: { - //SEG15 entry interrupt(KERNEL_KEYBOARD) - //SEG16 [8] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG16 entry interrupt(KERNEL_KEYBOARD) + //SEG17 [8] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG17 [9] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG18 [9] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG18 irq::@return - //SEG19 [10] return - exit interrupt(KERNEL_KEYBOARD) + //SEG19 irq::@return + //SEG20 [10] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } diff --git a/src/test/ref/irq-kernel.asm b/src/test/ref/irq-kernel.asm index dac38419b..9b41f4112 100644 --- a/src/test/ref/irq-kernel.asm +++ b/src/test/ref/irq-kernel.asm @@ -1,7 +1,7 @@ +// A minimal working raster IRQ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // A minimal working raster IRQ .label KERNEL_IRQ = $314 .label RASTER = $d012 .label VIC_CONTROL = $d011 diff --git a/src/test/ref/irq-kernel.log b/src/test/ref/irq-kernel.log index 1b39382bb..2262a4da1 100644 --- a/src/test/ref/irq-kernel.log +++ b/src/test/ref/irq-kernel.log @@ -171,12 +171,13 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A minimal working raster IRQ +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -188,67 +189,67 @@ INITIAL ASM .const BLACK = 0 .label CIA1_INTERRUPT = $dc0d .const CIA_INTERRUPT_CLEAR = $7f -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG11 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG12 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG12 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG13 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG14 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 + //SEG15 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG15 asm { cli } + //SEG16 asm { cli } cli jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [11] return + //SEG18 [11] return rts } -//SEG18 irq +//SEG19 irq // Interrupt Routine irq: { - //SEG19 entry interrupt(KERNEL_KEYBOARD) - //SEG20 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG20 entry interrupt(KERNEL_KEYBOARD) + //SEG21 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG21 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG22 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG22 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG23 irq::@return + //SEG24 irq::@return breturn: - //SEG24 [15] return - exit interrupt(KERNEL_KEYBOARD) + //SEG25 [15] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } @@ -272,12 +273,13 @@ Uplifting [irq] best 89 combination Uplifting [] best 89 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A minimal working raster IRQ +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -289,67 +291,67 @@ ASSEMBLER BEFORE OPTIMIZATION .const BLACK = 0 .label CIA1_INTERRUPT = $dc0d .const CIA_INTERRUPT_CLEAR = $7f -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG11 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG12 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG12 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG13 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG14 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 + //SEG15 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG15 asm { cli } + //SEG16 asm { cli } cli jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [11] return + //SEG18 [11] return rts } -//SEG18 irq +//SEG19 irq // Interrupt Routine irq: { - //SEG19 entry interrupt(KERNEL_KEYBOARD) - //SEG20 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG20 entry interrupt(KERNEL_KEYBOARD) + //SEG21 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG21 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG22 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG22 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG23 irq::@return + //SEG24 irq::@return breturn: - //SEG24 [15] return - exit interrupt(KERNEL_KEYBOARD) + //SEG25 [15] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } @@ -412,12 +414,13 @@ interrupt(KERNEL_KEYBOARD)(void()) irq() FINAL ASSEMBLER Score: 71 -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A minimal working raster IRQ +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -429,55 +432,55 @@ Score: 71 .const BLACK = 0 .label CIA1_INTERRUPT = $dc0d .const CIA_INTERRUPT_CLEAR = $7f -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG11 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG12 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG12 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG13 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG14 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 + //SEG15 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_KEYBOARD)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG15 asm { cli } + //SEG16 asm { cli } cli - //SEG16 main::@return - //SEG17 [11] return + //SEG17 main::@return + //SEG18 [11] return rts } -//SEG18 irq +//SEG19 irq // Interrupt Routine irq: { - //SEG19 entry interrupt(KERNEL_KEYBOARD) - //SEG20 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG20 entry interrupt(KERNEL_KEYBOARD) + //SEG21 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG21 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG22 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG22 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG23 irq::@return - //SEG24 [15] return - exit interrupt(KERNEL_KEYBOARD) + //SEG24 irq::@return + //SEG25 [15] return - exit interrupt(KERNEL_KEYBOARD) jmp $ea31 } diff --git a/src/test/ref/irq-raster.asm b/src/test/ref/irq-raster.asm index 795a2092c..cdcc5413e 100644 --- a/src/test/ref/irq-raster.asm +++ b/src/test/ref/irq-raster.asm @@ -1,7 +1,7 @@ +// A minimal working raster IRQ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // A minimal working raster IRQ .label KERNEL_IRQ = $314 .label RASTER = $d012 .label VIC_CONTROL = $d011 diff --git a/src/test/ref/irq-raster.log b/src/test/ref/irq-raster.log index c762c2169..0c5b2134b 100644 --- a/src/test/ref/irq-raster.log +++ b/src/test/ref/irq-raster.log @@ -171,12 +171,13 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A minimal working raster IRQ +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -188,67 +189,67 @@ INITIAL ASM .const BLACK = 0 .label CIA1_INTERRUPT = $dc0d .const CIA_INTERRUPT_CLEAR = $7f -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG11 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG12 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG12 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG13 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG14 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG15 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG15 asm { cli } + //SEG16 asm { cli } cli jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [11] return + //SEG18 [11] return rts } -//SEG18 irq +//SEG19 irq // Interrupt Routine irq: { - //SEG19 entry interrupt(KERNEL_MIN) - //SEG20 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG21 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG22 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG22 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG23 irq::@return + //SEG24 irq::@return breturn: - //SEG24 [15] return - exit interrupt(KERNEL_MIN) + //SEG25 [15] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -272,12 +273,13 @@ Uplifting [irq] best 89 combination Uplifting [] best 89 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A minimal working raster IRQ +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -289,67 +291,67 @@ ASSEMBLER BEFORE OPTIMIZATION .const BLACK = 0 .label CIA1_INTERRUPT = $dc0d .const CIA_INTERRUPT_CLEAR = $7f -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG11 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG12 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG12 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG13 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG14 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG15 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG15 asm { cli } + //SEG16 asm { cli } cli jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [11] return + //SEG18 [11] return rts } -//SEG18 irq +//SEG19 irq // Interrupt Routine irq: { - //SEG19 entry interrupt(KERNEL_MIN) - //SEG20 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG21 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG22 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG22 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG23 irq::@return + //SEG24 irq::@return breturn: - //SEG24 [15] return - exit interrupt(KERNEL_MIN) + //SEG25 [15] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -412,12 +414,13 @@ interrupt(KERNEL_MIN)(void()) irq() FINAL ASSEMBLER Score: 71 -//SEG0 Basic Upstart +//SEG0 File Comments +// A minimal working raster IRQ +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // A minimal working raster IRQ +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label RASTER = $d012 .label VIC_CONTROL = $d011 @@ -429,55 +432,55 @@ Score: 71 .const BLACK = 0 .label CIA1_INTERRUPT = $dc0d .const CIA_INTERRUPT_CLEAR = $7f -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG11 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 + //SEG12 [6] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte/word/signed word/dword/signed dword) 128 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2 lda VIC_CONTROL ora #$80 sta VIC_CONTROL - //SEG12 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) RASTER#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta RASTER - //SEG13 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG14 [8] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_ENABLE - //SEG14 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG15 [9] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG15 asm { cli } + //SEG16 asm { cli } cli - //SEG16 main::@return - //SEG17 [11] return + //SEG17 main::@return + //SEG18 [11] return rts } -//SEG18 irq +//SEG19 irq // Interrupt Routine irq: { - //SEG19 entry interrupt(KERNEL_MIN) - //SEG20 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 [12] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta BGCOL - //SEG21 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG22 [13] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG22 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG23 [14] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER sta IRQ_STATUS - //SEG23 irq::@return - //SEG24 [15] return - exit interrupt(KERNEL_MIN) + //SEG24 irq::@return + //SEG25 [15] return - exit interrupt(KERNEL_MIN) jmp $ea81 } diff --git a/src/test/ref/iterarray.log b/src/test/ref/iterarray.log index b280e4b02..2c6a8f31a 100644 --- a/src/test/ref/iterarray.log +++ b/src/test/ref/iterarray.log @@ -122,63 +122,64 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::$1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label buf = $1100 .label _1 = 3 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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) 5 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #5 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 + //SEG16 [6] (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 lda #2+2 clc adc i sta _1 - //SEG16 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG17 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 -- pbuc1_derefidx_vbuz1=vbuz2 lda _1 ldy i sta buf,y - //SEG17 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 + //SEG18 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_plus_1 inc i - //SEG18 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -197,56 +198,57 @@ Uplifting [main] best 303 combination reg byte x [ main::i#2 main::i#1 ] reg byt Uplifting [] best 303 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label buf = $1100 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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) 5 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #5 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_plus_vbuc1 + //SEG16 [6] (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #2+2 - //SEG16 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa sta buf,x - //SEG17 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG18 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG18 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -296,41 +298,42 @@ reg byte a [ main::$1 ] FINAL ASSEMBLER Score: 201 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label buf = $1100 - //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) 5 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 5 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #5 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_plus_vbuc1 + //SEG16 [6] (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #2+2 - //SEG16 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 -- pbuc1_derefidx_vbuxx=vbuaa sta buf,x - //SEG17 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 + //SEG18 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 inx - //SEG18 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b1 - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts } diff --git a/src/test/ref/keyboard-glitch.asm b/src/test/ref/keyboard-glitch.asm index 7937d39b7..b19beae0b 100644 --- a/src/test/ref/keyboard-glitch.asm +++ b/src/test/ref/keyboard-glitch.asm @@ -1,3 +1,10 @@ +// Exploring keyboard glitch that finds "C" press when pressing space +// The glitch is caused by the "normal" C64 interrupt occuring just as the keyboard is read. +// Press "I" to disable interrupts (red border) +// Press "E" to enable interrupts (green border) +// Press "C" to enter pressed state (increaded bgcol) - and "SPACE" to leave presssed state again. +// Holding SPACE will sometimes trigger the pressed state when normal interrupts are enabled (green border) +// but never when they are disabled (red border) .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/keyboard-glitch.log b/src/test/ref/keyboard-glitch.log index edcea5217..3c4fecc2e 100644 --- a/src/test/ref/keyboard-glitch.log +++ b/src/test/ref/keyboard-glitch.log @@ -1332,11 +1332,19 @@ Allocated zp ZP_BYTE:16 [ keyboard_key_pressed::return#10 ] Allocated zp ZP_BYTE:17 [ pressed::$0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Exploring keyboard glitch that finds "C" press when pressing space +// The glitch is caused by the "normal" C64 interrupt occuring just as the keyboard is read. +// Press "I" to disable interrupts (red border) +// Press "E" to enable interrupts (green border) +// Press "C" to enter pressed state (increaded bgcol) - and "SPACE" to leave presssed state again. +// Holding SPACE will sometimes trigger the pressed state when normal interrupts are enabled (green border) +// but never when they are disabled (red border) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 // CIA#1 Port A: keyboard matrix columns and joystick #2 @@ -1350,155 +1358,155 @@ INITIAL ASM .const KEY_I = $21 .const KEY_SPACE = $3c .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] +//SEG4 [1] phi from @begin to @14 [phi:@begin->@14] b14_from_bbegin: jmp b14 -//SEG4 @14 +//SEG5 @14 b14: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @14 to @end [phi:@14->@end] +//SEG7 [3] phi from @14 to @end [phi:@14->@end] bend_from_b14: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BORDERCOL - //SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] + //SEG11 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] b2_from_main: b2_from_b2: jmp b2 - //SEG11 main::@2 + //SEG12 main::@2 b2: - //SEG12 [6] call menu - //SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu] + //SEG13 [6] call menu + //SEG14 [7] phi from main::@2 to menu [phi:main::@2->menu] menu_from_b2: jsr menu jmp b2_from_b2 } -//SEG14 menu +//SEG15 menu menu: { .label _0 = 4 .label _4 = 6 .label _7 = 8 - //SEG15 [8] phi from menu menu::@6 to menu::@2 [phi:menu/menu::@6->menu::@2] + //SEG16 [8] phi from menu menu::@6 to menu::@2 [phi:menu/menu::@6->menu::@2] b2_from_menu: b2_from_b6: jmp b2 - //SEG16 menu::@2 + //SEG17 menu::@2 b2: - //SEG17 [9] call keyboard_key_pressed - //SEG18 [31] phi from menu::@2 to keyboard_key_pressed [phi:menu::@2->keyboard_key_pressed] + //SEG18 [9] call keyboard_key_pressed + //SEG19 [31] phi from menu::@2 to keyboard_key_pressed [phi:menu::@2->keyboard_key_pressed] keyboard_key_pressed_from_b2: - //SEG19 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_C#0 [phi:menu::@2->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG20 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_C#0 [phi:menu::@2->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_C sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG20 [10] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG21 [10] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_2 jmp b16 - //SEG21 menu::@16 + //SEG22 menu::@16 b16: - //SEG22 [11] (byte~) menu::$0 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 + //SEG23 [11] (byte~) menu::$0 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_2 sta _0 - //SEG23 [12] if((byte~) menu::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuz1_eq_0_then_la1 + //SEG24 [12] if((byte~) menu::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuz1_eq_0_then_la1 lda _0 cmp #0 beq b4_from_b16 - //SEG24 [13] phi from menu::@16 to menu::@9 [phi:menu::@16->menu::@9] + //SEG25 [13] phi from menu::@16 to menu::@9 [phi:menu::@16->menu::@9] b9_from_b16: jmp b9 - //SEG25 menu::@9 + //SEG26 menu::@9 b9: - //SEG26 [14] call pressed + //SEG27 [14] call pressed jsr pressed jmp breturn - //SEG27 menu::@return + //SEG28 menu::@return breturn: - //SEG28 [15] return + //SEG29 [15] return rts - //SEG29 [16] phi from menu::@16 to menu::@4 [phi:menu::@16->menu::@4] + //SEG30 [16] phi from menu::@16 to menu::@4 [phi:menu::@16->menu::@4] b4_from_b16: jmp b4 - //SEG30 menu::@4 + //SEG31 menu::@4 b4: - //SEG31 [17] call keyboard_key_pressed - //SEG32 [31] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] + //SEG32 [17] call keyboard_key_pressed + //SEG33 [31] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] keyboard_key_pressed_from_b4: - //SEG33 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_I#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG34 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_I#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_I sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG34 [18] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG35 [18] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_3 jmp b17 - //SEG35 menu::@17 + //SEG36 menu::@17 b17: - //SEG36 [19] (byte~) menu::$4 ← (byte) keyboard_key_pressed::return#3 -- vbuz1=vbuz2 + //SEG37 [19] (byte~) menu::$4 ← (byte) keyboard_key_pressed::return#3 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_3 sta _4 - //SEG37 [20] if((byte~) menu::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@5 -- vbuz1_eq_0_then_la1 + //SEG38 [20] if((byte~) menu::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@5 -- vbuz1_eq_0_then_la1 lda _4 cmp #0 beq b5_from_b17 jmp b11 - //SEG38 menu::@11 + //SEG39 menu::@11 b11: - //SEG39 [21] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG40 [21] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL - //SEG40 asm { sei } + //SEG41 asm { sei } sei jmp breturn - //SEG41 [23] phi from menu::@17 to menu::@5 [phi:menu::@17->menu::@5] + //SEG42 [23] phi from menu::@17 to menu::@5 [phi:menu::@17->menu::@5] b5_from_b17: jmp b5 - //SEG42 menu::@5 + //SEG43 menu::@5 b5: - //SEG43 [24] call keyboard_key_pressed - //SEG44 [31] phi from menu::@5 to keyboard_key_pressed [phi:menu::@5->keyboard_key_pressed] + //SEG44 [24] call keyboard_key_pressed + //SEG45 [31] phi from menu::@5 to keyboard_key_pressed [phi:menu::@5->keyboard_key_pressed] keyboard_key_pressed_from_b5: - //SEG45 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_E#0 [phi:menu::@5->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG46 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_E#0 [phi:menu::@5->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_E sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG46 [25] (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG47 [25] (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_4 jmp b19 - //SEG47 menu::@19 + //SEG48 menu::@19 b19: - //SEG48 [26] (byte~) menu::$7 ← (byte) keyboard_key_pressed::return#4 -- vbuz1=vbuz2 + //SEG49 [26] (byte~) menu::$7 ← (byte) keyboard_key_pressed::return#4 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_4 sta _7 - //SEG49 [27] if((byte~) menu::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuz1_eq_0_then_la1 + //SEG50 [27] if((byte~) menu::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b6 jmp b13 - //SEG50 menu::@13 + //SEG51 menu::@13 b13: - //SEG51 [28] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG52 [28] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BORDERCOL - //SEG52 asm { cli } + //SEG53 asm { cli } cli jmp breturn - //SEG53 menu::@6 + //SEG54 menu::@6 b6: - //SEG54 [30] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG55 [30] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN jmp b2_from_b6 } -//SEG55 keyboard_key_pressed +//SEG56 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. @@ -1513,42 +1521,42 @@ keyboard_key_pressed: { .label return_4 = 7 .label key = 2 .label return_10 = $10 - //SEG56 [32] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG57 [32] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and key sta colidx - //SEG57 [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + //SEG58 [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda key lsr lsr lsr sta rowidx - //SEG58 [34] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuz1=vbuz2 + //SEG59 [34] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuz1=vbuz2 lda rowidx sta keyboard_matrix_read.rowid - //SEG59 [35] call keyboard_matrix_read + //SEG60 [35] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG60 [36] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG61 [36] (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 b2 - //SEG61 keyboard_key_pressed::@2 + //SEG62 keyboard_key_pressed::@2 b2: - //SEG62 [37] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG63 [37] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta _2 - //SEG63 [38] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG64 [38] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _2 ldy colidx and keyboard_matrix_col_bitmask,y sta return jmp breturn - //SEG64 keyboard_key_pressed::@return + //SEG65 keyboard_key_pressed::@return breturn: - //SEG65 [39] return + //SEG66 [39] return rts } -//SEG66 keyboard_matrix_read +//SEG67 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -1558,55 +1566,55 @@ keyboard_matrix_read: { .label return = $f .label rowid = $b .label return_2 = $c - //SEG67 [40] *((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 + //SEG68 [40] *((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 - //SEG68 [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG69 [41] (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 - //SEG69 keyboard_matrix_read::@return + //SEG70 keyboard_matrix_read::@return breturn: - //SEG70 [42] return + //SEG71 [42] return rts } -//SEG71 pressed +//SEG72 pressed pressed: { .label _0 = $11 - //SEG72 [43] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG73 [43] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG73 [44] phi from pressed pressed::@10 to pressed::@2 [phi:pressed/pressed::@10->pressed::@2] + //SEG74 [44] phi from pressed pressed::@10 to pressed::@2 [phi:pressed/pressed::@10->pressed::@2] b2_from_pressed: b2_from_b10: jmp b2 - //SEG74 pressed::@2 + //SEG75 pressed::@2 b2: - //SEG75 [45] call keyboard_key_pressed - //SEG76 [31] phi from pressed::@2 to keyboard_key_pressed [phi:pressed::@2->keyboard_key_pressed] + //SEG76 [45] call keyboard_key_pressed + //SEG77 [31] phi from pressed::@2 to keyboard_key_pressed [phi:pressed::@2->keyboard_key_pressed] keyboard_key_pressed_from_b2: - //SEG77 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_SPACE#0 [phi:pressed::@2->keyboard_key_pressed#0] -- vbuz1=vbuc1 + //SEG78 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_SPACE#0 [phi:pressed::@2->keyboard_key_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_key_pressed.key jsr keyboard_key_pressed - //SEG78 [46] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG79 [46] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_10 jmp b10 - //SEG79 pressed::@10 + //SEG80 pressed::@10 b10: - //SEG80 [47] (byte~) pressed::$0 ← (byte) keyboard_key_pressed::return#10 -- vbuz1=vbuz2 + //SEG81 [47] (byte~) pressed::$0 ← (byte) keyboard_key_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_10 sta _0 - //SEG81 [48] if((byte~) pressed::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto pressed::@2 -- vbuz1_eq_0_then_la1 + //SEG82 [48] if((byte~) pressed::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto pressed::@2 -- vbuz1_eq_0_then_la1 lda _0 cmp #0 beq b2_from_b10 jmp breturn - //SEG82 pressed::@return + //SEG83 pressed::@return breturn: - //SEG83 [49] return + //SEG84 [49] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) @@ -1677,11 +1685,19 @@ Attempting to uplift remaining variables inzp ZP_BYTE:9 [ keyboard_key_pressed:: Uplifting [keyboard_key_pressed] best 6202 combination reg byte y [ keyboard_key_pressed::colidx#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Exploring keyboard glitch that finds "C" press when pressing space +// The glitch is caused by the "normal" C64 interrupt occuring just as the keyboard is read. +// Press "I" to disable interrupts (red border) +// Press "E" to enable interrupts (green border) +// Press "C" to enter pressed state (increaded bgcol) - and "SPACE" to leave presssed state again. +// Holding SPACE will sometimes trigger the pressed state when normal interrupts are enabled (green border) +// but never when they are disabled (red border) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 // CIA#1 Port A: keyboard matrix columns and joystick #2 @@ -1695,212 +1711,212 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_I = $21 .const KEY_SPACE = $3c .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] +//SEG4 [1] phi from @begin to @14 [phi:@begin->@14] b14_from_bbegin: jmp b14 -//SEG4 @14 +//SEG5 @14 b14: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @14 to @end [phi:@14->@end] +//SEG7 [3] phi from @14 to @end [phi:@14->@end] bend_from_b14: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BORDERCOL - //SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] + //SEG11 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] b2_from_main: b2_from_b2: jmp b2 - //SEG11 main::@2 + //SEG12 main::@2 b2: - //SEG12 [6] call menu - //SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu] + //SEG13 [6] call menu + //SEG14 [7] phi from main::@2 to menu [phi:main::@2->menu] menu_from_b2: jsr menu jmp b2_from_b2 } -//SEG14 menu +//SEG15 menu menu: { - //SEG15 [8] phi from menu menu::@6 to menu::@2 [phi:menu/menu::@6->menu::@2] + //SEG16 [8] phi from menu menu::@6 to menu::@2 [phi:menu/menu::@6->menu::@2] b2_from_menu: b2_from_b6: jmp b2 - //SEG16 menu::@2 + //SEG17 menu::@2 b2: - //SEG17 [9] call keyboard_key_pressed - //SEG18 [31] phi from menu::@2 to keyboard_key_pressed [phi:menu::@2->keyboard_key_pressed] + //SEG18 [9] call keyboard_key_pressed + //SEG19 [31] phi from menu::@2 to keyboard_key_pressed [phi:menu::@2->keyboard_key_pressed] keyboard_key_pressed_from_b2: - //SEG19 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_C#0 [phi:menu::@2->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG20 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_C#0 [phi:menu::@2->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_C jsr keyboard_key_pressed - //SEG20 [10] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG21 [10] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 jmp b16 - //SEG21 menu::@16 + //SEG22 menu::@16 b16: - //SEG22 [11] (byte~) menu::$0 ← (byte) keyboard_key_pressed::return#2 - //SEG23 [12] if((byte~) menu::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuaa_eq_0_then_la1 + //SEG23 [11] (byte~) menu::$0 ← (byte) keyboard_key_pressed::return#2 + //SEG24 [12] if((byte~) menu::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b16 - //SEG24 [13] phi from menu::@16 to menu::@9 [phi:menu::@16->menu::@9] + //SEG25 [13] phi from menu::@16 to menu::@9 [phi:menu::@16->menu::@9] b9_from_b16: jmp b9 - //SEG25 menu::@9 + //SEG26 menu::@9 b9: - //SEG26 [14] call pressed + //SEG27 [14] call pressed jsr pressed jmp breturn - //SEG27 menu::@return + //SEG28 menu::@return breturn: - //SEG28 [15] return + //SEG29 [15] return rts - //SEG29 [16] phi from menu::@16 to menu::@4 [phi:menu::@16->menu::@4] + //SEG30 [16] phi from menu::@16 to menu::@4 [phi:menu::@16->menu::@4] b4_from_b16: jmp b4 - //SEG30 menu::@4 + //SEG31 menu::@4 b4: - //SEG31 [17] call keyboard_key_pressed - //SEG32 [31] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] + //SEG32 [17] call keyboard_key_pressed + //SEG33 [31] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] keyboard_key_pressed_from_b4: - //SEG33 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_I#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG34 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_I#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_I jsr keyboard_key_pressed - //SEG34 [18] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 + //SEG35 [18] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 jmp b17 - //SEG35 menu::@17 + //SEG36 menu::@17 b17: - //SEG36 [19] (byte~) menu::$4 ← (byte) keyboard_key_pressed::return#3 - //SEG37 [20] if((byte~) menu::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@5 -- vbuaa_eq_0_then_la1 + //SEG37 [19] (byte~) menu::$4 ← (byte) keyboard_key_pressed::return#3 + //SEG38 [20] if((byte~) menu::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5_from_b17 jmp b11 - //SEG38 menu::@11 + //SEG39 menu::@11 b11: - //SEG39 [21] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG40 [21] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL - //SEG40 asm { sei } + //SEG41 asm { sei } sei jmp breturn - //SEG41 [23] phi from menu::@17 to menu::@5 [phi:menu::@17->menu::@5] + //SEG42 [23] phi from menu::@17 to menu::@5 [phi:menu::@17->menu::@5] b5_from_b17: jmp b5 - //SEG42 menu::@5 + //SEG43 menu::@5 b5: - //SEG43 [24] call keyboard_key_pressed - //SEG44 [31] phi from menu::@5 to keyboard_key_pressed [phi:menu::@5->keyboard_key_pressed] + //SEG44 [24] call keyboard_key_pressed + //SEG45 [31] phi from menu::@5 to keyboard_key_pressed [phi:menu::@5->keyboard_key_pressed] keyboard_key_pressed_from_b5: - //SEG45 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_E#0 [phi:menu::@5->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG46 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_E#0 [phi:menu::@5->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_E jsr keyboard_key_pressed - //SEG46 [25] (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#0 + //SEG47 [25] (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#0 jmp b19 - //SEG47 menu::@19 + //SEG48 menu::@19 b19: - //SEG48 [26] (byte~) menu::$7 ← (byte) keyboard_key_pressed::return#4 - //SEG49 [27] if((byte~) menu::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuaa_eq_0_then_la1 + //SEG49 [26] (byte~) menu::$7 ← (byte) keyboard_key_pressed::return#4 + //SEG50 [27] if((byte~) menu::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuaa_eq_0_then_la1 cmp #0 beq b6 jmp b13 - //SEG50 menu::@13 + //SEG51 menu::@13 b13: - //SEG51 [28] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG52 [28] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BORDERCOL - //SEG52 asm { cli } + //SEG53 asm { cli } cli jmp breturn - //SEG53 menu::@6 + //SEG54 menu::@6 b6: - //SEG54 [30] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG55 [30] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN jmp b2_from_b6 } -//SEG55 keyboard_key_pressed +//SEG56 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed keyboard_key_pressed: { - //SEG56 [32] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuxx_band_vbuc1 + //SEG57 [32] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuxx_band_vbuc1 txa and #7 tay - //SEG57 [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_ror_3 + //SEG58 [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_ror_3 txa lsr lsr lsr - //SEG58 [34] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa + //SEG59 [34] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa tax - //SEG59 [35] call keyboard_matrix_read + //SEG60 [35] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG60 [36] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG61 [36] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b2 - //SEG61 keyboard_key_pressed::@2 + //SEG62 keyboard_key_pressed::@2 b2: - //SEG62 [37] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG63 [38] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy + //SEG63 [37] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG64 [38] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy and keyboard_matrix_col_bitmask,y jmp breturn - //SEG64 keyboard_key_pressed::@return + //SEG65 keyboard_key_pressed::@return breturn: - //SEG65 [39] return + //SEG66 [39] return rts } -//SEG66 keyboard_matrix_read +//SEG67 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG67 [40] *((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 + //SEG68 [40] *((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 - //SEG68 [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG69 [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG69 keyboard_matrix_read::@return + //SEG70 keyboard_matrix_read::@return breturn: - //SEG70 [42] return + //SEG71 [42] return rts } -//SEG71 pressed +//SEG72 pressed pressed: { - //SEG72 [43] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG73 [43] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG73 [44] phi from pressed pressed::@10 to pressed::@2 [phi:pressed/pressed::@10->pressed::@2] + //SEG74 [44] phi from pressed pressed::@10 to pressed::@2 [phi:pressed/pressed::@10->pressed::@2] b2_from_pressed: b2_from_b10: jmp b2 - //SEG74 pressed::@2 + //SEG75 pressed::@2 b2: - //SEG75 [45] call keyboard_key_pressed - //SEG76 [31] phi from pressed::@2 to keyboard_key_pressed [phi:pressed::@2->keyboard_key_pressed] + //SEG76 [45] call keyboard_key_pressed + //SEG77 [31] phi from pressed::@2 to keyboard_key_pressed [phi:pressed::@2->keyboard_key_pressed] keyboard_key_pressed_from_b2: - //SEG77 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_SPACE#0 [phi:pressed::@2->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG78 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_SPACE#0 [phi:pressed::@2->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_SPACE jsr keyboard_key_pressed - //SEG78 [46] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 + //SEG79 [46] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 jmp b10 - //SEG79 pressed::@10 + //SEG80 pressed::@10 b10: - //SEG80 [47] (byte~) pressed::$0 ← (byte) keyboard_key_pressed::return#10 - //SEG81 [48] if((byte~) pressed::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto pressed::@2 -- vbuaa_eq_0_then_la1 + //SEG81 [47] (byte~) pressed::$0 ← (byte) keyboard_key_pressed::return#10 + //SEG82 [48] if((byte~) pressed::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto pressed::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b10 jmp breturn - //SEG82 pressed::@return + //SEG83 pressed::@return breturn: - //SEG83 [49] return + //SEG84 [49] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) @@ -2212,11 +2228,19 @@ reg byte a [ pressed::$0 ] FINAL ASSEMBLER Score: 2845 -//SEG0 Basic Upstart +//SEG0 File Comments +// Exploring keyboard glitch that finds "C" press when pressing space +// The glitch is caused by the "normal" C64 interrupt occuring just as the keyboard is read. +// Press "I" to disable interrupts (red border) +// Press "E" to enable interrupts (green border) +// Press "C" to enter pressed state (increaded bgcol) - and "SPACE" to leave presssed state again. +// Holding SPACE will sometimes trigger the pressed state when normal interrupts are enabled (green border) +// but never when they are disabled (red border) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 // CIA#1 Port A: keyboard matrix columns and joystick #2 @@ -2230,162 +2254,162 @@ Score: 2845 .const KEY_I = $21 .const KEY_SPACE = $3c .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] -//SEG4 @14 -//SEG5 [2] call main -//SEG6 [3] phi from @14 to @end [phi:@14->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @14 [phi:@begin->@14] +//SEG5 @14 +//SEG6 [2] call main +//SEG7 [3] phi from @14 to @end [phi:@14->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BORDERCOL - //SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] - //SEG11 main::@2 + //SEG11 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] + //SEG12 main::@2 b2: - //SEG12 [6] call menu - //SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu] + //SEG13 [6] call menu + //SEG14 [7] phi from main::@2 to menu [phi:main::@2->menu] jsr menu jmp b2 } -//SEG14 menu +//SEG15 menu menu: { - //SEG15 [8] phi from menu menu::@6 to menu::@2 [phi:menu/menu::@6->menu::@2] - //SEG16 menu::@2 + //SEG16 [8] phi from menu menu::@6 to menu::@2 [phi:menu/menu::@6->menu::@2] + //SEG17 menu::@2 b2: - //SEG17 [9] call keyboard_key_pressed - //SEG18 [31] phi from menu::@2 to keyboard_key_pressed [phi:menu::@2->keyboard_key_pressed] - //SEG19 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_C#0 [phi:menu::@2->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG18 [9] call keyboard_key_pressed + //SEG19 [31] phi from menu::@2 to keyboard_key_pressed [phi:menu::@2->keyboard_key_pressed] + //SEG20 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_C#0 [phi:menu::@2->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_C jsr keyboard_key_pressed - //SEG20 [10] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 - //SEG21 menu::@16 - //SEG22 [11] (byte~) menu::$0 ← (byte) keyboard_key_pressed::return#2 - //SEG23 [12] if((byte~) menu::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuaa_eq_0_then_la1 + //SEG21 [10] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG22 menu::@16 + //SEG23 [11] (byte~) menu::$0 ← (byte) keyboard_key_pressed::return#2 + //SEG24 [12] if((byte~) menu::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG24 [13] phi from menu::@16 to menu::@9 [phi:menu::@16->menu::@9] - //SEG25 menu::@9 - //SEG26 [14] call pressed + //SEG25 [13] phi from menu::@16 to menu::@9 [phi:menu::@16->menu::@9] + //SEG26 menu::@9 + //SEG27 [14] call pressed jsr pressed - //SEG27 menu::@return + //SEG28 menu::@return breturn: - //SEG28 [15] return + //SEG29 [15] return rts - //SEG29 [16] phi from menu::@16 to menu::@4 [phi:menu::@16->menu::@4] - //SEG30 menu::@4 + //SEG30 [16] phi from menu::@16 to menu::@4 [phi:menu::@16->menu::@4] + //SEG31 menu::@4 b4: - //SEG31 [17] call keyboard_key_pressed - //SEG32 [31] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] - //SEG33 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_I#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG32 [17] call keyboard_key_pressed + //SEG33 [31] phi from menu::@4 to keyboard_key_pressed [phi:menu::@4->keyboard_key_pressed] + //SEG34 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_I#0 [phi:menu::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_I jsr keyboard_key_pressed - //SEG34 [18] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 - //SEG35 menu::@17 - //SEG36 [19] (byte~) menu::$4 ← (byte) keyboard_key_pressed::return#3 - //SEG37 [20] if((byte~) menu::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@5 -- vbuaa_eq_0_then_la1 + //SEG35 [18] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 + //SEG36 menu::@17 + //SEG37 [19] (byte~) menu::$4 ← (byte) keyboard_key_pressed::return#3 + //SEG38 [20] if((byte~) menu::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG38 menu::@11 - //SEG39 [21] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG39 menu::@11 + //SEG40 [21] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BORDERCOL - //SEG40 asm { sei } + //SEG41 asm { sei } sei jmp breturn - //SEG41 [23] phi from menu::@17 to menu::@5 [phi:menu::@17->menu::@5] - //SEG42 menu::@5 + //SEG42 [23] phi from menu::@17 to menu::@5 [phi:menu::@17->menu::@5] + //SEG43 menu::@5 b5: - //SEG43 [24] call keyboard_key_pressed - //SEG44 [31] phi from menu::@5 to keyboard_key_pressed [phi:menu::@5->keyboard_key_pressed] - //SEG45 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_E#0 [phi:menu::@5->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG44 [24] call keyboard_key_pressed + //SEG45 [31] phi from menu::@5 to keyboard_key_pressed [phi:menu::@5->keyboard_key_pressed] + //SEG46 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_E#0 [phi:menu::@5->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_E jsr keyboard_key_pressed - //SEG46 [25] (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#0 - //SEG47 menu::@19 - //SEG48 [26] (byte~) menu::$7 ← (byte) keyboard_key_pressed::return#4 - //SEG49 [27] if((byte~) menu::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuaa_eq_0_then_la1 + //SEG47 [25] (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#0 + //SEG48 menu::@19 + //SEG49 [26] (byte~) menu::$7 ← (byte) keyboard_key_pressed::return#4 + //SEG50 [27] if((byte~) menu::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 -- vbuaa_eq_0_then_la1 cmp #0 beq b6 - //SEG50 menu::@13 - //SEG51 [28] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG51 menu::@13 + //SEG52 [28] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BORDERCOL - //SEG52 asm { cli } + //SEG53 asm { cli } cli jmp breturn - //SEG53 menu::@6 + //SEG54 menu::@6 b6: - //SEG54 [30] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG55 [30] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN jmp b2 } -//SEG55 keyboard_key_pressed +//SEG56 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed keyboard_key_pressed: { - //SEG56 [32] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuxx_band_vbuc1 + //SEG57 [32] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuxx_band_vbuc1 txa and #7 tay - //SEG57 [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_ror_3 + //SEG58 [33] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_ror_3 txa lsr lsr lsr - //SEG58 [34] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa + //SEG59 [34] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuxx=vbuaa tax - //SEG59 [35] call keyboard_matrix_read + //SEG60 [35] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG60 [36] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG61 keyboard_key_pressed::@2 - //SEG62 [37] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG63 [38] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy + //SEG61 [36] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG62 keyboard_key_pressed::@2 + //SEG63 [37] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG64 [38] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy and keyboard_matrix_col_bitmask,y - //SEG64 keyboard_key_pressed::@return - //SEG65 [39] return + //SEG65 keyboard_key_pressed::@return + //SEG66 [39] return rts } -//SEG66 keyboard_matrix_read +//SEG67 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG67 [40] *((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 + //SEG68 [40] *((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 - //SEG68 [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG69 [41] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG69 keyboard_matrix_read::@return - //SEG70 [42] return + //SEG70 keyboard_matrix_read::@return + //SEG71 [42] return rts } -//SEG71 pressed +//SEG72 pressed pressed: { - //SEG72 [43] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG73 [43] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG73 [44] phi from pressed pressed::@10 to pressed::@2 [phi:pressed/pressed::@10->pressed::@2] - //SEG74 pressed::@2 + //SEG74 [44] phi from pressed pressed::@10 to pressed::@2 [phi:pressed/pressed::@10->pressed::@2] + //SEG75 pressed::@2 b2: - //SEG75 [45] call keyboard_key_pressed - //SEG76 [31] phi from pressed::@2 to keyboard_key_pressed [phi:pressed::@2->keyboard_key_pressed] - //SEG77 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_SPACE#0 [phi:pressed::@2->keyboard_key_pressed#0] -- vbuxx=vbuc1 + //SEG76 [45] call keyboard_key_pressed + //SEG77 [31] phi from pressed::@2 to keyboard_key_pressed [phi:pressed::@2->keyboard_key_pressed] + //SEG78 [31] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_SPACE#0 [phi:pressed::@2->keyboard_key_pressed#0] -- vbuxx=vbuc1 ldx #KEY_SPACE jsr keyboard_key_pressed - //SEG78 [46] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 - //SEG79 pressed::@10 - //SEG80 [47] (byte~) pressed::$0 ← (byte) keyboard_key_pressed::return#10 - //SEG81 [48] if((byte~) pressed::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto pressed::@2 -- vbuaa_eq_0_then_la1 + //SEG79 [46] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 + //SEG80 pressed::@10 + //SEG81 [47] (byte~) pressed::$0 ← (byte) keyboard_key_pressed::return#10 + //SEG82 [48] if((byte~) pressed::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto pressed::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG82 pressed::@return - //SEG83 [49] return + //SEG83 pressed::@return + //SEG84 [49] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) diff --git a/src/test/ref/line-anim.asm b/src/test/ref/line-anim.asm index 19ca15cbf..b25d353a2 100644 --- a/src/test/ref/line-anim.asm +++ b/src/test/ref/line-anim.asm @@ -1,7 +1,7 @@ +// Animated lines drawn on a single color bitmap .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Commodore 64 Registers and Constants // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written diff --git a/src/test/ref/line-anim.log b/src/test/ref/line-anim.log index 22b02b311..ca3e01385 100644 --- a/src/test/ref/line-anim.log +++ b/src/test/ref/line-anim.log @@ -3105,12 +3105,13 @@ Allocated zp ZP_BYTE:96 [ bitmap_init::$6 ] Allocated zp ZP_BYTE:97 [ bitmap_init::$7 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Animated lines drawn on a single color bitmap +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -3136,160 +3137,160 @@ INITIAL ASM .const DELAY = 8 .label rem16s = 3 .label rem16u = $12 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +//SEG4 [1] phi from @begin to @19 [phi:@begin->@19] b19_from_bbegin: jmp b19 -//SEG4 @19 +//SEG5 @19 b19: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @19 to @end [phi:@19->@end] +//SEG7 [3] phi from @19 to @end [phi:@19->@end] bend_from_b19: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f .label _9 = $27 .label i = 2 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [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 -- _deref_pbuc1=vbuc2 + //SEG13 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 jmp vicSelectGfxBank1 - //SEG13 main::vicSelectGfxBank1 + //SEG14 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((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 - //SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG16 main::vicSelectGfxBank1_toDd001 + //SEG17 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG17 main::vicSelectGfxBank1_@1 + //SEG18 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG20 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG20 main::toD0181 + //SEG21 main::toD0181 toD0181: jmp b16 - //SEG21 main::@16 + //SEG22 main::@16 b16: - //SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG23 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG23 [13] call bitmap_init - //SEG24 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] + //SEG24 [13] call bitmap_init + //SEG25 [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] + //SEG26 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17] b17_from_b16: jmp b17 - //SEG26 main::@17 + //SEG27 main::@17 b17: - //SEG27 [15] call bitmap_clear + //SEG28 [15] call bitmap_clear jsr bitmap_clear - //SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG29 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18] b18_from_b17: jmp b18 - //SEG29 main::@18 + //SEG30 main::@18 b18: - //SEG30 [17] call screen_fill - //SEG31 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] + //SEG31 [17] call screen_fill + //SEG32 [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] + //SEG33 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //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 + //SEG34 [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 + //SEG35 [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 + //SEG36 [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 - //SEG36 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG37 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] b1_from_b21: - //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 + //SEG38 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy + //SEG39 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy + //SEG40 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy jmp b1 - //SEG40 main::@1 + //SEG41 main::@1 b1: - //SEG41 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG42 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta point_init.point_idx - //SEG42 [20] call point_init + //SEG43 [20] call point_init jsr point_init jmp b20 - //SEG43 main::@20 + //SEG44 main::@20 b20: - //SEG44 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG45 [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 - //SEG45 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG46 [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 - //SEG46 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG47 [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 - //SEG47 [24] call bitmap_plot + //SEG48 [24] call bitmap_plot jsr bitmap_plot jmp b21 - //SEG48 main::@21 + //SEG49 main::@21 b21: - //SEG49 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG50 [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 - //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 + //SEG51 [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 - //SEG51 main::@5 + //SEG52 main::@5 b5: - //SEG52 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG53 [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 - //SEG53 main::@7 + //SEG54 main::@7 b7: - //SEG54 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG55 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 } -//SEG55 bitmap_plot +//SEG56 bitmap_plot // Plot a single dot in the bitmap bitmap_plot: { .label _1 = $2d @@ -3298,20 +3299,20 @@ bitmap_plot: { .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 + //SEG57 [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 - //SEG57 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG58 [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 - //SEG58 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 + //SEG59 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 lda _3 clc adc _1 @@ -3319,10 +3320,10 @@ bitmap_plot: { lda _3+1 adc _1+1 sta plotter+1 - //SEG59 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2 + //SEG60 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2 lda x sta _2 - //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 + //SEG61 [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 @@ -3330,12 +3331,12 @@ bitmap_plot: { ldy #0 sta (plotter),y jmp breturn - //SEG61 bitmap_plot::@return + //SEG62 bitmap_plot::@return breturn: - //SEG62 [34] return + //SEG63 [34] return rts } -//SEG63 point_init +//SEG64 point_init // Initialize the points to be animated point_init: { .label _4 = $35 @@ -3354,11 +3355,11 @@ point_init: { .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 + //SEG65 [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 - //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 + //SEG66 [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 @@ -3367,19 +3368,19 @@ point_init: { lda x_end+1,y sbc x_start+1,y sta x_diff+1 - //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 + //SEG67 [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 - //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 + //SEG68 [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 - //SEG68 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz2_minus_vwsz3 + //SEG69 [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 @@ -3388,51 +3389,51 @@ point_init: { sbc _5+1 sta y_diff+1 jmp abs16s1 - //SEG69 point_init::abs16s1 + //SEG70 point_init::abs16s1 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 + //SEG71 [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 - //SEG71 point_init::@12 + //SEG72 point_init::@12 b12: - //SEG72 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG73 [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 - //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 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: - //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 [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 - //SEG75 point_init::abs16s1_@return + //SEG76 point_init::abs16s1_@return abs16s1_breturn: jmp abs16s2 - //SEG76 point_init::abs16s2 + //SEG77 point_init::abs16s2 abs16s2: - //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 + //SEG78 [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 - //SEG78 point_init::@13 + //SEG79 point_init::@13 b13: - //SEG79 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG80 [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 - //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 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: - //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 [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 - //SEG82 point_init::abs16s2_@return + //SEG83 point_init::abs16s2_@return abs16s2_breturn: jmp b10 - //SEG83 point_init::@10 + //SEG84 point_init::@10 b10: - //SEG84 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG85 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s2_return+1 cmp abs16s1_return+1 bne !+ @@ -3441,15 +3442,15 @@ point_init: { !: bcc b1 beq 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] + //SEG86 [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 + //SEG87 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy + //SEG88 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy jmp b2 - //SEG88 point_init::@2 + //SEG89 point_init::@2 b2: - //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 + //SEG90 [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 @@ -3463,19 +3464,19 @@ point_init: { rol _16+1 asl _16 rol _16+1 - //SEG90 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG91 [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 - //SEG91 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + //SEG92 [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 - //SEG92 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_rol_4 + //SEG93 [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 @@ -3488,88 +3489,88 @@ point_init: { rol _18+1 asl _18 rol _18+1 - //SEG93 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG94 [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 - //SEG94 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG95 [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 - //SEG95 point_init::@return + //SEG96 point_init::@return breturn: - //SEG96 [54] return + //SEG97 [54] return rts - //SEG97 point_init::@1 + //SEG98 point_init::@1 b1: - //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 + //SEG99 [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 - //SEG99 point_init::@7 + //SEG100 point_init::@7 b7: - //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 + //SEG101 [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 - //SEG101 point_init::@4 + //SEG102 point_init::@4 b4: - //SEG102 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2 + //SEG103 [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 - //SEG103 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 + //SEG104 [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] + //SEG105 [59] call divr16s + //SEG106 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] divr16s_from_b4: jsr divr16s - //SEG106 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 + //SEG107 [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 - //SEG107 point_init::@11 + //SEG108 point_init::@11 b11: - //SEG108 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 + //SEG109 [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 - //SEG109 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 + //SEG110 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 lda x_stepf+1 sta _13 - //SEG110 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG111 [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 - //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 + //SEG112 [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_from_b11 - //SEG112 point_init::@3 + //SEG113 point_init::@3 b3: - //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 + //SEG114 [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 - //SEG114 point_init::abs16s2_@1 + //SEG115 point_init::abs16s2_@1 abs16s2_b1: - //SEG115 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG116 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -3579,15 +3580,15 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG116 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 -- vwuz1=vwuz2 + //SEG117 [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 - //SEG117 point_init::abs16s1_@1 + //SEG118 point_init::abs16s1_@1 abs16s1_b1: - //SEG118 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG119 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -3597,14 +3598,14 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG119 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 -- vwuz1=vwuz2 + //SEG120 [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 } -//SEG120 divr16s +//SEG121 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -3624,92 +3625,92 @@ divr16s: { .label divisoru = $d .label remu = $b jmp b16 - //SEG121 divr16s::@16 + //SEG122 divr16s::@16 b16: - //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 + //SEG123 [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 - //SEG123 divr16s::@17 + //SEG124 divr16s::@17 b17: - //SEG124 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 + //SEG125 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 lda rem sta remu lda rem+1 sta remu+1 - //SEG125 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG126 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] b2_from_b17: - //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 + //SEG127 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy + //SEG128 [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 - //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 + //SEG129 [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 - //SEG129 divr16s::@2 + //SEG130 divr16s::@2 b2: - //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 + //SEG131 [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 - //SEG131 divr16s::@18 + //SEG132 divr16s::@18 b18: - //SEG132 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 + //SEG133 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 lda divisor sta divisoru lda divisor+1 sta divisoru+1 - //SEG133 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG134 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] b4_from_b18: b4_from_b3: - //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 + //SEG135 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG136 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy jmp b4 - //SEG136 divr16s::@4 + //SEG137 divr16s::@4 b4: - //SEG137 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 + //SEG138 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 lda dividendu sta divr16u.dividend lda dividendu+1 sta divr16u.dividend+1 - //SEG138 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 + //SEG139 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 lda divisoru sta divr16u.divisor lda divisoru+1 sta divr16u.divisor+1 - //SEG139 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 + //SEG140 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 lda remu sta divr16u.rem lda remu+1 sta divr16u.rem+1 - //SEG140 [80] call divr16u - //SEG141 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG141 [80] call divr16u + //SEG142 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: jsr divr16u - //SEG142 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG143 [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 - //SEG143 divr16s::@15 + //SEG144 divr16s::@15 b15: - //SEG144 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG145 [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 - //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 + //SEG146 [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 - //SEG146 divr16s::@11 + //SEG147 divr16s::@11 b11: - //SEG147 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 + //SEG148 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 sec lda divr16u.rem eor #$ff @@ -3719,7 +3720,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG148 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 + //SEG149 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 sec lda resultu eor #$ff @@ -3729,32 +3730,32 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG149 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG150 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] breturn_from_b11: breturn_from_b19: - //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 + //SEG151 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG152 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy jmp breturn - //SEG152 divr16s::@return + //SEG153 divr16s::@return breturn: - //SEG153 [87] return + //SEG154 [87] return rts - //SEG154 divr16s::@19 + //SEG155 divr16s::@19 b19: - //SEG155 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 + //SEG156 [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 + //SEG157 [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 - //SEG157 divr16s::@3 + //SEG158 divr16s::@3 b3: - //SEG158 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 + //SEG159 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 sec lda divisor eor #$ff @@ -3764,19 +3765,19 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG159 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG160 [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 - //SEG160 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 -- vwuz1=vwuz2 + //SEG161 [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 - //SEG161 divr16s::@1 + //SEG162 divr16s::@1 b1: - //SEG162 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 + //SEG163 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 sec lda rem eor #$ff @@ -3786,25 +3787,25 @@ divr16s: { eor #$ff adc #0 sta _7+1 - //SEG163 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 -- vwuz1=vwuz2 + //SEG164 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 -- vwuz1=vwuz2 lda _7 sta remu lda _7+1 sta remu+1 - //SEG164 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG165 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //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 + //SEG166 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG167 [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 - //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 + //SEG168 [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 } -//SEG168 divr16u +//SEG169 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -3819,63 +3820,63 @@ divr16u: { .label return = $16 .label divisor = $4f .label return_2 = $51 - //SEG169 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG170 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG170 [96] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG171 [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 - //SEG171 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG172 [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 - //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 + //SEG173 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG174 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG174 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG175 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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 + //SEG176 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG177 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG178 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG179 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG179 divr16u::@1 + //SEG180 divr16u::@1 b1: - //SEG180 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG181 [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 - //SEG181 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + //SEG182 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG182 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG183 [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 - //SEG183 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG184 [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 - //SEG184 divr16u::@4 + //SEG185 divr16u::@4 b4: - //SEG185 [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG186 [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 - //SEG186 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG187 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG187 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG188 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG188 divr16u::@2 + //SEG189 divr16u::@2 b2: - //SEG189 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG190 [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 - //SEG190 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG191 [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 - //SEG191 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG192 [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 @@ -3885,14 +3886,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG192 divr16u::@5 + //SEG193 divr16u::@5 b5: - //SEG193 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG194 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG194 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG195 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -3900,171 +3901,171 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG195 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG196 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //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 + //SEG197 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG198 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG198 divr16u::@3 + //SEG199 divr16u::@3 b3: - //SEG199 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG200 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //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 + //SEG201 [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 - //SEG201 divr16u::@return + //SEG202 divr16u::@return breturn: - //SEG202 [111] return + //SEG203 [111] return rts } -//SEG203 screen_fill +//SEG204 screen_fill // Fill the screen with a specific char screen_fill: { .const ch = $10 .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] + //SEG205 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] b1_from_screen_fill: - //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 + //SEG206 [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 - //SEG206 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG207 [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 - //SEG207 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG208 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] b1_from_b3: - //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 + //SEG209 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG210 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy jmp b1 - //SEG210 screen_fill::@1 + //SEG211 screen_fill::@1 b1: - //SEG211 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG212 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] b2_from_b1: - //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 + //SEG213 [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 - //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 (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy jmp b2 - //SEG214 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG215 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] b2_from_b2: - //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 + //SEG216 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG217 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy jmp b2 - //SEG217 screen_fill::@2 + //SEG218 screen_fill::@2 b2: - //SEG218 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG219 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG219 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG220 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG220 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1 + //SEG221 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1 inc x - //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 + //SEG222 [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 - //SEG222 screen_fill::@3 + //SEG223 screen_fill::@3 b3: - //SEG223 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG224 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG225 [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 - //SEG225 screen_fill::@return + //SEG226 screen_fill::@return breturn: - //SEG226 [121] return + //SEG227 [121] return rts } -//SEG227 bitmap_clear +//SEG228 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .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 + //SEG229 [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 - //SEG229 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG230 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG230 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG231 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //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 + //SEG232 [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 - //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 (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG233 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG234 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //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 + //SEG235 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG236 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG236 bitmap_clear::@1 + //SEG237 bitmap_clear::@1 b1: - //SEG237 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG238 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //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 + //SEG239 [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 - //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 (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG240 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG241 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //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 + //SEG242 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG243 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG243 bitmap_clear::@2 + //SEG244 bitmap_clear::@2 b2: - //SEG244 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG245 [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 - //SEG245 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG246 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG246 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG247 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //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 + //SEG248 [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 - //SEG248 bitmap_clear::@3 + //SEG249 bitmap_clear::@3 b3: - //SEG249 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG250 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG251 [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 - //SEG251 bitmap_clear::@return + //SEG252 bitmap_clear::@return breturn: - //SEG252 [132] return + //SEG253 [132] return rts } -//SEG253 bitmap_init +//SEG254 bitmap_init bitmap_init: { .label _3 = $5d .label _4 = $5e @@ -4075,98 +4076,98 @@ bitmap_init: { .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] + //SEG255 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //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 + //SEG256 [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 - //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 + //SEG257 [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 - //SEG257 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG258 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //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 + //SEG259 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG260 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG260 bitmap_init::@1 + //SEG261 bitmap_init::@1 b1: - //SEG261 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG262 [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 - //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 + //SEG263 [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 - //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 + //SEG264 [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 - //SEG264 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG265 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //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 + //SEG266 [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 - //SEG266 bitmap_init::@2 + //SEG267 bitmap_init::@2 b2: - //SEG267 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG268 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //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 + //SEG269 [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 - //SEG269 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG270 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG270 [141] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG271 [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 - //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 + //SEG272 [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 - //SEG272 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG273 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //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 + //SEG274 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG275 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG275 bitmap_init::@3 + //SEG276 bitmap_init::@3 b3: - //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 + //SEG277 [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 - //SEG277 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG278 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _4 - //SEG278 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + //SEG279 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 lda _3 ora _4 sta _5 - //SEG279 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG280 [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 - //SEG280 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG281 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _6 - //SEG281 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG282 [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 - //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 + //SEG283 [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 - //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 + //SEG284 [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 - //SEG284 bitmap_init::@7 + //SEG285 bitmap_init::@7 b7: - //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 + //SEG286 [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 @@ -4174,32 +4175,32 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 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: - //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 [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 - //SEG288 bitmap_init::@4 + //SEG289 bitmap_init::@4 b4: - //SEG289 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG290 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG291 [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 - //SEG291 bitmap_init::@return + //SEG292 bitmap_init::@return breturn: - //SEG292 [154] return + //SEG293 [154] return rts - //SEG293 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG294 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG294 bitmap_init::@10 + //SEG295 bitmap_init::@10 b10: - //SEG295 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG296 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG296 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG297 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } // The coordinates of the lines to animate @@ -4527,12 +4528,13 @@ 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 +//SEG0 File Comments +// Animated lines drawn on a single color bitmap +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -4558,174 +4560,174 @@ ASSEMBLER BEFORE OPTIMIZATION .const DELAY = 8 .label rem16s = 3 .label rem16u = 9 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +//SEG4 [1] phi from @begin to @19 [phi:@begin->@19] b19_from_bbegin: jmp b19 -//SEG4 @19 +//SEG5 @19 b19: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @19 to @end [phi:@19->@end] +//SEG7 [3] phi from @19 to @end [phi:@19->@end] bend_from_b19: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f .label i = 2 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [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 -- _deref_pbuc1=vbuc2 + //SEG13 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 jmp vicSelectGfxBank1 - //SEG13 main::vicSelectGfxBank1 + //SEG14 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((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 - //SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG16 main::vicSelectGfxBank1_toDd001 + //SEG17 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG17 main::vicSelectGfxBank1_@1 + //SEG18 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG20 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG20 main::toD0181 + //SEG21 main::toD0181 toD0181: jmp b16 - //SEG21 main::@16 + //SEG22 main::@16 b16: - //SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG23 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG23 [13] call bitmap_init - //SEG24 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] + //SEG24 [13] call bitmap_init + //SEG25 [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] + //SEG26 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17] b17_from_b16: jmp b17 - //SEG26 main::@17 + //SEG27 main::@17 b17: - //SEG27 [15] call bitmap_clear + //SEG28 [15] call bitmap_clear jsr bitmap_clear - //SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG29 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18] b18_from_b17: jmp b18 - //SEG29 main::@18 + //SEG30 main::@18 b18: - //SEG30 [17] call screen_fill - //SEG31 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] + //SEG31 [17] call screen_fill + //SEG32 [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] + //SEG33 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //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 + //SEG34 [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 + //SEG35 [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 + //SEG36 [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 - //SEG36 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG37 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] b1_from_b21: - //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 + //SEG38 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy + //SEG39 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy + //SEG40 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy jmp b1 - //SEG40 main::@1 + //SEG41 main::@1 b1: - //SEG41 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 - //SEG42 [20] call point_init + //SEG42 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 + //SEG43 [20] call point_init jsr point_init jmp b20 - //SEG43 main::@20 + //SEG44 main::@20 b20: - //SEG44 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 + //SEG45 [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 - //SEG45 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG46 [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 - //SEG46 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG47 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx ldy y_start,x - //SEG47 [24] call bitmap_plot + //SEG48 [24] call bitmap_plot jsr bitmap_plot jmp b21 - //SEG48 main::@21 + //SEG49 main::@21 b21: - //SEG49 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG50 [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 - //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 + //SEG51 [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 - //SEG51 main::@5 + //SEG52 main::@5 b5: - //SEG52 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG53 [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 - //SEG53 main::@7 + //SEG54 main::@7 b7: - //SEG54 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG55 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 } -//SEG55 bitmap_plot +//SEG56 bitmap_plot // Plot a single dot in the bitmap bitmap_plot: { .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 + //SEG57 [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 - //SEG57 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG58 [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 - //SEG58 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + //SEG59 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -4733,9 +4735,9 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - //SEG59 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 + //SEG60 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 lda x - //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 + //SEG61 [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 @@ -4743,12 +4745,12 @@ bitmap_plot: { ldy #0 sta (plotter),y jmp breturn - //SEG61 bitmap_plot::@return + //SEG62 bitmap_plot::@return breturn: - //SEG62 [34] return + //SEG63 [34] return rts } -//SEG63 point_init +//SEG64 point_init // Initialize the points to be animated point_init: { .label _4 = $e @@ -4765,11 +4767,11 @@ point_init: { .label abs16s2_return = 7 .label x_stepf = 5 .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 + //SEG65 [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 - //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 + //SEG66 [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 @@ -4778,19 +4780,19 @@ point_init: { lda x_end+1,y sbc x_start+1,y sta x_diff+1 - //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 + //SEG67 [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 - //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 + //SEG68 [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 - //SEG68 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 + //SEG69 [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 @@ -4799,51 +4801,51 @@ point_init: { sbc _5+1 sta y_diff+1 jmp abs16s1 - //SEG69 point_init::abs16s1 + //SEG70 point_init::abs16s1 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 + //SEG71 [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 - //SEG71 point_init::@12 + //SEG72 point_init::@12 b12: - //SEG72 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG73 [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 - //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 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: - //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 [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 - //SEG75 point_init::abs16s1_@return + //SEG76 point_init::abs16s1_@return abs16s1_breturn: jmp abs16s2 - //SEG76 point_init::abs16s2 + //SEG77 point_init::abs16s2 abs16s2: - //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 + //SEG78 [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 - //SEG78 point_init::@13 + //SEG79 point_init::@13 b13: - //SEG79 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG80 [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 - //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 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: - //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 [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 - //SEG82 point_init::abs16s2_@return + //SEG83 point_init::abs16s2_@return abs16s2_breturn: jmp b10 - //SEG83 point_init::@10 + //SEG84 point_init::@10 b10: - //SEG84 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG85 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s2_return+1 cmp abs16s1_return+1 bne !+ @@ -4852,15 +4854,15 @@ point_init: { !: bcc b1 beq 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] + //SEG86 [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 + //SEG87 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy + //SEG88 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy jmp b2 - //SEG88 point_init::@2 + //SEG89 point_init::@2 b2: - //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 + //SEG90 [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 @@ -4874,19 +4876,19 @@ point_init: { rol _16+1 asl _16 rol _16+1 - //SEG90 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG91 [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 - //SEG91 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + //SEG92 [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 - //SEG92 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 + //SEG93 [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 @@ -4895,72 +4897,72 @@ point_init: { rol _18+1 asl _18 rol _18+1 - //SEG93 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG94 [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 - //SEG94 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG95 [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 - //SEG95 point_init::@return + //SEG96 point_init::@return breturn: - //SEG96 [54] return + //SEG97 [54] return rts - //SEG97 point_init::@1 + //SEG98 point_init::@1 b1: - //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 + //SEG99 [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 - //SEG99 point_init::@7 + //SEG100 point_init::@7 b7: - //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 + //SEG101 [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 - //SEG101 point_init::@4 + //SEG102 point_init::@4 b4: - //SEG102 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - //SEG103 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 + //SEG103 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + //SEG104 [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] + //SEG105 [59] call divr16s + //SEG106 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] divr16s_from_b4: jsr divr16s - //SEG106 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG107 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 jmp b11 - //SEG107 point_init::@11 + //SEG108 point_init::@11 b11: - //SEG108 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - //SEG109 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 + //SEG109 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + //SEG110 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 lda x_stepf+1 - //SEG110 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG111 [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 - //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 + //SEG112 [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_from_b11 - //SEG112 point_init::@3 + //SEG113 point_init::@3 b3: - //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 + //SEG114 [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 - //SEG114 point_init::abs16s2_@1 + //SEG115 point_init::abs16s2_@1 abs16s2_b1: - //SEG115 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG116 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -4970,11 +4972,11 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG116 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + //SEG117 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 jmp abs16s2_breturn_from_abs16s2_b1 - //SEG117 point_init::abs16s1_@1 + //SEG118 point_init::abs16s1_@1 abs16s1_b1: - //SEG118 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG119 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -4984,10 +4986,10 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG119 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + //SEG120 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 jmp abs16s1_breturn_from_abs16s1_b1 } -//SEG120 divr16s +//SEG121 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -5005,62 +5007,62 @@ divr16s: { .label divisoru = $b .label remu = 9 jmp b16 - //SEG121 divr16s::@16 + //SEG122 divr16s::@16 b16: - //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 + //SEG123 [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 - //SEG123 divr16s::@17 + //SEG124 divr16s::@17 b17: - //SEG124 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 - //SEG125 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG125 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + //SEG126 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] b2_from_b17: - //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 + //SEG127 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy + //SEG128 [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 - //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 + //SEG129 [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 - //SEG129 divr16s::@2 + //SEG130 divr16s::@2 b2: - //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 + //SEG131 [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 - //SEG131 divr16s::@18 + //SEG132 divr16s::@18 b18: - //SEG132 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG133 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG133 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG134 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] b4_from_b18: b4_from_b3: - //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 + //SEG135 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG136 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy jmp b4 - //SEG136 divr16s::@4 + //SEG137 divr16s::@4 b4: - //SEG137 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 - //SEG138 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - //SEG139 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - //SEG140 [80] call divr16u - //SEG141 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG138 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + //SEG139 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + //SEG140 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + //SEG141 [80] call divr16u + //SEG142 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: jsr divr16u - //SEG142 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG143 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b15 - //SEG143 divr16s::@15 + //SEG144 divr16s::@15 b15: - //SEG144 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - //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 + //SEG145 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + //SEG146 [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 - //SEG146 divr16s::@11 + //SEG147 divr16s::@11 b11: - //SEG147 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 + //SEG148 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 sec lda divr16u.rem eor #$ff @@ -5070,7 +5072,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG148 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG149 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -5080,28 +5082,28 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG149 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG150 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] breturn_from_b11: breturn_from_b19: - //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 + //SEG151 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG152 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy jmp breturn - //SEG152 divr16s::@return + //SEG153 divr16s::@return breturn: - //SEG153 [87] return + //SEG154 [87] return rts - //SEG154 divr16s::@19 + //SEG155 divr16s::@19 b19: - //SEG155 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG156 [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 -- vwsz1=vwsz2 + //SEG156 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG157 [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 - //SEG157 divr16s::@3 + //SEG158 divr16s::@3 b3: - //SEG158 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG159 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _11 eor #$ff @@ -5111,15 +5113,15 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG159 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG160 [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 - //SEG160 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 + //SEG161 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 jmp b4_from_b3 - //SEG161 divr16s::@1 + //SEG162 divr16s::@1 b1: - //SEG162 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 + //SEG163 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 sec lda _7 eor #$ff @@ -5129,20 +5131,20 @@ divr16s: { eor #$ff adc #0 sta _7+1 - //SEG163 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 - //SEG164 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG164 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 + //SEG165 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //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 + //SEG166 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG167 [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 - //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 + //SEG168 [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 } -//SEG168 divr16u +//SEG169 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5153,58 +5155,58 @@ divr16u: { .label quotient = 5 .label return = 5 .label divisor = $b - //SEG169 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG170 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG170 [96] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG171 [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 - //SEG171 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG172 [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 - //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 + //SEG173 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG174 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG174 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG175 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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 + //SEG176 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG177 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG178 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG179 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG179 divr16u::@1 + //SEG180 divr16u::@1 b1: - //SEG180 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG181 [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 - //SEG181 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG182 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG182 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG183 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG183 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG184 [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 - //SEG184 divr16u::@4 + //SEG185 divr16u::@4 b4: - //SEG185 [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG186 [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 - //SEG186 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG187 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG187 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG188 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG188 divr16u::@2 + //SEG189 divr16u::@2 b2: - //SEG189 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG190 [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 - //SEG190 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG191 [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 - //SEG191 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG192 [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 @@ -5214,14 +5216,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG192 divr16u::@5 + //SEG193 divr16u::@5 b5: - //SEG193 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG194 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG194 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG195 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -5229,237 +5231,237 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG195 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG196 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //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 + //SEG197 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG198 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG198 divr16u::@3 + //SEG199 divr16u::@3 b3: - //SEG199 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG200 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG201 [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 - //SEG201 divr16u::@return + //SEG202 divr16u::@return breturn: - //SEG202 [111] return + //SEG203 [111] return rts } -//SEG203 screen_fill +//SEG204 screen_fill // Fill the screen with a specific char screen_fill: { .const ch = $10 .label screen = 3 .label y = 2 - //SEG204 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + //SEG205 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] b1_from_screen_fill: - //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 + //SEG206 [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 - //SEG206 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG207 [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 - //SEG207 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG208 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] b1_from_b3: - //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 + //SEG209 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG210 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy jmp b1 - //SEG210 screen_fill::@1 + //SEG211 screen_fill::@1 b1: - //SEG211 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG212 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] b2_from_b1: - //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 + //SEG213 [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 - //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 (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy jmp b2 - //SEG214 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG215 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] b2_from_b2: - //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 + //SEG216 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG217 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy jmp b2 - //SEG217 screen_fill::@2 + //SEG218 screen_fill::@2 b2: - //SEG218 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG219 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG219 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG220 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG220 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx + //SEG221 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG222 [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 - //SEG222 screen_fill::@3 + //SEG223 screen_fill::@3 b3: - //SEG223 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG224 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG225 [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 - //SEG225 screen_fill::@return + //SEG226 screen_fill::@return breturn: - //SEG226 [121] return + //SEG227 [121] return rts } -//SEG227 bitmap_clear +//SEG228 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //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 + //SEG229 [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 - //SEG229 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG230 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG230 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG231 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //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 + //SEG232 [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 - //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 (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG233 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG234 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //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 + //SEG235 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG236 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG236 bitmap_clear::@1 + //SEG237 bitmap_clear::@1 b1: - //SEG237 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG238 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //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 + //SEG239 [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 - //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 (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG240 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG241 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //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 + //SEG242 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG243 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG243 bitmap_clear::@2 + //SEG244 bitmap_clear::@2 b2: - //SEG244 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG245 [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 - //SEG245 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG246 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG246 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG247 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG248 [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 - //SEG248 bitmap_clear::@3 + //SEG249 bitmap_clear::@3 b3: - //SEG249 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG250 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG251 [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 - //SEG251 bitmap_clear::@return + //SEG252 bitmap_clear::@return breturn: - //SEG252 [132] return + //SEG253 [132] return rts } -//SEG253 bitmap_init +//SEG254 bitmap_init bitmap_init: { .label _3 = 2 .label yoffs = 3 - //SEG254 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG255 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //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 + //SEG256 [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 - //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 + //SEG257 [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 - //SEG257 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG258 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //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 + //SEG259 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG260 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG260 bitmap_init::@1 + //SEG261 bitmap_init::@1 b1: - //SEG261 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG262 [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 - //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 + //SEG263 [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 - //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 + //SEG264 [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 - //SEG264 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG265 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //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 + //SEG266 [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 - //SEG266 bitmap_init::@2 + //SEG267 bitmap_init::@2 b2: - //SEG267 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG268 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG269 [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 - //SEG269 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG270 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG270 [141] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG271 [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 - //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 + //SEG272 [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 - //SEG272 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG273 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //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 + //SEG274 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG275 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG275 bitmap_init::@3 + //SEG276 bitmap_init::@3 b3: - //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 + //SEG277 [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 - //SEG277 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG278 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG278 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG279 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG279 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG280 [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 - //SEG280 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG281 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG281 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG282 [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 - //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 + //SEG283 [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 - //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 + //SEG284 [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 - //SEG284 bitmap_init::@7 + //SEG285 bitmap_init::@7 b7: - //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 + //SEG286 [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 @@ -5467,31 +5469,31 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 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: - //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 [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 - //SEG288 bitmap_init::@4 + //SEG289 bitmap_init::@4 b4: - //SEG289 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG290 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG291 [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 - //SEG291 bitmap_init::@return + //SEG292 bitmap_init::@return breturn: - //SEG292 [154] return + //SEG293 [154] return rts - //SEG293 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG294 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG294 bitmap_init::@10 + //SEG295 bitmap_init::@10 b10: - //SEG295 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG296 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG296 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG297 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } // The coordinates of the lines to animate @@ -6119,12 +6121,13 @@ reg byte a [ bitmap_init::$7 ] FINAL ASSEMBLER Score: 21634 -//SEG0 Basic Upstart +//SEG0 File Comments +// Animated lines drawn on a single color bitmap +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Commodore 64 Registers and Constants +//SEG2 Global Constants & labels // Processor port data direction register .label PROCPORT_DDR = 0 // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written @@ -6150,130 +6153,130 @@ Score: 21634 .const DELAY = 8 .label rem16s = 3 .label rem16u = 9 -//SEG2 @begin -//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] -//SEG4 @19 -//SEG5 [2] call main -//SEG6 [3] phi from @19 to @end [phi:@19->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @19 [phi:@begin->@19] +//SEG5 @19 +//SEG6 [2] call main +//SEG7 [3] phi from @19 to @end [phi:@19->@end] +//SEG8 @end +//SEG9 main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f .label i = 2 - //SEG9 asm { sei } + //SEG10 asm { sei } sei - //SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG12 [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 -- _deref_pbuc1=vbuc2 + //SEG13 [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 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG13 main::vicSelectGfxBank1 - //SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG14 main::vicSelectGfxBank1 + //SEG15 [8] *((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 - //SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] - //SEG16 main::vicSelectGfxBank1_toDd001 - //SEG17 main::vicSelectGfxBank1_@1 - //SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG17 main::vicSelectGfxBank1_toDd001 + //SEG18 main::vicSelectGfxBank1_@1 + //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] - //SEG20 main::toD0181 - //SEG21 main::@16 - //SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG20 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG21 main::toD0181 + //SEG22 main::@16 + //SEG23 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG23 [13] call bitmap_init - //SEG24 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] + //SEG24 [13] call bitmap_init + //SEG25 [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 - //SEG27 [15] call bitmap_clear + //SEG26 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17] + //SEG27 main::@17 + //SEG28 [15] call bitmap_clear jsr bitmap_clear - //SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18] - //SEG29 main::@18 - //SEG30 [17] call screen_fill - //SEG31 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] + //SEG29 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG30 main::@18 + //SEG31 [17] call screen_fill + //SEG32 [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 (signed word) rem16s#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vwsz1=vbuc1 + //SEG33 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG34 [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 + //SEG35 [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 + //SEG36 [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 - //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 + //SEG37 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG38 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy + //SEG39 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy + //SEG40 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy + //SEG41 main::@1 b1: - //SEG41 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 - //SEG42 [20] call point_init + //SEG42 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 + //SEG43 [20] call point_init jsr point_init - //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 + //SEG44 main::@20 + //SEG45 [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 - //SEG45 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG46 [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 - //SEG46 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG47 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx ldy y_start,x - //SEG47 [24] call bitmap_plot + //SEG48 [24] call bitmap_plot jsr bitmap_plot - //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 + //SEG49 main::@21 + //SEG50 [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 - //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 + //SEG51 [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 - //SEG51 main::@5 + //SEG52 main::@5 b5: - //SEG52 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG53 [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 - //SEG53 main::@7 - //SEG54 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG54 main::@7 + //SEG55 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 } -//SEG55 bitmap_plot +//SEG56 bitmap_plot // Plot a single dot in the bitmap bitmap_plot: { .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 + //SEG57 [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 - //SEG57 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG58 [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 - //SEG58 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + //SEG59 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -6281,19 +6284,19 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - //SEG59 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 + //SEG60 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 lda x - //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 + //SEG61 [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 - //SEG61 bitmap_plot::@return - //SEG62 [34] return + //SEG62 bitmap_plot::@return + //SEG63 [34] return rts } -//SEG63 point_init +//SEG64 point_init // Initialize the points to be animated point_init: { .label _4 = $e @@ -6310,11 +6313,11 @@ point_init: { .label abs16s2_return = 7 .label x_stepf = 5 .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 + //SEG65 [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 - //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 + //SEG66 [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 @@ -6323,18 +6326,18 @@ point_init: { lda x_end+1,y sbc x_start+1,y sta x_diff+1 - //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 + //SEG67 [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 - //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 + //SEG68 [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 - //SEG68 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 + //SEG69 [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 @@ -6342,40 +6345,40 @@ point_init: { lda y_diff+1 sbc _5+1 sta y_diff+1 - //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 + //SEG70 point_init::abs16s1 + //SEG71 [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: - //SEG71 point_init::@12 - //SEG72 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG72 point_init::@12 + //SEG73 [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 - //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 + //SEG74 [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] + //SEG75 [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 + //SEG76 point_init::abs16s1_@return + //SEG77 point_init::abs16s2 abs16s2: - //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 + //SEG78 [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: - //SEG78 point_init::@13 - //SEG79 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG79 point_init::@13 + //SEG80 [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 - //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 + //SEG81 [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] + //SEG82 [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 + //SEG83 point_init::abs16s2_@return + //SEG84 point_init::@10 b10: - //SEG84 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG85 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s2_return+1 cmp abs16s1_return+1 bne !+ @@ -6384,12 +6387,12 @@ point_init: { !: bcc b1 beq 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] - //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 + //SEG86 [47] phi from point_init::@10 point_init::@11 to point_init::@2 [phi:point_init::@10/point_init::@11->point_init::@2] + //SEG87 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy + //SEG88 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy + //SEG89 point_init::@2 b2: - //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 + //SEG90 [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 @@ -6403,18 +6406,18 @@ point_init: { rol _16+1 asl _16 rol _16+1 - //SEG90 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG91 [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 - //SEG91 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + //SEG92 [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 - //SEG92 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 + //SEG93 [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 @@ -6423,64 +6426,64 @@ point_init: { rol _18+1 asl _18 rol _18+1 - //SEG93 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG94 [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 - //SEG94 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG95 [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 - //SEG95 point_init::@return - //SEG96 [54] return + //SEG96 point_init::@return + //SEG97 [54] return rts - //SEG97 point_init::@1 + //SEG98 point_init::@1 b1: - //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 + //SEG99 [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 - //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 + //SEG100 point_init::@7 + //SEG101 [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 - //SEG101 point_init::@4 + //SEG102 point_init::@4 b4: - //SEG102 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - //SEG103 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 + //SEG103 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + //SEG104 [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] + //SEG105 [59] call divr16s + //SEG106 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] jsr divr16s - //SEG106 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 - //SEG107 point_init::@11 - //SEG108 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - //SEG109 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 + //SEG107 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG108 point_init::@11 + //SEG109 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + //SEG110 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 lda x_stepf+1 - //SEG110 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG111 [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 - //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 + //SEG112 [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 - //SEG112 point_init::@3 + //SEG113 point_init::@3 b3: - //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 + //SEG114 [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 - //SEG114 point_init::abs16s2_@1 + //SEG115 point_init::abs16s2_@1 abs16s2_b1: - //SEG115 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG116 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -6490,11 +6493,11 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG116 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + //SEG117 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 jmp b10 - //SEG117 point_init::abs16s1_@1 + //SEG118 point_init::abs16s1_@1 abs16s1_b1: - //SEG118 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG119 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -6504,10 +6507,10 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG119 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + //SEG120 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 jmp abs16s2 } -//SEG120 divr16s +//SEG121 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -6524,47 +6527,47 @@ divr16s: { .label dividendu = 3 .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 + //SEG122 divr16s::@16 + //SEG123 [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 - //SEG123 divr16s::@17 - //SEG124 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 - //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 + //SEG124 divr16s::@17 + //SEG125 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + //SEG126 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG127 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy + //SEG128 [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 - //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 + //SEG129 [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 - //SEG129 divr16s::@2 + //SEG130 divr16s::@2 b2: - //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 + //SEG131 [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 - //SEG131 divr16s::@18 - //SEG132 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //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 + //SEG132 divr16s::@18 + //SEG133 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG134 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG135 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG136 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy + //SEG137 divr16s::@4 b4: - //SEG137 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 - //SEG138 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - //SEG139 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - //SEG140 [80] call divr16u - //SEG141 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG138 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + //SEG139 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + //SEG140 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + //SEG141 [80] call divr16u + //SEG142 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] jsr divr16u - //SEG142 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG143 divr16s::@15 - //SEG144 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - //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 + //SEG143 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG144 divr16s::@15 + //SEG145 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + //SEG146 [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 - //SEG146 divr16s::@11 - //SEG147 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 + //SEG147 divr16s::@11 + //SEG148 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 sec lda divr16u.rem eor #$ff @@ -6574,7 +6577,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG148 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG149 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -6584,25 +6587,25 @@ divr16s: { eor #$ff adc #0 sta return+1 - //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 + //SEG150 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG151 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG152 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy + //SEG153 divr16s::@return breturn: - //SEG153 [87] return + //SEG154 [87] return rts - //SEG154 divr16s::@19 + //SEG155 divr16s::@19 b19: - //SEG155 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG156 [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 -- vwsz1=vwsz2 + //SEG156 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG157 [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 + //SEG158 divr16s::@3 b3: - //SEG158 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG159 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _11 eor #$ff @@ -6612,15 +6615,15 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG159 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG160 [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 - //SEG160 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 + //SEG161 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 jmp b4 - //SEG161 divr16s::@1 + //SEG162 divr16s::@1 b1: - //SEG162 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 + //SEG163 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 sec lda _7 eor #$ff @@ -6630,19 +6633,19 @@ divr16s: { eor #$ff adc #0 sta _7+1 - //SEG163 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 - //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 + //SEG164 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 + //SEG165 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG166 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG167 [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 - //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 + //SEG168 [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 } -//SEG168 divr16u +//SEG169 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6653,48 +6656,48 @@ divr16u: { .label quotient = 5 .label return = 5 .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 + //SEG170 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG171 [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 - //SEG171 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG172 [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 - //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 + //SEG173 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG174 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG175 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG176 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG177 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG178 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG179 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG180 divr16u::@1 b1: - //SEG180 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG181 [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 - //SEG181 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG182 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG182 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG183 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG183 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG184 [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 - //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 + //SEG185 divr16u::@4 + //SEG186 [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 - //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 + //SEG187 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG188 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG189 divr16u::@2 b2: - //SEG189 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG190 [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 - //SEG190 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG191 [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 - //SEG191 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG192 [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 @@ -6703,13 +6706,13 @@ divr16u: { cmp divisor bcc b3 !: - //SEG192 divr16u::@5 - //SEG193 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG193 divr16u::@5 + //SEG194 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG194 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG195 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -6717,196 +6720,196 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //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 + //SEG196 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG197 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG198 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG199 divr16u::@3 b3: - //SEG199 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG200 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG201 [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 - //SEG201 divr16u::@return - //SEG202 [111] return + //SEG202 divr16u::@return + //SEG203 [111] return rts } -//SEG203 screen_fill +//SEG204 screen_fill // Fill the screen with a specific char screen_fill: { .const ch = $10 .label screen = 3 .label y = 2 - //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 + //SEG205 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + //SEG206 [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 - //SEG206 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG207 [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 - //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 + //SEG208 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG209 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG210 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + //SEG211 screen_fill::@1 b1: - //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 + //SEG212 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG213 [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 - //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 + //SEG214 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + //SEG215 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG216 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG217 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + //SEG218 screen_fill::@2 b2: - //SEG218 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG219 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG219 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG220 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG220 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx + //SEG221 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG222 [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 - //SEG222 screen_fill::@3 - //SEG223 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG223 screen_fill::@3 + //SEG224 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG225 [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 - //SEG225 screen_fill::@return - //SEG226 [121] return + //SEG226 screen_fill::@return + //SEG227 [121] return rts } -//SEG227 bitmap_clear +//SEG228 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //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 + //SEG229 [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 - //SEG229 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //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 + //SEG230 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG231 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG232 [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 - //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 + //SEG233 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG234 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG235 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG236 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG237 bitmap_clear::@1 b1: - //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 + //SEG238 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG239 [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 - //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 + //SEG240 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG241 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG242 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG243 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG244 bitmap_clear::@2 b2: - //SEG244 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG245 [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 - //SEG245 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG246 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG246 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG247 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG248 [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 - //SEG248 bitmap_clear::@3 - //SEG249 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG249 bitmap_clear::@3 + //SEG250 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //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 + //SEG251 [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 - //SEG251 bitmap_clear::@return - //SEG252 [132] return + //SEG252 bitmap_clear::@return + //SEG253 [132] return rts } -//SEG253 bitmap_init +//SEG254 bitmap_init bitmap_init: { .label _3 = 2 .label yoffs = 3 - //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 + //SEG255 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG256 [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 - //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 + //SEG257 [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 - //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 + //SEG258 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG259 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG260 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG261 bitmap_init::@1 b1: - //SEG261 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG262 [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 - //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 + //SEG263 [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 - //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 + //SEG264 [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 - //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 + //SEG265 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG266 [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 - //SEG266 bitmap_init::@2 + //SEG267 bitmap_init::@2 b2: - //SEG267 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG268 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG269 [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 - //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 + //SEG270 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG271 [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 - //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 + //SEG272 [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 - //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 + //SEG273 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG274 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG275 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG276 bitmap_init::@3 b3: - //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 + //SEG277 [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 - //SEG277 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG278 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG278 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG279 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG279 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG280 [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 - //SEG280 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG281 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG281 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG282 [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 - //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 + //SEG283 [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 - //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 + //SEG284 [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 - //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 + //SEG285 bitmap_init::@7 + //SEG286 [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 @@ -6914,22 +6917,22 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //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 + //SEG287 [151] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG288 [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 + //SEG289 bitmap_init::@4 b4: - //SEG289 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG290 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG291 [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 - //SEG291 bitmap_init::@return - //SEG292 [154] return + //SEG292 bitmap_init::@return + //SEG293 [154] return rts - //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 + //SEG294 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG295 bitmap_init::@10 + //SEG296 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG297 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } // The coordinates of the lines to animate x_start: .word $a, $14, $1e, $1e diff --git a/src/test/ref/linegen.asm b/src/test/ref/linegen.asm index 2b576dd60..65589dd1e 100644 --- a/src/test/ref/linegen.asm +++ b/src/test/ref/linegen.asm @@ -1,3 +1,5 @@ +// Linear table generator +// Work in progress towards a sinus generator .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/linegen.log b/src/test/ref/linegen.log index 1ccee1410..d7f3789f6 100644 --- a/src/test/ref/linegen.log +++ b/src/test/ref/linegen.log @@ -1998,453 +1998,456 @@ Allocated zp ZP_BYTE:55 [ divr16u::$2 ] Allocated zp ZP_WORD:56 [ rem16u#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Linear table generator +// Work in progress towards a sinus generator +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label rem16u = $38 .label print_char_cursor = 9 .label print_line_cursor = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] +//SEG4 [1] phi from @begin to @29 [phi:@begin->@29] b29_from_bbegin: jmp b29 -//SEG4 @29 +//SEG5 @29 b29: -//SEG5 [2] call main -//SEG6 [4] phi from @29 to main [phi:@29->main] +//SEG6 [2] call main +//SEG7 [4] phi from @29 to main [phi:@29->main] main_from_b29: jsr main -//SEG7 [3] phi from @29 to @end [phi:@29->@end] +//SEG8 [3] phi from @29 to @end [phi:@29->@end] bend_from_b29: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] call lin16u_gen - //SEG11 [97] phi from main to lin16u_gen [phi:main->lin16u_gen] + //SEG11 [5] call lin16u_gen + //SEG12 [97] phi from main to lin16u_gen [phi:main->lin16u_gen] lin16u_gen_from_main: - //SEG12 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG13 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab1 sta lin16u_gen.lintab+1 - //SEG13 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 + //SEG14 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$22d sta lin16u_gen.min lda #>$22d sta lin16u_gen.min+1 - //SEG14 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG15 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$7461 sta lin16u_gen.max lda #>$7461 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG15 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG16 [6] phi from main to main::@3 [phi:main->main::@3] b3_from_main: jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [7] call lin16u_gen - //SEG18 [97] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] + //SEG18 [7] call lin16u_gen + //SEG19 [97] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] lin16u_gen_from_b3: - //SEG19 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG20 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab2 sta lin16u_gen.lintab+1 - //SEG20 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#1] -- vwuz1=vwuc1 + //SEG21 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$79cb sta lin16u_gen.min lda #>$79cb sta lin16u_gen.min+1 - //SEG21 [97] phi (word) lin16u_gen::max#3 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG22 [97] phi (word) lin16u_gen::max#3 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$f781 sta lin16u_gen.max lda #>$f781 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG22 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG23 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG23 main::@4 + //SEG24 main::@4 b4: - //SEG24 [9] call lin16u_gen - //SEG25 [97] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] + //SEG25 [9] call lin16u_gen + //SEG26 [97] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] lin16u_gen_from_b4: - //SEG26 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab3#0 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG27 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab3#0 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab3 sta lin16u_gen.lintab+1 - //SEG27 [97] phi (word) lin16u_gen::min#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->lin16u_gen#1] -- vwuz1=vbuc1 + //SEG28 [97] phi (word) lin16u_gen::min#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->lin16u_gen#1] -- vwuz1=vbuc1 lda #<0 sta lin16u_gen.min lda #>0 sta lin16u_gen.min+1 - //SEG28 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 25736 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG29 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 25736 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$6488 sta lin16u_gen.max lda #>$6488 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG29 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG30 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG30 main::@5 + //SEG31 main::@5 b5: - //SEG31 [11] call print_cls - //SEG32 [91] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG32 [11] call print_cls + //SEG33 [91] phi from main::@5 to print_cls [phi:main::@5->print_cls] print_cls_from_b5: jsr print_cls - //SEG33 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG34 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG34 main::@6 + //SEG35 main::@6 b6: - //SEG35 [13] call print_str - //SEG36 [84] phi from main::@6 to print_str [phi:main::@6->print_str] + //SEG36 [13] call print_str + //SEG37 [84] phi from main::@6 to print_str [phi:main::@6->print_str] print_str_from_b6: - //SEG37 [84] phi (byte*) print_char_cursor#86 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@6->print_str#0] -- pbuz1=pbuc1 + //SEG38 [84] phi (byte*) print_char_cursor#86 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@6->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG38 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 + //SEG39 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG39 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG40 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: jmp b7 - //SEG40 main::@7 + //SEG41 main::@7 b7: - //SEG41 [15] call print_word - //SEG42 [66] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG42 [15] call print_word + //SEG43 [66] phi from main::@7 to print_word [phi:main::@7->print_word] print_word_from_b7: - //SEG43 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 557 [phi:main::@7->print_word#0] -- vwuz1=vwuc1 + //SEG44 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 557 [phi:main::@7->print_word#0] -- vwuz1=vwuc1 lda #<$22d sta print_word.w lda #>$22d sta print_word.w+1 jsr print_word - //SEG44 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG45 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG45 main::@8 + //SEG46 main::@8 b8: - //SEG46 [17] call print_str - //SEG47 [84] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG47 [17] call print_str + //SEG48 [84] phi from main::@8 to print_str [phi:main::@8->print_str] print_str_from_b8: - //SEG48 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@8->print_str#0] -- register_copy - //SEG49 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG49 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@8->print_str#0] -- register_copy + //SEG50 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG50 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG51 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG51 main::@9 + //SEG52 main::@9 b9: - //SEG52 [19] call print_word - //SEG53 [66] phi from main::@9 to print_word [phi:main::@9->print_word] + //SEG53 [19] call print_word + //SEG54 [66] phi from main::@9 to print_word [phi:main::@9->print_word] print_word_from_b9: - //SEG54 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 31179 [phi:main::@9->print_word#0] -- vwuz1=vwuc1 + //SEG55 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 31179 [phi:main::@9->print_word#0] -- vwuz1=vwuc1 lda #<$79cb sta print_word.w lda #>$79cb sta print_word.w+1 jsr print_word - //SEG55 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG56 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG56 main::@10 + //SEG57 main::@10 b10: - //SEG57 [21] call print_str - //SEG58 [84] phi from main::@10 to print_str [phi:main::@10->print_str] + //SEG58 [21] call print_str + //SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str] print_str_from_b10: - //SEG59 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy - //SEG60 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 + //SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy + //SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG61 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] b11_from_b10: jmp b11 - //SEG62 main::@11 + //SEG63 main::@11 b11: - //SEG63 [23] call print_word - //SEG64 [66] phi from main::@11 to print_word [phi:main::@11->print_word] + //SEG64 [23] call print_word + //SEG65 [66] phi from main::@11 to print_word [phi:main::@11->print_word] print_word_from_b11: - //SEG65 [66] phi (word) print_word::w#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->print_word#0] -- vwuz1=vbuc1 + //SEG66 [66] phi (word) print_word::w#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->print_word#0] -- vwuz1=vbuc1 lda #<0 sta print_word.w lda #>0 sta print_word.w+1 jsr print_word - //SEG66 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG67 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG67 main::@12 + //SEG68 main::@12 b12: - //SEG68 [25] call print_ln - //SEG69 [61] phi from main::@12 to print_ln [phi:main::@12->print_ln] + //SEG69 [25] call print_ln + //SEG70 [61] phi from main::@12 to print_ln [phi:main::@12->print_ln] print_ln_from_b12: - //SEG70 [61] phi (byte*) print_line_cursor#21 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@12->print_ln#0] -- pbuz1=pbuc1 + //SEG71 [61] phi (byte*) print_line_cursor#21 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@12->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG71 [26] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + //SEG72 [26] phi from main::@12 to main::@1 [phi:main::@12->main::@1] b1_from_b12: - //SEG72 [26] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuz1=vbuc1 + //SEG73 [26] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG73 [26] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG74 [26] phi from main::@21 to main::@1 [phi:main::@21->main::@1] b1_from_b21: - //SEG74 [26] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy + //SEG75 [26] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy jmp b1 - //SEG75 main::@1 + //SEG76 main::@1 b1: - //SEG76 [27] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuz1=vbuz2 + //SEG77 [27] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuz1=vbuz2 lda i sta print_byte.b - //SEG77 [28] (byte*~) print_char_cursor#91 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG78 [28] (byte*~) print_char_cursor#91 ← (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 - //SEG78 [29] call print_byte - //SEG79 [72] phi from main::@1 to print_byte [phi:main::@1->print_byte] + //SEG79 [29] call print_byte + //SEG80 [72] phi from main::@1 to print_byte [phi:main::@1->print_byte] print_byte_from_b1: - //SEG80 [72] phi (byte*) print_char_cursor#81 = (byte*~) print_char_cursor#91 [phi:main::@1->print_byte#0] -- register_copy - //SEG81 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy + //SEG81 [72] phi (byte*) print_char_cursor#81 = (byte*~) print_char_cursor#91 [phi:main::@1->print_byte#0] -- register_copy + //SEG82 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy jsr print_byte - //SEG82 [30] phi from main::@1 to main::@14 [phi:main::@1->main::@14] + //SEG83 [30] phi from main::@1 to main::@14 [phi:main::@1->main::@14] b14_from_b1: jmp b14 - //SEG83 main::@14 + //SEG84 main::@14 b14: - //SEG84 [31] call print_str - //SEG85 [84] phi from main::@14 to print_str [phi:main::@14->print_str] + //SEG85 [31] call print_str + //SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str] print_str_from_b14: - //SEG86 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy - //SEG87 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 + //SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy + //SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b15 - //SEG88 main::@15 + //SEG89 main::@15 b15: - //SEG89 [32] (word) print_word::w#3 ← *((const word[20]) main::lintab1#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG90 [32] (word) print_word::w#3 ← *((const word[20]) main::lintab1#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab1,y sta print_word.w lda lintab1+1,y sta print_word.w+1 - //SEG90 [33] call print_word - //SEG91 [66] phi from main::@15 to print_word [phi:main::@15->print_word] + //SEG91 [33] call print_word + //SEG92 [66] phi from main::@15 to print_word [phi:main::@15->print_word] print_word_from_b15: - //SEG92 [66] phi (word) print_word::w#10 = (word) print_word::w#3 [phi:main::@15->print_word#0] -- register_copy + //SEG93 [66] phi (word) print_word::w#10 = (word) print_word::w#3 [phi:main::@15->print_word#0] -- register_copy jsr print_word - //SEG93 [34] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG94 [34] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG94 main::@16 + //SEG95 main::@16 b16: - //SEG95 [35] call print_str - //SEG96 [84] phi from main::@16 to print_str [phi:main::@16->print_str] + //SEG96 [35] call print_str + //SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str] print_str_from_b16: - //SEG97 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy - //SEG98 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 + //SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy + //SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b17 - //SEG99 main::@17 + //SEG100 main::@17 b17: - //SEG100 [36] (word) print_word::w#4 ← *((const word[20]) main::lintab2#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG101 [36] (word) print_word::w#4 ← *((const word[20]) main::lintab2#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab2,y sta print_word.w lda lintab2+1,y sta print_word.w+1 - //SEG101 [37] call print_word - //SEG102 [66] phi from main::@17 to print_word [phi:main::@17->print_word] + //SEG102 [37] call print_word + //SEG103 [66] phi from main::@17 to print_word [phi:main::@17->print_word] print_word_from_b17: - //SEG103 [66] phi (word) print_word::w#10 = (word) print_word::w#4 [phi:main::@17->print_word#0] -- register_copy + //SEG104 [66] phi (word) print_word::w#10 = (word) print_word::w#4 [phi:main::@17->print_word#0] -- register_copy jsr print_word - //SEG104 [38] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG105 [38] phi from main::@17 to main::@18 [phi:main::@17->main::@18] b18_from_b17: jmp b18 - //SEG105 main::@18 + //SEG106 main::@18 b18: - //SEG106 [39] call print_str - //SEG107 [84] phi from main::@18 to print_str [phi:main::@18->print_str] + //SEG107 [39] call print_str + //SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str] print_str_from_b18: - //SEG108 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy - //SEG109 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + //SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy + //SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str jmp b19 - //SEG110 main::@19 + //SEG111 main::@19 b19: - //SEG111 [40] (word) print_word::w#5 ← *((const word[20]) main::lintab3#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG112 [40] (word) print_word::w#5 ← *((const word[20]) main::lintab3#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab3,y sta print_word.w lda lintab3+1,y sta print_word.w+1 - //SEG112 [41] call print_word - //SEG113 [66] phi from main::@19 to print_word [phi:main::@19->print_word] + //SEG113 [41] call print_word + //SEG114 [66] phi from main::@19 to print_word [phi:main::@19->print_word] print_word_from_b19: - //SEG114 [66] phi (word) print_word::w#10 = (word) print_word::w#5 [phi:main::@19->print_word#0] -- register_copy + //SEG115 [66] phi (word) print_word::w#10 = (word) print_word::w#5 [phi:main::@19->print_word#0] -- register_copy jsr print_word - //SEG115 [42] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + //SEG116 [42] phi from main::@19 to main::@20 [phi:main::@19->main::@20] b20_from_b19: jmp b20 - //SEG116 main::@20 + //SEG117 main::@20 b20: - //SEG117 [43] call print_ln - //SEG118 [61] phi from main::@20 to print_ln [phi:main::@20->print_ln] + //SEG118 [43] call print_ln + //SEG119 [61] phi from main::@20 to print_ln [phi:main::@20->print_ln] print_ln_from_b20: - //SEG119 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy + //SEG120 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy jsr print_ln jmp b21 - //SEG120 main::@21 + //SEG121 main::@21 b21: - //SEG121 [44] (byte) main::i#1 ← (byte) main::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG122 [44] (byte) main::i#1 ← (byte) main::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG122 [45] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG123 [45] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$14*2 bcc b1_from_b21 jmp b2 - //SEG123 main::@2 + //SEG124 main::@2 b2: - //SEG124 [46] (byte*~) print_char_cursor#100 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG125 [46] (byte*~) print_char_cursor#100 ← (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 - //SEG125 [47] call print_str - //SEG126 [84] phi from main::@2 to print_str [phi:main::@2->print_str] + //SEG126 [47] call print_str + //SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str] print_str_from_b2: - //SEG127 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy - //SEG128 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + //SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy + //SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #str6 sta print_str.str+1 jsr print_str - //SEG129 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] + //SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] b22_from_b2: jmp b22 - //SEG130 main::@22 + //SEG131 main::@22 b22: - //SEG131 [49] call print_word - //SEG132 [66] phi from main::@22 to print_word [phi:main::@22->print_word] + //SEG132 [49] call print_word + //SEG133 [66] phi from main::@22 to print_word [phi:main::@22->print_word] print_word_from_b22: - //SEG133 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 29793 [phi:main::@22->print_word#0] -- vwuz1=vwuc1 + //SEG134 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 29793 [phi:main::@22->print_word#0] -- vwuz1=vwuc1 lda #<$7461 sta print_word.w lda #>$7461 sta print_word.w+1 jsr print_word - //SEG134 [50] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG135 [50] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 - //SEG135 main::@23 + //SEG136 main::@23 b23: - //SEG136 [51] call print_str - //SEG137 [84] phi from main::@23 to print_str [phi:main::@23->print_str] + //SEG137 [51] call print_str + //SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str] print_str_from_b23: - //SEG138 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy - //SEG139 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 + //SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy + //SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 lda #str7 sta print_str.str+1 jsr print_str - //SEG140 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG141 main::@24 + //SEG142 main::@24 b24: - //SEG142 [53] call print_word - //SEG143 [66] phi from main::@24 to print_word [phi:main::@24->print_word] + //SEG143 [53] call print_word + //SEG144 [66] phi from main::@24 to print_word [phi:main::@24->print_word] print_word_from_b24: - //SEG144 [66] phi (word) print_word::w#10 = (word/dword/signed dword) 63361 [phi:main::@24->print_word#0] -- vwuz1=vwuc1 + //SEG145 [66] phi (word) print_word::w#10 = (word/dword/signed dword) 63361 [phi:main::@24->print_word#0] -- vwuz1=vwuc1 lda #<$f781 sta print_word.w lda #>$f781 sta print_word.w+1 jsr print_word - //SEG145 [54] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + //SEG146 [54] phi from main::@24 to main::@25 [phi:main::@24->main::@25] b25_from_b24: jmp b25 - //SEG146 main::@25 + //SEG147 main::@25 b25: - //SEG147 [55] call print_str - //SEG148 [84] phi from main::@25 to print_str [phi:main::@25->print_str] + //SEG148 [55] call print_str + //SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str] print_str_from_b25: - //SEG149 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy - //SEG150 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 + //SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy + //SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 lda #str8 sta print_str.str+1 jsr print_str - //SEG151 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] b26_from_b25: jmp b26 - //SEG152 main::@26 + //SEG153 main::@26 b26: - //SEG153 [57] call print_word - //SEG154 [66] phi from main::@26 to print_word [phi:main::@26->print_word] + //SEG154 [57] call print_word + //SEG155 [66] phi from main::@26 to print_word [phi:main::@26->print_word] print_word_from_b26: - //SEG155 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 25736 [phi:main::@26->print_word#0] -- vwuz1=vwuc1 + //SEG156 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 25736 [phi:main::@26->print_word#0] -- vwuz1=vwuc1 lda #<$6488 sta print_word.w lda #>$6488 sta print_word.w+1 jsr print_word - //SEG156 [58] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG157 [58] phi from main::@26 to main::@27 [phi:main::@26->main::@27] b27_from_b26: jmp b27 - //SEG157 main::@27 + //SEG158 main::@27 b27: - //SEG158 [59] call print_ln - //SEG159 [61] phi from main::@27 to print_ln [phi:main::@27->print_ln] + //SEG159 [59] call print_ln + //SEG160 [61] phi from main::@27 to print_ln [phi:main::@27->print_ln] print_ln_from_b27: - //SEG160 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@27->print_ln#0] -- register_copy + //SEG161 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@27->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG161 main::@return + //SEG162 main::@return breturn: - //SEG162 [60] return + //SEG163 [60] return rts str: .text " @" str1: .text " @" @@ -2459,17 +2462,17 @@ main: { lintab2: .fill 2*$14, 0 lintab3: .fill 2*$14, 0 } -//SEG163 print_ln +//SEG164 print_ln // Print a newline print_ln: { - //SEG164 [62] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG165 [62] 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: - //SEG165 [62] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG166 [62] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG166 print_ln::@1 + //SEG167 print_ln::@1 b1: - //SEG167 [63] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG168 [63] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -2477,7 +2480,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG168 [64] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG169 [64] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -2487,176 +2490,176 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG169 print_ln::@return + //SEG170 print_ln::@return breturn: - //SEG170 [65] return + //SEG171 [65] return rts } -//SEG171 print_word +//SEG172 print_word // Print a word as HEX print_word: { .label w = 5 - //SEG172 [67] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuz1=_hi_vwuz2 + //SEG173 [67] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG173 [68] call print_byte - //SEG174 [72] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG174 [68] call print_byte + //SEG175 [72] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG175 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG176 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG176 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG177 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG177 print_word::@1 + //SEG178 print_word::@1 b1: - //SEG178 [69] (byte) print_byte::b#1 ← < (word) print_word::w#10 -- vbuz1=_lo_vwuz2 + //SEG179 [69] (byte) print_byte::b#1 ← < (word) print_word::w#10 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG179 [70] call print_byte - //SEG180 [72] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG180 [70] call print_byte + //SEG181 [72] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG181 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG182 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG182 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG183 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG183 print_word::@return + //SEG184 print_word::@return breturn: - //SEG184 [71] return + //SEG185 [71] return rts } -//SEG185 print_byte +//SEG186 print_byte // Print a byte as HEX print_byte: { .label _0 = $24 .label _2 = $25 .label b = 7 - //SEG186 [73] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG187 [73] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG187 [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG188 [74] (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 - //SEG188 [75] call print_char - //SEG189 [80] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG189 [75] call print_char + //SEG190 [80] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG190 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#81 [phi:print_byte->print_char#0] -- register_copy - //SEG191 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG191 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#81 [phi:print_byte->print_char#0] -- register_copy + //SEG192 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG192 print_byte::@1 + //SEG193 print_byte::@1 b1: - //SEG193 [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG194 [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG194 [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG195 [77] (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 - //SEG195 [78] call print_char - //SEG196 [80] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG196 [78] call print_char + //SEG197 [80] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG197 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG198 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG198 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG199 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG199 print_byte::@return + //SEG200 print_byte::@return breturn: - //SEG200 [79] return + //SEG201 [79] return rts } -//SEG201 print_char +//SEG202 print_char // Print a single char print_char: { .label ch = 8 - //SEG202 [81] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuz2 + //SEG203 [81] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG203 [82] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#50 -- pbuz1=_inc_pbuz1 + //SEG204 [82] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#50 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG204 print_char::@return + //SEG205 print_char::@return breturn: - //SEG205 [83] return + //SEG206 [83] return rts } -//SEG206 print_str +//SEG207 print_str // Print a zero-terminated string print_str: { .label str = $b - //SEG207 [85] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG208 [85] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG208 [85] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#86 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG209 [85] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG209 [85] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#86 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG210 [85] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG210 print_str::@1 + //SEG211 print_str::@1 b1: - //SEG211 [86] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG212 [86] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG212 print_str::@return + //SEG213 print_str::@return breturn: - //SEG213 [87] return + //SEG214 [87] return rts - //SEG214 print_str::@2 + //SEG215 print_str::@2 b2: - //SEG215 [88] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG216 [88] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG216 [89] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG217 [89] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG217 [90] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG218 [90] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG218 print_cls +//SEG219 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $d - //SEG219 [92] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG220 [92] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG220 [92] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG221 [92] 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 - //SEG221 [92] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG222 [92] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG222 [92] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG223 [92] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG223 print_cls::@1 + //SEG224 print_cls::@1 b1: - //SEG224 [93] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG225 [93] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG225 [94] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG226 [94] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG226 [95] 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 + //SEG227 [95] 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 @@ -2664,12 +2667,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG227 print_cls::@return + //SEG228 print_cls::@return breturn: - //SEG228 [96] return + //SEG229 [96] return rts } -//SEG229 lin16u_gen +//SEG230 lin16u_gen // Generate word linear table // lintab - the table to generate into // length - the number of points in a total sinus wavelength (the size of the table) @@ -2684,7 +2687,7 @@ lin16u_gen: { .label i = $19 .label max = $f .label min = $11 - //SEG230 [98] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz2_minus_vwuz3 + //SEG231 [98] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz2_minus_vwuz3 lda max sec sbc min @@ -2692,73 +2695,73 @@ lin16u_gen: { lda max+1 sbc min+1 sta ampl+1 - //SEG231 [99] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 -- vwuz1=vwuz2 + //SEG232 [99] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 -- vwuz1=vwuz2 lda ampl sta divr16u.dividend lda ampl+1 sta divr16u.dividend+1 - //SEG232 [100] call divr16u - //SEG233 [117] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + //SEG233 [100] call divr16u + //SEG234 [117] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] divr16u_from_lin16u_gen: - //SEG234 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 + //SEG235 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 lda #<$14-1 sta divr16u.divisor lda #>$14-1 sta divr16u.divisor+1 - //SEG235 [117] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy - //SEG236 [117] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 + //SEG236 [117] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy + //SEG237 [117] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG237 [101] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG238 [101] (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 b3 - //SEG238 lin16u_gen::@3 + //SEG239 lin16u_gen::@3 b3: - //SEG239 [102] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG240 [102] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta stepi lda divr16u.return_2+1 sta stepi+1 - //SEG240 [103] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG241 [103] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG241 [104] call divr16u - //SEG242 [117] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + //SEG242 [104] call divr16u + //SEG243 [117] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] divr16u_from_b3: - //SEG243 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 + //SEG244 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 lda #<$14-1 sta divr16u.divisor lda #>$14-1 sta divr16u.divisor+1 - //SEG244 [117] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 + //SEG245 [117] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.dividend lda #>0 sta divr16u.dividend+1 - //SEG245 [117] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy + //SEG246 [117] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy jsr divr16u - //SEG246 [105] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG247 [105] (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 b4 - //SEG247 lin16u_gen::@4 + //SEG248 lin16u_gen::@4 b4: - //SEG248 [106] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG249 [106] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta stepf lda divr16u.return_3+1 sta stepf+1 - //SEG249 [107] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG250 [107] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 lda stepi sta step+2 lda stepi+1 @@ -2767,7 +2770,7 @@ lin16u_gen: { sta step lda stepf+1 sta step+1 - //SEG250 [108] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 -- vduz1=vwuz2_dword_vbuc1 + //SEG251 [108] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 -- vduz1=vwuz2_dword_vbuc1 lda #<0 sta val lda #>0 @@ -2776,37 +2779,37 @@ lin16u_gen: { sta val+2 lda min+1 sta val+3 - //SEG251 [109] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + //SEG252 [109] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] b1_from_b4: - //SEG252 [109] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 + //SEG253 [109] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG253 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#5 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy - //SEG254 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy + //SEG254 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#5 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + //SEG255 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy jmp b1 - //SEG255 [109] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] + //SEG256 [109] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] b1_from_b1: - //SEG256 [109] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy - //SEG257 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy - //SEG258 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy + //SEG257 [109] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy + //SEG258 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy + //SEG259 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy jmp b1 - //SEG259 lin16u_gen::@1 + //SEG260 lin16u_gen::@1 b1: - //SEG260 [110] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 + //SEG261 [110] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 lda val+2 sta _5 lda val+3 sta _5+1 - //SEG261 [111] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$5 -- _deref_pwuz1=vwuz2 + //SEG262 [111] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$5 -- _deref_pwuz1=vwuz2 ldy #0 lda _5 sta (lintab),y iny lda _5+1 sta (lintab),y - //SEG262 [112] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG263 [112] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda val clc adc step @@ -2820,7 +2823,7 @@ lin16u_gen: { lda val+3 adc step+3 sta val+3 - //SEG263 [113] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwuz1=pwuz1_plus_2 + //SEG264 [113] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwuz1=pwuz1_plus_2 lda lintab clc adc #2 @@ -2828,12 +2831,12 @@ lin16u_gen: { bcc !+ inc lintab+1 !: - //SEG264 [114] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG265 [114] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG265 [115] if((word) lin16u_gen::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20) goto lin16u_gen::@1 -- vwuz1_lt_vbuc1_then_la1 + //SEG266 [115] if((word) lin16u_gen::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20) goto lin16u_gen::@1 -- vwuz1_lt_vbuc1_then_la1 lda i+1 cmp #>$14 bcc b1_from_b1 @@ -2843,12 +2846,12 @@ lin16u_gen: { bcc b1_from_b1 !: jmp breturn - //SEG266 lin16u_gen::@return + //SEG267 lin16u_gen::@return breturn: - //SEG267 [116] return + //SEG268 [116] return rts } -//SEG268 divr16u +//SEG269 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -2864,63 +2867,63 @@ divr16u: { .label return_2 = $28 .label return_3 = $2c .label divisor = $1b - //SEG269 [118] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG270 [118] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG270 [118] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG271 [118] 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 - //SEG271 [118] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG272 [118] 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 - //SEG272 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG273 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG273 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG274 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG274 [118] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG275 [118] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG275 [118] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG276 [118] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG277 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG278 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG276 [118] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG277 [118] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG278 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG279 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG279 divr16u::@1 + //SEG280 divr16u::@1 b1: - //SEG280 [119] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG281 [119] (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 - //SEG281 [120] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG282 [120] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG282 [121] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG283 [121] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG283 [122] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG284 [122] 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 - //SEG284 divr16u::@4 + //SEG285 divr16u::@4 b4: - //SEG285 [123] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG286 [123] (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 - //SEG286 [124] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG287 [124] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG287 [124] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG288 [124] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG288 divr16u::@2 + //SEG289 divr16u::@2 b2: - //SEG289 [125] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG290 [125] (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 - //SEG290 [126] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG291 [126] (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 - //SEG291 [127] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG292 [127] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -2930,14 +2933,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG292 divr16u::@5 + //SEG293 divr16u::@5 b5: - //SEG293 [128] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG294 [128] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG294 [129] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG295 [129] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -2945,32 +2948,32 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG295 [130] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG296 [130] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG296 [130] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG297 [130] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG297 [130] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG298 [130] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG298 divr16u::@3 + //SEG299 divr16u::@3 b3: - //SEG299 [131] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG300 [131] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG300 [132] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG301 [132] 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 - //SEG301 divr16u::@6 + //SEG302 divr16u::@6 b6: - //SEG302 [133] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG303 [133] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG303 divr16u::@return + //SEG304 divr16u::@return breturn: - //SEG304 [134] return + //SEG305 [134] return rts } print_hextab: .text "0123456789abcdef" @@ -3130,452 +3133,455 @@ Allocated (was zp ZP_WORD:42) zp ZP_WORD:19 [ lin16u_gen::stepi#0 ] Allocated (was zp ZP_DWORD:48) zp ZP_DWORD:21 [ lin16u_gen::step#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Linear table generator +// Work in progress towards a sinus generator +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label rem16u = $f .label print_char_cursor = 7 .label print_line_cursor = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] +//SEG4 [1] phi from @begin to @29 [phi:@begin->@29] b29_from_bbegin: jmp b29 -//SEG4 @29 +//SEG5 @29 b29: -//SEG5 [2] call main -//SEG6 [4] phi from @29 to main [phi:@29->main] +//SEG6 [2] call main +//SEG7 [4] phi from @29 to main [phi:@29->main] main_from_b29: jsr main -//SEG7 [3] phi from @29 to @end [phi:@29->@end] +//SEG8 [3] phi from @29 to @end [phi:@29->@end] bend_from_b29: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] call lin16u_gen - //SEG11 [97] phi from main to lin16u_gen [phi:main->lin16u_gen] + //SEG11 [5] call lin16u_gen + //SEG12 [97] phi from main to lin16u_gen [phi:main->lin16u_gen] lin16u_gen_from_main: - //SEG12 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG13 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab1 sta lin16u_gen.lintab+1 - //SEG13 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 + //SEG14 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$22d sta lin16u_gen.min lda #>$22d sta lin16u_gen.min+1 - //SEG14 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG15 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$7461 sta lin16u_gen.max lda #>$7461 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG15 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG16 [6] phi from main to main::@3 [phi:main->main::@3] b3_from_main: jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [7] call lin16u_gen - //SEG18 [97] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] + //SEG18 [7] call lin16u_gen + //SEG19 [97] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] lin16u_gen_from_b3: - //SEG19 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG20 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab2 sta lin16u_gen.lintab+1 - //SEG20 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#1] -- vwuz1=vwuc1 + //SEG21 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$79cb sta lin16u_gen.min lda #>$79cb sta lin16u_gen.min+1 - //SEG21 [97] phi (word) lin16u_gen::max#3 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG22 [97] phi (word) lin16u_gen::max#3 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$f781 sta lin16u_gen.max lda #>$f781 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG22 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG23 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG23 main::@4 + //SEG24 main::@4 b4: - //SEG24 [9] call lin16u_gen - //SEG25 [97] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] + //SEG25 [9] call lin16u_gen + //SEG26 [97] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] lin16u_gen_from_b4: - //SEG26 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab3#0 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG27 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab3#0 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab3 sta lin16u_gen.lintab+1 - //SEG27 [97] phi (word) lin16u_gen::min#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->lin16u_gen#1] -- vwuz1=vbuc1 + //SEG28 [97] phi (word) lin16u_gen::min#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->lin16u_gen#1] -- vwuz1=vbuc1 lda #<0 sta lin16u_gen.min lda #>0 sta lin16u_gen.min+1 - //SEG28 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 25736 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG29 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 25736 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$6488 sta lin16u_gen.max lda #>$6488 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG29 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG30 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG30 main::@5 + //SEG31 main::@5 b5: - //SEG31 [11] call print_cls - //SEG32 [91] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG32 [11] call print_cls + //SEG33 [91] phi from main::@5 to print_cls [phi:main::@5->print_cls] print_cls_from_b5: jsr print_cls - //SEG33 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG34 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG34 main::@6 + //SEG35 main::@6 b6: - //SEG35 [13] call print_str - //SEG36 [84] phi from main::@6 to print_str [phi:main::@6->print_str] + //SEG36 [13] call print_str + //SEG37 [84] phi from main::@6 to print_str [phi:main::@6->print_str] print_str_from_b6: - //SEG37 [84] phi (byte*) print_char_cursor#86 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@6->print_str#0] -- pbuz1=pbuc1 + //SEG38 [84] phi (byte*) print_char_cursor#86 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@6->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG38 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 + //SEG39 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG39 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG40 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: jmp b7 - //SEG40 main::@7 + //SEG41 main::@7 b7: - //SEG41 [15] call print_word - //SEG42 [66] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG42 [15] call print_word + //SEG43 [66] phi from main::@7 to print_word [phi:main::@7->print_word] print_word_from_b7: - //SEG43 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 557 [phi:main::@7->print_word#0] -- vwuz1=vwuc1 + //SEG44 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 557 [phi:main::@7->print_word#0] -- vwuz1=vwuc1 lda #<$22d sta print_word.w lda #>$22d sta print_word.w+1 jsr print_word - //SEG44 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG45 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG45 main::@8 + //SEG46 main::@8 b8: - //SEG46 [17] call print_str - //SEG47 [84] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG47 [17] call print_str + //SEG48 [84] phi from main::@8 to print_str [phi:main::@8->print_str] print_str_from_b8: - //SEG48 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@8->print_str#0] -- register_copy - //SEG49 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG49 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@8->print_str#0] -- register_copy + //SEG50 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG50 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG51 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG51 main::@9 + //SEG52 main::@9 b9: - //SEG52 [19] call print_word - //SEG53 [66] phi from main::@9 to print_word [phi:main::@9->print_word] + //SEG53 [19] call print_word + //SEG54 [66] phi from main::@9 to print_word [phi:main::@9->print_word] print_word_from_b9: - //SEG54 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 31179 [phi:main::@9->print_word#0] -- vwuz1=vwuc1 + //SEG55 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 31179 [phi:main::@9->print_word#0] -- vwuz1=vwuc1 lda #<$79cb sta print_word.w lda #>$79cb sta print_word.w+1 jsr print_word - //SEG55 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG56 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG56 main::@10 + //SEG57 main::@10 b10: - //SEG57 [21] call print_str - //SEG58 [84] phi from main::@10 to print_str [phi:main::@10->print_str] + //SEG58 [21] call print_str + //SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str] print_str_from_b10: - //SEG59 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy - //SEG60 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 + //SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy + //SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG61 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] b11_from_b10: jmp b11 - //SEG62 main::@11 + //SEG63 main::@11 b11: - //SEG63 [23] call print_word - //SEG64 [66] phi from main::@11 to print_word [phi:main::@11->print_word] + //SEG64 [23] call print_word + //SEG65 [66] phi from main::@11 to print_word [phi:main::@11->print_word] print_word_from_b11: - //SEG65 [66] phi (word) print_word::w#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->print_word#0] -- vwuz1=vbuc1 + //SEG66 [66] phi (word) print_word::w#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->print_word#0] -- vwuz1=vbuc1 lda #<0 sta print_word.w lda #>0 sta print_word.w+1 jsr print_word - //SEG66 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG67 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG67 main::@12 + //SEG68 main::@12 b12: - //SEG68 [25] call print_ln - //SEG69 [61] phi from main::@12 to print_ln [phi:main::@12->print_ln] + //SEG69 [25] call print_ln + //SEG70 [61] phi from main::@12 to print_ln [phi:main::@12->print_ln] print_ln_from_b12: - //SEG70 [61] phi (byte*) print_line_cursor#21 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@12->print_ln#0] -- pbuz1=pbuc1 + //SEG71 [61] phi (byte*) print_line_cursor#21 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@12->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG71 [26] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + //SEG72 [26] phi from main::@12 to main::@1 [phi:main::@12->main::@1] b1_from_b12: - //SEG72 [26] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuz1=vbuc1 + //SEG73 [26] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG73 [26] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG74 [26] phi from main::@21 to main::@1 [phi:main::@21->main::@1] b1_from_b21: - //SEG74 [26] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy + //SEG75 [26] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy jmp b1 - //SEG75 main::@1 + //SEG76 main::@1 b1: - //SEG76 [27] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuxx=vbuz1 + //SEG77 [27] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuxx=vbuz1 ldx i - //SEG77 [28] (byte*~) print_char_cursor#91 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG78 [28] (byte*~) print_char_cursor#91 ← (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 - //SEG78 [29] call print_byte - //SEG79 [72] phi from main::@1 to print_byte [phi:main::@1->print_byte] + //SEG79 [29] call print_byte + //SEG80 [72] phi from main::@1 to print_byte [phi:main::@1->print_byte] print_byte_from_b1: - //SEG80 [72] phi (byte*) print_char_cursor#81 = (byte*~) print_char_cursor#91 [phi:main::@1->print_byte#0] -- register_copy - //SEG81 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy + //SEG81 [72] phi (byte*) print_char_cursor#81 = (byte*~) print_char_cursor#91 [phi:main::@1->print_byte#0] -- register_copy + //SEG82 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy jsr print_byte - //SEG82 [30] phi from main::@1 to main::@14 [phi:main::@1->main::@14] + //SEG83 [30] phi from main::@1 to main::@14 [phi:main::@1->main::@14] b14_from_b1: jmp b14 - //SEG83 main::@14 + //SEG84 main::@14 b14: - //SEG84 [31] call print_str - //SEG85 [84] phi from main::@14 to print_str [phi:main::@14->print_str] + //SEG85 [31] call print_str + //SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str] print_str_from_b14: - //SEG86 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy - //SEG87 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 + //SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy + //SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b15 - //SEG88 main::@15 + //SEG89 main::@15 b15: - //SEG89 [32] (word) print_word::w#3 ← *((const word[20]) main::lintab1#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG90 [32] (word) print_word::w#3 ← *((const word[20]) main::lintab1#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab1,y sta print_word.w lda lintab1+1,y sta print_word.w+1 - //SEG90 [33] call print_word - //SEG91 [66] phi from main::@15 to print_word [phi:main::@15->print_word] + //SEG91 [33] call print_word + //SEG92 [66] phi from main::@15 to print_word [phi:main::@15->print_word] print_word_from_b15: - //SEG92 [66] phi (word) print_word::w#10 = (word) print_word::w#3 [phi:main::@15->print_word#0] -- register_copy + //SEG93 [66] phi (word) print_word::w#10 = (word) print_word::w#3 [phi:main::@15->print_word#0] -- register_copy jsr print_word - //SEG93 [34] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG94 [34] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG94 main::@16 + //SEG95 main::@16 b16: - //SEG95 [35] call print_str - //SEG96 [84] phi from main::@16 to print_str [phi:main::@16->print_str] + //SEG96 [35] call print_str + //SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str] print_str_from_b16: - //SEG97 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy - //SEG98 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 + //SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy + //SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b17 - //SEG99 main::@17 + //SEG100 main::@17 b17: - //SEG100 [36] (word) print_word::w#4 ← *((const word[20]) main::lintab2#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG101 [36] (word) print_word::w#4 ← *((const word[20]) main::lintab2#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab2,y sta print_word.w lda lintab2+1,y sta print_word.w+1 - //SEG101 [37] call print_word - //SEG102 [66] phi from main::@17 to print_word [phi:main::@17->print_word] + //SEG102 [37] call print_word + //SEG103 [66] phi from main::@17 to print_word [phi:main::@17->print_word] print_word_from_b17: - //SEG103 [66] phi (word) print_word::w#10 = (word) print_word::w#4 [phi:main::@17->print_word#0] -- register_copy + //SEG104 [66] phi (word) print_word::w#10 = (word) print_word::w#4 [phi:main::@17->print_word#0] -- register_copy jsr print_word - //SEG104 [38] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG105 [38] phi from main::@17 to main::@18 [phi:main::@17->main::@18] b18_from_b17: jmp b18 - //SEG105 main::@18 + //SEG106 main::@18 b18: - //SEG106 [39] call print_str - //SEG107 [84] phi from main::@18 to print_str [phi:main::@18->print_str] + //SEG107 [39] call print_str + //SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str] print_str_from_b18: - //SEG108 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy - //SEG109 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + //SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy + //SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str jmp b19 - //SEG110 main::@19 + //SEG111 main::@19 b19: - //SEG111 [40] (word) print_word::w#5 ← *((const word[20]) main::lintab3#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG112 [40] (word) print_word::w#5 ← *((const word[20]) main::lintab3#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab3,y sta print_word.w lda lintab3+1,y sta print_word.w+1 - //SEG112 [41] call print_word - //SEG113 [66] phi from main::@19 to print_word [phi:main::@19->print_word] + //SEG113 [41] call print_word + //SEG114 [66] phi from main::@19 to print_word [phi:main::@19->print_word] print_word_from_b19: - //SEG114 [66] phi (word) print_word::w#10 = (word) print_word::w#5 [phi:main::@19->print_word#0] -- register_copy + //SEG115 [66] phi (word) print_word::w#10 = (word) print_word::w#5 [phi:main::@19->print_word#0] -- register_copy jsr print_word - //SEG115 [42] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + //SEG116 [42] phi from main::@19 to main::@20 [phi:main::@19->main::@20] b20_from_b19: jmp b20 - //SEG116 main::@20 + //SEG117 main::@20 b20: - //SEG117 [43] call print_ln - //SEG118 [61] phi from main::@20 to print_ln [phi:main::@20->print_ln] + //SEG118 [43] call print_ln + //SEG119 [61] phi from main::@20 to print_ln [phi:main::@20->print_ln] print_ln_from_b20: - //SEG119 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy + //SEG120 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy jsr print_ln jmp b21 - //SEG120 main::@21 + //SEG121 main::@21 b21: - //SEG121 [44] (byte) main::i#1 ← (byte) main::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG122 [44] (byte) main::i#1 ← (byte) main::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG122 [45] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG123 [45] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$14*2 bcc b1_from_b21 jmp b2 - //SEG123 main::@2 + //SEG124 main::@2 b2: - //SEG124 [46] (byte*~) print_char_cursor#100 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG125 [46] (byte*~) print_char_cursor#100 ← (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 - //SEG125 [47] call print_str - //SEG126 [84] phi from main::@2 to print_str [phi:main::@2->print_str] + //SEG126 [47] call print_str + //SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str] print_str_from_b2: - //SEG127 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy - //SEG128 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + //SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy + //SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #str6 sta print_str.str+1 jsr print_str - //SEG129 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] + //SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] b22_from_b2: jmp b22 - //SEG130 main::@22 + //SEG131 main::@22 b22: - //SEG131 [49] call print_word - //SEG132 [66] phi from main::@22 to print_word [phi:main::@22->print_word] + //SEG132 [49] call print_word + //SEG133 [66] phi from main::@22 to print_word [phi:main::@22->print_word] print_word_from_b22: - //SEG133 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 29793 [phi:main::@22->print_word#0] -- vwuz1=vwuc1 + //SEG134 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 29793 [phi:main::@22->print_word#0] -- vwuz1=vwuc1 lda #<$7461 sta print_word.w lda #>$7461 sta print_word.w+1 jsr print_word - //SEG134 [50] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG135 [50] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 - //SEG135 main::@23 + //SEG136 main::@23 b23: - //SEG136 [51] call print_str - //SEG137 [84] phi from main::@23 to print_str [phi:main::@23->print_str] + //SEG137 [51] call print_str + //SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str] print_str_from_b23: - //SEG138 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy - //SEG139 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 + //SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy + //SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 lda #str7 sta print_str.str+1 jsr print_str - //SEG140 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG141 main::@24 + //SEG142 main::@24 b24: - //SEG142 [53] call print_word - //SEG143 [66] phi from main::@24 to print_word [phi:main::@24->print_word] + //SEG143 [53] call print_word + //SEG144 [66] phi from main::@24 to print_word [phi:main::@24->print_word] print_word_from_b24: - //SEG144 [66] phi (word) print_word::w#10 = (word/dword/signed dword) 63361 [phi:main::@24->print_word#0] -- vwuz1=vwuc1 + //SEG145 [66] phi (word) print_word::w#10 = (word/dword/signed dword) 63361 [phi:main::@24->print_word#0] -- vwuz1=vwuc1 lda #<$f781 sta print_word.w lda #>$f781 sta print_word.w+1 jsr print_word - //SEG145 [54] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + //SEG146 [54] phi from main::@24 to main::@25 [phi:main::@24->main::@25] b25_from_b24: jmp b25 - //SEG146 main::@25 + //SEG147 main::@25 b25: - //SEG147 [55] call print_str - //SEG148 [84] phi from main::@25 to print_str [phi:main::@25->print_str] + //SEG148 [55] call print_str + //SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str] print_str_from_b25: - //SEG149 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy - //SEG150 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 + //SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy + //SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 lda #str8 sta print_str.str+1 jsr print_str - //SEG151 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] b26_from_b25: jmp b26 - //SEG152 main::@26 + //SEG153 main::@26 b26: - //SEG153 [57] call print_word - //SEG154 [66] phi from main::@26 to print_word [phi:main::@26->print_word] + //SEG154 [57] call print_word + //SEG155 [66] phi from main::@26 to print_word [phi:main::@26->print_word] print_word_from_b26: - //SEG155 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 25736 [phi:main::@26->print_word#0] -- vwuz1=vwuc1 + //SEG156 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 25736 [phi:main::@26->print_word#0] -- vwuz1=vwuc1 lda #<$6488 sta print_word.w lda #>$6488 sta print_word.w+1 jsr print_word - //SEG156 [58] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG157 [58] phi from main::@26 to main::@27 [phi:main::@26->main::@27] b27_from_b26: jmp b27 - //SEG157 main::@27 + //SEG158 main::@27 b27: - //SEG158 [59] call print_ln - //SEG159 [61] phi from main::@27 to print_ln [phi:main::@27->print_ln] + //SEG159 [59] call print_ln + //SEG160 [61] phi from main::@27 to print_ln [phi:main::@27->print_ln] print_ln_from_b27: - //SEG160 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@27->print_ln#0] -- register_copy + //SEG161 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@27->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG161 main::@return + //SEG162 main::@return breturn: - //SEG162 [60] return + //SEG163 [60] return rts str: .text " @" str1: .text " @" @@ -3590,17 +3596,17 @@ main: { lintab2: .fill 2*$14, 0 lintab3: .fill 2*$14, 0 } -//SEG163 print_ln +//SEG164 print_ln // Print a newline print_ln: { - //SEG164 [62] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG165 [62] 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: - //SEG165 [62] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG166 [62] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG166 print_ln::@1 + //SEG167 print_ln::@1 b1: - //SEG167 [63] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG168 [63] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -3608,7 +3614,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG168 [64] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG169 [64] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -3618,167 +3624,167 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG169 print_ln::@return + //SEG170 print_ln::@return breturn: - //SEG170 [65] return + //SEG171 [65] return rts } -//SEG171 print_word +//SEG172 print_word // Print a word as HEX print_word: { .label w = 5 - //SEG172 [67] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuxx=_hi_vwuz1 + //SEG173 [67] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG173 [68] call print_byte - //SEG174 [72] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG174 [68] call print_byte + //SEG175 [72] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG175 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG176 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG176 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG177 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG177 print_word::@1 + //SEG178 print_word::@1 b1: - //SEG178 [69] (byte) print_byte::b#1 ← < (word) print_word::w#10 -- vbuxx=_lo_vwuz1 + //SEG179 [69] (byte) print_byte::b#1 ← < (word) print_word::w#10 -- vbuxx=_lo_vwuz1 lda w tax - //SEG179 [70] call print_byte - //SEG180 [72] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG180 [70] call print_byte + //SEG181 [72] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG181 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG182 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG182 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG183 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG183 print_word::@return + //SEG184 print_word::@return breturn: - //SEG184 [71] return + //SEG185 [71] return rts } -//SEG185 print_byte +//SEG186 print_byte // Print a byte as HEX print_byte: { - //SEG186 [73] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG187 [73] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG187 [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG188 [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG188 [75] call print_char - //SEG189 [80] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG189 [75] call print_char + //SEG190 [80] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG190 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#81 [phi:print_byte->print_char#0] -- register_copy - //SEG191 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG191 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#81 [phi:print_byte->print_char#0] -- register_copy + //SEG192 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG192 print_byte::@1 + //SEG193 print_byte::@1 b1: - //SEG193 [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG194 [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG194 [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG195 [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG195 [78] call print_char - //SEG196 [80] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG196 [78] call print_char + //SEG197 [80] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG197 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG198 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG198 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG199 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG199 print_byte::@return + //SEG200 print_byte::@return breturn: - //SEG200 [79] return + //SEG201 [79] return rts } -//SEG201 print_char +//SEG202 print_char // Print a single char print_char: { - //SEG202 [81] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa + //SEG203 [81] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG203 [82] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#50 -- pbuz1=_inc_pbuz1 + //SEG204 [82] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#50 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG204 print_char::@return + //SEG205 print_char::@return breturn: - //SEG205 [83] return + //SEG206 [83] return rts } -//SEG206 print_str +//SEG207 print_str // Print a zero-terminated string print_str: { .label str = 5 - //SEG207 [85] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG208 [85] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG208 [85] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#86 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG209 [85] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG209 [85] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#86 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG210 [85] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG210 print_str::@1 + //SEG211 print_str::@1 b1: - //SEG211 [86] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG212 [86] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG212 print_str::@return + //SEG213 print_str::@return breturn: - //SEG213 [87] return + //SEG214 [87] return rts - //SEG214 print_str::@2 + //SEG215 print_str::@2 b2: - //SEG215 [88] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG216 [88] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG216 [89] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG217 [89] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG217 [90] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG218 [90] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG218 print_cls +//SEG219 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG219 [92] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG220 [92] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG220 [92] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG221 [92] 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 - //SEG221 [92] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG222 [92] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG222 [92] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG223 [92] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG223 print_cls::@1 + //SEG224 print_cls::@1 b1: - //SEG224 [93] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG225 [93] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG225 [94] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG226 [94] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG226 [95] 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 + //SEG227 [95] 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 @@ -3786,12 +3792,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG227 print_cls::@return + //SEG228 print_cls::@return breturn: - //SEG228 [96] return + //SEG229 [96] return rts } -//SEG229 lin16u_gen +//SEG230 lin16u_gen // Generate word linear table // lintab - the table to generate into // length - the number of points in a total sinus wavelength (the size of the table) @@ -3806,7 +3812,7 @@ lin16u_gen: { .label i = 3 .label max = 3 .label min = 5 - //SEG230 [98] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2 + //SEG231 [98] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2 lda ampl sec sbc min @@ -3814,53 +3820,53 @@ lin16u_gen: { lda ampl+1 sbc min+1 sta ampl+1 - //SEG231 [99] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 - //SEG232 [100] call divr16u - //SEG233 [117] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + //SEG232 [99] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 + //SEG233 [100] call divr16u + //SEG234 [117] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] divr16u_from_lin16u_gen: - //SEG234 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 + //SEG235 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 lda #<$14-1 sta divr16u.divisor lda #>$14-1 sta divr16u.divisor+1 - //SEG235 [117] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy - //SEG236 [117] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 + //SEG236 [117] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy + //SEG237 [117] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG237 [101] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG238 [101] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b3 - //SEG238 lin16u_gen::@3 + //SEG239 lin16u_gen::@3 b3: - //SEG239 [102] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG240 [102] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta stepi lda divr16u.return+1 sta stepi+1 - //SEG240 [103] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG241 [104] call divr16u - //SEG242 [117] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + //SEG241 [103] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG242 [104] call divr16u + //SEG243 [117] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] divr16u_from_b3: - //SEG243 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 + //SEG244 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 lda #<$14-1 sta divr16u.divisor lda #>$14-1 sta divr16u.divisor+1 - //SEG244 [117] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 + //SEG245 [117] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.dividend lda #>0 sta divr16u.dividend+1 - //SEG245 [117] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy + //SEG246 [117] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy jsr divr16u - //SEG246 [105] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG247 [105] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b4 - //SEG247 lin16u_gen::@4 + //SEG248 lin16u_gen::@4 b4: - //SEG248 [106] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 - //SEG249 [107] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG249 [106] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 + //SEG250 [107] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 lda stepi sta step+2 lda stepi+1 @@ -3869,7 +3875,7 @@ lin16u_gen: { sta step lda stepf+1 sta step+1 - //SEG250 [108] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 -- vduz1=vwuz2_dword_vbuc1 + //SEG251 [108] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 -- vduz1=vwuz2_dword_vbuc1 lda #<0 sta val lda #>0 @@ -3878,37 +3884,37 @@ lin16u_gen: { sta val+2 lda min+1 sta val+3 - //SEG251 [109] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + //SEG252 [109] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] b1_from_b4: - //SEG252 [109] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 + //SEG253 [109] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG253 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#5 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy - //SEG254 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy + //SEG254 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#5 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + //SEG255 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy jmp b1 - //SEG255 [109] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] + //SEG256 [109] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] b1_from_b1: - //SEG256 [109] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy - //SEG257 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy - //SEG258 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy + //SEG257 [109] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy + //SEG258 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy + //SEG259 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy jmp b1 - //SEG259 lin16u_gen::@1 + //SEG260 lin16u_gen::@1 b1: - //SEG260 [110] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 + //SEG261 [110] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 lda val+2 sta _5 lda val+3 sta _5+1 - //SEG261 [111] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$5 -- _deref_pwuz1=vwuz2 + //SEG262 [111] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$5 -- _deref_pwuz1=vwuz2 ldy #0 lda _5 sta (lintab),y iny lda _5+1 sta (lintab),y - //SEG262 [112] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG263 [112] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda val clc adc step @@ -3922,7 +3928,7 @@ lin16u_gen: { lda val+3 adc step+3 sta val+3 - //SEG263 [113] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwuz1=pwuz1_plus_2 + //SEG264 [113] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwuz1=pwuz1_plus_2 lda lintab clc adc #2 @@ -3930,12 +3936,12 @@ lin16u_gen: { bcc !+ inc lintab+1 !: - //SEG264 [114] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG265 [114] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG265 [115] if((word) lin16u_gen::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20) goto lin16u_gen::@1 -- vwuz1_lt_vbuc1_then_la1 + //SEG266 [115] if((word) lin16u_gen::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20) goto lin16u_gen::@1 -- vwuz1_lt_vbuc1_then_la1 lda i+1 cmp #>$14 bcc b1_from_b1 @@ -3945,12 +3951,12 @@ lin16u_gen: { bcc b1_from_b1 !: jmp breturn - //SEG266 lin16u_gen::@return + //SEG267 lin16u_gen::@return breturn: - //SEG267 [116] return + //SEG268 [116] return rts } -//SEG268 divr16u +//SEG269 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -3961,58 +3967,58 @@ divr16u: { .label quotient = $11 .label return = $11 .label divisor = $d - //SEG269 [118] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG270 [118] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG270 [118] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG271 [118] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG271 [118] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG272 [118] 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 - //SEG272 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG273 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG273 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG274 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG274 [118] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG275 [118] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG275 [118] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG276 [118] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG277 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG278 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG276 [118] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG277 [118] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG278 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG279 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG279 divr16u::@1 + //SEG280 divr16u::@1 b1: - //SEG280 [119] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG281 [119] (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 - //SEG281 [120] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG282 [120] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG282 [121] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG283 [121] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG283 [122] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG284 [122] 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 - //SEG284 divr16u::@4 + //SEG285 divr16u::@4 b4: - //SEG285 [123] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG286 [123] (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 - //SEG286 [124] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG287 [124] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG287 [124] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG288 [124] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG288 divr16u::@2 + //SEG289 divr16u::@2 b2: - //SEG289 [125] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG290 [125] (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 - //SEG290 [126] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG291 [126] (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 - //SEG291 [127] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG292 [127] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -4022,14 +4028,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG292 divr16u::@5 + //SEG293 divr16u::@5 b5: - //SEG293 [128] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG294 [128] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG294 [129] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG295 [129] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -4037,27 +4043,27 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG295 [130] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG296 [130] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG296 [130] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG297 [130] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG297 [130] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG298 [130] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG298 divr16u::@3 + //SEG299 divr16u::@3 b3: - //SEG299 [131] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG300 [131] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG300 [132] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG301 [132] 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 - //SEG301 divr16u::@6 + //SEG302 divr16u::@6 b6: - //SEG302 [133] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG303 [133] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG303 divr16u::@return + //SEG304 divr16u::@return breturn: - //SEG304 [134] return + //SEG305 [134] return rts } print_hextab: .text "0123456789abcdef" @@ -4467,338 +4473,341 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER Score: 13527 -//SEG0 Basic Upstart +//SEG0 File Comments +// Linear table generator +// Work in progress towards a sinus generator +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label rem16u = $f .label print_char_cursor = 7 .label print_line_cursor = 3 -//SEG2 @begin -//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] -//SEG4 @29 -//SEG5 [2] call main -//SEG6 [4] phi from @29 to main [phi:@29->main] -//SEG7 [3] phi from @29 to @end [phi:@29->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @29 [phi:@begin->@29] +//SEG5 @29 +//SEG6 [2] call main +//SEG7 [4] phi from @29 to main [phi:@29->main] +//SEG8 [3] phi from @29 to @end [phi:@29->@end] +//SEG9 @end +//SEG10 main main: { .label i = 2 - //SEG10 [5] call lin16u_gen - //SEG11 [97] phi from main to lin16u_gen [phi:main->lin16u_gen] - //SEG12 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG11 [5] call lin16u_gen + //SEG12 [97] phi from main to lin16u_gen [phi:main->lin16u_gen] + //SEG13 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab1 sta lin16u_gen.lintab+1 - //SEG13 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 + //SEG14 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$22d sta lin16u_gen.min lda #>$22d sta lin16u_gen.min+1 - //SEG14 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG15 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$7461 sta lin16u_gen.max lda #>$7461 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG15 [6] phi from main to main::@3 [phi:main->main::@3] - //SEG16 main::@3 - //SEG17 [7] call lin16u_gen - //SEG18 [97] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] - //SEG19 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG16 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG17 main::@3 + //SEG18 [7] call lin16u_gen + //SEG19 [97] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] + //SEG20 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab2 sta lin16u_gen.lintab+1 - //SEG20 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#1] -- vwuz1=vwuc1 + //SEG21 [97] phi (word) lin16u_gen::min#3 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$79cb sta lin16u_gen.min lda #>$79cb sta lin16u_gen.min+1 - //SEG21 [97] phi (word) lin16u_gen::max#3 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG22 [97] phi (word) lin16u_gen::max#3 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$f781 sta lin16u_gen.max lda #>$f781 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG22 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG23 main::@4 - //SEG24 [9] call lin16u_gen - //SEG25 [97] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] - //SEG26 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab3#0 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 + //SEG23 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG24 main::@4 + //SEG25 [9] call lin16u_gen + //SEG26 [97] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] + //SEG27 [97] phi (word*) lin16u_gen::lintab#5 = (const word[20]) main::lintab3#0 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab3 sta lin16u_gen.lintab+1 - //SEG27 [97] phi (word) lin16u_gen::min#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->lin16u_gen#1] -- vwuz1=vbuc1 + //SEG28 [97] phi (word) lin16u_gen::min#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->lin16u_gen#1] -- vwuz1=vbuc1 lda #<0 sta lin16u_gen.min sta lin16u_gen.min+1 - //SEG28 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 25736 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 + //SEG29 [97] phi (word) lin16u_gen::max#3 = (word/signed word/dword/signed dword) 25736 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$6488 sta lin16u_gen.max lda #>$6488 sta lin16u_gen.max+1 jsr lin16u_gen - //SEG29 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - //SEG30 main::@5 - //SEG31 [11] call print_cls - //SEG32 [91] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG30 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG31 main::@5 + //SEG32 [11] call print_cls + //SEG33 [91] phi from main::@5 to print_cls [phi:main::@5->print_cls] jsr print_cls - //SEG33 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG34 main::@6 - //SEG35 [13] call print_str - //SEG36 [84] phi from main::@6 to print_str [phi:main::@6->print_str] - //SEG37 [84] phi (byte*) print_char_cursor#86 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@6->print_str#0] -- pbuz1=pbuc1 + //SEG34 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG35 main::@6 + //SEG36 [13] call print_str + //SEG37 [84] phi from main::@6 to print_str [phi:main::@6->print_str] + //SEG38 [84] phi (byte*) print_char_cursor#86 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@6->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG38 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 + //SEG39 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG39 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - //SEG40 main::@7 - //SEG41 [15] call print_word - //SEG42 [66] phi from main::@7 to print_word [phi:main::@7->print_word] - //SEG43 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 557 [phi:main::@7->print_word#0] -- vwuz1=vwuc1 + //SEG40 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG41 main::@7 + //SEG42 [15] call print_word + //SEG43 [66] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG44 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 557 [phi:main::@7->print_word#0] -- vwuz1=vwuc1 lda #<$22d sta print_word.w lda #>$22d sta print_word.w+1 jsr print_word - //SEG44 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] - //SEG45 main::@8 - //SEG46 [17] call print_str - //SEG47 [84] phi from main::@8 to print_str [phi:main::@8->print_str] - //SEG48 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@8->print_str#0] -- register_copy - //SEG49 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG45 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG46 main::@8 + //SEG47 [17] call print_str + //SEG48 [84] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG49 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@8->print_str#0] -- register_copy + //SEG50 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG50 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] - //SEG51 main::@9 - //SEG52 [19] call print_word - //SEG53 [66] phi from main::@9 to print_word [phi:main::@9->print_word] - //SEG54 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 31179 [phi:main::@9->print_word#0] -- vwuz1=vwuc1 + //SEG51 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG52 main::@9 + //SEG53 [19] call print_word + //SEG54 [66] phi from main::@9 to print_word [phi:main::@9->print_word] + //SEG55 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 31179 [phi:main::@9->print_word#0] -- vwuz1=vwuc1 lda #<$79cb sta print_word.w lda #>$79cb sta print_word.w+1 jsr print_word - //SEG55 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - //SEG56 main::@10 - //SEG57 [21] call print_str - //SEG58 [84] phi from main::@10 to print_str [phi:main::@10->print_str] - //SEG59 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy - //SEG60 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 + //SEG56 [20] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG57 main::@10 + //SEG58 [21] call print_str + //SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str] + //SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy + //SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG61 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] - //SEG62 main::@11 - //SEG63 [23] call print_word - //SEG64 [66] phi from main::@11 to print_word [phi:main::@11->print_word] - //SEG65 [66] phi (word) print_word::w#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->print_word#0] -- vwuz1=vbuc1 + //SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG63 main::@11 + //SEG64 [23] call print_word + //SEG65 [66] phi from main::@11 to print_word [phi:main::@11->print_word] + //SEG66 [66] phi (word) print_word::w#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@11->print_word#0] -- vwuz1=vbuc1 lda #<0 sta print_word.w sta print_word.w+1 jsr print_word - //SEG66 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] - //SEG67 main::@12 - //SEG68 [25] call print_ln - //SEG69 [61] phi from main::@12 to print_ln [phi:main::@12->print_ln] - //SEG70 [61] phi (byte*) print_line_cursor#21 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@12->print_ln#0] -- pbuz1=pbuc1 + //SEG67 [24] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG68 main::@12 + //SEG69 [25] call print_ln + //SEG70 [61] phi from main::@12 to print_ln [phi:main::@12->print_ln] + //SEG71 [61] phi (byte*) print_line_cursor#21 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@12->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG71 [26] phi from main::@12 to main::@1 [phi:main::@12->main::@1] - //SEG72 [26] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuz1=vbuc1 + //SEG72 [26] phi from main::@12 to main::@1 [phi:main::@12->main::@1] + //SEG73 [26] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@12->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG73 [26] phi from main::@21 to main::@1 [phi:main::@21->main::@1] - //SEG74 [26] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy - //SEG75 main::@1 + //SEG74 [26] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG75 [26] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy + //SEG76 main::@1 b1: - //SEG76 [27] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuxx=vbuz1 + //SEG77 [27] (byte) print_byte::b#2 ← (byte) main::i#10 -- vbuxx=vbuz1 ldx i - //SEG77 [28] (byte*~) print_char_cursor#91 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG78 [28] (byte*~) print_char_cursor#91 ← (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 - //SEG78 [29] call print_byte - //SEG79 [72] phi from main::@1 to print_byte [phi:main::@1->print_byte] - //SEG80 [72] phi (byte*) print_char_cursor#81 = (byte*~) print_char_cursor#91 [phi:main::@1->print_byte#0] -- register_copy - //SEG81 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy + //SEG79 [29] call print_byte + //SEG80 [72] phi from main::@1 to print_byte [phi:main::@1->print_byte] + //SEG81 [72] phi (byte*) print_char_cursor#81 = (byte*~) print_char_cursor#91 [phi:main::@1->print_byte#0] -- register_copy + //SEG82 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy jsr print_byte - //SEG82 [30] phi from main::@1 to main::@14 [phi:main::@1->main::@14] - //SEG83 main::@14 - //SEG84 [31] call print_str - //SEG85 [84] phi from main::@14 to print_str [phi:main::@14->print_str] - //SEG86 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy - //SEG87 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 + //SEG83 [30] phi from main::@1 to main::@14 [phi:main::@1->main::@14] + //SEG84 main::@14 + //SEG85 [31] call print_str + //SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str] + //SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy + //SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG88 main::@15 - //SEG89 [32] (word) print_word::w#3 ← *((const word[20]) main::lintab1#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG89 main::@15 + //SEG90 [32] (word) print_word::w#3 ← *((const word[20]) main::lintab1#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab1,y sta print_word.w lda lintab1+1,y sta print_word.w+1 - //SEG90 [33] call print_word - //SEG91 [66] phi from main::@15 to print_word [phi:main::@15->print_word] - //SEG92 [66] phi (word) print_word::w#10 = (word) print_word::w#3 [phi:main::@15->print_word#0] -- register_copy + //SEG91 [33] call print_word + //SEG92 [66] phi from main::@15 to print_word [phi:main::@15->print_word] + //SEG93 [66] phi (word) print_word::w#10 = (word) print_word::w#3 [phi:main::@15->print_word#0] -- register_copy jsr print_word - //SEG93 [34] phi from main::@15 to main::@16 [phi:main::@15->main::@16] - //SEG94 main::@16 - //SEG95 [35] call print_str - //SEG96 [84] phi from main::@16 to print_str [phi:main::@16->print_str] - //SEG97 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy - //SEG98 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 + //SEG94 [34] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG95 main::@16 + //SEG96 [35] call print_str + //SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str] + //SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy + //SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG99 main::@17 - //SEG100 [36] (word) print_word::w#4 ← *((const word[20]) main::lintab2#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG100 main::@17 + //SEG101 [36] (word) print_word::w#4 ← *((const word[20]) main::lintab2#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab2,y sta print_word.w lda lintab2+1,y sta print_word.w+1 - //SEG101 [37] call print_word - //SEG102 [66] phi from main::@17 to print_word [phi:main::@17->print_word] - //SEG103 [66] phi (word) print_word::w#10 = (word) print_word::w#4 [phi:main::@17->print_word#0] -- register_copy + //SEG102 [37] call print_word + //SEG103 [66] phi from main::@17 to print_word [phi:main::@17->print_word] + //SEG104 [66] phi (word) print_word::w#10 = (word) print_word::w#4 [phi:main::@17->print_word#0] -- register_copy jsr print_word - //SEG104 [38] phi from main::@17 to main::@18 [phi:main::@17->main::@18] - //SEG105 main::@18 - //SEG106 [39] call print_str - //SEG107 [84] phi from main::@18 to print_str [phi:main::@18->print_str] - //SEG108 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy - //SEG109 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + //SEG105 [38] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG106 main::@18 + //SEG107 [39] call print_str + //SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str] + //SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy + //SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str - //SEG110 main::@19 - //SEG111 [40] (word) print_word::w#5 ← *((const word[20]) main::lintab3#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG111 main::@19 + //SEG112 [40] (word) print_word::w#5 ← *((const word[20]) main::lintab3#0 + (byte) main::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda lintab3,y sta print_word.w lda lintab3+1,y sta print_word.w+1 - //SEG112 [41] call print_word - //SEG113 [66] phi from main::@19 to print_word [phi:main::@19->print_word] - //SEG114 [66] phi (word) print_word::w#10 = (word) print_word::w#5 [phi:main::@19->print_word#0] -- register_copy + //SEG113 [41] call print_word + //SEG114 [66] phi from main::@19 to print_word [phi:main::@19->print_word] + //SEG115 [66] phi (word) print_word::w#10 = (word) print_word::w#5 [phi:main::@19->print_word#0] -- register_copy jsr print_word - //SEG115 [42] phi from main::@19 to main::@20 [phi:main::@19->main::@20] - //SEG116 main::@20 - //SEG117 [43] call print_ln - //SEG118 [61] phi from main::@20 to print_ln [phi:main::@20->print_ln] - //SEG119 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy + //SEG116 [42] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + //SEG117 main::@20 + //SEG118 [43] call print_ln + //SEG119 [61] phi from main::@20 to print_ln [phi:main::@20->print_ln] + //SEG120 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy jsr print_ln - //SEG120 main::@21 - //SEG121 [44] (byte) main::i#1 ← (byte) main::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG121 main::@21 + //SEG122 [44] (byte) main::i#1 ← (byte) main::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG122 [45] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG123 [45] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 cmp #$14*2 bcc b1 - //SEG123 main::@2 - //SEG124 [46] (byte*~) print_char_cursor#100 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG124 main::@2 + //SEG125 [46] (byte*~) print_char_cursor#100 ← (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 - //SEG125 [47] call print_str - //SEG126 [84] phi from main::@2 to print_str [phi:main::@2->print_str] - //SEG127 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy - //SEG128 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + //SEG126 [47] call print_str + //SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str] + //SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy + //SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #str6 sta print_str.str+1 jsr print_str - //SEG129 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] - //SEG130 main::@22 - //SEG131 [49] call print_word - //SEG132 [66] phi from main::@22 to print_word [phi:main::@22->print_word] - //SEG133 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 29793 [phi:main::@22->print_word#0] -- vwuz1=vwuc1 + //SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] + //SEG131 main::@22 + //SEG132 [49] call print_word + //SEG133 [66] phi from main::@22 to print_word [phi:main::@22->print_word] + //SEG134 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 29793 [phi:main::@22->print_word#0] -- vwuz1=vwuc1 lda #<$7461 sta print_word.w lda #>$7461 sta print_word.w+1 jsr print_word - //SEG134 [50] phi from main::@22 to main::@23 [phi:main::@22->main::@23] - //SEG135 main::@23 - //SEG136 [51] call print_str - //SEG137 [84] phi from main::@23 to print_str [phi:main::@23->print_str] - //SEG138 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy - //SEG139 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 + //SEG135 [50] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG136 main::@23 + //SEG137 [51] call print_str + //SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str] + //SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy + //SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 lda #str7 sta print_str.str+1 jsr print_str - //SEG140 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] - //SEG141 main::@24 - //SEG142 [53] call print_word - //SEG143 [66] phi from main::@24 to print_word [phi:main::@24->print_word] - //SEG144 [66] phi (word) print_word::w#10 = (word/dword/signed dword) 63361 [phi:main::@24->print_word#0] -- vwuz1=vwuc1 + //SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG142 main::@24 + //SEG143 [53] call print_word + //SEG144 [66] phi from main::@24 to print_word [phi:main::@24->print_word] + //SEG145 [66] phi (word) print_word::w#10 = (word/dword/signed dword) 63361 [phi:main::@24->print_word#0] -- vwuz1=vwuc1 lda #<$f781 sta print_word.w lda #>$f781 sta print_word.w+1 jsr print_word - //SEG145 [54] phi from main::@24 to main::@25 [phi:main::@24->main::@25] - //SEG146 main::@25 - //SEG147 [55] call print_str - //SEG148 [84] phi from main::@25 to print_str [phi:main::@25->print_str] - //SEG149 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy - //SEG150 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 + //SEG146 [54] phi from main::@24 to main::@25 [phi:main::@24->main::@25] + //SEG147 main::@25 + //SEG148 [55] call print_str + //SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str] + //SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy + //SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 lda #str8 sta print_str.str+1 jsr print_str - //SEG151 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] - //SEG152 main::@26 - //SEG153 [57] call print_word - //SEG154 [66] phi from main::@26 to print_word [phi:main::@26->print_word] - //SEG155 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 25736 [phi:main::@26->print_word#0] -- vwuz1=vwuc1 + //SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] + //SEG153 main::@26 + //SEG154 [57] call print_word + //SEG155 [66] phi from main::@26 to print_word [phi:main::@26->print_word] + //SEG156 [66] phi (word) print_word::w#10 = (word/signed word/dword/signed dword) 25736 [phi:main::@26->print_word#0] -- vwuz1=vwuc1 lda #<$6488 sta print_word.w lda #>$6488 sta print_word.w+1 jsr print_word - //SEG156 [58] phi from main::@26 to main::@27 [phi:main::@26->main::@27] - //SEG157 main::@27 - //SEG158 [59] call print_ln - //SEG159 [61] phi from main::@27 to print_ln [phi:main::@27->print_ln] - //SEG160 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@27->print_ln#0] -- register_copy + //SEG157 [58] phi from main::@26 to main::@27 [phi:main::@26->main::@27] + //SEG158 main::@27 + //SEG159 [59] call print_ln + //SEG160 [61] phi from main::@27 to print_ln [phi:main::@27->print_ln] + //SEG161 [61] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#1 [phi:main::@27->print_ln#0] -- register_copy jsr print_ln - //SEG161 main::@return - //SEG162 [60] return + //SEG162 main::@return + //SEG163 [60] return rts str: .text " @" str1: .text " @" @@ -4813,14 +4822,14 @@ main: { lintab2: .fill 2*$14, 0 lintab3: .fill 2*$14, 0 } -//SEG163 print_ln +//SEG164 print_ln // Print a newline print_ln: { - //SEG164 [62] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG165 [62] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG166 print_ln::@1 + //SEG165 [62] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG166 [62] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG167 print_ln::@1 b1: - //SEG167 [63] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG168 [63] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -4828,7 +4837,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG168 [64] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG169 [64] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -4837,153 +4846,153 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG169 print_ln::@return - //SEG170 [65] return + //SEG170 print_ln::@return + //SEG171 [65] return rts } -//SEG171 print_word +//SEG172 print_word // Print a word as HEX print_word: { .label w = 5 - //SEG172 [67] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuxx=_hi_vwuz1 + //SEG173 [67] (byte) print_byte::b#0 ← > (word) print_word::w#10 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG173 [68] call print_byte - //SEG174 [72] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG175 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG176 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG174 [68] call print_byte + //SEG175 [72] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG176 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG177 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG177 print_word::@1 - //SEG178 [69] (byte) print_byte::b#1 ← < (word) print_word::w#10 -- vbuxx=_lo_vwuz1 + //SEG178 print_word::@1 + //SEG179 [69] (byte) print_byte::b#1 ← < (word) print_word::w#10 -- vbuxx=_lo_vwuz1 lda w tax - //SEG179 [70] call print_byte - //SEG180 [72] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG181 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG182 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG180 [70] call print_byte + //SEG181 [72] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG182 [72] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG183 [72] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG183 print_word::@return - //SEG184 [71] return + //SEG184 print_word::@return + //SEG185 [71] return rts } -//SEG185 print_byte +//SEG186 print_byte // Print a byte as HEX print_byte: { - //SEG186 [73] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG187 [73] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG187 [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG188 [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG188 [75] call print_char - //SEG189 [80] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG190 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#81 [phi:print_byte->print_char#0] -- register_copy - //SEG191 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG189 [75] call print_char + //SEG190 [80] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG191 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#81 [phi:print_byte->print_char#0] -- register_copy + //SEG192 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG192 print_byte::@1 - //SEG193 [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG193 print_byte::@1 + //SEG194 [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG194 [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG195 [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG195 [78] call print_char - //SEG196 [80] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG197 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG198 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG196 [78] call print_char + //SEG197 [80] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG198 [80] phi (byte*) print_char_cursor#50 = (byte*) print_char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG199 [80] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG199 print_byte::@return - //SEG200 [79] return + //SEG200 print_byte::@return + //SEG201 [79] return rts } -//SEG201 print_char +//SEG202 print_char // Print a single char print_char: { - //SEG202 [81] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa + //SEG203 [81] *((byte*) print_char_cursor#50) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG203 [82] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#50 -- pbuz1=_inc_pbuz1 + //SEG204 [82] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#50 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG204 print_char::@return - //SEG205 [83] return + //SEG205 print_char::@return + //SEG206 [83] return rts } -//SEG206 print_str +//SEG207 print_str // Print a zero-terminated string print_str: { .label str = 5 - //SEG207 [85] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG208 [85] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#86 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG209 [85] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG210 print_str::@1 + //SEG208 [85] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG209 [85] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#86 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG210 [85] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG211 print_str::@1 b1: - //SEG211 [86] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG212 [86] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG212 print_str::@return - //SEG213 [87] return + //SEG213 print_str::@return + //SEG214 [87] return rts - //SEG214 print_str::@2 + //SEG215 print_str::@2 b2: - //SEG215 [88] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG216 [88] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG216 [89] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG217 [89] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG217 [90] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG218 [90] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG218 print_cls +//SEG219 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG219 [92] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG220 [92] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG220 [92] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG221 [92] 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 - //SEG221 [92] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG222 [92] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG223 print_cls::@1 + //SEG222 [92] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG223 [92] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG224 print_cls::@1 b1: - //SEG224 [93] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG225 [93] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG225 [94] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG226 [94] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG226 [95] 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 + //SEG227 [95] 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 - //SEG227 print_cls::@return - //SEG228 [96] return + //SEG228 print_cls::@return + //SEG229 [96] return rts } -//SEG229 lin16u_gen +//SEG230 lin16u_gen // Generate word linear table // lintab - the table to generate into // length - the number of points in a total sinus wavelength (the size of the table) @@ -4998,7 +5007,7 @@ lin16u_gen: { .label i = 3 .label max = 3 .label min = 5 - //SEG230 [98] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2 + //SEG231 [98] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2 lda ampl sec sbc min @@ -5006,45 +5015,45 @@ lin16u_gen: { lda ampl+1 sbc min+1 sta ampl+1 - //SEG231 [99] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 - //SEG232 [100] call divr16u - //SEG233 [117] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] - //SEG234 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 + //SEG232 [99] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 + //SEG233 [100] call divr16u + //SEG234 [117] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + //SEG235 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 lda #<$14-1 sta divr16u.divisor lda #>$14-1 sta divr16u.divisor+1 - //SEG235 [117] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy - //SEG236 [117] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 + //SEG236 [117] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy + //SEG237 [117] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG237 [101] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG238 lin16u_gen::@3 - //SEG239 [102] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG238 [101] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG239 lin16u_gen::@3 + //SEG240 [102] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta stepi lda divr16u.return+1 sta stepi+1 - //SEG240 [103] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG241 [104] call divr16u - //SEG242 [117] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] - //SEG243 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 + //SEG241 [103] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG242 [104] call divr16u + //SEG243 [117] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + //SEG244 [117] phi (word) divr16u::divisor#6 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 lda #<$14-1 sta divr16u.divisor lda #>$14-1 sta divr16u.divisor+1 - //SEG244 [117] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 + //SEG245 [117] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.dividend sta divr16u.dividend+1 - //SEG245 [117] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy + //SEG246 [117] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy jsr divr16u - //SEG246 [105] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG247 lin16u_gen::@4 - //SEG248 [106] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 - //SEG249 [107] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG247 [105] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG248 lin16u_gen::@4 + //SEG249 [106] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 + //SEG250 [107] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 lda stepi sta step+2 lda stepi+1 @@ -5053,7 +5062,7 @@ lin16u_gen: { sta step lda stepf+1 sta step+1 - //SEG250 [108] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 -- vduz1=vwuz2_dword_vbuc1 + //SEG251 [108] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 -- vduz1=vwuz2_dword_vbuc1 lda #<0 sta val sta val+1 @@ -5061,32 +5070,32 @@ lin16u_gen: { sta val+2 lda min+1 sta val+3 - //SEG251 [109] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] - //SEG252 [109] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 + //SEG252 [109] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + //SEG253 [109] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG253 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#5 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy - //SEG254 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy - //SEG255 [109] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] - //SEG256 [109] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy - //SEG257 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy - //SEG258 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy - //SEG259 lin16u_gen::@1 + //SEG254 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#5 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + //SEG255 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy + //SEG256 [109] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] + //SEG257 [109] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy + //SEG258 [109] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy + //SEG259 [109] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy + //SEG260 lin16u_gen::@1 b1: - //SEG260 [110] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 + //SEG261 [110] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 lda val+2 sta _5 lda val+3 sta _5+1 - //SEG261 [111] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$5 -- _deref_pwuz1=vwuz2 + //SEG262 [111] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$5 -- _deref_pwuz1=vwuz2 ldy #0 lda _5 sta (lintab),y iny lda _5+1 sta (lintab),y - //SEG262 [112] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG263 [112] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda val clc adc step @@ -5100,7 +5109,7 @@ lin16u_gen: { lda val+3 adc step+3 sta val+3 - //SEG263 [113] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwuz1=pwuz1_plus_2 + //SEG264 [113] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwuz1=pwuz1_plus_2 lda lintab clc adc #2 @@ -5108,12 +5117,12 @@ lin16u_gen: { bcc !+ inc lintab+1 !: - //SEG264 [114] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG265 [114] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG265 [115] if((word) lin16u_gen::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20) goto lin16u_gen::@1 -- vwuz1_lt_vbuc1_then_la1 + //SEG266 [115] if((word) lin16u_gen::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20) goto lin16u_gen::@1 -- vwuz1_lt_vbuc1_then_la1 lda i+1 cmp #>$14 bcc b1 @@ -5122,11 +5131,11 @@ lin16u_gen: { cmp #<$14 bcc b1 !: - //SEG266 lin16u_gen::@return - //SEG267 [116] return + //SEG267 lin16u_gen::@return + //SEG268 [116] return rts } -//SEG268 divr16u +//SEG269 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5137,48 +5146,48 @@ divr16u: { .label quotient = $11 .label return = $11 .label divisor = $d - //SEG269 [118] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG270 [118] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG270 [118] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG271 [118] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG271 [118] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG272 [118] 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 - //SEG272 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG273 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG274 [118] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG275 [118] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG276 [118] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG277 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG278 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG279 divr16u::@1 + //SEG273 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG274 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG275 [118] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG276 [118] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG277 [118] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG278 [118] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG279 [118] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG280 divr16u::@1 b1: - //SEG280 [119] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG281 [119] (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 - //SEG281 [120] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG282 [120] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG282 [121] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG283 [121] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG283 [122] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG284 [122] 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 - //SEG284 divr16u::@4 - //SEG285 [123] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG285 divr16u::@4 + //SEG286 [123] (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 - //SEG286 [124] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG287 [124] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG288 divr16u::@2 + //SEG287 [124] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG288 [124] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG289 divr16u::@2 b2: - //SEG289 [125] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG290 [125] (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 - //SEG290 [126] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG291 [126] (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 - //SEG291 [127] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG292 [127] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3 @@ -5187,13 +5196,13 @@ divr16u: { cmp divisor bcc b3 !: - //SEG292 divr16u::@5 - //SEG293 [128] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG293 divr16u::@5 + //SEG294 [128] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG294 [129] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG295 [129] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -5201,20 +5210,20 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG295 [130] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG296 [130] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG297 [130] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG298 divr16u::@3 + //SEG296 [130] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG297 [130] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG298 [130] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG299 divr16u::@3 b3: - //SEG299 [131] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG300 [131] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG300 [132] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG301 [132] 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 - //SEG301 divr16u::@6 - //SEG302 [133] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG303 divr16u::@return - //SEG304 [134] return + //SEG302 divr16u::@6 + //SEG303 [133] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG304 divr16u::@return + //SEG305 [134] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/literals.log b/src/test/ref/literals.log index a5f16d62f..e33eaa01a 100644 --- a/src/test/ref/literals.log +++ b/src/test/ref/literals.log @@ -178,67 +178,68 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .const char = 'a' .const num = 1 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label i = 2 - //SEG9 [4] *((const byte*) SCREEN#0) ← (const byte) char#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (const byte) char#0 -- _deref_pbuc1=vbuc2 lda #char sta SCREEN - //SEG10 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) num#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) num#0 -- _deref_pbuc1=vbuc2 lda #num sta SCREEN+2 - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda str,y sta SCREEN+4,y - //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG18 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda nums,y sta SCREEN+9,y - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [11] return + //SEG22 [11] return rts } nums: .byte 2, 3, 4, 5 @@ -264,62 +265,63 @@ Uplifting [main] best 395 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 395 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .const char = 'a' .const num = 1 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (const byte) char#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (const byte) char#0 -- _deref_pbuc1=vbuc2 lda #char sta SCREEN - //SEG10 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) num#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) num#0 -- _deref_pbuc1=vbuc2 lda #num sta SCREEN+2 - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda str,x sta SCREEN+4,x - //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG18 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda nums,x sta SCREEN+9,x - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [11] return + //SEG22 [11] return rts } nums: .byte 2, 3, 4, 5 @@ -376,48 +378,49 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 293 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .const char = 'a' .const num = 1 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (const byte) char#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (const byte) char#0 -- _deref_pbuc1=vbuc2 lda #char sta SCREEN - //SEG10 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) num#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) num#0 -- _deref_pbuc1=vbuc2 lda #num sta SCREEN+2 - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG12 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG13 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 main::@1 + //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda str,x sta SCREEN+4,x - //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG18 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda nums,x sta SCREEN+9,x - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG20 main::@return - //SEG21 [11] return + //SEG21 main::@return + //SEG22 [11] return rts } nums: .byte 2, 3, 4, 5 diff --git a/src/test/ref/liverange-call-problem.asm b/src/test/ref/liverange-call-problem.asm index 3b07d99de..da894a711 100644 --- a/src/test/ref/liverange-call-problem.asm +++ b/src/test/ref/liverange-call-problem.asm @@ -1,3 +1,5 @@ +// Live ranges were not functioning properly, when multiple method calls were chained - each modifying different vars. +// w1 and w2 ended up having the same zero-page register as their live range was not propagated properly .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/liverange-call-problem.log b/src/test/ref/liverange-call-problem.log index 26cb8064d..9d08a27fc 100644 --- a/src/test/ref/liverange-call-problem.log +++ b/src/test/ref/liverange-call-problem.log @@ -241,104 +241,107 @@ Allocated zp ZP_WORD:2 [ w2#10 w2#11 ] Allocated zp ZP_WORD:4 [ w1#10 w1#11 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Live ranges were not functioning properly, when multiple method calls were chained - each modifying different vars. +// w1 and w2 ended up having the same zero-page register as their live range was not propagated properly +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label w1 = 4 .label w2 = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call incw1 - //SEG11 [16] phi from main to incw1 [phi:main->incw1] + //SEG11 [5] call incw1 + //SEG12 [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 + //SEG13 [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 - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [7] call incw2 - //SEG16 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] + //SEG16 [7] call incw2 + //SEG17 [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 + //SEG18 [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 - //SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [9] call incw1 - //SEG21 [16] phi from main::@2 to incw1 [phi:main::@2->incw1] + //SEG21 [9] call incw1 + //SEG22 [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 + //SEG23 [16] phi (word) w1#10 = (word) w1#11 [phi:main::@2->incw1#0] -- register_copy jsr incw1 - //SEG23 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG24 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG24 main::@3 + //SEG25 main::@3 b3: - //SEG25 [11] call incw2 - //SEG26 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] + //SEG26 [11] call incw2 + //SEG27 [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 + //SEG28 [13] phi (word) w2#10 = (word) w2#11 [phi:main::@3->incw2#0] -- register_copy jsr incw2 jmp breturn - //SEG28 main::@return + //SEG29 main::@return breturn: - //SEG29 [12] return + //SEG30 [12] return rts } -//SEG30 incw2 +//SEG31 incw2 incw2: { - //SEG31 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 + //SEG32 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 inc w2 bne !+ inc w2+1 !: jmp breturn - //SEG32 incw2::@return + //SEG33 incw2::@return breturn: - //SEG33 [15] return + //SEG34 [15] return rts } -//SEG34 incw1 +//SEG35 incw1 incw1: { - //SEG35 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 + //SEG36 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 inc w1 bne !+ inc w1+1 !: jmp breturn - //SEG36 incw1::@return + //SEG37 incw1::@return breturn: - //SEG37 [18] return + //SEG38 [18] return rts } @@ -358,104 +361,107 @@ Uplifting [incw1] best 116 combination Uplifting [incw2] best 116 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Live ranges were not functioning properly, when multiple method calls were chained - each modifying different vars. +// w1 and w2 ended up having the same zero-page register as their live range was not propagated properly +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label w1 = 4 .label w2 = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call incw1 - //SEG11 [16] phi from main to incw1 [phi:main->incw1] + //SEG11 [5] call incw1 + //SEG12 [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 + //SEG13 [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 - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [7] call incw2 - //SEG16 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] + //SEG16 [7] call incw2 + //SEG17 [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 + //SEG18 [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 - //SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [9] call incw1 - //SEG21 [16] phi from main::@2 to incw1 [phi:main::@2->incw1] + //SEG21 [9] call incw1 + //SEG22 [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 + //SEG23 [16] phi (word) w1#10 = (word) w1#11 [phi:main::@2->incw1#0] -- register_copy jsr incw1 - //SEG23 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG24 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG24 main::@3 + //SEG25 main::@3 b3: - //SEG25 [11] call incw2 - //SEG26 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] + //SEG26 [11] call incw2 + //SEG27 [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 + //SEG28 [13] phi (word) w2#10 = (word) w2#11 [phi:main::@3->incw2#0] -- register_copy jsr incw2 jmp breturn - //SEG28 main::@return + //SEG29 main::@return breturn: - //SEG29 [12] return + //SEG30 [12] return rts } -//SEG30 incw2 +//SEG31 incw2 incw2: { - //SEG31 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 + //SEG32 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 inc w2 bne !+ inc w2+1 !: jmp breturn - //SEG32 incw2::@return + //SEG33 incw2::@return breturn: - //SEG33 [15] return + //SEG34 [15] return rts } -//SEG34 incw1 +//SEG35 incw1 incw1: { - //SEG35 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 + //SEG36 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 inc w1 bne !+ inc w1+1 !: jmp breturn - //SEG36 incw1::@return + //SEG37 incw1::@return breturn: - //SEG37 [18] return + //SEG38 [18] return rts } @@ -525,74 +531,77 @@ zp ZP_WORD:4 [ w1#10 w1#11 ] FINAL ASSEMBLER Score: 82 -//SEG0 Basic Upstart +//SEG0 File Comments +// Live ranges were not functioning properly, when multiple method calls were chained - each modifying different vars. +// w1 and w2 ended up having the same zero-page register as their live range was not propagated properly +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label w1 = 4 .label w2 = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call 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 + //SEG11 [5] call incw1 + //SEG12 [16] phi from main to incw1 [phi:main->incw1] + //SEG13 [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 - //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 + //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 main::@1 + //SEG16 [7] call incw2 + //SEG17 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] + //SEG18 [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 - //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 + //SEG19 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 main::@2 + //SEG21 [9] call incw1 + //SEG22 [16] phi from main::@2 to incw1 [phi:main::@2->incw1] + //SEG23 [16] phi (word) w1#10 = (word) w1#11 [phi:main::@2->incw1#0] -- register_copy jsr incw1 - //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 + //SEG24 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG25 main::@3 + //SEG26 [11] call incw2 + //SEG27 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] + //SEG28 [13] phi (word) w2#10 = (word) w2#11 [phi:main::@3->incw2#0] -- register_copy jsr incw2 - //SEG28 main::@return - //SEG29 [12] return + //SEG29 main::@return + //SEG30 [12] return rts } -//SEG30 incw2 +//SEG31 incw2 incw2: { - //SEG31 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 + //SEG32 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 inc w2 bne !+ inc w2+1 !: - //SEG32 incw2::@return - //SEG33 [15] return + //SEG33 incw2::@return + //SEG34 [15] return rts } -//SEG34 incw1 +//SEG35 incw1 incw1: { - //SEG35 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 + //SEG36 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 inc w1 bne !+ inc w1+1 !: - //SEG36 incw1::@return - //SEG37 [18] return + //SEG37 incw1::@return + //SEG38 [18] return rts } diff --git a/src/test/ref/liverange.log b/src/test/ref/liverange.log index 838a3b2dc..eaaabf067 100644 --- a/src/test/ref/liverange.log +++ b/src/test/ref/liverange.log @@ -243,104 +243,105 @@ Allocated zp ZP_BYTE:8 [ main::a#2 ] Allocated zp ZP_BYTE:9 [ inci::return#2 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label i = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label SCREEN = $400 .label _0 = 4 .label _2 = 7 .label a = 5 .label a_2 = 8 - //SEG10 [5] call inci - //SEG11 [16] phi from main to inci [phi:main->inci] + //SEG11 [5] call inci + //SEG12 [16] phi from main to inci [phi:main->inci] inci_from_main: - //SEG12 [16] phi (byte) i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inci#0] -- vbuz1=vbuc1 + //SEG13 [16] phi (byte) i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inci#0] -- vbuz1=vbuc1 lda #0 sta i jsr inci - //SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 -- vbuz1=vbuz2 + //SEG14 [6] (byte) inci::return#0 ← (byte) inci::return#2 -- vbuz1=vbuz2 lda inci.return_2 sta inci.return jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 -- vbuz1=vbuz2 + //SEG16 [7] (byte~) main::$0 ← (byte) inci::return#0 -- vbuz1=vbuz2 lda inci.return sta _0 - //SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$0 -- vbuz1=vbuc1_plus_vbuz2 + //SEG17 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$0 -- vbuz1=vbuc1_plus_vbuz2 lda #4 clc adc _0 sta a - //SEG17 [9] call inci - //SEG18 [16] phi from main::@1 to inci [phi:main::@1->inci] + //SEG18 [9] call inci + //SEG19 [16] phi from main::@1 to inci [phi:main::@1->inci] inci_from_b1: - //SEG19 [16] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy + //SEG20 [16] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy jsr inci - //SEG20 [10] (byte) inci::return#1 ← (byte) inci::return#2 -- vbuz1=vbuz2 + //SEG21 [10] (byte) inci::return#1 ← (byte) inci::return#2 -- vbuz1=vbuz2 lda inci.return_2 sta inci.return_1 jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [11] (byte~) main::$2 ← (byte) inci::return#1 -- vbuz1=vbuz2 + //SEG23 [11] (byte~) main::$2 ← (byte) inci::return#1 -- vbuz1=vbuz2 lda inci.return_1 sta _2 - //SEG23 [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG24 [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuz1=vbuz2_plus_vbuz3 lda a clc adc _2 sta a_2 - //SEG24 [13] *((const byte*) main::SCREEN#0) ← (byte) i#11 -- _deref_pbuc1=vbuz1 + //SEG25 [13] *((const byte*) main::SCREEN#0) ← (byte) i#11 -- _deref_pbuc1=vbuz1 lda i sta SCREEN - //SEG25 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuz1 + //SEG26 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuz1 lda a_2 sta SCREEN+1 jmp breturn - //SEG26 main::@return + //SEG27 main::@return breturn: - //SEG27 [15] return + //SEG28 [15] return rts } -//SEG28 inci +//SEG29 inci inci: { .label return = 3 .label return_1 = 6 .label return_2 = 9 - //SEG29 [17] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz1_plus_vbuc1 + //SEG30 [17] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz1_plus_vbuc1 lda #7 clc adc i sta i - //SEG30 [18] (byte) inci::return#2 ← (byte) i#11 -- vbuz1=vbuz2 + //SEG31 [18] (byte) inci::return#2 ← (byte) i#11 -- vbuz1=vbuz2 lda i sta return_2 jmp breturn - //SEG31 inci::@return + //SEG32 inci::@return breturn: - //SEG32 [19] return + //SEG33 [19] return rts } @@ -376,83 +377,84 @@ Uplifting [main] best 82 combination zp ZP_BYTE:5 [ main::a#1 ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ main::a#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label SCREEN = $400 .label a = 2 - //SEG10 [5] call inci - //SEG11 [16] phi from main to inci [phi:main->inci] + //SEG11 [5] call inci + //SEG12 [16] phi from main to inci [phi:main->inci] inci_from_main: - //SEG12 [16] phi (byte) i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inci#0] -- vbuyy=vbuc1 + //SEG13 [16] phi (byte) i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inci#0] -- vbuyy=vbuc1 ldy #0 jsr inci - //SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 + //SEG14 [6] (byte) inci::return#0 ← (byte) inci::return#2 jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 - //SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$0 -- vbuz1=vbuc1_plus_vbuaa + //SEG16 [7] (byte~) main::$0 ← (byte) inci::return#0 + //SEG17 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$0 -- vbuz1=vbuc1_plus_vbuaa clc adc #4 sta a - //SEG17 [9] call inci - //SEG18 [16] phi from main::@1 to inci [phi:main::@1->inci] + //SEG18 [9] call inci + //SEG19 [16] phi from main::@1 to inci [phi:main::@1->inci] inci_from_b1: - //SEG19 [16] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy + //SEG20 [16] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy jsr inci - //SEG20 [10] (byte) inci::return#1 ← (byte) inci::return#2 + //SEG21 [10] (byte) inci::return#1 ← (byte) inci::return#2 jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [11] (byte~) main::$2 ← (byte) inci::return#1 - //SEG23 [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuxx=vbuz1_plus_vbuaa + //SEG23 [11] (byte~) main::$2 ← (byte) inci::return#1 + //SEG24 [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuxx=vbuz1_plus_vbuaa clc adc a tax - //SEG24 [13] *((const byte*) main::SCREEN#0) ← (byte) i#11 -- _deref_pbuc1=vbuyy + //SEG25 [13] *((const byte*) main::SCREEN#0) ← (byte) i#11 -- _deref_pbuc1=vbuyy sty SCREEN - //SEG25 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuxx + //SEG26 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuxx stx SCREEN+1 jmp breturn - //SEG26 main::@return + //SEG27 main::@return breturn: - //SEG27 [15] return + //SEG28 [15] return rts } -//SEG28 inci +//SEG29 inci inci: { - //SEG29 [17] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuyy_plus_vbuc1 + //SEG30 [17] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuyy_plus_vbuc1 tya clc adc #7 tay - //SEG30 [18] (byte) inci::return#2 ← (byte) i#11 -- vbuaa=vbuyy + //SEG31 [18] (byte) inci::return#2 ← (byte) i#11 -- vbuaa=vbuyy tya jmp breturn - //SEG31 inci::@return + //SEG32 inci::@return breturn: - //SEG32 [19] return + //SEG33 [19] return rts } @@ -521,64 +523,65 @@ reg byte a [ inci::return#2 ] FINAL ASSEMBLER Score: 58 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 .label a = 2 - //SEG10 [5] call inci - //SEG11 [16] phi from main to inci [phi:main->inci] - //SEG12 [16] phi (byte) i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inci#0] -- vbuyy=vbuc1 + //SEG11 [5] call inci + //SEG12 [16] phi from main to inci [phi:main->inci] + //SEG13 [16] phi (byte) i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inci#0] -- vbuyy=vbuc1 ldy #0 jsr inci - //SEG13 [6] (byte) inci::return#0 ← (byte) inci::return#2 - //SEG14 main::@1 - //SEG15 [7] (byte~) main::$0 ← (byte) inci::return#0 - //SEG16 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$0 -- vbuz1=vbuc1_plus_vbuaa + //SEG14 [6] (byte) inci::return#0 ← (byte) inci::return#2 + //SEG15 main::@1 + //SEG16 [7] (byte~) main::$0 ← (byte) inci::return#0 + //SEG17 [8] (byte) main::a#1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$0 -- vbuz1=vbuc1_plus_vbuaa clc adc #4 sta a - //SEG17 [9] call inci - //SEG18 [16] phi from main::@1 to inci [phi:main::@1->inci] - //SEG19 [16] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy + //SEG18 [9] call inci + //SEG19 [16] phi from main::@1 to inci [phi:main::@1->inci] + //SEG20 [16] phi (byte) i#10 = (byte) i#11 [phi:main::@1->inci#0] -- register_copy jsr inci - //SEG20 [10] (byte) inci::return#1 ← (byte) inci::return#2 - //SEG21 main::@2 - //SEG22 [11] (byte~) main::$2 ← (byte) inci::return#1 - //SEG23 [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuxx=vbuz1_plus_vbuaa + //SEG21 [10] (byte) inci::return#1 ← (byte) inci::return#2 + //SEG22 main::@2 + //SEG23 [11] (byte~) main::$2 ← (byte) inci::return#1 + //SEG24 [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 -- vbuxx=vbuz1_plus_vbuaa clc adc a tax - //SEG24 [13] *((const byte*) main::SCREEN#0) ← (byte) i#11 -- _deref_pbuc1=vbuyy + //SEG25 [13] *((const byte*) main::SCREEN#0) ← (byte) i#11 -- _deref_pbuc1=vbuyy sty SCREEN - //SEG25 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuxx + //SEG26 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a#2 -- _deref_pbuc1=vbuxx stx SCREEN+1 - //SEG26 main::@return - //SEG27 [15] return + //SEG27 main::@return + //SEG28 [15] return rts } -//SEG28 inci +//SEG29 inci inci: { - //SEG29 [17] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuyy_plus_vbuc1 + //SEG30 [17] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuyy=vbuyy_plus_vbuc1 tya clc adc #7 tay - //SEG30 [18] (byte) inci::return#2 ← (byte) i#11 -- vbuaa=vbuyy + //SEG31 [18] (byte) inci::return#2 ← (byte) i#11 -- vbuaa=vbuyy tya - //SEG31 inci::@return - //SEG32 [19] return + //SEG32 inci::@return + //SEG33 [19] return rts } diff --git a/src/test/ref/local-string.asm b/src/test/ref/local-string.asm index 9a9795840..f0e1cdcda 100644 --- a/src/test/ref/local-string.asm +++ b/src/test/ref/local-string.asm @@ -1,7 +1,7 @@ +// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string main: { .label screen = $400 ldx #0 diff --git a/src/test/ref/local-string.log b/src/test/ref/local-string.log index 13ab5d4d4..c197bd630 100644 --- a/src/test/ref/local-string.log +++ b/src/test/ref/local-string.log @@ -127,61 +127,62 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string +//SEG10 main main: { .label screen = $400 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG14 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy i lda msg,y cmp #'@' bne b2 jmp breturn - //SEG14 main::@return + //SEG15 main::@return breturn: - //SEG15 [7] return + //SEG16 [7] return rts - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG18 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda msg,y sta screen,y - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG21 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 msg: .text "message 2 @" } @@ -202,57 +203,58 @@ Uplifting [main] best 333 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 333 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string +//SEG10 main main: { .label screen = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG14 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda msg,x cmp #'@' bne b2 jmp breturn - //SEG14 main::@return + //SEG15 main::@return breturn: - //SEG15 [7] return + //SEG16 [7] return rts - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG18 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta screen,x - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG21 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 msg: .text "message 2 @" } @@ -301,43 +303,44 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 261 -//SEG0 Basic Upstart +//SEG0 File Comments +// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG14 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda msg,x cmp #'@' bne b2 - //SEG14 main::@return - //SEG15 [7] return + //SEG15 main::@return + //SEG16 [7] return rts - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG18 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta screen,x - //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG20 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG21 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 msg: .text "message 2 @" } diff --git a/src/test/ref/longbranch-interrupt-problem.asm b/src/test/ref/longbranch-interrupt-problem.asm index 3f2debb21..628546f90 100644 --- a/src/test/ref/longbranch-interrupt-problem.asm +++ b/src/test/ref/longbranch-interrupt-problem.asm @@ -1,7 +1,7 @@ +// Tests that long branch fixing works with interrupt exits (to $ea81) .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" - // Tests that long branch fixing works with interrupt exits (to $ea81) .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 diff --git a/src/test/ref/longbranch-interrupt-problem.log b/src/test/ref/longbranch-interrupt-problem.log index 2dcec8e95..fb1d07127 100644 --- a/src/test/ref/longbranch-interrupt-problem.log +++ b/src/test/ref/longbranch-interrupt-problem.log @@ -206,88 +206,89 @@ Allocated zp ZP_BYTE:2 [ col#12 col#0 col#1 ] Allocated zp ZP_BYTE:3 [ col#3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that long branch fixing works with interrupt exits (to $ea81) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Tests that long branch fixing works with interrupt exits (to $ea81) +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 .label col_3 = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG5 @2 +//SEG6 @2 b2: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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 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 + //SEG13 [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] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b2 - //SEG15 main::@2 + //SEG16 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 + //SEG17 [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 + //SEG18 main::@7 b7: - //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG19 [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 +//SEG20 irq irq: { - //SEG20 entry interrupt(KERNEL_MIN) - //SEG21 asm { lda$dc0d } + //SEG21 entry interrupt(KERNEL_MIN) + //SEG22 asm { lda$dc0d } lda $dc0d - //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG23 [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 + //SEG24 [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 + //SEG25 irq::@2 b2: - //SEG25 [11] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz2 + //SEG26 [11] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz2 ldy col iny sty col_3 jmp breturn - //SEG26 irq::@return + //SEG27 irq::@return breturn: - //SEG27 [12] return - exit interrupt(KERNEL_MIN) + //SEG28 [12] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -318,85 +319,86 @@ 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 +//SEG0 File Comments +// Tests that long branch fixing works with interrupt exits (to $ea81) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Tests that long branch fixing works with interrupt exits (to $ea81) +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG5 @2 +//SEG6 @2 b2: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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 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 + //SEG13 [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] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b2 - //SEG15 main::@2 + //SEG16 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 + //SEG17 [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 + //SEG18 main::@7 b7: - //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG19 [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 +//SEG20 irq irq: { - //SEG20 entry interrupt(KERNEL_MIN) - //SEG21 asm { lda$dc0d } + //SEG21 entry interrupt(KERNEL_MIN) + //SEG22 asm { lda$dc0d } lda $dc0d - //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG23 [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 + //SEG24 [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 + //SEG25 irq::@2 b2: - //SEG25 [11] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 + //SEG26 [11] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 inc col jmp breturn - //SEG26 irq::@return + //SEG27 irq::@return breturn: - //SEG27 [12] return - exit interrupt(KERNEL_MIN) + //SEG28 [12] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -462,68 +464,69 @@ zp ZP_BYTE:2 [ col#12 col#0 col#1 col#3 ] FINAL ASSEMBLER Score: 882 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that long branch fixing works with interrupt exits (to $ea81) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Tests that long branch fixing works with interrupt exits (to $ea81) +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 +//SEG5 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG6 @2 +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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 + //SEG12 [5] phi from main main::@7 to main::@1 [phi:main/main::@7->main::@1] + //SEG13 [5] phi (byte) col#12 = (byte) col#0 [phi:main/main::@7->main::@1#0] -- register_copy + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG15 main::@1 + //SEG16 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 + //SEG17 [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 + //SEG18 main::@7 + //SEG19 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta col jmp b2 } -//SEG19 irq +//SEG20 irq irq: { - //SEG20 entry interrupt(KERNEL_MIN) - //SEG21 asm { lda$dc0d } + //SEG21 entry interrupt(KERNEL_MIN) + //SEG22 asm { lda$dc0d } lda $dc0d - //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG23 [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 + //SEG24 [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 + //SEG25 irq::@2 + //SEG26 [11] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 inc col - //SEG26 irq::@return - //SEG27 [12] return - exit interrupt(KERNEL_MIN) + //SEG27 irq::@return + //SEG28 [12] return - exit interrupt(KERNEL_MIN) jmp $ea81 } diff --git a/src/test/ref/longjump.asm b/src/test/ref/longjump.asm index 269d6ea76..94a360828 100644 --- a/src/test/ref/longjump.asm +++ b/src/test/ref/longjump.asm @@ -1,7 +1,7 @@ +// Minimal example program generating a long jump .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Minimal example program generating a long jump main: { .label SCREEN = $400 ldx #0 diff --git a/src/test/ref/longjump.log b/src/test/ref/longjump.log index 3f5a2e728..efa3af69b 100644 --- a/src/test/ref/longjump.log +++ b/src/test/ref/longjump.log @@ -114,45 +114,46 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal example program generating a long jump +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Minimal example program generating a long jump +//SEG10 main main: { .label SCREEN = $400 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG16 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -409,20 +410,20 @@ main: { nop nop nop - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta SCREEN,y - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -437,43 +438,44 @@ Uplifting [main] best 5383 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 5383 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal example program generating a long jump +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Minimal example program generating a long jump +//SEG10 main main: { .label SCREEN = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG16 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -730,18 +732,18 @@ main: { nop nop nop - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -790,30 +792,31 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 5311 -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal example program generating a long jump +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Minimal example program generating a long jump +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG16 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1070,18 +1073,18 @@ main: { nop nop nop - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b beq !b1+ jmp b1 !b1: - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts } diff --git a/src/test/ref/longjump2.asm b/src/test/ref/longjump2.asm index 47a6f9137..c53f03362 100644 --- a/src/test/ref/longjump2.asm +++ b/src/test/ref/longjump2.asm @@ -1,7 +1,7 @@ +// Minimal example program generating two long jumps .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Minimal example program generating two long jumps main: { jsr long1 jsr long2 diff --git a/src/test/ref/longjump2.log b/src/test/ref/longjump2.log index cd1d37d80..3538c7dc3 100644 --- a/src/test/ref/longjump2.log +++ b/src/test/ref/longjump2.log @@ -209,66 +209,67 @@ Allocated zp ZP_BYTE:2 [ long2::i#2 long2::i#1 ] Allocated zp ZP_BYTE:3 [ long1::i#2 long1::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal example program generating two long jumps +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Minimal example program generating two long jumps +//SEG10 main main: { - //SEG10 [5] call long1 - //SEG11 [16] phi from main to long1 [phi:main->long1] + //SEG11 [5] call long1 + //SEG12 [16] phi from main to long1 [phi:main->long1] long1_from_main: jsr long1 - //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 long2 - //SEG15 [9] phi from main::@1 to long2 [phi:main::@1->long2] + //SEG15 [7] call long2 + //SEG16 [9] phi from main::@1 to long2 [phi:main::@1->long2] long2_from_b1: jsr long2 jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts } -//SEG18 long2 +//SEG19 long2 long2: { .label SCREEN = $400 .label i = 2 - //SEG19 [10] phi from long2 to long2::@1 [phi:long2->long2::@1] + //SEG20 [10] phi from long2 to long2::@1 [phi:long2->long2::@1] b1_from_long2: - //SEG20 [10] phi (byte) long2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long2->long2::@1#0] -- vbuz1=vbuc1 + //SEG21 [10] phi (byte) long2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long2->long2::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG21 [10] phi from long2::@1 to long2::@1 [phi:long2::@1->long2::@1] + //SEG22 [10] phi from long2::@1 to long2::@1 [phi:long2::@1->long2::@1] b1_from_b1: - //SEG22 [10] phi (byte) long2::i#2 = (byte) long2::i#1 [phi:long2::@1->long2::@1#0] -- register_copy + //SEG23 [10] phi (byte) long2::i#2 = (byte) long2::i#1 [phi:long2::@1->long2::@1#0] -- register_copy jmp b1 - //SEG23 long2::@1 + //SEG24 long2::@1 b1: - //SEG24 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG25 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -525,39 +526,39 @@ long2: { nop nop nop - //SEG25 [12] *((const byte*) long2::SCREEN#0 + (byte) long2::i#2) ← (byte) long2::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG26 [12] *((const byte*) long2::SCREEN#0 + (byte) long2::i#2) ← (byte) long2::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta SCREEN,y - //SEG26 [13] (byte) long2::i#1 ← ++ (byte) long2::i#2 -- vbuz1=_inc_vbuz1 + //SEG27 [13] (byte) long2::i#1 ← ++ (byte) long2::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG27 [14] if((byte) long2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG28 [14] if((byte) long2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long2::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b1 jmp breturn - //SEG28 long2::@return + //SEG29 long2::@return breturn: - //SEG29 [15] return + //SEG30 [15] return rts } -//SEG30 long1 +//SEG31 long1 long1: { .label SCREEN = $400 .label i = 3 - //SEG31 [17] phi from long1 to long1::@1 [phi:long1->long1::@1] + //SEG32 [17] phi from long1 to long1::@1 [phi:long1->long1::@1] b1_from_long1: - //SEG32 [17] phi (byte) long1::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long1->long1::@1#0] -- vbuz1=vbuc1 + //SEG33 [17] phi (byte) long1::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long1->long1::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG33 [17] phi from long1::@1 to long1::@1 [phi:long1::@1->long1::@1] + //SEG34 [17] phi from long1::@1 to long1::@1 [phi:long1::@1->long1::@1] b1_from_b1: - //SEG34 [17] phi (byte) long1::i#2 = (byte) long1::i#1 [phi:long1::@1->long1::@1#0] -- register_copy + //SEG35 [17] phi (byte) long1::i#2 = (byte) long1::i#1 [phi:long1::@1->long1::@1#0] -- register_copy jmp b1 - //SEG35 long1::@1 + //SEG36 long1::@1 b1: - //SEG36 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG37 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -814,20 +815,20 @@ long1: { nop nop nop - //SEG37 [19] *((const byte*) long1::SCREEN#0 + (byte) long1::i#2) ← (byte) long1::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG38 [19] *((const byte*) long1::SCREEN#0 + (byte) long1::i#2) ← (byte) long1::i#2 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta SCREEN,y - //SEG38 [20] (byte) long1::i#1 ← ++ (byte) long1::i#2 -- vbuz1=_inc_vbuz1 + //SEG39 [20] (byte) long1::i#1 ← ++ (byte) long1::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG39 [21] if((byte) long1::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long1::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG40 [21] if((byte) long1::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long1::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b1 jmp breturn - //SEG40 long1::@return + //SEG41 long1::@return breturn: - //SEG41 [22] return + //SEG42 [22] return rts } @@ -847,64 +848,65 @@ Uplifting [main] best 10778 combination Uplifting [] best 10778 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal example program generating two long jumps +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Minimal example program generating two long jumps +//SEG10 main main: { - //SEG10 [5] call long1 - //SEG11 [16] phi from main to long1 [phi:main->long1] + //SEG11 [5] call long1 + //SEG12 [16] phi from main to long1 [phi:main->long1] long1_from_main: jsr long1 - //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 long2 - //SEG15 [9] phi from main::@1 to long2 [phi:main::@1->long2] + //SEG15 [7] call long2 + //SEG16 [9] phi from main::@1 to long2 [phi:main::@1->long2] long2_from_b1: jsr long2 jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts } -//SEG18 long2 +//SEG19 long2 long2: { .label SCREEN = $400 - //SEG19 [10] phi from long2 to long2::@1 [phi:long2->long2::@1] + //SEG20 [10] phi from long2 to long2::@1 [phi:long2->long2::@1] b1_from_long2: - //SEG20 [10] phi (byte) long2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long2->long2::@1#0] -- vbuxx=vbuc1 + //SEG21 [10] phi (byte) long2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long2->long2::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG21 [10] phi from long2::@1 to long2::@1 [phi:long2::@1->long2::@1] + //SEG22 [10] phi from long2::@1 to long2::@1 [phi:long2::@1->long2::@1] b1_from_b1: - //SEG22 [10] phi (byte) long2::i#2 = (byte) long2::i#1 [phi:long2::@1->long2::@1#0] -- register_copy + //SEG23 [10] phi (byte) long2::i#2 = (byte) long2::i#1 [phi:long2::@1->long2::@1#0] -- register_copy jmp b1 - //SEG23 long2::@1 + //SEG24 long2::@1 b1: - //SEG24 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG25 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1161,35 +1163,35 @@ long2: { nop nop nop - //SEG25 [12] *((const byte*) long2::SCREEN#0 + (byte) long2::i#2) ← (byte) long2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG26 [12] *((const byte*) long2::SCREEN#0 + (byte) long2::i#2) ← (byte) long2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG26 [13] (byte) long2::i#1 ← ++ (byte) long2::i#2 -- vbuxx=_inc_vbuxx + //SEG27 [13] (byte) long2::i#1 ← ++ (byte) long2::i#2 -- vbuxx=_inc_vbuxx inx - //SEG27 [14] if((byte) long2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long2::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG28 [14] if((byte) long2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long2::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1_from_b1 jmp breturn - //SEG28 long2::@return + //SEG29 long2::@return breturn: - //SEG29 [15] return + //SEG30 [15] return rts } -//SEG30 long1 +//SEG31 long1 long1: { .label SCREEN = $400 - //SEG31 [17] phi from long1 to long1::@1 [phi:long1->long1::@1] + //SEG32 [17] phi from long1 to long1::@1 [phi:long1->long1::@1] b1_from_long1: - //SEG32 [17] phi (byte) long1::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long1->long1::@1#0] -- vbuxx=vbuc1 + //SEG33 [17] phi (byte) long1::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long1->long1::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG33 [17] phi from long1::@1 to long1::@1 [phi:long1::@1->long1::@1] + //SEG34 [17] phi from long1::@1 to long1::@1 [phi:long1::@1->long1::@1] b1_from_b1: - //SEG34 [17] phi (byte) long1::i#2 = (byte) long1::i#1 [phi:long1::@1->long1::@1#0] -- register_copy + //SEG35 [17] phi (byte) long1::i#2 = (byte) long1::i#1 [phi:long1::@1->long1::@1#0] -- register_copy jmp b1 - //SEG35 long1::@1 + //SEG36 long1::@1 b1: - //SEG36 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG37 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1446,18 +1448,18 @@ long1: { nop nop nop - //SEG37 [19] *((const byte*) long1::SCREEN#0 + (byte) long1::i#2) ← (byte) long1::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG38 [19] *((const byte*) long1::SCREEN#0 + (byte) long1::i#2) ← (byte) long1::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG38 [20] (byte) long1::i#1 ← ++ (byte) long1::i#2 -- vbuxx=_inc_vbuxx + //SEG39 [20] (byte) long1::i#1 ← ++ (byte) long1::i#2 -- vbuxx=_inc_vbuxx inx - //SEG39 [21] if((byte) long1::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long1::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG40 [21] if((byte) long1::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long1::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1_from_b1 jmp breturn - //SEG40 long1::@return + //SEG41 long1::@return breturn: - //SEG41 [22] return + //SEG42 [22] return rts } @@ -1533,44 +1535,45 @@ reg byte x [ long1::i#2 long1::i#1 ] FINAL ASSEMBLER Score: 10640 -//SEG0 Basic Upstart +//SEG0 File Comments +// Minimal example program generating two long jumps +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main -// Minimal example program generating two long jumps +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call long1 - //SEG11 [16] phi from main to long1 [phi:main->long1] + //SEG11 [5] call long1 + //SEG12 [16] phi from main to long1 [phi:main->long1] jsr long1 - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 main::@1 - //SEG14 [7] call long2 - //SEG15 [9] phi from main::@1 to long2 [phi:main::@1->long2] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call long2 + //SEG16 [9] phi from main::@1 to long2 [phi:main::@1->long2] jsr long2 - //SEG16 main::@return - //SEG17 [8] return + //SEG17 main::@return + //SEG18 [8] return rts } -//SEG18 long2 +//SEG19 long2 long2: { .label SCREEN = $400 - //SEG19 [10] phi from long2 to long2::@1 [phi:long2->long2::@1] - //SEG20 [10] phi (byte) long2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long2->long2::@1#0] -- vbuxx=vbuc1 + //SEG20 [10] phi from long2 to long2::@1 [phi:long2->long2::@1] + //SEG21 [10] phi (byte) long2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long2->long2::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG21 [10] phi from long2::@1 to long2::@1 [phi:long2::@1->long2::@1] - //SEG22 [10] phi (byte) long2::i#2 = (byte) long2::i#1 [phi:long2::@1->long2::@1#0] -- register_copy - //SEG23 long2::@1 + //SEG22 [10] phi from long2::@1 to long2::@1 [phi:long2::@1->long2::@1] + //SEG23 [10] phi (byte) long2::i#2 = (byte) long2::i#1 [phi:long2::@1->long2::@1#0] -- register_copy + //SEG24 long2::@1 b1: - //SEG24 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG25 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -1827,31 +1830,31 @@ long2: { nop nop nop - //SEG25 [12] *((const byte*) long2::SCREEN#0 + (byte) long2::i#2) ← (byte) long2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG26 [12] *((const byte*) long2::SCREEN#0 + (byte) long2::i#2) ← (byte) long2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG26 [13] (byte) long2::i#1 ← ++ (byte) long2::i#2 -- vbuxx=_inc_vbuxx + //SEG27 [13] (byte) long2::i#1 ← ++ (byte) long2::i#2 -- vbuxx=_inc_vbuxx inx - //SEG27 [14] if((byte) long2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long2::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG28 [14] if((byte) long2::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long2::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b beq !b1+ jmp b1 !b1: - //SEG28 long2::@return - //SEG29 [15] return + //SEG29 long2::@return + //SEG30 [15] return rts } -//SEG30 long1 +//SEG31 long1 long1: { .label SCREEN = $400 - //SEG31 [17] phi from long1 to long1::@1 [phi:long1->long1::@1] - //SEG32 [17] phi (byte) long1::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long1->long1::@1#0] -- vbuxx=vbuc1 + //SEG32 [17] phi from long1 to long1::@1 [phi:long1->long1::@1] + //SEG33 [17] phi (byte) long1::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:long1->long1::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG33 [17] phi from long1::@1 to long1::@1 [phi:long1::@1->long1::@1] - //SEG34 [17] phi (byte) long1::i#2 = (byte) long1::i#1 [phi:long1::@1->long1::@1#0] -- register_copy - //SEG35 long1::@1 + //SEG34 [17] phi from long1::@1 to long1::@1 [phi:long1::@1->long1::@1] + //SEG35 [17] phi (byte) long1::i#2 = (byte) long1::i#1 [phi:long1::@1->long1::@1#0] -- register_copy + //SEG36 long1::@1 b1: - //SEG36 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } + //SEG37 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } nop nop nop @@ -2108,18 +2111,18 @@ long1: { nop nop nop - //SEG37 [19] *((const byte*) long1::SCREEN#0 + (byte) long1::i#2) ← (byte) long1::i#2 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG38 [19] *((const byte*) long1::SCREEN#0 + (byte) long1::i#2) ← (byte) long1::i#2 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG38 [20] (byte) long1::i#1 ← ++ (byte) long1::i#2 -- vbuxx=_inc_vbuxx + //SEG39 [20] (byte) long1::i#1 ← ++ (byte) long1::i#2 -- vbuxx=_inc_vbuxx inx - //SEG39 [21] if((byte) long1::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long1::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG40 [21] if((byte) long1::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto long1::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b beq !b1+ jmp b1 !b1: - //SEG40 long1::@return - //SEG41 [22] return + //SEG41 long1::@return + //SEG42 [22] return rts } diff --git a/src/test/ref/loop-problem.asm b/src/test/ref/loop-problem.asm index a23a3a33a..566d6fd83 100644 --- a/src/test/ref/loop-problem.asm +++ b/src/test/ref/loop-problem.asm @@ -1,3 +1,4 @@ +// A simple loop results in NullPointerException during loop analysis .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/loop-problem.log b/src/test/ref/loop-problem.log index 8472eeef7..5e4592a7f 100644 --- a/src/test/ref/loop-problem.log +++ b/src/test/ref/loop-problem.log @@ -189,88 +189,90 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ b::i#2 b::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// A simple loop results in NullPointerException during loop analysis +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @3 to @end [phi:@3->@end] +//SEG7 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte) '0' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte) '0' -- _deref_pbuc1=vbuc2 lda #'0' sta SCREEN - //SEG10 [5] call d + //SEG11 [5] call d jsr d - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [7] call b - //SEG14 [9] phi from main::@1 to b [phi:main::@1->b] + //SEG14 [7] call b + //SEG15 [9] phi from main::@1 to b [phi:main::@1->b] b_from_b1: jsr b jmp breturn - //SEG15 main::@return + //SEG16 main::@return breturn: - //SEG16 [8] return + //SEG17 [8] return rts } -//SEG17 b +//SEG18 b b: { .label i = 2 - //SEG18 [10] phi from b to b::@1 [phi:b->b::@1] + //SEG19 [10] phi from b to b::@1 [phi:b->b::@1] b1_from_b: - //SEG19 [10] phi (byte) b::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:b->b::@1#0] -- vbuz1=vbuc1 + //SEG20 [10] phi (byte) b::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:b->b::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG20 [10] phi from b::@3 to b::@1 [phi:b::@3->b::@1] + //SEG21 [10] phi from b::@3 to b::@1 [phi:b::@3->b::@1] b1_from_b3: - //SEG21 [10] phi (byte) b::i#2 = (byte) b::i#1 [phi:b::@3->b::@1#0] -- register_copy + //SEG22 [10] phi (byte) b::i#2 = (byte) b::i#1 [phi:b::@3->b::@1#0] -- register_copy jmp b1 - //SEG22 b::@1 + //SEG23 b::@1 b1: - //SEG23 [11] call d + //SEG24 [11] call d jsr d jmp b3 - //SEG24 b::@3 + //SEG25 b::@3 b3: - //SEG25 [12] (byte) b::i#1 ← ++ (byte) b::i#2 -- vbuz1=_inc_vbuz1 + //SEG26 [12] (byte) b::i#1 ← ++ (byte) b::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG26 [13] if((byte) b::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto b::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG27 [13] if((byte) b::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto b::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b1_from_b3 jmp breturn - //SEG27 b::@return + //SEG28 b::@return breturn: - //SEG28 [14] return + //SEG29 [14] return rts } -//SEG29 d +//SEG30 d d: { - //SEG30 [15] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG31 [15] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN jmp breturn - //SEG31 d::@return + //SEG32 d::@return breturn: - //SEG32 [16] return + //SEG33 [16] return rts } @@ -290,85 +292,87 @@ Uplifting [d] best 328 combination Uplifting [] best 328 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// A simple loop results in NullPointerException during loop analysis +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @3 to @end [phi:@3->@end] +//SEG7 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte) '0' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte) '0' -- _deref_pbuc1=vbuc2 lda #'0' sta SCREEN - //SEG10 [5] call d + //SEG11 [5] call d jsr d - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [7] call b - //SEG14 [9] phi from main::@1 to b [phi:main::@1->b] + //SEG14 [7] call b + //SEG15 [9] phi from main::@1 to b [phi:main::@1->b] b_from_b1: jsr b jmp breturn - //SEG15 main::@return + //SEG16 main::@return breturn: - //SEG16 [8] return + //SEG17 [8] return rts } -//SEG17 b +//SEG18 b b: { - //SEG18 [10] phi from b to b::@1 [phi:b->b::@1] + //SEG19 [10] phi from b to b::@1 [phi:b->b::@1] b1_from_b: - //SEG19 [10] phi (byte) b::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:b->b::@1#0] -- vbuxx=vbuc1 + //SEG20 [10] phi (byte) b::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:b->b::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG20 [10] phi from b::@3 to b::@1 [phi:b::@3->b::@1] + //SEG21 [10] phi from b::@3 to b::@1 [phi:b::@3->b::@1] b1_from_b3: - //SEG21 [10] phi (byte) b::i#2 = (byte) b::i#1 [phi:b::@3->b::@1#0] -- register_copy + //SEG22 [10] phi (byte) b::i#2 = (byte) b::i#1 [phi:b::@3->b::@1#0] -- register_copy jmp b1 - //SEG22 b::@1 + //SEG23 b::@1 b1: - //SEG23 [11] call d + //SEG24 [11] call d jsr d jmp b3 - //SEG24 b::@3 + //SEG25 b::@3 b3: - //SEG25 [12] (byte) b::i#1 ← ++ (byte) b::i#2 -- vbuxx=_inc_vbuxx + //SEG26 [12] (byte) b::i#1 ← ++ (byte) b::i#2 -- vbuxx=_inc_vbuxx inx - //SEG26 [13] if((byte) b::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto b::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG27 [13] if((byte) b::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto b::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b3 jmp breturn - //SEG27 b::@return + //SEG28 b::@return breturn: - //SEG28 [14] return + //SEG29 [14] return rts } -//SEG29 d +//SEG30 d d: { - //SEG30 [15] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG31 [15] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN jmp breturn - //SEG31 d::@return + //SEG32 d::@return breturn: - //SEG32 [16] return + //SEG33 [16] return rts } @@ -431,61 +435,63 @@ reg byte x [ b::i#2 b::i#1 ] FINAL ASSEMBLER Score: 187 -//SEG0 Basic Upstart +//SEG0 File Comments +// A simple loop results in NullPointerException during loop analysis +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [3] phi from @3 to @end [phi:@3->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte) '0' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte) '0' -- _deref_pbuc1=vbuc2 lda #'0' sta SCREEN - //SEG10 [5] call d + //SEG11 [5] call d jsr d - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG12 main::@1 - //SEG13 [7] call b - //SEG14 [9] phi from main::@1 to b [phi:main::@1->b] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 main::@1 + //SEG14 [7] call b + //SEG15 [9] phi from main::@1 to b [phi:main::@1->b] jsr b - //SEG15 main::@return - //SEG16 [8] return + //SEG16 main::@return + //SEG17 [8] return rts } -//SEG17 b +//SEG18 b b: { - //SEG18 [10] phi from b to b::@1 [phi:b->b::@1] - //SEG19 [10] phi (byte) b::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:b->b::@1#0] -- vbuxx=vbuc1 + //SEG19 [10] phi from b to b::@1 [phi:b->b::@1] + //SEG20 [10] phi (byte) b::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:b->b::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG20 [10] phi from b::@3 to b::@1 [phi:b::@3->b::@1] - //SEG21 [10] phi (byte) b::i#2 = (byte) b::i#1 [phi:b::@3->b::@1#0] -- register_copy - //SEG22 b::@1 + //SEG21 [10] phi from b::@3 to b::@1 [phi:b::@3->b::@1] + //SEG22 [10] phi (byte) b::i#2 = (byte) b::i#1 [phi:b::@3->b::@1#0] -- register_copy + //SEG23 b::@1 b1: - //SEG23 [11] call d + //SEG24 [11] call d jsr d - //SEG24 b::@3 - //SEG25 [12] (byte) b::i#1 ← ++ (byte) b::i#2 -- vbuxx=_inc_vbuxx + //SEG25 b::@3 + //SEG26 [12] (byte) b::i#1 ← ++ (byte) b::i#2 -- vbuxx=_inc_vbuxx inx - //SEG26 [13] if((byte) b::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto b::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG27 [13] if((byte) b::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto b::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG27 b::@return - //SEG28 [14] return + //SEG28 b::@return + //SEG29 [14] return rts } -//SEG29 d +//SEG30 d d: { - //SEG30 [15] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG31 [15] *((const byte*) SCREEN#0) ← ++ *((const byte*) SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN - //SEG31 d::@return - //SEG32 [16] return + //SEG32 d::@return + //SEG33 [16] return rts } diff --git a/src/test/ref/loop-problem2.log b/src/test/ref/loop-problem2.log index 666299e15..2258ea561 100644 --- a/src/test/ref/loop-problem2.log +++ b/src/test/ref/loop-problem2.log @@ -203,104 +203,105 @@ Allocated zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_BYTE:4 [ mode_ctrl::before#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label BORDERCOL = $d020 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [14] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [14] 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] + //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 mode_ctrl - //SEG15 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl] + //SEG15 [7] call mode_ctrl + //SEG16 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl] mode_ctrl_from_b1: jsr mode_ctrl jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts } -//SEG18 mode_ctrl +//SEG19 mode_ctrl mode_ctrl: { .label before = 4 jmp b2 - //SEG19 mode_ctrl::@2 + //SEG20 mode_ctrl::@2 b2: - //SEG20 [10] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) -- vbuz1=_deref_pbuc1 + //SEG21 [10] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) -- vbuz1=_deref_pbuc1 lda BORDERCOL sta before - //SEG21 [11] if((byte) mode_ctrl::before#0==(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG22 [11] if((byte) mode_ctrl::before#0==(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- vbuz1_eq_vbuc1_then_la1 lda before cmp #$ff beq b4 jmp b8 - //SEG22 mode_ctrl::@8 + //SEG23 mode_ctrl::@8 b8: - //SEG23 [12] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG24 [12] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta BORDERCOL jmp b2 - //SEG24 mode_ctrl::@4 + //SEG25 mode_ctrl::@4 b4: - //SEG25 [13] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG26 [13] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BORDERCOL jmp b2 } -//SEG26 print_cls +//SEG27 print_cls print_cls: { .label sc = 2 - //SEG27 [15] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG28 [15] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG28 [15] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG29 [15] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG29 [15] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG30 [15] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG30 [15] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG31 [15] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG31 print_cls::@1 + //SEG32 print_cls::@1 b1: - //SEG32 [16] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG33 [16] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG33 [17] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG34 [17] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG34 [18] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG35 [18] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1_from_b1 @@ -308,9 +309,9 @@ print_cls: { cmp #@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [14] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [14] 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] + //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 mode_ctrl - //SEG15 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl] + //SEG15 [7] call mode_ctrl + //SEG16 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl] mode_ctrl_from_b1: jsr mode_ctrl jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts } -//SEG18 mode_ctrl +//SEG19 mode_ctrl mode_ctrl: { jmp b2 - //SEG19 mode_ctrl::@2 + //SEG20 mode_ctrl::@2 b2: - //SEG20 [10] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) -- vbuaa=_deref_pbuc1 + //SEG21 [10] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) -- vbuaa=_deref_pbuc1 lda BORDERCOL - //SEG21 [11] if((byte) mode_ctrl::before#0==(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- vbuaa_eq_vbuc1_then_la1 + //SEG22 [11] if((byte) mode_ctrl::before#0==(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- vbuaa_eq_vbuc1_then_la1 cmp #$ff beq b4 jmp b8 - //SEG22 mode_ctrl::@8 + //SEG23 mode_ctrl::@8 b8: - //SEG23 [12] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG24 [12] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta BORDERCOL jmp b2 - //SEG24 mode_ctrl::@4 + //SEG25 mode_ctrl::@4 b4: - //SEG25 [13] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG26 [13] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BORDERCOL jmp b2 } -//SEG26 print_cls +//SEG27 print_cls print_cls: { .label sc = 2 - //SEG27 [15] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG28 [15] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG28 [15] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG29 [15] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG29 [15] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG30 [15] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG30 [15] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG31 [15] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG31 print_cls::@1 + //SEG32 print_cls::@1 b1: - //SEG32 [16] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG33 [16] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG33 [17] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG34 [17] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG34 [18] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG35 [18] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1_from_b1 @@ -436,9 +438,9 @@ print_cls: { cmp #@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [14] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [14] 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 mode_ctrl - //SEG15 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call mode_ctrl + //SEG16 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl] jsr mode_ctrl - //SEG16 main::@return - //SEG17 [8] return + //SEG17 main::@return + //SEG18 [8] return rts } -//SEG18 mode_ctrl +//SEG19 mode_ctrl mode_ctrl: { - //SEG19 mode_ctrl::@2 + //SEG20 mode_ctrl::@2 b2: - //SEG20 [10] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) -- vbuaa=_deref_pbuc1 + //SEG21 [10] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) -- vbuaa=_deref_pbuc1 lda BORDERCOL - //SEG21 [11] if((byte) mode_ctrl::before#0==(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- vbuaa_eq_vbuc1_then_la1 + //SEG22 [11] if((byte) mode_ctrl::before#0==(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 -- vbuaa_eq_vbuc1_then_la1 cmp #$ff beq b4 - //SEG22 mode_ctrl::@8 - //SEG23 [12] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG23 mode_ctrl::@8 + //SEG24 [12] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta BORDERCOL jmp b2 - //SEG24 mode_ctrl::@4 + //SEG25 mode_ctrl::@4 b4: - //SEG25 [13] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG26 [13] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BORDERCOL jmp b2 } -//SEG26 print_cls +//SEG27 print_cls print_cls: { .label sc = 2 - //SEG27 [15] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG28 [15] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG28 [15] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG29 [15] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG29 [15] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG30 [15] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG31 print_cls::@1 + //SEG30 [15] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG31 [15] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG32 print_cls::@1 b1: - //SEG32 [16] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG33 [16] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG33 [17] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG34 [17] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG34 [18] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG35 [18] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1 lda sc cmp #@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG16 [6] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG16 [7] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG17 [7] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$64 bcc b1_from_b1 jmp breturn - //SEG17 main::@return + //SEG18 main::@return breturn: - //SEG18 [8] return + //SEG19 [8] return rts } @@ -157,49 +158,50 @@ Uplifting [main] best 193 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 193 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG16 [6] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG16 [7] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG17 [7] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #$64 bcc b1_from_b1 jmp breturn - //SEG17 main::@return + //SEG18 main::@return breturn: - //SEG18 [8] return + //SEG19 [8] return rts } @@ -245,34 +247,35 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 91 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG16 [6] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG16 [7] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 + //SEG17 [7] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1 -- vbuxx_lt_vbuc1_then_la1 cpx #$64 bcc b1 - //SEG17 main::@return - //SEG18 [8] return + //SEG18 main::@return + //SEG19 [8] return rts } diff --git a/src/test/ref/loopmin.log b/src/test/ref/loopmin.log index bf2a4f664..b2d9ce4cd 100644 --- a/src/test/ref/loopmin.log +++ b/src/test/ref/loopmin.log @@ -157,75 +157,76 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::s#2 main::s#4 main::s#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 .label s = 3 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::s#2 = (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) 10 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #$a sta i jmp b1 - //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG14 [5] phi (byte) main::s#2 = (byte) main::s#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::s#2 = (byte) main::s#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] if((byte) main::i#2<=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@2 -- vbuz1_le_vbuc1_then_la1 + //SEG18 [6] if((byte) main::i#2<=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@2 -- vbuz1_le_vbuc1_then_la1 lda #5 cmp i bcs b2_from_b1 jmp b3 - //SEG18 main::@3 + //SEG19 main::@3 b3: - //SEG19 [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG20 [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 -- vbuz1=vbuz1_plus_vbuz2 lda s clc adc i sta s - //SEG20 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG21 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG21 [8] phi (byte) main::s#4 = (byte) main::s#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG22 [8] phi (byte) main::s#4 = (byte) main::s#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [9] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuz1=_dec_vbuz1 + //SEG24 [9] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuz1=_dec_vbuz1 dec i - //SEG24 [10] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 + //SEG25 [10] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 lda i bne b1_from_b2 jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [11] return + //SEG27 [11] return rts } @@ -244,70 +245,71 @@ Uplifting [main] best 423 combination reg byte a [ main::s#2 main::s#4 main::s#1 Uplifting [] best 423 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + //SEG12 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 lda #0 - //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #$a jmp b1 - //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG14 [5] phi (byte) main::s#2 = (byte) main::s#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::s#2 = (byte) main::s#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] if((byte) main::i#2<=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@2 -- vbuxx_le_vbuc1_then_la1 + //SEG18 [6] if((byte) main::i#2<=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@2 -- vbuxx_le_vbuc1_then_la1 cpx #5 bcc b2_from_b1 beq b2_from_b1 jmp b3 - //SEG18 main::@3 + //SEG19 main::@3 b3: - //SEG19 [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx + //SEG20 [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx stx $ff clc adc $ff - //SEG20 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG21 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG21 [8] phi (byte) main::s#4 = (byte) main::s#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG22 [8] phi (byte) main::s#4 = (byte) main::s#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [9] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuxx=_dec_vbuxx + //SEG24 [9] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuxx=_dec_vbuxx dex - //SEG24 [10] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_gt_0_then_la1 + //SEG25 [10] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_gt_0_then_la1 cpx #0 bne b1_from_b2 jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [11] return + //SEG27 [11] return rts } @@ -367,50 +369,51 @@ reg byte a [ main::s#2 main::s#4 main::s#1 ] FINAL ASSEMBLER Score: 261 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 lda #0 - //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #$a - //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG14 [5] phi (byte) main::s#2 = (byte) main::s#4 [phi:main::@2->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy - //SEG16 main::@1 + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG15 [5] phi (byte) main::s#2 = (byte) main::s#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] if((byte) main::i#2<=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@2 -- vbuxx_le_vbuc1_then_la1 + //SEG18 [6] if((byte) main::i#2<=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@2 -- vbuxx_le_vbuc1_then_la1 cpx #5 bcc b2 beq b2 - //SEG18 main::@3 - //SEG19 [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx + //SEG19 main::@3 + //SEG20 [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx stx $ff clc adc $ff - //SEG20 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] - //SEG21 [8] phi (byte) main::s#4 = (byte) main::s#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG22 main::@2 + //SEG21 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG22 [8] phi (byte) main::s#4 = (byte) main::s#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG23 main::@2 b2: - //SEG23 [9] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuxx=_dec_vbuxx + //SEG24 [9] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuxx=_dec_vbuxx dex - //SEG24 [10] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_gt_0_then_la1 + //SEG25 [10] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_gt_0_then_la1 cpx #0 bne b1 - //SEG25 main::@return - //SEG26 [11] return + //SEG26 main::@return + //SEG27 [11] return rts } diff --git a/src/test/ref/loopnest.log b/src/test/ref/loopnest.log index 93e3f12eb..e0d430e55 100644 --- a/src/test/ref/loopnest.log +++ b/src/test/ref/loopnest.log @@ -185,88 +185,89 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ nest::j#2 nest::j#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #$64 sta i jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] call nest - //SEG16 [10] phi from main::@1 to nest [phi:main::@1->nest] + //SEG16 [6] call nest + //SEG17 [10] phi from main::@1 to nest [phi:main::@1->nest] nest_from_b1: jsr nest jmp b3 - //SEG17 main::@3 + //SEG18 main::@3 b3: - //SEG18 [7] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuz1=_dec_vbuz1 + //SEG19 [7] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuz1=_dec_vbuz1 dec i - //SEG19 [8] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 + //SEG20 [8] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [9] return + //SEG22 [9] return rts } -//SEG22 nest +//SEG23 nest nest: { .label j = 3 - //SEG23 [11] phi from nest to nest::@1 [phi:nest->nest::@1] + //SEG24 [11] phi from nest to nest::@1 [phi:nest->nest::@1] b1_from_nest: - //SEG24 [11] phi (byte) nest::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest->nest::@1#0] -- vbuz1=vbuc1 + //SEG25 [11] phi (byte) nest::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest->nest::@1#0] -- vbuz1=vbuc1 lda #$64 sta j jmp b1 - //SEG25 [11] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] + //SEG26 [11] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] b1_from_b1: - //SEG26 [11] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy + //SEG27 [11] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy jmp b1 - //SEG27 nest::@1 + //SEG28 nest::@1 b1: - //SEG28 [12] *((const byte*) SCREEN#0) ← (byte) nest::j#2 -- _deref_pbuc1=vbuz1 + //SEG29 [12] *((const byte*) SCREEN#0) ← (byte) nest::j#2 -- _deref_pbuc1=vbuz1 lda j sta SCREEN - //SEG29 [13] (byte) nest::j#1 ← -- (byte) nest::j#2 -- vbuz1=_dec_vbuz1 + //SEG30 [13] (byte) nest::j#1 ← -- (byte) nest::j#2 -- vbuz1=_dec_vbuz1 dec j - //SEG30 [14] if((byte) nest::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest::@1 -- vbuz1_gt_0_then_la1 + //SEG31 [14] if((byte) nest::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest::@1 -- vbuz1_gt_0_then_la1 lda j bne b1_from_b1 jmp breturn - //SEG31 nest::@return + //SEG32 nest::@return breturn: - //SEG32 [15] return + //SEG33 [15] return rts } @@ -284,83 +285,84 @@ Uplifting [main] best 2358 combination reg byte y [ main::i#2 main::i#1 ] Uplifting [] best 2358 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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] -- vbuyy=vbuc1 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #$64 jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] call nest - //SEG16 [10] phi from main::@1 to nest [phi:main::@1->nest] + //SEG16 [6] call nest + //SEG17 [10] phi from main::@1 to nest [phi:main::@1->nest] nest_from_b1: jsr nest jmp b3 - //SEG17 main::@3 + //SEG18 main::@3 b3: - //SEG18 [7] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuyy=_dec_vbuyy + //SEG19 [7] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuyy=_dec_vbuyy dey - //SEG19 [8] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuyy_gt_0_then_la1 + //SEG20 [8] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuyy_gt_0_then_la1 cpy #0 bne b1_from_b3 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [9] return + //SEG22 [9] return rts } -//SEG22 nest +//SEG23 nest nest: { - //SEG23 [11] phi from nest to nest::@1 [phi:nest->nest::@1] + //SEG24 [11] phi from nest to nest::@1 [phi:nest->nest::@1] b1_from_nest: - //SEG24 [11] phi (byte) nest::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest->nest::@1#0] -- vbuxx=vbuc1 + //SEG25 [11] phi (byte) nest::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest->nest::@1#0] -- vbuxx=vbuc1 ldx #$64 jmp b1 - //SEG25 [11] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] + //SEG26 [11] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] b1_from_b1: - //SEG26 [11] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy + //SEG27 [11] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy jmp b1 - //SEG27 nest::@1 + //SEG28 nest::@1 b1: - //SEG28 [12] *((const byte*) SCREEN#0) ← (byte) nest::j#2 -- _deref_pbuc1=vbuxx + //SEG29 [12] *((const byte*) SCREEN#0) ← (byte) nest::j#2 -- _deref_pbuc1=vbuxx stx SCREEN - //SEG29 [13] (byte) nest::j#1 ← -- (byte) nest::j#2 -- vbuxx=_dec_vbuxx + //SEG30 [13] (byte) nest::j#1 ← -- (byte) nest::j#2 -- vbuxx=_dec_vbuxx dex - //SEG30 [14] if((byte) nest::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest::@1 -- vbuxx_gt_0_then_la1 + //SEG31 [14] if((byte) nest::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest::@1 -- vbuxx_gt_0_then_la1 cpx #0 bne b1_from_b1 jmp breturn - //SEG31 nest::@return + //SEG32 nest::@return breturn: - //SEG32 [15] return + //SEG33 [15] return rts } @@ -426,59 +428,60 @@ reg byte x [ nest::j#2 nest::j#1 ] FINAL ASSEMBLER Score: 1353 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 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] -- vbuyy=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #$64 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] call nest - //SEG16 [10] phi from main::@1 to nest [phi:main::@1->nest] + //SEG16 [6] call nest + //SEG17 [10] phi from main::@1 to nest [phi:main::@1->nest] jsr nest - //SEG17 main::@3 - //SEG18 [7] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuyy=_dec_vbuyy + //SEG18 main::@3 + //SEG19 [7] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuyy=_dec_vbuyy dey - //SEG19 [8] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuyy_gt_0_then_la1 + //SEG20 [8] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuyy_gt_0_then_la1 cpy #0 bne b1 - //SEG20 main::@return - //SEG21 [9] return + //SEG21 main::@return + //SEG22 [9] return rts } -//SEG22 nest +//SEG23 nest nest: { - //SEG23 [11] phi from nest to nest::@1 [phi:nest->nest::@1] - //SEG24 [11] phi (byte) nest::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest->nest::@1#0] -- vbuxx=vbuc1 + //SEG24 [11] phi from nest to nest::@1 [phi:nest->nest::@1] + //SEG25 [11] phi (byte) nest::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest->nest::@1#0] -- vbuxx=vbuc1 ldx #$64 - //SEG25 [11] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] - //SEG26 [11] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy - //SEG27 nest::@1 + //SEG26 [11] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] + //SEG27 [11] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy + //SEG28 nest::@1 b1: - //SEG28 [12] *((const byte*) SCREEN#0) ← (byte) nest::j#2 -- _deref_pbuc1=vbuxx + //SEG29 [12] *((const byte*) SCREEN#0) ← (byte) nest::j#2 -- _deref_pbuc1=vbuxx stx SCREEN - //SEG29 [13] (byte) nest::j#1 ← -- (byte) nest::j#2 -- vbuxx=_dec_vbuxx + //SEG30 [13] (byte) nest::j#1 ← -- (byte) nest::j#2 -- vbuxx=_dec_vbuxx dex - //SEG30 [14] if((byte) nest::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest::@1 -- vbuxx_gt_0_then_la1 + //SEG31 [14] if((byte) nest::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest::@1 -- vbuxx_gt_0_then_la1 cpx #0 bne b1 - //SEG31 nest::@return - //SEG32 [15] return + //SEG32 nest::@return + //SEG33 [15] return rts } diff --git a/src/test/ref/loopnest2.log b/src/test/ref/loopnest2.log index ca6b3cbdf..fb6589972 100644 --- a/src/test/ref/loopnest2.log +++ b/src/test/ref/loopnest2.log @@ -407,184 +407,185 @@ Allocated zp ZP_BYTE:6 [ nest2::i#4 nest2::i#1 ] Allocated zp ZP_BYTE:7 [ nest2::j#2 nest2::j#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label j = 3 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #$64 sta i jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #$64 sta j jmp b2 - //SEG17 [6] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG18 [6] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] call nest1 - //SEG21 [13] phi from main::@2 to nest1 [phi:main::@2->nest1] + //SEG21 [7] call nest1 + //SEG22 [13] phi from main::@2 to nest1 [phi:main::@2->nest1] nest1_from_b2: jsr nest1 jmp b5 - //SEG22 main::@5 + //SEG23 main::@5 b5: - //SEG23 [8] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 + //SEG24 [8] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 dec j - //SEG24 [9] if((byte) main::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_gt_0_then_la1 + //SEG25 [9] if((byte) main::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_gt_0_then_la1 lda j bne b2_from_b5 jmp b3 - //SEG25 main::@3 + //SEG26 main::@3 b3: - //SEG26 [10] (byte) main::i#1 ← -- (byte) main::i#5 -- vbuz1=_dec_vbuz1 + //SEG27 [10] (byte) main::i#1 ← -- (byte) main::i#5 -- vbuz1=_dec_vbuz1 dec i - //SEG27 [11] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 + //SEG28 [11] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn - //SEG28 main::@return + //SEG29 main::@return breturn: - //SEG29 [12] return + //SEG30 [12] return rts } -//SEG30 nest1 +//SEG31 nest1 nest1: { .label j = 5 .label i = 4 - //SEG31 [14] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] + //SEG32 [14] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] b1_from_nest1: - //SEG32 [14] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1->nest1::@1#0] -- vbuz1=vbuc1 + //SEG33 [14] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1->nest1::@1#0] -- vbuz1=vbuc1 lda #$64 sta i jmp b1 - //SEG33 [14] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] + //SEG34 [14] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] b1_from_b3: - //SEG34 [14] phi (byte) nest1::i#5 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy + //SEG35 [14] phi (byte) nest1::i#5 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy jmp b1 - //SEG35 nest1::@1 + //SEG36 nest1::@1 b1: - //SEG36 [15] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] + //SEG37 [15] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] b2_from_b1: - //SEG37 [15] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1::@1->nest1::@2#0] -- vbuz1=vbuc1 + //SEG38 [15] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1::@1->nest1::@2#0] -- vbuz1=vbuc1 lda #$64 sta j jmp b2 - //SEG38 [15] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] + //SEG39 [15] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] b2_from_b5: - //SEG39 [15] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy + //SEG40 [15] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy jmp b2 - //SEG40 nest1::@2 + //SEG41 nest1::@2 b2: - //SEG41 [16] call nest2 - //SEG42 [22] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] + //SEG42 [16] call nest2 + //SEG43 [22] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] nest2_from_b2: jsr nest2 jmp b5 - //SEG43 nest1::@5 + //SEG44 nest1::@5 b5: - //SEG44 [17] (byte) nest1::j#1 ← -- (byte) nest1::j#2 -- vbuz1=_dec_vbuz1 + //SEG45 [17] (byte) nest1::j#1 ← -- (byte) nest1::j#2 -- vbuz1=_dec_vbuz1 dec j - //SEG45 [18] if((byte) nest1::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@2 -- vbuz1_gt_0_then_la1 + //SEG46 [18] if((byte) nest1::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@2 -- vbuz1_gt_0_then_la1 lda j bne b2_from_b5 jmp b3 - //SEG46 nest1::@3 + //SEG47 nest1::@3 b3: - //SEG47 [19] (byte) nest1::i#1 ← -- (byte) nest1::i#5 -- vbuz1=_dec_vbuz1 + //SEG48 [19] (byte) nest1::i#1 ← -- (byte) nest1::i#5 -- vbuz1=_dec_vbuz1 dec i - //SEG48 [20] if((byte) nest1::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@1 -- vbuz1_gt_0_then_la1 + //SEG49 [20] if((byte) nest1::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@1 -- vbuz1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn - //SEG49 nest1::@return + //SEG50 nest1::@return breturn: - //SEG50 [21] return + //SEG51 [21] return rts } -//SEG51 nest2 +//SEG52 nest2 nest2: { .label j = 7 .label i = 6 - //SEG52 [23] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] + //SEG53 [23] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] b1_from_nest2: - //SEG53 [23] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2->nest2::@1#0] -- vbuz1=vbuc1 + //SEG54 [23] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2->nest2::@1#0] -- vbuz1=vbuc1 lda #$64 sta i jmp b1 - //SEG54 [23] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] + //SEG55 [23] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] b1_from_b3: - //SEG55 [23] phi (byte) nest2::i#4 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy + //SEG56 [23] phi (byte) nest2::i#4 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy jmp b1 - //SEG56 nest2::@1 + //SEG57 nest2::@1 b1: - //SEG57 [24] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] + //SEG58 [24] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] b2_from_b1: - //SEG58 [24] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2::@1->nest2::@2#0] -- vbuz1=vbuc1 + //SEG59 [24] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2::@1->nest2::@2#0] -- vbuz1=vbuc1 lda #$64 sta j jmp b2 - //SEG59 [24] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] + //SEG60 [24] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] b2_from_b2: - //SEG60 [24] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy + //SEG61 [24] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy jmp b2 - //SEG61 nest2::@2 + //SEG62 nest2::@2 b2: - //SEG62 [25] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 -- _deref_pbuc1=vbuz1 + //SEG63 [25] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 -- _deref_pbuc1=vbuz1 lda j sta SCREEN - //SEG63 [26] (byte) nest2::j#1 ← -- (byte) nest2::j#2 -- vbuz1=_dec_vbuz1 + //SEG64 [26] (byte) nest2::j#1 ← -- (byte) nest2::j#2 -- vbuz1=_dec_vbuz1 dec j - //SEG64 [27] if((byte) nest2::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@2 -- vbuz1_gt_0_then_la1 + //SEG65 [27] if((byte) nest2::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@2 -- vbuz1_gt_0_then_la1 lda j bne b2_from_b2 jmp b3 - //SEG65 nest2::@3 + //SEG66 nest2::@3 b3: - //SEG66 [28] (byte) nest2::i#1 ← -- (byte) nest2::i#4 -- vbuz1=_dec_vbuz1 + //SEG67 [28] (byte) nest2::i#1 ← -- (byte) nest2::i#4 -- vbuz1=_dec_vbuz1 dec i - //SEG67 [29] if((byte) nest2::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@1 -- vbuz1_gt_0_then_la1 + //SEG68 [29] if((byte) nest2::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@1 -- vbuz1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn - //SEG68 nest2::@return + //SEG69 nest2::@return breturn: - //SEG69 [30] return + //SEG70 [30] return rts } @@ -614,178 +615,179 @@ Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#5 main::i#1 ] Uplifting [main] best 23472243 combination zp ZP_BYTE:2 [ main::i#5 main::i#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label j = 3 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #$64 sta i jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #$64 sta j jmp b2 - //SEG17 [6] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG18 [6] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] call nest1 - //SEG21 [13] phi from main::@2 to nest1 [phi:main::@2->nest1] + //SEG21 [7] call nest1 + //SEG22 [13] phi from main::@2 to nest1 [phi:main::@2->nest1] nest1_from_b2: jsr nest1 jmp b5 - //SEG22 main::@5 + //SEG23 main::@5 b5: - //SEG23 [8] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 + //SEG24 [8] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 dec j - //SEG24 [9] if((byte) main::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_gt_0_then_la1 + //SEG25 [9] if((byte) main::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_gt_0_then_la1 lda j bne b2_from_b5 jmp b3 - //SEG25 main::@3 + //SEG26 main::@3 b3: - //SEG26 [10] (byte) main::i#1 ← -- (byte) main::i#5 -- vbuz1=_dec_vbuz1 + //SEG27 [10] (byte) main::i#1 ← -- (byte) main::i#5 -- vbuz1=_dec_vbuz1 dec i - //SEG27 [11] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 + //SEG28 [11] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn - //SEG28 main::@return + //SEG29 main::@return breturn: - //SEG29 [12] return + //SEG30 [12] return rts } -//SEG30 nest1 +//SEG31 nest1 nest1: { .label i = 4 - //SEG31 [14] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] + //SEG32 [14] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] b1_from_nest1: - //SEG32 [14] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1->nest1::@1#0] -- vbuz1=vbuc1 + //SEG33 [14] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1->nest1::@1#0] -- vbuz1=vbuc1 lda #$64 sta i jmp b1 - //SEG33 [14] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] + //SEG34 [14] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] b1_from_b3: - //SEG34 [14] phi (byte) nest1::i#5 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy + //SEG35 [14] phi (byte) nest1::i#5 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy jmp b1 - //SEG35 nest1::@1 + //SEG36 nest1::@1 b1: - //SEG36 [15] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] + //SEG37 [15] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] b2_from_b1: - //SEG37 [15] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1::@1->nest1::@2#0] -- vbuaa=vbuc1 + //SEG38 [15] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1::@1->nest1::@2#0] -- vbuaa=vbuc1 lda #$64 jmp b2 - //SEG38 [15] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] + //SEG39 [15] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] b2_from_b5: - //SEG39 [15] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy + //SEG40 [15] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy jmp b2 - //SEG40 nest1::@2 + //SEG41 nest1::@2 b2: - //SEG41 [16] call nest2 - //SEG42 [22] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] + //SEG42 [16] call nest2 + //SEG43 [22] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] nest2_from_b2: jsr nest2 jmp b5 - //SEG43 nest1::@5 + //SEG44 nest1::@5 b5: - //SEG44 [17] (byte) nest1::j#1 ← -- (byte) nest1::j#2 -- vbuaa=_dec_vbuaa + //SEG45 [17] (byte) nest1::j#1 ← -- (byte) nest1::j#2 -- vbuaa=_dec_vbuaa sec sbc #1 - //SEG45 [18] if((byte) nest1::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@2 -- vbuaa_gt_0_then_la1 + //SEG46 [18] if((byte) nest1::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@2 -- vbuaa_gt_0_then_la1 cmp #0 bne b2_from_b5 jmp b3 - //SEG46 nest1::@3 + //SEG47 nest1::@3 b3: - //SEG47 [19] (byte) nest1::i#1 ← -- (byte) nest1::i#5 -- vbuz1=_dec_vbuz1 + //SEG48 [19] (byte) nest1::i#1 ← -- (byte) nest1::i#5 -- vbuz1=_dec_vbuz1 dec i - //SEG48 [20] if((byte) nest1::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@1 -- vbuz1_gt_0_then_la1 + //SEG49 [20] if((byte) nest1::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@1 -- vbuz1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn - //SEG49 nest1::@return + //SEG50 nest1::@return breturn: - //SEG50 [21] return + //SEG51 [21] return rts } -//SEG51 nest2 +//SEG52 nest2 nest2: { - //SEG52 [23] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] + //SEG53 [23] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] b1_from_nest2: - //SEG53 [23] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2->nest2::@1#0] -- vbuxx=vbuc1 + //SEG54 [23] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2->nest2::@1#0] -- vbuxx=vbuc1 ldx #$64 jmp b1 - //SEG54 [23] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] + //SEG55 [23] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] b1_from_b3: - //SEG55 [23] phi (byte) nest2::i#4 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy + //SEG56 [23] phi (byte) nest2::i#4 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy jmp b1 - //SEG56 nest2::@1 + //SEG57 nest2::@1 b1: - //SEG57 [24] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] + //SEG58 [24] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] b2_from_b1: - //SEG58 [24] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2::@1->nest2::@2#0] -- vbuyy=vbuc1 + //SEG59 [24] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2::@1->nest2::@2#0] -- vbuyy=vbuc1 ldy #$64 jmp b2 - //SEG59 [24] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] + //SEG60 [24] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] b2_from_b2: - //SEG60 [24] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy + //SEG61 [24] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy jmp b2 - //SEG61 nest2::@2 + //SEG62 nest2::@2 b2: - //SEG62 [25] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 -- _deref_pbuc1=vbuyy + //SEG63 [25] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 -- _deref_pbuc1=vbuyy sty SCREEN - //SEG63 [26] (byte) nest2::j#1 ← -- (byte) nest2::j#2 -- vbuyy=_dec_vbuyy + //SEG64 [26] (byte) nest2::j#1 ← -- (byte) nest2::j#2 -- vbuyy=_dec_vbuyy dey - //SEG64 [27] if((byte) nest2::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@2 -- vbuyy_gt_0_then_la1 + //SEG65 [27] if((byte) nest2::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@2 -- vbuyy_gt_0_then_la1 cpy #0 bne b2_from_b2 jmp b3 - //SEG65 nest2::@3 + //SEG66 nest2::@3 b3: - //SEG66 [28] (byte) nest2::i#1 ← -- (byte) nest2::i#4 -- vbuxx=_dec_vbuxx + //SEG67 [28] (byte) nest2::i#1 ← -- (byte) nest2::i#4 -- vbuxx=_dec_vbuxx dex - //SEG67 [29] if((byte) nest2::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@1 -- vbuxx_gt_0_then_la1 + //SEG68 [29] if((byte) nest2::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@1 -- vbuxx_gt_0_then_la1 cpx #0 bne b1_from_b3 jmp breturn - //SEG68 nest2::@return + //SEG69 nest2::@return breturn: - //SEG69 [30] return + //SEG70 [30] return rts } @@ -908,127 +910,128 @@ reg byte y [ nest2::j#2 nest2::j#1 ] FINAL ASSEMBLER Score: 13472235 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 main main: { .label j = 3 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #$64 sta i - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG13 [5] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #$64 sta j - //SEG17 [6] phi from main::@5 to main::@2 [phi:main::@5->main::@2] - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy - //SEG19 main::@2 + //SEG18 [6] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG19 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy + //SEG20 main::@2 b2: - //SEG20 [7] call nest1 - //SEG21 [13] phi from main::@2 to nest1 [phi:main::@2->nest1] + //SEG21 [7] call nest1 + //SEG22 [13] phi from main::@2 to nest1 [phi:main::@2->nest1] jsr nest1 - //SEG22 main::@5 - //SEG23 [8] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 + //SEG23 main::@5 + //SEG24 [8] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 dec j - //SEG24 [9] if((byte) main::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_gt_0_then_la1 + //SEG25 [9] if((byte) main::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_gt_0_then_la1 lda j bne b2 - //SEG25 main::@3 - //SEG26 [10] (byte) main::i#1 ← -- (byte) main::i#5 -- vbuz1=_dec_vbuz1 + //SEG26 main::@3 + //SEG27 [10] (byte) main::i#1 ← -- (byte) main::i#5 -- vbuz1=_dec_vbuz1 dec i - //SEG27 [11] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 + //SEG28 [11] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_gt_0_then_la1 lda i bne b1 - //SEG28 main::@return - //SEG29 [12] return + //SEG29 main::@return + //SEG30 [12] return rts } -//SEG30 nest1 +//SEG31 nest1 nest1: { .label i = 4 - //SEG31 [14] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] - //SEG32 [14] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1->nest1::@1#0] -- vbuz1=vbuc1 + //SEG32 [14] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] + //SEG33 [14] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1->nest1::@1#0] -- vbuz1=vbuc1 lda #$64 sta i - //SEG33 [14] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] - //SEG34 [14] phi (byte) nest1::i#5 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy - //SEG35 nest1::@1 + //SEG34 [14] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] + //SEG35 [14] phi (byte) nest1::i#5 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy + //SEG36 nest1::@1 b1: - //SEG36 [15] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] - //SEG37 [15] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1::@1->nest1::@2#0] -- vbuaa=vbuc1 + //SEG37 [15] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] + //SEG38 [15] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest1::@1->nest1::@2#0] -- vbuaa=vbuc1 lda #$64 - //SEG38 [15] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] - //SEG39 [15] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy - //SEG40 nest1::@2 + //SEG39 [15] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] + //SEG40 [15] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy + //SEG41 nest1::@2 b2: - //SEG41 [16] call nest2 - //SEG42 [22] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] + //SEG42 [16] call nest2 + //SEG43 [22] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] jsr nest2 - //SEG43 nest1::@5 - //SEG44 [17] (byte) nest1::j#1 ← -- (byte) nest1::j#2 -- vbuaa=_dec_vbuaa + //SEG44 nest1::@5 + //SEG45 [17] (byte) nest1::j#1 ← -- (byte) nest1::j#2 -- vbuaa=_dec_vbuaa sec sbc #1 - //SEG45 [18] if((byte) nest1::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@2 -- vbuaa_gt_0_then_la1 + //SEG46 [18] if((byte) nest1::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@2 -- vbuaa_gt_0_then_la1 cmp #0 bne b2 - //SEG46 nest1::@3 - //SEG47 [19] (byte) nest1::i#1 ← -- (byte) nest1::i#5 -- vbuz1=_dec_vbuz1 + //SEG47 nest1::@3 + //SEG48 [19] (byte) nest1::i#1 ← -- (byte) nest1::i#5 -- vbuz1=_dec_vbuz1 dec i - //SEG48 [20] if((byte) nest1::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@1 -- vbuz1_gt_0_then_la1 + //SEG49 [20] if((byte) nest1::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest1::@1 -- vbuz1_gt_0_then_la1 lda i bne b1 - //SEG49 nest1::@return - //SEG50 [21] return + //SEG50 nest1::@return + //SEG51 [21] return rts } -//SEG51 nest2 +//SEG52 nest2 nest2: { - //SEG52 [23] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] - //SEG53 [23] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2->nest2::@1#0] -- vbuxx=vbuc1 + //SEG53 [23] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] + //SEG54 [23] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2->nest2::@1#0] -- vbuxx=vbuc1 ldx #$64 - //SEG54 [23] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] - //SEG55 [23] phi (byte) nest2::i#4 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy - //SEG56 nest2::@1 + //SEG55 [23] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] + //SEG56 [23] phi (byte) nest2::i#4 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy + //SEG57 nest2::@1 b1: - //SEG57 [24] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] - //SEG58 [24] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2::@1->nest2::@2#0] -- vbuyy=vbuc1 + //SEG58 [24] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] + //SEG59 [24] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:nest2::@1->nest2::@2#0] -- vbuyy=vbuc1 ldy #$64 - //SEG59 [24] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] - //SEG60 [24] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy - //SEG61 nest2::@2 + //SEG60 [24] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] + //SEG61 [24] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy + //SEG62 nest2::@2 b2: - //SEG62 [25] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 -- _deref_pbuc1=vbuyy + //SEG63 [25] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 -- _deref_pbuc1=vbuyy sty SCREEN - //SEG63 [26] (byte) nest2::j#1 ← -- (byte) nest2::j#2 -- vbuyy=_dec_vbuyy + //SEG64 [26] (byte) nest2::j#1 ← -- (byte) nest2::j#2 -- vbuyy=_dec_vbuyy dey - //SEG64 [27] if((byte) nest2::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@2 -- vbuyy_gt_0_then_la1 + //SEG65 [27] if((byte) nest2::j#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@2 -- vbuyy_gt_0_then_la1 cpy #0 bne b2 - //SEG65 nest2::@3 - //SEG66 [28] (byte) nest2::i#1 ← -- (byte) nest2::i#4 -- vbuxx=_dec_vbuxx + //SEG66 nest2::@3 + //SEG67 [28] (byte) nest2::i#1 ← -- (byte) nest2::i#4 -- vbuxx=_dec_vbuxx dex - //SEG67 [29] if((byte) nest2::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@1 -- vbuxx_gt_0_then_la1 + //SEG68 [29] if((byte) nest2::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto nest2::@1 -- vbuxx_gt_0_then_la1 cpx #0 bne b1 - //SEG68 nest2::@return - //SEG69 [30] return + //SEG69 nest2::@return + //SEG70 [30] return rts } diff --git a/src/test/ref/loopnest3.log b/src/test/ref/loopnest3.log index 185299b56..720a5797a 100644 --- a/src/test/ref/loopnest3.log +++ b/src/test/ref/loopnest3.log @@ -222,109 +222,110 @@ Allocated zp ZP_BYTE:4 [ b::i#0 ] Allocated zp ZP_BYTE:5 [ c::i#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) b::i#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG16 [6] (byte) b::i#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta b.i - //SEG16 [7] call b + //SEG17 [7] call b jsr b jmp b3 - //SEG17 main::@3 + //SEG18 main::@3 b3: - //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG20 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$65 bne b1_from_b3 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [10] return + //SEG22 [10] return rts } -//SEG22 b +//SEG23 b b: { .label i = 4 - //SEG23 [11] (byte) c::i#0 ← (byte) b::i#0 -- vbuz1=vbuz2 + //SEG24 [11] (byte) c::i#0 ← (byte) b::i#0 -- vbuz1=vbuz2 lda i sta c.i - //SEG24 [12] call c - //SEG25 [14] phi from b to c [phi:b->c] + //SEG25 [12] call c + //SEG26 [14] phi from b to c [phi:b->c] c_from_b: jsr c jmp breturn - //SEG26 b::@return + //SEG27 b::@return breturn: - //SEG27 [13] return + //SEG28 [13] return rts } -//SEG28 c +//SEG29 c c: { .label i = 5 .label j = 3 - //SEG29 [15] phi from c to c::@1 [phi:c->c::@1] + //SEG30 [15] phi from c to c::@1 [phi:c->c::@1] b1_from_c: - //SEG30 [15] phi (byte) c::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:c->c::@1#0] -- vbuz1=vbuc1 + //SEG31 [15] phi (byte) c::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:c->c::@1#0] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG31 [15] phi from c::@1 to c::@1 [phi:c::@1->c::@1] + //SEG32 [15] phi from c::@1 to c::@1 [phi:c::@1->c::@1] b1_from_b1: - //SEG32 [15] phi (byte) c::j#2 = (byte) c::j#1 [phi:c::@1->c::@1#0] -- register_copy + //SEG33 [15] phi (byte) c::j#2 = (byte) c::j#1 [phi:c::@1->c::@1#0] -- register_copy jmp b1 - //SEG33 c::@1 + //SEG34 c::@1 b1: - //SEG34 [16] *((const byte*) SCREEN#0 + (byte) c::j#2) ← (byte) c::i#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG35 [16] *((const byte*) SCREEN#0 + (byte) c::j#2) ← (byte) c::i#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda i ldy j sta SCREEN,y - //SEG35 [17] (byte) c::j#1 ← ++ (byte) c::j#2 -- vbuz1=_inc_vbuz1 + //SEG36 [17] (byte) c::j#1 ← ++ (byte) c::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG36 [18] if((byte) c::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto c::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG37 [18] if((byte) c::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto c::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$65 bne b1_from_b1 jmp breturn - //SEG37 c::@return + //SEG38 c::@return breturn: - //SEG38 [19] return + //SEG39 [19] return rts } @@ -346,96 +347,97 @@ Uplifting [b] best 2556 combination reg byte y [ b::i#0 ] Uplifting [] best 2556 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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] -- vbuyy=vbuc1 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) b::i#0 ← (byte) main::i#2 - //SEG16 [7] call b + //SEG16 [6] (byte) b::i#0 ← (byte) main::i#2 + //SEG17 [7] call b jsr b jmp b3 - //SEG17 main::@3 + //SEG18 main::@3 b3: - //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy + //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy iny - //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG20 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$65 bne b1_from_b3 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [10] return + //SEG22 [10] return rts } -//SEG22 b +//SEG23 b b: { - //SEG23 [11] (byte) c::i#0 ← (byte) b::i#0 -- vbuaa=vbuyy + //SEG24 [11] (byte) c::i#0 ← (byte) b::i#0 -- vbuaa=vbuyy tya - //SEG24 [12] call c - //SEG25 [14] phi from b to c [phi:b->c] + //SEG25 [12] call c + //SEG26 [14] phi from b to c [phi:b->c] c_from_b: jsr c jmp breturn - //SEG26 b::@return + //SEG27 b::@return breturn: - //SEG27 [13] return + //SEG28 [13] return rts } -//SEG28 c +//SEG29 c c: { - //SEG29 [15] phi from c to c::@1 [phi:c->c::@1] + //SEG30 [15] phi from c to c::@1 [phi:c->c::@1] b1_from_c: - //SEG30 [15] phi (byte) c::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:c->c::@1#0] -- vbuxx=vbuc1 + //SEG31 [15] phi (byte) c::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:c->c::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG31 [15] phi from c::@1 to c::@1 [phi:c::@1->c::@1] + //SEG32 [15] phi from c::@1 to c::@1 [phi:c::@1->c::@1] b1_from_b1: - //SEG32 [15] phi (byte) c::j#2 = (byte) c::j#1 [phi:c::@1->c::@1#0] -- register_copy + //SEG33 [15] phi (byte) c::j#2 = (byte) c::j#1 [phi:c::@1->c::@1#0] -- register_copy jmp b1 - //SEG33 c::@1 + //SEG34 c::@1 b1: - //SEG34 [16] *((const byte*) SCREEN#0 + (byte) c::j#2) ← (byte) c::i#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG35 [16] *((const byte*) SCREEN#0 + (byte) c::j#2) ← (byte) c::i#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG35 [17] (byte) c::j#1 ← ++ (byte) c::j#2 -- vbuxx=_inc_vbuxx + //SEG36 [17] (byte) c::j#1 ← ++ (byte) c::j#2 -- vbuxx=_inc_vbuxx inx - //SEG36 [18] if((byte) c::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto c::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG37 [18] if((byte) c::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto c::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1_from_b1 jmp breturn - //SEG37 c::@return + //SEG38 c::@return breturn: - //SEG38 [19] return + //SEG39 [19] return rts } @@ -511,70 +513,71 @@ reg byte a [ c::i#0 ] FINAL ASSEMBLER Score: 1521 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte) b::i#0 ← (byte) main::i#2 - //SEG16 [7] call b + //SEG16 [6] (byte) b::i#0 ← (byte) main::i#2 + //SEG17 [7] call b jsr b - //SEG17 main::@3 - //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy + //SEG18 main::@3 + //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy iny - //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG20 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$65 bne b1 - //SEG20 main::@return - //SEG21 [10] return + //SEG21 main::@return + //SEG22 [10] return rts } -//SEG22 b +//SEG23 b b: { - //SEG23 [11] (byte) c::i#0 ← (byte) b::i#0 -- vbuaa=vbuyy + //SEG24 [11] (byte) c::i#0 ← (byte) b::i#0 -- vbuaa=vbuyy tya - //SEG24 [12] call c - //SEG25 [14] phi from b to c [phi:b->c] + //SEG25 [12] call c + //SEG26 [14] phi from b to c [phi:b->c] jsr c - //SEG26 b::@return - //SEG27 [13] return + //SEG27 b::@return + //SEG28 [13] return rts } -//SEG28 c +//SEG29 c c: { - //SEG29 [15] phi from c to c::@1 [phi:c->c::@1] - //SEG30 [15] phi (byte) c::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:c->c::@1#0] -- vbuxx=vbuc1 + //SEG30 [15] phi from c to c::@1 [phi:c->c::@1] + //SEG31 [15] phi (byte) c::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:c->c::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG31 [15] phi from c::@1 to c::@1 [phi:c::@1->c::@1] - //SEG32 [15] phi (byte) c::j#2 = (byte) c::j#1 [phi:c::@1->c::@1#0] -- register_copy - //SEG33 c::@1 + //SEG32 [15] phi from c::@1 to c::@1 [phi:c::@1->c::@1] + //SEG33 [15] phi (byte) c::j#2 = (byte) c::j#1 [phi:c::@1->c::@1#0] -- register_copy + //SEG34 c::@1 b1: - //SEG34 [16] *((const byte*) SCREEN#0 + (byte) c::j#2) ← (byte) c::i#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG35 [16] *((const byte*) SCREEN#0 + (byte) c::j#2) ← (byte) c::i#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG35 [17] (byte) c::j#1 ← ++ (byte) c::j#2 -- vbuxx=_inc_vbuxx + //SEG36 [17] (byte) c::j#1 ← ++ (byte) c::j#2 -- vbuxx=_inc_vbuxx inx - //SEG36 [18] if((byte) c::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto c::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG37 [18] if((byte) c::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto c::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1 - //SEG37 c::@return - //SEG38 [19] return + //SEG38 c::@return + //SEG39 [19] return rts } diff --git a/src/test/ref/loopsplit.log b/src/test/ref/loopsplit.log index d473723aa..1ec838833 100644 --- a/src/test/ref/loopsplit.log +++ b/src/test/ref/loopsplit.log @@ -155,74 +155,75 @@ 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 +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 .label s = 3 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::s#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [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 + //SEG13 [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 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuz1=_dec_vbuz1 + //SEG15 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuz1=_dec_vbuz1 dec i - //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 + //SEG16 [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 - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts - //SEG18 main::@2 + //SEG19 main::@2 b2: - //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 + //SEG20 [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 !: jmp b8 - //SEG20 main::@8 + //SEG21 main::@8 b8: - //SEG21 [10] (byte) main::s#2 ← -- (byte) main::s#3 -- vbuz1=_dec_vbuz1 + //SEG22 [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] + //SEG23 [5] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b4: 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 + //SEG24 [5] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG25 [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 + //SEG26 main::@4 b4: - //SEG26 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuz1=_inc_vbuz1 + //SEG27 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuz1=_inc_vbuz1 inc s jmp b1_from_b4 } @@ -239,70 +240,71 @@ Uplifting [main] best 403 combination reg byte x [ main::s#3 main::s#1 main::s#2 Uplifting [] best 403 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::s#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [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 + //SEG13 [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 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuaa=_dec_vbuaa + //SEG15 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuaa=_dec_vbuaa sec sbc #1 - //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 + //SEG16 [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 - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts - //SEG18 main::@2 + //SEG19 main::@2 b2: - //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 + //SEG20 [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 !: jmp b8 - //SEG20 main::@8 + //SEG21 main::@8 b8: - //SEG21 [10] (byte) main::s#2 ← -- (byte) main::s#3 -- vbuxx=_dec_vbuxx + //SEG22 [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 from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b4: 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 + //SEG24 [5] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG25 [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 + //SEG26 main::@4 b4: - //SEG26 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuxx=_inc_vbuxx + //SEG27 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuxx=_inc_vbuxx inx jmp b1_from_b4 } @@ -362,53 +364,54 @@ reg byte x [ main::s#3 main::s#1 main::s#2 ] FINAL ASSEMBLER Score: 301 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::s#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 + //SEG13 [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 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuaa=_dec_vbuaa + //SEG15 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuaa=_dec_vbuaa sec sbc #1 - //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 + //SEG16 [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 - //SEG16 main::@return - //SEG17 [8] return + //SEG17 main::@return + //SEG18 [8] return rts - //SEG18 main::@2 + //SEG19 main::@2 b2: - //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 + //SEG20 [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 !: - //SEG20 main::@8 - //SEG21 [10] (byte) main::s#2 ← -- (byte) main::s#3 -- vbuxx=_dec_vbuxx + //SEG21 main::@8 + //SEG22 [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 + //SEG23 [5] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] + //SEG24 [5] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG25 [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 + //SEG26 main::@4 b4: - //SEG26 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuxx=_inc_vbuxx + //SEG27 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuxx=_inc_vbuxx inx jmp b1 } diff --git a/src/test/ref/mem-alignment.asm b/src/test/ref/mem-alignment.asm index 78a263569..70bfc2264 100644 --- a/src/test/ref/mem-alignment.asm +++ b/src/test/ref/mem-alignment.asm @@ -1,3 +1,4 @@ +// Test that memory alignment of arrays work .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" @@ -22,6 +23,5 @@ main: { .align $100 cs: .fill $100, 0 } - // Test that memory alignment of arrays work .align $100 bs: .fill $100, 0 diff --git a/src/test/ref/mem-alignment.log b/src/test/ref/mem-alignment.log index da1188441..0c4983c8f 100644 --- a/src/test/ref/mem-alignment.log +++ b/src/test/ref/mem-alignment.log @@ -168,93 +168,94 @@ Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Allocated zp ZP_BYTE:4 [ main::i#5 main::i#3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that memory alignment of arrays work +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 .label j = 3 .label i_3 = 4 .label i_5 = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte[256]) bs#0 + (byte) main::i#4) ← (byte) main::i#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG16 [6] *((const byte[256]) bs#0 + (byte) main::i#4) ← (byte) main::i#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta bs,y - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_neq_0_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_neq_0_then_la1 lda i cmp #0 bne b1_from_b1 - //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG19 [9] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG20 [9] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i_5 - //SEG20 [9] phi (byte) main::j#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main::@1->main::@2#1] -- vbuz1=vbuc1 + //SEG21 [9] phi (byte) main::j#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main::@1->main::@2#1] -- vbuz1=vbuc1 lda #$ff sta j jmp b2 - //SEG21 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG22 [9] phi (byte) main::i#5 = (byte) main::i#3 [phi:main::@2->main::@2#0] -- register_copy - //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#1] -- register_copy + //SEG23 [9] phi (byte) main::i#5 = (byte) main::i#3 [phi:main::@2->main::@2#0] -- register_copy + //SEG24 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#1] -- register_copy jmp b2 - //SEG24 main::@2 + //SEG25 main::@2 b2: - //SEG25 [10] *((const byte[256]) main::cs#0 + (byte) main::i#5) ← *((const byte[256]) bs#0 + (byte) main::j#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG26 [10] *((const byte[256]) main::cs#0 + (byte) main::i#5) ← *((const byte[256]) bs#0 + (byte) main::j#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy j lda bs,y ldy i_5 sta cs,y - //SEG26 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 + //SEG27 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuz1=_dec_vbuz1 dec j - //SEG27 [12] (byte) main::i#3 ← ++ (byte) main::i#5 -- vbuz1=_inc_vbuz1 + //SEG28 [12] (byte) main::i#3 ← ++ (byte) main::i#5 -- vbuz1=_inc_vbuz1 inc i_3 - //SEG28 [13] if((byte) main::i#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_neq_0_then_la1 + //SEG29 [13] if((byte) main::i#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_neq_0_then_la1 lda i_3 cmp #0 bne b2_from_b2 jmp breturn - //SEG29 main::@return + //SEG30 main::@return breturn: - //SEG30 [14] return + //SEG31 [14] return rts .align $100 cs: .fill $100, 0 } - // Test that memory alignment of arrays work .align $100 bs: .fill $100, 0 @@ -275,81 +276,82 @@ Uplifting [main] best 543 combination reg byte x [ main::i#4 main::i#1 ] reg byt Uplifting [] best 543 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that memory alignment of arrays work +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte[256]) bs#0 + (byte) main::i#4) ← (byte) main::i#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte[256]) bs#0 + (byte) main::i#4) ← (byte) main::i#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta bs,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b1 - //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG19 [9] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG20 [9] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG20 [9] phi (byte) main::j#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main::@1->main::@2#1] -- vbuxx=vbuc1 + //SEG21 [9] phi (byte) main::j#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main::@1->main::@2#1] -- vbuxx=vbuc1 ldx #$ff jmp b2 - //SEG21 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG22 [9] phi (byte) main::i#5 = (byte) main::i#3 [phi:main::@2->main::@2#0] -- register_copy - //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#1] -- register_copy + //SEG23 [9] phi (byte) main::i#5 = (byte) main::i#3 [phi:main::@2->main::@2#0] -- register_copy + //SEG24 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#1] -- register_copy jmp b2 - //SEG24 main::@2 + //SEG25 main::@2 b2: - //SEG25 [10] *((const byte[256]) main::cs#0 + (byte) main::i#5) ← *((const byte[256]) bs#0 + (byte) main::j#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx + //SEG26 [10] *((const byte[256]) main::cs#0 + (byte) main::i#5) ← *((const byte[256]) bs#0 + (byte) main::j#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx lda bs,x sta cs,y - //SEG26 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuxx=_dec_vbuxx + //SEG27 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuxx=_dec_vbuxx dex - //SEG27 [12] (byte) main::i#3 ← ++ (byte) main::i#5 -- vbuyy=_inc_vbuyy + //SEG28 [12] (byte) main::i#3 ← ++ (byte) main::i#5 -- vbuyy=_inc_vbuyy iny - //SEG28 [13] if((byte) main::i#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuyy_neq_0_then_la1 + //SEG29 [13] if((byte) main::i#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuyy_neq_0_then_la1 cpy #0 bne b2_from_b2 jmp breturn - //SEG29 main::@return + //SEG30 main::@return breturn: - //SEG30 [14] return + //SEG31 [14] return rts .align $100 cs: .fill $100, 0 } - // Test that memory alignment of arrays work .align $100 bs: .fill $100, 0 @@ -412,62 +414,63 @@ reg byte y [ main::i#5 main::i#3 ] FINAL ASSEMBLER Score: 381 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test that memory alignment of arrays work +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((const byte[256]) bs#0 + (byte) main::i#4) ← (byte) main::i#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG16 [6] *((const byte[256]) bs#0 + (byte) main::i#4) ← (byte) main::i#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta bs,x - //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx + //SEG17 [7] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx inx - //SEG17 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 + //SEG18 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG18 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG19 [9] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG19 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 [9] phi (byte) main::i#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG20 [9] phi (byte) main::j#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main::@1->main::@2#1] -- vbuxx=vbuc1 + //SEG21 [9] phi (byte) main::j#2 = (byte/word/signed word/dword/signed dword) 255 [phi:main::@1->main::@2#1] -- vbuxx=vbuc1 ldx #$ff - //SEG21 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG22 [9] phi (byte) main::i#5 = (byte) main::i#3 [phi:main::@2->main::@2#0] -- register_copy - //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#1] -- register_copy - //SEG24 main::@2 + //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG23 [9] phi (byte) main::i#5 = (byte) main::i#3 [phi:main::@2->main::@2#0] -- register_copy + //SEG24 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#1] -- register_copy + //SEG25 main::@2 b2: - //SEG25 [10] *((const byte[256]) main::cs#0 + (byte) main::i#5) ← *((const byte[256]) bs#0 + (byte) main::j#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx + //SEG26 [10] *((const byte[256]) main::cs#0 + (byte) main::i#5) ← *((const byte[256]) bs#0 + (byte) main::j#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuxx lda bs,x sta cs,y - //SEG26 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuxx=_dec_vbuxx + //SEG27 [11] (byte) main::j#1 ← -- (byte) main::j#2 -- vbuxx=_dec_vbuxx dex - //SEG27 [12] (byte) main::i#3 ← ++ (byte) main::i#5 -- vbuyy=_inc_vbuyy + //SEG28 [12] (byte) main::i#3 ← ++ (byte) main::i#5 -- vbuyy=_inc_vbuyy iny - //SEG28 [13] if((byte) main::i#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuyy_neq_0_then_la1 + //SEG29 [13] if((byte) main::i#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuyy_neq_0_then_la1 cpy #0 bne b2 - //SEG29 main::@return - //SEG30 [14] return + //SEG30 main::@return + //SEG31 [14] return rts .align $100 cs: .fill $100, 0 } - // Test that memory alignment of arrays work .align $100 bs: .fill $100, 0 diff --git a/src/test/ref/min-fmul-16.asm b/src/test/ref/min-fmul-16.asm index 59107c4bc..cb3a262fa 100644 --- a/src/test/ref/min-fmul-16.asm +++ b/src/test/ref/min-fmul-16.asm @@ -312,9 +312,6 @@ mulf_init: { rts } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @22] +//SEG4 [1] phi from @begin to @22 [phi:@begin->@22] b22_from_bbegin: jmp b22 -//SEG4 @22 +//SEG5 @22 b22: -//SEG5 [2] call main -//SEG6 [4] phi from @22 to main [phi:@22->main] +//SEG6 [2] call main +//SEG7 [4] phi from @22 to main [phi:@22->main] main_from_b22: jsr main -//SEG7 [3] phi from @22 to @end [phi:@22->@end] +//SEG8 [3] phi from @22 to @end [phi:@22->@end] bend_from_b22: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label a = $4d2 .label b = $929 .label r = $1a - //SEG10 [5] call mulf_init - //SEG11 [48] phi from main to mulf_init [phi:main->mulf_init] + //SEG11 [5] call mulf_init + //SEG12 [48] phi from main to mulf_init [phi:main->mulf_init] mulf_init_from_main: jsr mulf_init jmp b13 - //SEG12 main::@13 + //SEG13 main::@13 b13: - //SEG13 asm { sei } + //SEG14 asm { sei } sei - //SEG14 [7] phi from main::@13 to main::@1 [phi:main::@13->main::@1] + //SEG15 [7] phi from main::@13 to main::@1 [phi:main::@13->main::@1] b1_from_b13: - //SEG15 [7] phi (byte*) print_char_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@13->main::@1#0] -- pbuz1=pbuc1 + //SEG16 [7] phi (byte*) print_char_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@13->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: jmp b4 - //SEG17 main::@4 + //SEG18 main::@4 b4: - //SEG18 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [8] 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 b6 - //SEG19 main::@6 + //SEG20 main::@6 b6: - //SEG20 [9] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG21 [9] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG21 [10] call mulf16u + //SEG22 [10] call mulf16u jsr mulf16u - //SEG22 [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 -- vduz1=vduz2 + //SEG23 [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 -- vduz1=vduz2 lda mulf16u.return_1 sta mulf16u.return lda mulf16u.return_1+1 @@ -1407,9 +1408,9 @@ main: { lda mulf16u.return_1+3 sta mulf16u.return+3 jmp b14 - //SEG23 main::@14 + //SEG24 main::@14 b14: - //SEG24 [12] (dword) main::r#0 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + //SEG25 [12] (dword) main::r#0 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta r lda mulf16u.return+1 @@ -1418,9 +1419,9 @@ main: { sta r+2 lda mulf16u.return+3 sta r+3 - //SEG25 [13] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG26 [13] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG26 [14] (dword) print_dword::dw#0 ← (dword) main::r#0 -- vduz1=vduz2 + //SEG27 [14] (dword) print_dword::dw#0 ← (dword) main::r#0 -- vduz1=vduz2 lda r sta print_dword.dw lda r+1 @@ -1429,167 +1430,167 @@ main: { sta print_dword.dw+2 lda r+3 sta print_dword.dw+3 - //SEG27 [15] call print_dword + //SEG28 [15] call print_dword jsr print_dword - //SEG28 [16] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + //SEG29 [16] phi from main::@14 to main::@15 [phi:main::@14->main::@15] b15_from_b14: jmp b15 - //SEG29 main::@15 + //SEG30 main::@15 b15: - //SEG30 [17] call print_set_screen - //SEG31 [18] phi from main::@15 to print_set_screen [phi:main::@15->print_set_screen] + //SEG31 [17] call print_set_screen + //SEG32 [18] phi from main::@15 to print_set_screen [phi:main::@15->print_set_screen] print_set_screen_from_b15: jsr print_set_screen - //SEG32 [7] phi from main::@15 to main::@1 [phi:main::@15->main::@1] + //SEG33 [7] phi from main::@15 to main::@1 [phi:main::@15->main::@1] b1_from_b15: - //SEG33 [7] phi (byte*) print_char_cursor#16 = (const byte*) SCREEN#0 [phi:main::@15->main::@1#0] -- pbuz1=pbuc1 + //SEG34 [7] phi (byte*) print_char_cursor#16 = (const byte*) SCREEN#0 [phi:main::@15->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta print_char_cursor+1 jmp b1 } -//SEG34 print_set_screen +//SEG35 print_set_screen // Set the screen to print on. Also resets current line/char cursor. print_set_screen: { jmp breturn - //SEG35 print_set_screen::@return + //SEG36 print_set_screen::@return breturn: - //SEG36 [19] return + //SEG37 [19] return rts } -//SEG37 print_dword +//SEG38 print_dword // Print a dword as HEX print_dword: { .label dw = $1e - //SEG38 [20] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG39 [20] (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 - //SEG39 [21] call print_word - //SEG40 [25] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG40 [21] call print_word + //SEG41 [25] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG41 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#16 [phi:print_dword->print_word#0] -- register_copy - //SEG42 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG42 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#16 [phi:print_dword->print_word#0] -- register_copy + //SEG43 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 - //SEG43 print_dword::@1 + //SEG44 print_dword::@1 b1: - //SEG44 [22] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG45 [22] (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 - //SEG45 [23] call print_word - //SEG46 [25] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG46 [23] call print_word + //SEG47 [25] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG47 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#10 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG48 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG48 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#10 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG49 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG49 print_dword::@return + //SEG50 print_dword::@return breturn: - //SEG50 [24] return + //SEG51 [24] return rts } -//SEG51 print_word +//SEG52 print_word // Print a word as HEX print_word: { .label w = 2 - //SEG52 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 + //SEG53 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG53 [27] call print_byte - //SEG54 [31] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG54 [27] call print_byte + //SEG55 [31] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG55 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#34 [phi:print_word->print_byte#0] -- register_copy - //SEG56 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG56 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#34 [phi:print_word->print_byte#0] -- register_copy + //SEG57 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG57 print_word::@1 + //SEG58 print_word::@1 b1: - //SEG58 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 + //SEG59 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG59 [29] call print_byte - //SEG60 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG60 [29] call print_byte + //SEG61 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG61 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG62 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG62 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG63 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG63 print_word::@return + //SEG64 print_word::@return breturn: - //SEG64 [30] return + //SEG65 [30] return rts } -//SEG65 print_byte +//SEG66 print_byte // Print a byte as HEX print_byte: { .label _0 = $22 .label _2 = $23 .label b = 4 - //SEG66 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG67 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG67 [33] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG68 [33] (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 - //SEG68 [34] call print_char - //SEG69 [39] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG69 [34] call print_char + //SEG70 [39] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG70 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#36 [phi:print_byte->print_char#0] -- register_copy - //SEG71 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG71 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#36 [phi:print_byte->print_char#0] -- register_copy + //SEG72 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG72 print_byte::@1 + //SEG73 print_byte::@1 b1: - //SEG73 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG74 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG74 [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG75 [36] (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 - //SEG75 [37] call print_char - //SEG76 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG76 [37] call print_char + //SEG77 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG77 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG78 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG78 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG79 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG79 print_byte::@return + //SEG80 print_byte::@return breturn: - //SEG80 [38] return + //SEG81 [38] return rts } -//SEG81 print_char +//SEG82 print_char // Print a single char print_char: { .label ch = 5 - //SEG82 [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuz2 + //SEG83 [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG83 [41] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#27 -- pbuz1=_inc_pbuz1 + //SEG84 [41] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#27 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG84 print_char::@return + //SEG85 print_char::@return breturn: - //SEG85 [42] return + //SEG86 [42] return rts } -//SEG86 mulf16u +//SEG87 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X mulf16u: { @@ -1598,17 +1599,17 @@ mulf16u: { .label memR = $fc .label return = $16 .label return_1 = $24 - //SEG87 [43] *((const word*) mulf16u::memA#0) ← (const word) main::a#0 -- _deref_pwuc1=vwuc2 + //SEG88 [43] *((const word*) mulf16u::memA#0) ← (const word) main::a#0 -- _deref_pwuc1=vwuc2 lda #main.a sta memA+1 - //SEG88 [44] *((const word*) mulf16u::memB#0) ← (const word) main::b#0 -- _deref_pwuc1=vwuc2 + //SEG89 [44] *((const word*) mulf16u::memB#0) ← (const word) main::b#0 -- _deref_pwuc1=vwuc2 lda #main.b sta memB+1 - //SEG89 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 !: } + //SEG90 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 @@ -1701,7 +1702,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG90 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG91 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return_1 lda memR+1 @@ -1711,12 +1712,12 @@ mulf16u: { lda memR+3 sta return_1+3 jmp breturn - //SEG91 mulf16u::@return + //SEG92 mulf16u::@return breturn: - //SEG92 [47] return + //SEG93 [47] return rts } -//SEG93 mulf_init +//SEG94 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label _2 = $28 @@ -1731,88 +1732,88 @@ mulf_init: { .label x_255 = $10 .label sqr2_lo = $11 .label dir = $15 - //SEG94 [49] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG95 [49] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG95 [49] 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 + //SEG96 [49] 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 - //SEG96 [49] 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 + //SEG97 [49] 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 - //SEG97 [49] 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 + //SEG98 [49] 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 - //SEG98 [49] 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 + //SEG99 [49] 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 - //SEG99 [49] 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 + //SEG100 [49] 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 - //SEG100 [49] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG101 [49] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG101 [49] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG102 [49] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG103 [49] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG104 [49] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG105 [49] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG102 [49] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG103 [49] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG104 [49] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG105 [49] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG106 [49] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG106 mulf_init::@1 + //SEG107 mulf_init::@1 b1: - //SEG107 [50] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG108 [50] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG108 [51] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG109 [51] (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 - //SEG109 [52] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG110 [52] 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 - //SEG110 mulf_init::@5 + //SEG111 mulf_init::@5 b5: - //SEG111 [53] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG112 [53] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG112 [54] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG113 [54] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG113 [55] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG114 [55] 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: - //SEG114 [55] 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 - //SEG115 [55] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG115 [55] 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 + //SEG116 [55] 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 - //SEG116 mulf_init::@2 + //SEG117 mulf_init::@2 b2: - //SEG117 [56] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG118 [56] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG118 [57] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG119 [57] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG119 [58] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG120 [58] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG120 [59] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG121 [59] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG121 [60] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG122 [60] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG122 [61] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG123 [61] (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 @@ -1820,84 +1821,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG123 [62] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG124 [62] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG124 [63] 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 + //SEG125 [63] 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] + //SEG126 [64] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG126 [64] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG127 [64] 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 - //SEG127 [64] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG128 [64] 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 - //SEG128 [64] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG129 [64] 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 - //SEG129 [64] 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 + //SEG130 [64] 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 - //SEG130 [64] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG131 [64] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG131 [64] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG132 [64] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG133 [64] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG134 [64] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG132 [64] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG133 [64] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG134 [64] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG135 [64] 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 - //SEG135 mulf_init::@3 + //SEG136 mulf_init::@3 b3: - //SEG136 [65] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG137 [65] *((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 - //SEG137 [66] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG138 [66] *((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 - //SEG138 [67] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG139 [67] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG139 [68] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG140 [68] (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 - //SEG140 [69] 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 + //SEG141 [69] 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 - //SEG141 [70] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG142 [70] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG142 [70] 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 + //SEG143 [70] 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 - //SEG143 mulf_init::@4 + //SEG144 mulf_init::@4 b4: - //SEG144 [71] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG145 [71] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG145 [72] 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 + //SEG146 [72] 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 @@ -1905,33 +1906,30 @@ mulf_init: { cmp #mulf_init::@12] + //SEG152 [76] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG152 mulf_init::@12 + //SEG153 mulf_init::@12 b12: - //SEG153 [70] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG154 [70] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG154 [70] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG155 [70] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @22] +//SEG4 [1] phi from @begin to @22 [phi:@begin->@22] b22_from_bbegin: jmp b22 -//SEG4 @22 +//SEG5 @22 b22: -//SEG5 [2] call main -//SEG6 [4] phi from @22 to main [phi:@22->main] +//SEG6 [2] call main +//SEG7 [4] phi from @22 to main [phi:@22->main] main_from_b22: jsr main -//SEG7 [3] phi from @22 to @end [phi:@22->@end] +//SEG8 [3] phi from @22 to @end [phi:@22->@end] bend_from_b22: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label a = $4d2 .label b = $929 .label r = 9 - //SEG10 [5] call mulf_init - //SEG11 [48] phi from main to mulf_init [phi:main->mulf_init] + //SEG11 [5] call mulf_init + //SEG12 [48] phi from main to mulf_init [phi:main->mulf_init] mulf_init_from_main: jsr mulf_init jmp b13 - //SEG12 main::@13 + //SEG13 main::@13 b13: - //SEG13 asm { sei } + //SEG14 asm { sei } sei - //SEG14 [7] phi from main::@13 to main::@1 [phi:main::@13->main::@1] + //SEG15 [7] phi from main::@13 to main::@1 [phi:main::@13->main::@1] b1_from_b13: - //SEG15 [7] phi (byte*) print_char_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@13->main::@1#0] -- pbuz1=pbuc1 + //SEG16 [7] phi (byte*) print_char_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@13->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: jmp b4 - //SEG17 main::@4 + //SEG18 main::@4 b4: - //SEG18 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [8] 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 b6 - //SEG19 main::@6 + //SEG20 main::@6 b6: - //SEG20 [9] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG21 [9] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG21 [10] call mulf16u + //SEG22 [10] call mulf16u jsr mulf16u - //SEG22 [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 + //SEG23 [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 jmp b14 - //SEG23 main::@14 + //SEG24 main::@14 b14: - //SEG24 [12] (dword) main::r#0 ← (dword) mulf16u::return#0 - //SEG25 [13] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG25 [12] (dword) main::r#0 ← (dword) mulf16u::return#0 + //SEG26 [13] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG26 [14] (dword) print_dword::dw#0 ← (dword) main::r#0 - //SEG27 [15] call print_dword + //SEG27 [14] (dword) print_dword::dw#0 ← (dword) main::r#0 + //SEG28 [15] call print_dword jsr print_dword - //SEG28 [16] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + //SEG29 [16] phi from main::@14 to main::@15 [phi:main::@14->main::@15] b15_from_b14: jmp b15 - //SEG29 main::@15 + //SEG30 main::@15 b15: - //SEG30 [17] call print_set_screen - //SEG31 [18] phi from main::@15 to print_set_screen [phi:main::@15->print_set_screen] + //SEG31 [17] call print_set_screen + //SEG32 [18] phi from main::@15 to print_set_screen [phi:main::@15->print_set_screen] print_set_screen_from_b15: jsr print_set_screen - //SEG32 [7] phi from main::@15 to main::@1 [phi:main::@15->main::@1] + //SEG33 [7] phi from main::@15 to main::@1 [phi:main::@15->main::@1] b1_from_b15: - //SEG33 [7] phi (byte*) print_char_cursor#16 = (const byte*) SCREEN#0 [phi:main::@15->main::@1#0] -- pbuz1=pbuc1 + //SEG34 [7] phi (byte*) print_char_cursor#16 = (const byte*) SCREEN#0 [phi:main::@15->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta print_char_cursor+1 jmp b1 } -//SEG34 print_set_screen +//SEG35 print_set_screen // Set the screen to print on. Also resets current line/char cursor. print_set_screen: { jmp breturn - //SEG35 print_set_screen::@return + //SEG36 print_set_screen::@return breturn: - //SEG36 [19] return + //SEG37 [19] return rts } -//SEG37 print_dword +//SEG38 print_dword // Print a dword as HEX print_dword: { .label dw = 9 - //SEG38 [20] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG39 [20] (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 - //SEG39 [21] call print_word - //SEG40 [25] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG40 [21] call print_word + //SEG41 [25] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG41 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#16 [phi:print_dword->print_word#0] -- register_copy - //SEG42 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG42 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#16 [phi:print_dword->print_word#0] -- register_copy + //SEG43 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 - //SEG43 print_dword::@1 + //SEG44 print_dword::@1 b1: - //SEG44 [22] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG45 [22] (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 - //SEG45 [23] call print_word - //SEG46 [25] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG46 [23] call print_word + //SEG47 [25] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG47 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#10 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG48 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG48 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#10 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG49 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG49 print_dword::@return + //SEG50 print_dword::@return breturn: - //SEG50 [24] return + //SEG51 [24] return rts } -//SEG51 print_word +//SEG52 print_word // Print a word as HEX print_word: { .label w = 2 - //SEG52 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 + //SEG53 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG53 [27] call print_byte - //SEG54 [31] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG54 [27] call print_byte + //SEG55 [31] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG55 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#34 [phi:print_word->print_byte#0] -- register_copy - //SEG56 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG56 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#34 [phi:print_word->print_byte#0] -- register_copy + //SEG57 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG57 print_word::@1 + //SEG58 print_word::@1 b1: - //SEG58 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuxx=_lo_vwuz1 + //SEG59 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuxx=_lo_vwuz1 lda w tax - //SEG59 [29] call print_byte - //SEG60 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG60 [29] call print_byte + //SEG61 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG61 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG62 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG62 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG63 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG63 print_word::@return + //SEG64 print_word::@return breturn: - //SEG64 [30] return + //SEG65 [30] return rts } -//SEG65 print_byte +//SEG66 print_byte // Print a byte as HEX print_byte: { - //SEG66 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG67 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG67 [33] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG68 [33] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG68 [34] call print_char - //SEG69 [39] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG69 [34] call print_char + //SEG70 [39] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG70 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#36 [phi:print_byte->print_char#0] -- register_copy - //SEG71 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG71 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#36 [phi:print_byte->print_char#0] -- register_copy + //SEG72 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG72 print_byte::@1 + //SEG73 print_byte::@1 b1: - //SEG73 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG74 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG74 [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG75 [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG75 [37] call print_char - //SEG76 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG76 [37] call print_char + //SEG77 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG77 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG78 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG78 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG79 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG79 print_byte::@return + //SEG80 print_byte::@return breturn: - //SEG80 [38] return + //SEG81 [38] return rts } -//SEG81 print_char +//SEG82 print_char // Print a single char print_char: { - //SEG82 [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa + //SEG83 [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG83 [41] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#27 -- pbuz1=_inc_pbuz1 + //SEG84 [41] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#27 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG84 print_char::@return + //SEG85 print_char::@return breturn: - //SEG85 [42] return + //SEG86 [42] return rts } -//SEG86 mulf16u +//SEG87 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X mulf16u: { @@ -2307,17 +2306,17 @@ mulf16u: { .label memB = $fa .label memR = $fc .label return = 9 - //SEG87 [43] *((const word*) mulf16u::memA#0) ← (const word) main::a#0 -- _deref_pwuc1=vwuc2 + //SEG88 [43] *((const word*) mulf16u::memA#0) ← (const word) main::a#0 -- _deref_pwuc1=vwuc2 lda #main.a sta memA+1 - //SEG88 [44] *((const word*) mulf16u::memB#0) ← (const word) main::b#0 -- _deref_pwuc1=vwuc2 + //SEG89 [44] *((const word*) mulf16u::memB#0) ← (const word) main::b#0 -- _deref_pwuc1=vwuc2 lda #main.b sta memB+1 - //SEG89 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 !: } + //SEG90 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 @@ -2410,7 +2409,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG90 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG91 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -2420,12 +2419,12 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG91 mulf16u::@return + //SEG92 mulf16u::@return breturn: - //SEG92 [47] return + //SEG93 [47] return rts } -//SEG93 mulf_init +//SEG94 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 4 @@ -2435,81 +2434,81 @@ mulf_init: { .label sqr2_hi = 4 .label sqr2_lo = 2 .label dir = 6 - //SEG94 [49] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG95 [49] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG95 [49] 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 + //SEG96 [49] 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 - //SEG96 [49] 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 + //SEG97 [49] 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 - //SEG97 [49] 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 + //SEG98 [49] 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 - //SEG98 [49] 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 + //SEG99 [49] 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 - //SEG99 [49] 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 + //SEG100 [49] 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 - //SEG100 [49] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG101 [49] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG101 [49] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG102 [49] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG103 [49] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG104 [49] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG105 [49] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG102 [49] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG103 [49] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG104 [49] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG105 [49] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG106 [49] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG106 mulf_init::@1 + //SEG107 mulf_init::@1 b1: - //SEG107 [50] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG108 [50] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG108 [51] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG109 [51] (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 - //SEG109 [52] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG110 [52] 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 - //SEG110 mulf_init::@5 + //SEG111 mulf_init::@5 b5: - //SEG111 [53] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG112 [53] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG112 [54] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG113 [54] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG113 [55] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG114 [55] 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: - //SEG114 [55] 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 - //SEG115 [55] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG115 [55] 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 + //SEG116 [55] 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 - //SEG116 mulf_init::@2 + //SEG117 mulf_init::@2 b2: - //SEG117 [56] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG118 [56] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG118 [57] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG119 [57] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG119 [58] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG120 [58] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG120 [59] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG121 [59] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG121 [60] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG122 [60] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG122 [61] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG123 [61] (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 @@ -2517,80 +2516,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG123 [62] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG124 [62] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG124 [63] 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 + //SEG125 [63] 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] + //SEG126 [64] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG126 [64] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG127 [64] 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 - //SEG127 [64] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG128 [64] 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 - //SEG128 [64] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG129 [64] 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 - //SEG129 [64] 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 + //SEG130 [64] 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 - //SEG130 [64] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG131 [64] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG131 [64] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG132 [64] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG133 [64] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG134 [64] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG132 [64] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG133 [64] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG134 [64] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG135 [64] 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 - //SEG135 mulf_init::@3 + //SEG136 mulf_init::@3 b3: - //SEG136 [65] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG137 [65] *((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 - //SEG137 [66] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG138 [66] *((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 - //SEG138 [67] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG139 [67] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG139 [68] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG140 [68] (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 - //SEG140 [69] 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 + //SEG141 [69] 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 - //SEG141 [70] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG142 [70] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG142 [70] 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 + //SEG143 [70] 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 - //SEG143 mulf_init::@4 + //SEG144 mulf_init::@4 b4: - //SEG144 [71] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG145 [71] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG145 [72] 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 + //SEG146 [72] 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 @@ -2598,33 +2597,30 @@ mulf_init: { cmp #mulf_init::@12] + //SEG152 [76] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG152 mulf_init::@12 + //SEG153 mulf_init::@12 b12: - //SEG153 [70] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG154 [70] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG154 [70] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG155 [70] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @22] -//SEG4 @22 -//SEG5 [2] call main -//SEG6 [4] phi from @22 to main [phi:@22->main] -//SEG7 [3] phi from @22 to @end [phi:@22->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @22 [phi:@begin->@22] +//SEG5 @22 +//SEG6 [2] call main +//SEG7 [4] phi from @22 to main [phi:@22->main] +//SEG8 [3] phi from @22 to @end [phi:@22->@end] +//SEG9 @end +//SEG10 main main: { .label a = $4d2 .label b = $929 .label r = 9 - //SEG10 [5] call mulf_init - //SEG11 [48] phi from main to mulf_init [phi:main->mulf_init] + //SEG11 [5] call mulf_init + //SEG12 [48] phi from main to mulf_init [phi:main->mulf_init] jsr mulf_init - //SEG12 main::@13 - //SEG13 asm { sei } + //SEG13 main::@13 + //SEG14 asm { sei } sei - //SEG14 [7] phi from main::@13 to main::@1 [phi:main::@13->main::@1] - //SEG15 [7] phi (byte*) print_char_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@13->main::@1#0] -- pbuz1=pbuc1 + //SEG15 [7] phi from main::@13 to main::@1 [phi:main::@13->main::@1] + //SEG16 [7] phi (byte*) print_char_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@13->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG16 main::@1 - //SEG17 main::@4 + //SEG17 main::@1 + //SEG18 main::@4 b4: - //SEG18 [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG19 [8] 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 - //SEG19 main::@6 - //SEG20 [9] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG20 main::@6 + //SEG21 [9] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG21 [10] call mulf16u + //SEG22 [10] call mulf16u jsr mulf16u - //SEG22 [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 - //SEG23 main::@14 - //SEG24 [12] (dword) main::r#0 ← (dword) mulf16u::return#0 - //SEG25 [13] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG23 [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1 + //SEG24 main::@14 + //SEG25 [12] (dword) main::r#0 ← (dword) mulf16u::return#0 + //SEG26 [13] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG26 [14] (dword) print_dword::dw#0 ← (dword) main::r#0 - //SEG27 [15] call print_dword + //SEG27 [14] (dword) print_dword::dw#0 ← (dword) main::r#0 + //SEG28 [15] call print_dword jsr print_dword - //SEG28 [16] phi from main::@14 to main::@15 [phi:main::@14->main::@15] - //SEG29 main::@15 - //SEG30 [17] call print_set_screen - //SEG31 [18] phi from main::@15 to print_set_screen [phi:main::@15->print_set_screen] + //SEG29 [16] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + //SEG30 main::@15 + //SEG31 [17] call print_set_screen + //SEG32 [18] phi from main::@15 to print_set_screen [phi:main::@15->print_set_screen] jsr print_set_screen - //SEG32 [7] phi from main::@15 to main::@1 [phi:main::@15->main::@1] - //SEG33 [7] phi (byte*) print_char_cursor#16 = (const byte*) SCREEN#0 [phi:main::@15->main::@1#0] -- pbuz1=pbuc1 + //SEG33 [7] phi from main::@15 to main::@1 [phi:main::@15->main::@1] + //SEG34 [7] phi (byte*) print_char_cursor#16 = (const byte*) SCREEN#0 [phi:main::@15->main::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta print_char_cursor+1 jmp b4 } -//SEG34 print_set_screen +//SEG35 print_set_screen // Set the screen to print on. Also resets current line/char cursor. print_set_screen: { - //SEG35 print_set_screen::@return - //SEG36 [19] return + //SEG36 print_set_screen::@return + //SEG37 [19] return rts } -//SEG37 print_dword +//SEG38 print_dword // Print a dword as HEX print_dword: { .label dw = 9 - //SEG38 [20] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG39 [20] (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 - //SEG39 [21] call print_word - //SEG40 [25] phi from print_dword to print_word [phi:print_dword->print_word] - //SEG41 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#16 [phi:print_dword->print_word#0] -- register_copy - //SEG42 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG40 [21] call print_word + //SEG41 [25] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG42 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#16 [phi:print_dword->print_word#0] -- register_copy + //SEG43 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word - //SEG43 print_dword::@1 - //SEG44 [22] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG44 print_dword::@1 + //SEG45 [22] (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 - //SEG45 [23] call print_word - //SEG46 [25] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - //SEG47 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#10 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG48 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG46 [23] call print_word + //SEG47 [25] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG48 [25] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#10 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG49 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word - //SEG49 print_dword::@return - //SEG50 [24] return + //SEG50 print_dword::@return + //SEG51 [24] return rts } -//SEG51 print_word +//SEG52 print_word // Print a word as HEX print_word: { .label w = 2 - //SEG52 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 + //SEG53 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG53 [27] call print_byte - //SEG54 [31] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG55 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#34 [phi:print_word->print_byte#0] -- register_copy - //SEG56 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG54 [27] call print_byte + //SEG55 [31] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG56 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#34 [phi:print_word->print_byte#0] -- register_copy + //SEG57 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG57 print_word::@1 - //SEG58 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuxx=_lo_vwuz1 + //SEG58 print_word::@1 + //SEG59 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuxx=_lo_vwuz1 lda w tax - //SEG59 [29] call print_byte - //SEG60 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG61 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG62 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG60 [29] call print_byte + //SEG61 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG62 [31] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG63 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG63 print_word::@return - //SEG64 [30] return + //SEG64 print_word::@return + //SEG65 [30] return rts } -//SEG65 print_byte +//SEG66 print_byte // Print a byte as HEX print_byte: { - //SEG66 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG67 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG67 [33] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG68 [33] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG68 [34] call print_char - //SEG69 [39] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG70 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#36 [phi:print_byte->print_char#0] -- register_copy - //SEG71 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG69 [34] call print_char + //SEG70 [39] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG71 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#36 [phi:print_byte->print_char#0] -- register_copy + //SEG72 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG72 print_byte::@1 - //SEG73 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG73 print_byte::@1 + //SEG74 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG74 [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG75 [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG75 [37] call print_char - //SEG76 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG77 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG78 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG76 [37] call print_char + //SEG77 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG78 [39] phi (byte*) print_char_cursor#27 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG79 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG79 print_byte::@return - //SEG80 [38] return + //SEG80 print_byte::@return + //SEG81 [38] return rts } -//SEG81 print_char +//SEG82 print_char // Print a single char print_char: { - //SEG82 [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa + //SEG83 [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG83 [41] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#27 -- pbuz1=_inc_pbuz1 + //SEG84 [41] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#27 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG84 print_char::@return - //SEG85 [42] return + //SEG85 print_char::@return + //SEG86 [42] return rts } -//SEG86 mulf16u +//SEG87 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X mulf16u: { @@ -3065,17 +3062,17 @@ mulf16u: { .label memB = $fa .label memR = $fc .label return = 9 - //SEG87 [43] *((const word*) mulf16u::memA#0) ← (const word) main::a#0 -- _deref_pwuc1=vwuc2 + //SEG88 [43] *((const word*) mulf16u::memA#0) ← (const word) main::a#0 -- _deref_pwuc1=vwuc2 lda #main.a sta memA+1 - //SEG88 [44] *((const word*) mulf16u::memB#0) ← (const word) main::b#0 -- _deref_pwuc1=vwuc2 + //SEG89 [44] *((const word*) mulf16u::memB#0) ← (const word) main::b#0 -- _deref_pwuc1=vwuc2 lda #main.b sta memB+1 - //SEG89 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 !: } + //SEG90 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 @@ -3168,7 +3165,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG90 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG91 [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -3177,11 +3174,11 @@ mulf16u: { sta return+2 lda memR+3 sta return+3 - //SEG91 mulf16u::@return - //SEG92 [47] return + //SEG92 mulf16u::@return + //SEG93 [47] return rts } -//SEG93 mulf_init +//SEG94 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 4 @@ -3191,70 +3188,70 @@ mulf_init: { .label sqr2_hi = 4 .label sqr2_lo = 2 .label dir = 6 - //SEG94 [49] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG95 [49] 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 + //SEG95 [49] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG96 [49] 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 - //SEG96 [49] 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 + //SEG97 [49] 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 - //SEG97 [49] 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 + //SEG98 [49] 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 - //SEG98 [49] 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 + //SEG99 [49] 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 - //SEG99 [49] 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 + //SEG100 [49] 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 - //SEG100 [49] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG101 [49] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG102 [49] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG103 [49] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG104 [49] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG105 [49] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG106 mulf_init::@1 + //SEG101 [49] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG102 [49] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG103 [49] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG104 [49] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG105 [49] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG106 [49] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG107 mulf_init::@1 b1: - //SEG107 [50] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG108 [50] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG108 [51] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG109 [51] (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 - //SEG109 [52] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG110 [52] 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 - //SEG110 mulf_init::@5 - //SEG111 [53] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG111 mulf_init::@5 + //SEG112 [53] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG112 [54] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG113 [54] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG113 [55] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] - //SEG114 [55] 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 - //SEG115 [55] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy - //SEG116 mulf_init::@2 + //SEG114 [55] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG115 [55] 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 + //SEG116 [55] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG117 mulf_init::@2 b2: - //SEG117 [56] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG118 [56] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG118 [57] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG119 [57] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG119 [58] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG120 [58] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG120 [59] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG121 [59] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG121 [60] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG122 [60] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG122 [61] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG123 [61] (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 @@ -3262,98 +3259,95 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG123 [62] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG124 [62] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG124 [63] 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 + //SEG125 [63] 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] - //SEG126 [64] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG126 [64] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG127 [64] 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 - //SEG127 [64] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG128 [64] 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 - //SEG128 [64] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG129 [64] 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 - //SEG129 [64] 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 + //SEG130 [64] 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 - //SEG130 [64] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] - //SEG131 [64] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG132 [64] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG133 [64] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG134 [64] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy - //SEG135 mulf_init::@3 + //SEG131 [64] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG132 [64] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG133 [64] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG134 [64] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG135 [64] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG136 mulf_init::@3 b3: - //SEG136 [65] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG137 [65] *((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 - //SEG137 [66] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG138 [66] *((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 - //SEG138 [67] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG139 [67] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG139 [68] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG140 [68] (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 - //SEG140 [69] 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 + //SEG141 [69] 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 - //SEG141 [70] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] - //SEG142 [70] 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 + //SEG142 [70] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG143 [70] 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 - //SEG143 mulf_init::@4 + //SEG144 mulf_init::@4 b4: - //SEG144 [71] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG145 [71] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG145 [72] 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 + //SEG146 [72] 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] - //SEG152 mulf_init::@12 - //SEG153 [70] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] - //SEG154 [70] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG152 [76] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG153 mulf_init::@12 + //SEG154 [70] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG155 [70] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _0 = 6 .label _1 = 8 - //SEG10 [5] call inccnt - //SEG11 [15] phi from main to inccnt [phi:main->inccnt] + //SEG11 [5] call inccnt + //SEG12 [15] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG12 [15] phi (byte) cnt3#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuz1=vbuc1 + //SEG13 [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 + //SEG14 [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 + //SEG15 [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 - //SEG15 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 -- vbuz1=vbuz2 + //SEG16 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 -- vbuz1=vbuz2 lda inccnt.return_2 sta inccnt.return jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 -- vbuz1=vbuz2 + //SEG18 [7] (byte~) main::$0 ← (byte) inccnt::return#0 -- vbuz1=vbuz2 lda inccnt.return sta _0 - //SEG18 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 + //SEG19 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 lda _0 sta SCREEN - //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuz1=_inc_vbuz2 + //SEG20 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuz1=_inc_vbuz2 ldy cnt_12 iny sty cnt - //SEG20 [10] call inccnt - //SEG21 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG21 [10] call inccnt + //SEG22 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //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 + //SEG23 [15] phi (byte) cnt3#10 = (byte) cnt3#11 [phi:main::@1->inccnt#0] -- register_copy + //SEG24 [15] phi (byte) cnt2#10 = (byte) cnt2#11 [phi:main::@1->inccnt#1] -- register_copy + //SEG25 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt - //SEG25 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 -- vbuz1=vbuz2 + //SEG26 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 -- vbuz1=vbuz2 lda inccnt.return_2 sta inccnt.return_1 jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 -- vbuz1=vbuz2 + //SEG28 [12] (byte~) main::$1 ← (byte) inccnt::return#1 -- vbuz1=vbuz2 lda inccnt.return_1 sta _1 - //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 + //SEG29 [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 - //SEG29 main::@return + //SEG30 main::@return breturn: - //SEG30 [14] return + //SEG31 [14] return rts } -//SEG31 inccnt +//SEG32 inccnt inccnt: { .label return = 5 .label return_1 = 7 .label return_2 = $a - //SEG32 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuz1=_inc_vbuz2 + //SEG33 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuz1=_inc_vbuz2 ldy cnt iny sty cnt_12 - //SEG33 [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 -- vbuz1=_inc_vbuz1 + //SEG34 [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 -- vbuz1=_inc_vbuz1 inc cnt2 - //SEG34 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuz1=_inc_vbuz1 + //SEG35 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuz1=_inc_vbuz1 inc cnt3 - //SEG35 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuz1=vbuz2 + //SEG36 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuz1=vbuz2 lda cnt_12 sta return_2 jmp breturn - //SEG36 inccnt::@return + //SEG37 inccnt::@return breturn: - //SEG37 [20] return + //SEG38 [20] return rts } @@ -451,88 +452,89 @@ 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 +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label cnt = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call inccnt - //SEG11 [15] phi from main to inccnt [phi:main->inccnt] + //SEG11 [5] call inccnt + //SEG12 [15] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG12 [15] phi (byte) cnt3#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 + //SEG13 [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 + //SEG14 [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 + //SEG15 [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 - //SEG15 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 + //SEG16 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 - //SEG18 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + //SEG18 [7] (byte~) main::$0 ← (byte) inccnt::return#0 + //SEG19 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa sta SCREEN - //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuaa=_inc_vbuz1 + //SEG20 [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] + //SEG21 [10] call inccnt + //SEG22 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //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 + //SEG23 [15] phi (byte) cnt3#10 = (byte) cnt3#11 [phi:main::@1->inccnt#0] -- register_copy + //SEG24 [15] phi (byte) cnt2#10 = (byte) cnt2#11 [phi:main::@1->inccnt#1] -- register_copy + //SEG25 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt - //SEG25 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 + //SEG26 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 - //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG28 [12] (byte~) main::$1 ← (byte) inccnt::return#1 + //SEG29 [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 - //SEG29 main::@return + //SEG30 main::@return breturn: - //SEG30 [14] return + //SEG31 [14] return rts } -//SEG31 inccnt +//SEG32 inccnt inccnt: { - //SEG32 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuz1=_inc_vbuaa + //SEG33 [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 + //SEG34 [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 -- vbuyy=_inc_vbuyy iny - //SEG34 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuxx=_inc_vbuxx + //SEG35 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuxx=_inc_vbuxx inx - //SEG35 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuaa=vbuz1 + //SEG36 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuaa=vbuz1 lda cnt jmp breturn - //SEG36 inccnt::@return + //SEG37 inccnt::@return breturn: - //SEG37 [20] return + //SEG38 [20] return rts } @@ -609,68 +611,69 @@ reg byte a [ inccnt::return#2 ] FINAL ASSEMBLER Score: 56 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label cnt = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call inccnt - //SEG11 [15] phi from main to inccnt [phi:main->inccnt] - //SEG12 [15] phi (byte) cnt3#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 + //SEG11 [5] call inccnt + //SEG12 [15] phi from main to inccnt [phi:main->inccnt] + //SEG13 [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 + //SEG14 [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 + //SEG15 [15] phi (byte) cnt#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#2] -- vbuaa=vbuc1 txa jsr inccnt - //SEG15 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 - //SEG16 main::@1 - //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 - //SEG18 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + //SEG16 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 + //SEG17 main::@1 + //SEG18 [7] (byte~) main::$0 ← (byte) inccnt::return#0 + //SEG19 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa sta SCREEN - //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuaa=_inc_vbuz1 + //SEG20 [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 + //SEG21 [10] call inccnt + //SEG22 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG23 [15] phi (byte) cnt3#10 = (byte) cnt3#11 [phi:main::@1->inccnt#0] -- register_copy + //SEG24 [15] phi (byte) cnt2#10 = (byte) cnt2#11 [phi:main::@1->inccnt#1] -- register_copy + //SEG25 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt - //SEG25 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 - //SEG26 main::@2 - //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 - //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG26 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 + //SEG27 main::@2 + //SEG28 [12] (byte~) main::$1 ← (byte) inccnt::return#1 + //SEG29 [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 - //SEG29 main::@return - //SEG30 [14] return + //SEG30 main::@return + //SEG31 [14] return rts } -//SEG31 inccnt +//SEG32 inccnt inccnt: { - //SEG32 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuz1=_inc_vbuaa + //SEG33 [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 + //SEG34 [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 -- vbuyy=_inc_vbuyy iny - //SEG34 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuxx=_inc_vbuxx + //SEG35 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuxx=_inc_vbuxx inx - //SEG35 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuaa=vbuz1 - //SEG36 inccnt::@return - //SEG37 [20] return + //SEG36 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuaa=vbuz1 + //SEG37 inccnt::@return + //SEG38 [20] return rts } diff --git a/src/test/ref/modglobalmin.log b/src/test/ref/modglobalmin.log index 802d813cd..b6b3bf1a3 100644 --- a/src/test/ref/modglobalmin.log +++ b/src/test/ref/modglobalmin.log @@ -175,81 +175,82 @@ Allocated zp ZP_BYTE:3 [ cnt#11 ] Allocated zp ZP_BYTE:4 [ cnt#13 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label cnt = 2 .label cnt_11 = 3 .label cnt_13 = 4 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call inccnt - //SEG11 [12] phi from main to inccnt [phi:main->inccnt] + //SEG11 [5] call inccnt + //SEG12 [12] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG12 [12] phi (byte) cnt#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuz1=vbuc1 + //SEG13 [12] phi (byte) cnt#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuz1=vbuc1 lda #0 sta cnt jsr inccnt jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] *((const byte[256]) SCREEN#0) ← (byte) cnt#13 -- _deref_pbuc1=vbuz1 + //SEG15 [6] *((const byte[256]) SCREEN#0) ← (byte) cnt#13 -- _deref_pbuc1=vbuz1 lda cnt_13 sta SCREEN - //SEG15 [7] (byte) cnt#2 ← ++ (byte) cnt#13 -- vbuz1=_inc_vbuz2 + //SEG16 [7] (byte) cnt#2 ← ++ (byte) cnt#13 -- vbuz1=_inc_vbuz2 ldy cnt_13 iny sty cnt - //SEG16 [8] call inccnt - //SEG17 [12] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG17 [8] call inccnt + //SEG18 [12] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG18 [12] phi (byte) cnt#12 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy + //SEG19 [12] phi (byte) cnt#12 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy jsr inccnt jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [9] (byte) cnt#11 ← ++ (byte) cnt#13 -- vbuz1=_inc_vbuz2 + //SEG21 [9] (byte) cnt#11 ← ++ (byte) cnt#13 -- vbuz1=_inc_vbuz2 ldy cnt_13 iny sty cnt_11 - //SEG21 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 -- _deref_pbuc1=vbuz1 + //SEG22 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 -- _deref_pbuc1=vbuz1 lda cnt_11 sta SCREEN+1 jmp breturn - //SEG22 main::@return + //SEG23 main::@return breturn: - //SEG23 [11] return + //SEG24 [11] return rts } -//SEG24 inccnt +//SEG25 inccnt inccnt: { - //SEG25 [13] (byte) cnt#13 ← ++ (byte) cnt#12 -- vbuz1=_inc_vbuz2 + //SEG26 [13] (byte) cnt#13 ← ++ (byte) cnt#12 -- vbuz1=_inc_vbuz2 ldy cnt iny sty cnt_13 jmp breturn - //SEG26 inccnt::@return + //SEG27 inccnt::@return breturn: - //SEG27 [14] return + //SEG28 [14] return rts } @@ -268,69 +269,70 @@ Uplifting [main] best 64 combination Uplifting [inccnt] best 64 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call inccnt - //SEG11 [12] phi from main to inccnt [phi:main->inccnt] + //SEG11 [5] call inccnt + //SEG12 [12] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG12 [12] phi (byte) cnt#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 + //SEG13 [12] phi (byte) cnt#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 ldx #0 jsr inccnt jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] *((const byte[256]) SCREEN#0) ← (byte) cnt#13 -- _deref_pbuc1=vbuxx + //SEG15 [6] *((const byte[256]) SCREEN#0) ← (byte) cnt#13 -- _deref_pbuc1=vbuxx stx SCREEN - //SEG15 [7] (byte) cnt#2 ← ++ (byte) cnt#13 -- vbuxx=_inc_vbuxx + //SEG16 [7] (byte) cnt#2 ← ++ (byte) cnt#13 -- vbuxx=_inc_vbuxx inx - //SEG16 [8] call inccnt - //SEG17 [12] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG17 [8] call inccnt + //SEG18 [12] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG18 [12] phi (byte) cnt#12 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy + //SEG19 [12] phi (byte) cnt#12 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy jsr inccnt jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [9] (byte) cnt#11 ← ++ (byte) cnt#13 -- vbuxx=_inc_vbuxx + //SEG21 [9] (byte) cnt#11 ← ++ (byte) cnt#13 -- vbuxx=_inc_vbuxx inx - //SEG21 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 -- _deref_pbuc1=vbuxx + //SEG22 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 -- _deref_pbuc1=vbuxx stx SCREEN+1 jmp breturn - //SEG22 main::@return + //SEG23 main::@return breturn: - //SEG23 [11] return + //SEG24 [11] return rts } -//SEG24 inccnt +//SEG25 inccnt inccnt: { - //SEG25 [13] (byte) cnt#13 ← ++ (byte) cnt#12 -- vbuxx=_inc_vbuxx + //SEG26 [13] (byte) cnt#13 ← ++ (byte) cnt#12 -- vbuxx=_inc_vbuxx inx jmp breturn - //SEG26 inccnt::@return + //SEG27 inccnt::@return breturn: - //SEG27 [14] return + //SEG28 [14] return rts } @@ -387,50 +389,51 @@ reg byte x [ cnt#13 ] FINAL ASSEMBLER Score: 40 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call inccnt - //SEG11 [12] phi from main to inccnt [phi:main->inccnt] - //SEG12 [12] phi (byte) cnt#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 + //SEG11 [5] call inccnt + //SEG12 [12] phi from main to inccnt [phi:main->inccnt] + //SEG13 [12] phi (byte) cnt#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 ldx #0 jsr inccnt - //SEG13 main::@1 - //SEG14 [6] *((const byte[256]) SCREEN#0) ← (byte) cnt#13 -- _deref_pbuc1=vbuxx + //SEG14 main::@1 + //SEG15 [6] *((const byte[256]) SCREEN#0) ← (byte) cnt#13 -- _deref_pbuc1=vbuxx stx SCREEN - //SEG15 [7] (byte) cnt#2 ← ++ (byte) cnt#13 -- vbuxx=_inc_vbuxx + //SEG16 [7] (byte) cnt#2 ← ++ (byte) cnt#13 -- vbuxx=_inc_vbuxx inx - //SEG16 [8] call inccnt - //SEG17 [12] phi from main::@1 to inccnt [phi:main::@1->inccnt] - //SEG18 [12] phi (byte) cnt#12 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy + //SEG17 [8] call inccnt + //SEG18 [12] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG19 [12] phi (byte) cnt#12 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy jsr inccnt - //SEG19 main::@2 - //SEG20 [9] (byte) cnt#11 ← ++ (byte) cnt#13 -- vbuxx=_inc_vbuxx + //SEG20 main::@2 + //SEG21 [9] (byte) cnt#11 ← ++ (byte) cnt#13 -- vbuxx=_inc_vbuxx inx - //SEG21 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 -- _deref_pbuc1=vbuxx + //SEG22 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 -- _deref_pbuc1=vbuxx stx SCREEN+1 - //SEG22 main::@return - //SEG23 [11] return + //SEG23 main::@return + //SEG24 [11] return rts } -//SEG24 inccnt +//SEG25 inccnt inccnt: { - //SEG25 [13] (byte) cnt#13 ← ++ (byte) cnt#12 -- vbuxx=_inc_vbuxx + //SEG26 [13] (byte) cnt#13 ← ++ (byte) cnt#12 -- vbuxx=_inc_vbuxx inx - //SEG26 inccnt::@return - //SEG27 [14] return + //SEG27 inccnt::@return + //SEG28 [14] return rts } diff --git a/src/test/ref/no-recursion-heavy.log b/src/test/ref/no-recursion-heavy.log index c0e0b92b1..89445725c 100644 --- a/src/test/ref/no-recursion-heavy.log +++ b/src/test/ref/no-recursion-heavy.log @@ -3324,11 +3324,12 @@ Allocated zp ZP_BYTE:8 [ bd#117 bd#238 bd#239 bd#240 bd#241 bd#242 bd#243 bd#244 Allocated zp ZP_BYTE:9 [ be#138 be#44 be#137 be#43 be#136 be#42 be#135 be#41 be#134 be#40 be#133 be#39 be#132 be#38 be#131 be#130 be#129 be#127 be#126 be#125 be#124 be#123 be#122 be#121 be#120 be#119 be#118 be#116 be#115 be#114 be#113 be#112 be#111 be#110 be#109 be#108 be#107 be#105 be#104 be#103 be#102 be#101 be#100 be#144 be#143 be#142 be#2 be#13 be#24 be#35 be#46 be#36 be#37 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label ba = 2 .label bc = 5 .label bd = 7 @@ -3364,1106 +3365,1106 @@ INITIAL ASM .label bd_244 = 8 .label bd_245 = 8 .label bd_246 = 8 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) ba#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) ba#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta ba - //SEG12 [5] phi (byte) be#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) be#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta be - //SEG13 [5] phi (byte) bd#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 + //SEG14 [5] phi (byte) bd#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 lda #0 sta bd - //SEG14 [5] phi (byte) bc#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vbuz1=vbuc1 + //SEG15 [5] phi (byte) bc#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vbuz1=vbuc1 lda #0 sta bc - //SEG15 [5] phi (byte) bb#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#4] -- vbuz1=vbuc1 + //SEG16 [5] phi (byte) bb#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#4] -- vbuz1=vbuc1 lda #0 sta bb jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [7] call f0 + //SEG20 [7] call f0 jsr f0 jmp b7 - //SEG20 main::@7 + //SEG21 main::@7 b7: - //SEG21 [8] (byte) ba#1 ← ++ (byte) ba#17 -- vbuz1=_inc_vbuz1 + //SEG22 [8] (byte) ba#1 ← ++ (byte) ba#17 -- vbuz1=_inc_vbuz1 inc ba - //SEG22 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG23 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: - //SEG23 [5] phi (byte) ba#17 = (byte) ba#1 [phi:main::@7->main::@1#0] -- register_copy - //SEG24 [5] phi (byte) be#2 = (byte) be#13 [phi:main::@7->main::@1#1] -- register_copy - //SEG25 [5] phi (byte) bd#2 = (byte) bd#13 [phi:main::@7->main::@1#2] -- register_copy - //SEG26 [5] phi (byte) bc#2 = (byte) bc#13 [phi:main::@7->main::@1#3] -- register_copy - //SEG27 [5] phi (byte) bb#16 = (byte) bb#13 [phi:main::@7->main::@1#4] -- register_copy + //SEG24 [5] phi (byte) ba#17 = (byte) ba#1 [phi:main::@7->main::@1#0] -- register_copy + //SEG25 [5] phi (byte) be#2 = (byte) be#13 [phi:main::@7->main::@1#1] -- register_copy + //SEG26 [5] phi (byte) bd#2 = (byte) bd#13 [phi:main::@7->main::@1#2] -- register_copy + //SEG27 [5] phi (byte) bc#2 = (byte) bc#13 [phi:main::@7->main::@1#3] -- register_copy + //SEG28 [5] phi (byte) bb#16 = (byte) bb#13 [phi:main::@7->main::@1#4] -- register_copy jmp b1 } -//SEG28 f0 +//SEG29 f0 f0: { - //SEG29 [9] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto f0::@1 -- vbuz1_neq_0_then_la1 + //SEG30 [9] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto f0::@1 -- vbuz1_neq_0_then_la1 lda ba cmp #0 bne b1_from_f0 jmp b11 - //SEG30 f0::@11 + //SEG31 f0::@11 b11: - //SEG31 [10] (byte) bb#3 ← ++ (byte) bb#16 -- vbuz1=_inc_vbuz1 + //SEG32 [10] (byte) bb#3 ← ++ (byte) bb#16 -- vbuz1=_inc_vbuz1 inc bb - //SEG32 [11] (byte~) bb#101 ← (byte) bb#3 -- vbuz1=vbuz2 + //SEG33 [11] (byte~) bb#101 ← (byte) bb#3 -- vbuz1=vbuz2 lda bb sta bb_101 - //SEG33 [12] call fa - //SEG34 [59] phi from f0::@11 to fa [phi:f0::@11->fa] + //SEG34 [12] call fa + //SEG35 [59] phi from f0::@11 to fa [phi:f0::@11->fa] fa_from_b11: - //SEG35 [59] phi (byte) be#107 = (byte) be#2 [phi:f0::@11->fa#0] -- register_copy - //SEG36 [59] phi (byte) bd#138 = (byte) bd#2 [phi:f0::@11->fa#1] -- register_copy - //SEG37 [59] phi (byte) bc#39 = (byte) bc#2 [phi:f0::@11->fa#2] -- register_copy - //SEG38 [59] phi (byte) bb#27 = (byte~) bb#101 [phi:f0::@11->fa#3] -- register_copy + //SEG36 [59] phi (byte) be#107 = (byte) be#2 [phi:f0::@11->fa#0] -- register_copy + //SEG37 [59] phi (byte) bd#138 = (byte) bd#2 [phi:f0::@11->fa#1] -- register_copy + //SEG38 [59] phi (byte) bc#39 = (byte) bc#2 [phi:f0::@11->fa#2] -- register_copy + //SEG39 [59] phi (byte) bb#27 = (byte~) bb#101 [phi:f0::@11->fa#3] -- register_copy jsr fa - //SEG39 [13] phi from f0 f0::@11 to f0::@1 [phi:f0/f0::@11->f0::@1] + //SEG40 [13] phi from f0 f0::@11 to f0::@1 [phi:f0/f0::@11->f0::@1] b1_from_f0: b1_from_b11: - //SEG40 [13] phi (byte) be#142 = (byte) be#2 [phi:f0/f0::@11->f0::@1#0] -- register_copy - //SEG41 [13] phi (byte) bd#129 = (byte) bd#2 [phi:f0/f0::@11->f0::@1#1] -- register_copy - //SEG42 [13] phi (byte) bc#63 = (byte) bc#2 [phi:f0/f0::@11->f0::@1#2] -- register_copy - //SEG43 [13] phi (byte) bb#18 = (byte) bb#16 [phi:f0/f0::@11->f0::@1#3] -- register_copy + //SEG41 [13] phi (byte) be#142 = (byte) be#2 [phi:f0/f0::@11->f0::@1#0] -- register_copy + //SEG42 [13] phi (byte) bd#129 = (byte) bd#2 [phi:f0/f0::@11->f0::@1#1] -- register_copy + //SEG43 [13] phi (byte) bc#63 = (byte) bc#2 [phi:f0/f0::@11->f0::@1#2] -- register_copy + //SEG44 [13] phi (byte) bb#18 = (byte) bb#16 [phi:f0/f0::@11->f0::@1#3] -- register_copy jmp b1 - //SEG44 f0::@1 + //SEG45 f0::@1 b1: - //SEG45 [14] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto f0::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG46 [14] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto f0::@2 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #1 bne b2_from_b1 jmp b12 - //SEG46 f0::@12 + //SEG47 f0::@12 b12: - //SEG47 [15] (byte) bb#4 ← ++ (byte) bb#18 -- vbuz1=_inc_vbuz1 + //SEG48 [15] (byte) bb#4 ← ++ (byte) bb#18 -- vbuz1=_inc_vbuz1 inc bb - //SEG48 [16] (byte~) bb#102 ← (byte) bb#4 -- vbuz1=vbuz2 + //SEG49 [16] (byte~) bb#102 ← (byte) bb#4 -- vbuz1=vbuz2 lda bb sta bb_102 - //SEG49 [17] call fa - //SEG50 [59] phi from f0::@12 to fa [phi:f0::@12->fa] + //SEG50 [17] call fa + //SEG51 [59] phi from f0::@12 to fa [phi:f0::@12->fa] fa_from_b12: - //SEG51 [59] phi (byte) be#107 = (byte) be#142 [phi:f0::@12->fa#0] -- register_copy - //SEG52 [59] phi (byte) bd#138 = (byte) bd#129 [phi:f0::@12->fa#1] -- register_copy - //SEG53 [59] phi (byte) bc#39 = (byte) bc#63 [phi:f0::@12->fa#2] -- register_copy - //SEG54 [59] phi (byte) bb#27 = (byte~) bb#102 [phi:f0::@12->fa#3] -- register_copy + //SEG52 [59] phi (byte) be#107 = (byte) be#142 [phi:f0::@12->fa#0] -- register_copy + //SEG53 [59] phi (byte) bd#138 = (byte) bd#129 [phi:f0::@12->fa#1] -- register_copy + //SEG54 [59] phi (byte) bc#39 = (byte) bc#63 [phi:f0::@12->fa#2] -- register_copy + //SEG55 [59] phi (byte) bb#27 = (byte~) bb#102 [phi:f0::@12->fa#3] -- register_copy jsr fa - //SEG55 [18] phi from f0::@1 f0::@12 to f0::@2 [phi:f0::@1/f0::@12->f0::@2] + //SEG56 [18] phi from f0::@1 f0::@12 to f0::@2 [phi:f0::@1/f0::@12->f0::@2] b2_from_b1: b2_from_b12: - //SEG56 [18] phi (byte) be#143 = (byte) be#142 [phi:f0::@1/f0::@12->f0::@2#0] -- register_copy - //SEG57 [18] phi (byte) bd#130 = (byte) bd#129 [phi:f0::@1/f0::@12->f0::@2#1] -- register_copy - //SEG58 [18] phi (byte) bc#64 = (byte) bc#63 [phi:f0::@1/f0::@12->f0::@2#2] -- register_copy - //SEG59 [18] phi (byte) bb#19 = (byte) bb#18 [phi:f0::@1/f0::@12->f0::@2#3] -- register_copy + //SEG57 [18] phi (byte) be#143 = (byte) be#142 [phi:f0::@1/f0::@12->f0::@2#0] -- register_copy + //SEG58 [18] phi (byte) bd#130 = (byte) bd#129 [phi:f0::@1/f0::@12->f0::@2#1] -- register_copy + //SEG59 [18] phi (byte) bc#64 = (byte) bc#63 [phi:f0::@1/f0::@12->f0::@2#2] -- register_copy + //SEG60 [18] phi (byte) bb#19 = (byte) bb#18 [phi:f0::@1/f0::@12->f0::@2#3] -- register_copy jmp b2 - //SEG60 f0::@2 + //SEG61 f0::@2 b2: - //SEG61 [19] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto f0::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG62 [19] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto f0::@3 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #2 bne b3_from_b2 jmp b13 - //SEG62 f0::@13 + //SEG63 f0::@13 b13: - //SEG63 [20] (byte) bb#5 ← ++ (byte) bb#19 -- vbuz1=_inc_vbuz1 + //SEG64 [20] (byte) bb#5 ← ++ (byte) bb#19 -- vbuz1=_inc_vbuz1 inc bb - //SEG64 [21] (byte~) bb#103 ← (byte) bb#5 -- vbuz1=vbuz2 + //SEG65 [21] (byte~) bb#103 ← (byte) bb#5 -- vbuz1=vbuz2 lda bb sta bb_103 - //SEG65 [22] call fa - //SEG66 [59] phi from f0::@13 to fa [phi:f0::@13->fa] + //SEG66 [22] call fa + //SEG67 [59] phi from f0::@13 to fa [phi:f0::@13->fa] fa_from_b13: - //SEG67 [59] phi (byte) be#107 = (byte) be#143 [phi:f0::@13->fa#0] -- register_copy - //SEG68 [59] phi (byte) bd#138 = (byte) bd#130 [phi:f0::@13->fa#1] -- register_copy - //SEG69 [59] phi (byte) bc#39 = (byte) bc#64 [phi:f0::@13->fa#2] -- register_copy - //SEG70 [59] phi (byte) bb#27 = (byte~) bb#103 [phi:f0::@13->fa#3] -- register_copy + //SEG68 [59] phi (byte) be#107 = (byte) be#143 [phi:f0::@13->fa#0] -- register_copy + //SEG69 [59] phi (byte) bd#138 = (byte) bd#130 [phi:f0::@13->fa#1] -- register_copy + //SEG70 [59] phi (byte) bc#39 = (byte) bc#64 [phi:f0::@13->fa#2] -- register_copy + //SEG71 [59] phi (byte) bb#27 = (byte~) bb#103 [phi:f0::@13->fa#3] -- register_copy jsr fa - //SEG71 [23] phi from f0::@13 f0::@2 to f0::@3 [phi:f0::@13/f0::@2->f0::@3] + //SEG72 [23] phi from f0::@13 f0::@2 to f0::@3 [phi:f0::@13/f0::@2->f0::@3] b3_from_b13: b3_from_b2: - //SEG72 [23] phi (byte) be#144 = (byte) be#24 [phi:f0::@13/f0::@2->f0::@3#0] -- register_copy - //SEG73 [23] phi (byte) bd#131 = (byte) bd#24 [phi:f0::@13/f0::@2->f0::@3#1] -- register_copy - //SEG74 [23] phi (byte) bc#65 = (byte) bc#24 [phi:f0::@13/f0::@2->f0::@3#2] -- register_copy - //SEG75 [23] phi (byte) bb#20 = (byte) bb#5 [phi:f0::@13/f0::@2->f0::@3#3] -- register_copy + //SEG73 [23] phi (byte) be#144 = (byte) be#24 [phi:f0::@13/f0::@2->f0::@3#0] -- register_copy + //SEG74 [23] phi (byte) bd#131 = (byte) bd#24 [phi:f0::@13/f0::@2->f0::@3#1] -- register_copy + //SEG75 [23] phi (byte) bc#65 = (byte) bc#24 [phi:f0::@13/f0::@2->f0::@3#2] -- register_copy + //SEG76 [23] phi (byte) bb#20 = (byte) bb#5 [phi:f0::@13/f0::@2->f0::@3#3] -- register_copy jmp b3 - //SEG76 f0::@3 + //SEG77 f0::@3 b3: - //SEG77 [24] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto f0::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG78 [24] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto f0::@4 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #3 bne b4_from_b3 jmp b14 - //SEG78 f0::@14 + //SEG79 f0::@14 b14: - //SEG79 [25] (byte) bb#6 ← ++ (byte) bb#20 -- vbuz1=_inc_vbuz1 + //SEG80 [25] (byte) bb#6 ← ++ (byte) bb#20 -- vbuz1=_inc_vbuz1 inc bb - //SEG80 [26] (byte~) bb#104 ← (byte) bb#6 -- vbuz1=vbuz2 + //SEG81 [26] (byte~) bb#104 ← (byte) bb#6 -- vbuz1=vbuz2 lda bb sta bb_104 - //SEG81 [27] call fa - //SEG82 [59] phi from f0::@14 to fa [phi:f0::@14->fa] + //SEG82 [27] call fa + //SEG83 [59] phi from f0::@14 to fa [phi:f0::@14->fa] fa_from_b14: - //SEG83 [59] phi (byte) be#107 = (byte) be#144 [phi:f0::@14->fa#0] -- register_copy - //SEG84 [59] phi (byte) bd#138 = (byte) bd#131 [phi:f0::@14->fa#1] -- register_copy - //SEG85 [59] phi (byte) bc#39 = (byte) bc#65 [phi:f0::@14->fa#2] -- register_copy - //SEG86 [59] phi (byte) bb#27 = (byte~) bb#104 [phi:f0::@14->fa#3] -- register_copy + //SEG84 [59] phi (byte) be#107 = (byte) be#144 [phi:f0::@14->fa#0] -- register_copy + //SEG85 [59] phi (byte) bd#138 = (byte) bd#131 [phi:f0::@14->fa#1] -- register_copy + //SEG86 [59] phi (byte) bc#39 = (byte) bc#65 [phi:f0::@14->fa#2] -- register_copy + //SEG87 [59] phi (byte) bb#27 = (byte~) bb#104 [phi:f0::@14->fa#3] -- register_copy jsr fa - //SEG87 [28] phi from f0::@14 f0::@3 to f0::@4 [phi:f0::@14/f0::@3->f0::@4] + //SEG88 [28] phi from f0::@14 f0::@3 to f0::@4 [phi:f0::@14/f0::@3->f0::@4] b4_from_b14: b4_from_b3: - //SEG88 [28] phi (byte) be#100 = (byte) be#24 [phi:f0::@14/f0::@3->f0::@4#0] -- register_copy - //SEG89 [28] phi (byte) bd#132 = (byte) bd#24 [phi:f0::@14/f0::@3->f0::@4#1] -- register_copy - //SEG90 [28] phi (byte) bc#66 = (byte) bc#24 [phi:f0::@14/f0::@3->f0::@4#2] -- register_copy - //SEG91 [28] phi (byte) bb#21 = (byte) bb#6 [phi:f0::@14/f0::@3->f0::@4#3] -- register_copy + //SEG89 [28] phi (byte) be#100 = (byte) be#24 [phi:f0::@14/f0::@3->f0::@4#0] -- register_copy + //SEG90 [28] phi (byte) bd#132 = (byte) bd#24 [phi:f0::@14/f0::@3->f0::@4#1] -- register_copy + //SEG91 [28] phi (byte) bc#66 = (byte) bc#24 [phi:f0::@14/f0::@3->f0::@4#2] -- register_copy + //SEG92 [28] phi (byte) bb#21 = (byte) bb#6 [phi:f0::@14/f0::@3->f0::@4#3] -- register_copy jmp b4 - //SEG92 f0::@4 + //SEG93 f0::@4 b4: - //SEG93 [29] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto f0::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG94 [29] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto f0::@5 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #4 bne b5_from_b4 jmp b15 - //SEG94 f0::@15 + //SEG95 f0::@15 b15: - //SEG95 [30] (byte) bb#66 ← ++ (byte) bb#21 -- vbuz1=_inc_vbuz1 + //SEG96 [30] (byte) bb#66 ← ++ (byte) bb#21 -- vbuz1=_inc_vbuz1 inc bb - //SEG96 [31] (byte~) bb#105 ← (byte) bb#66 -- vbuz1=vbuz2 + //SEG97 [31] (byte~) bb#105 ← (byte) bb#66 -- vbuz1=vbuz2 lda bb sta bb_105 - //SEG97 [32] call fa - //SEG98 [59] phi from f0::@15 to fa [phi:f0::@15->fa] + //SEG98 [32] call fa + //SEG99 [59] phi from f0::@15 to fa [phi:f0::@15->fa] fa_from_b15: - //SEG99 [59] phi (byte) be#107 = (byte) be#100 [phi:f0::@15->fa#0] -- register_copy - //SEG100 [59] phi (byte) bd#138 = (byte) bd#132 [phi:f0::@15->fa#1] -- register_copy - //SEG101 [59] phi (byte) bc#39 = (byte) bc#66 [phi:f0::@15->fa#2] -- register_copy - //SEG102 [59] phi (byte) bb#27 = (byte~) bb#105 [phi:f0::@15->fa#3] -- register_copy + //SEG100 [59] phi (byte) be#107 = (byte) be#100 [phi:f0::@15->fa#0] -- register_copy + //SEG101 [59] phi (byte) bd#138 = (byte) bd#132 [phi:f0::@15->fa#1] -- register_copy + //SEG102 [59] phi (byte) bc#39 = (byte) bc#66 [phi:f0::@15->fa#2] -- register_copy + //SEG103 [59] phi (byte) bb#27 = (byte~) bb#105 [phi:f0::@15->fa#3] -- register_copy jsr fa - //SEG103 [33] phi from f0::@15 f0::@4 to f0::@5 [phi:f0::@15/f0::@4->f0::@5] + //SEG104 [33] phi from f0::@15 f0::@4 to f0::@5 [phi:f0::@15/f0::@4->f0::@5] b5_from_b15: b5_from_b4: - //SEG104 [33] phi (byte) be#101 = (byte) be#24 [phi:f0::@15/f0::@4->f0::@5#0] -- register_copy - //SEG105 [33] phi (byte) bd#133 = (byte) bd#24 [phi:f0::@15/f0::@4->f0::@5#1] -- register_copy - //SEG106 [33] phi (byte) bc#100 = (byte) bc#24 [phi:f0::@15/f0::@4->f0::@5#2] -- register_copy - //SEG107 [33] phi (byte) bb#22 = (byte) bb#66 [phi:f0::@15/f0::@4->f0::@5#3] -- register_copy + //SEG105 [33] phi (byte) be#101 = (byte) be#24 [phi:f0::@15/f0::@4->f0::@5#0] -- register_copy + //SEG106 [33] phi (byte) bd#133 = (byte) bd#24 [phi:f0::@15/f0::@4->f0::@5#1] -- register_copy + //SEG107 [33] phi (byte) bc#100 = (byte) bc#24 [phi:f0::@15/f0::@4->f0::@5#2] -- register_copy + //SEG108 [33] phi (byte) bb#22 = (byte) bb#66 [phi:f0::@15/f0::@4->f0::@5#3] -- register_copy jmp b5 - //SEG108 f0::@5 + //SEG109 f0::@5 b5: - //SEG109 [34] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto f0::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG110 [34] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto f0::@6 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #5 bne b6_from_b5 jmp b16 - //SEG110 f0::@16 + //SEG111 f0::@16 b16: - //SEG111 [35] (byte) bb#67 ← ++ (byte) bb#22 -- vbuz1=_inc_vbuz1 + //SEG112 [35] (byte) bb#67 ← ++ (byte) bb#22 -- vbuz1=_inc_vbuz1 inc bb - //SEG112 [36] (byte~) bb#106 ← (byte) bb#67 -- vbuz1=vbuz2 + //SEG113 [36] (byte~) bb#106 ← (byte) bb#67 -- vbuz1=vbuz2 lda bb sta bb_106 - //SEG113 [37] call fa - //SEG114 [59] phi from f0::@16 to fa [phi:f0::@16->fa] + //SEG114 [37] call fa + //SEG115 [59] phi from f0::@16 to fa [phi:f0::@16->fa] fa_from_b16: - //SEG115 [59] phi (byte) be#107 = (byte) be#101 [phi:f0::@16->fa#0] -- register_copy - //SEG116 [59] phi (byte) bd#138 = (byte) bd#133 [phi:f0::@16->fa#1] -- register_copy - //SEG117 [59] phi (byte) bc#39 = (byte) bc#100 [phi:f0::@16->fa#2] -- register_copy - //SEG118 [59] phi (byte) bb#27 = (byte~) bb#106 [phi:f0::@16->fa#3] -- register_copy + //SEG116 [59] phi (byte) be#107 = (byte) be#101 [phi:f0::@16->fa#0] -- register_copy + //SEG117 [59] phi (byte) bd#138 = (byte) bd#133 [phi:f0::@16->fa#1] -- register_copy + //SEG118 [59] phi (byte) bc#39 = (byte) bc#100 [phi:f0::@16->fa#2] -- register_copy + //SEG119 [59] phi (byte) bb#27 = (byte~) bb#106 [phi:f0::@16->fa#3] -- register_copy jsr fa - //SEG119 [38] phi from f0::@16 f0::@5 to f0::@6 [phi:f0::@16/f0::@5->f0::@6] + //SEG120 [38] phi from f0::@16 f0::@5 to f0::@6 [phi:f0::@16/f0::@5->f0::@6] b6_from_b16: b6_from_b5: - //SEG120 [38] phi (byte) be#102 = (byte) be#24 [phi:f0::@16/f0::@5->f0::@6#0] -- register_copy - //SEG121 [38] phi (byte) bd#134 = (byte) bd#24 [phi:f0::@16/f0::@5->f0::@6#1] -- register_copy - //SEG122 [38] phi (byte) bc#101 = (byte) bc#24 [phi:f0::@16/f0::@5->f0::@6#2] -- register_copy - //SEG123 [38] phi (byte) bb#23 = (byte) bb#67 [phi:f0::@16/f0::@5->f0::@6#3] -- register_copy + //SEG121 [38] phi (byte) be#102 = (byte) be#24 [phi:f0::@16/f0::@5->f0::@6#0] -- register_copy + //SEG122 [38] phi (byte) bd#134 = (byte) bd#24 [phi:f0::@16/f0::@5->f0::@6#1] -- register_copy + //SEG123 [38] phi (byte) bc#101 = (byte) bc#24 [phi:f0::@16/f0::@5->f0::@6#2] -- register_copy + //SEG124 [38] phi (byte) bb#23 = (byte) bb#67 [phi:f0::@16/f0::@5->f0::@6#3] -- register_copy jmp b6 - //SEG124 f0::@6 + //SEG125 f0::@6 b6: - //SEG125 [39] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto f0::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG126 [39] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto f0::@7 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #6 bne b7_from_b6 jmp b17 - //SEG126 f0::@17 + //SEG127 f0::@17 b17: - //SEG127 [40] (byte) bb#68 ← ++ (byte) bb#23 -- vbuz1=_inc_vbuz1 + //SEG128 [40] (byte) bb#68 ← ++ (byte) bb#23 -- vbuz1=_inc_vbuz1 inc bb - //SEG128 [41] (byte~) bb#107 ← (byte) bb#68 -- vbuz1=vbuz2 + //SEG129 [41] (byte~) bb#107 ← (byte) bb#68 -- vbuz1=vbuz2 lda bb sta bb_107 - //SEG129 [42] call fa - //SEG130 [59] phi from f0::@17 to fa [phi:f0::@17->fa] + //SEG130 [42] call fa + //SEG131 [59] phi from f0::@17 to fa [phi:f0::@17->fa] fa_from_b17: - //SEG131 [59] phi (byte) be#107 = (byte) be#102 [phi:f0::@17->fa#0] -- register_copy - //SEG132 [59] phi (byte) bd#138 = (byte) bd#134 [phi:f0::@17->fa#1] -- register_copy - //SEG133 [59] phi (byte) bc#39 = (byte) bc#101 [phi:f0::@17->fa#2] -- register_copy - //SEG134 [59] phi (byte) bb#27 = (byte~) bb#107 [phi:f0::@17->fa#3] -- register_copy + //SEG132 [59] phi (byte) be#107 = (byte) be#102 [phi:f0::@17->fa#0] -- register_copy + //SEG133 [59] phi (byte) bd#138 = (byte) bd#134 [phi:f0::@17->fa#1] -- register_copy + //SEG134 [59] phi (byte) bc#39 = (byte) bc#101 [phi:f0::@17->fa#2] -- register_copy + //SEG135 [59] phi (byte) bb#27 = (byte~) bb#107 [phi:f0::@17->fa#3] -- register_copy jsr fa - //SEG135 [43] phi from f0::@17 f0::@6 to f0::@7 [phi:f0::@17/f0::@6->f0::@7] + //SEG136 [43] phi from f0::@17 f0::@6 to f0::@7 [phi:f0::@17/f0::@6->f0::@7] b7_from_b17: b7_from_b6: - //SEG136 [43] phi (byte) be#103 = (byte) be#24 [phi:f0::@17/f0::@6->f0::@7#0] -- register_copy - //SEG137 [43] phi (byte) bd#135 = (byte) bd#24 [phi:f0::@17/f0::@6->f0::@7#1] -- register_copy - //SEG138 [43] phi (byte) bc#102 = (byte) bc#24 [phi:f0::@17/f0::@6->f0::@7#2] -- register_copy - //SEG139 [43] phi (byte) bb#24 = (byte) bb#68 [phi:f0::@17/f0::@6->f0::@7#3] -- register_copy + //SEG137 [43] phi (byte) be#103 = (byte) be#24 [phi:f0::@17/f0::@6->f0::@7#0] -- register_copy + //SEG138 [43] phi (byte) bd#135 = (byte) bd#24 [phi:f0::@17/f0::@6->f0::@7#1] -- register_copy + //SEG139 [43] phi (byte) bc#102 = (byte) bc#24 [phi:f0::@17/f0::@6->f0::@7#2] -- register_copy + //SEG140 [43] phi (byte) bb#24 = (byte) bb#68 [phi:f0::@17/f0::@6->f0::@7#3] -- register_copy jmp b7 - //SEG140 f0::@7 + //SEG141 f0::@7 b7: - //SEG141 [44] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto f0::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG142 [44] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto f0::@8 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #7 bne b8_from_b7 jmp b18 - //SEG142 f0::@18 + //SEG143 f0::@18 b18: - //SEG143 [45] (byte) bb#10 ← ++ (byte) bb#24 -- vbuz1=_inc_vbuz1 + //SEG144 [45] (byte) bb#10 ← ++ (byte) bb#24 -- vbuz1=_inc_vbuz1 inc bb - //SEG144 [46] (byte~) bb#108 ← (byte) bb#10 -- vbuz1=vbuz2 + //SEG145 [46] (byte~) bb#108 ← (byte) bb#10 -- vbuz1=vbuz2 lda bb sta bb_108 - //SEG145 [47] call fa - //SEG146 [59] phi from f0::@18 to fa [phi:f0::@18->fa] + //SEG146 [47] call fa + //SEG147 [59] phi from f0::@18 to fa [phi:f0::@18->fa] fa_from_b18: - //SEG147 [59] phi (byte) be#107 = (byte) be#103 [phi:f0::@18->fa#0] -- register_copy - //SEG148 [59] phi (byte) bd#138 = (byte) bd#135 [phi:f0::@18->fa#1] -- register_copy - //SEG149 [59] phi (byte) bc#39 = (byte) bc#102 [phi:f0::@18->fa#2] -- register_copy - //SEG150 [59] phi (byte) bb#27 = (byte~) bb#108 [phi:f0::@18->fa#3] -- register_copy + //SEG148 [59] phi (byte) be#107 = (byte) be#103 [phi:f0::@18->fa#0] -- register_copy + //SEG149 [59] phi (byte) bd#138 = (byte) bd#135 [phi:f0::@18->fa#1] -- register_copy + //SEG150 [59] phi (byte) bc#39 = (byte) bc#102 [phi:f0::@18->fa#2] -- register_copy + //SEG151 [59] phi (byte) bb#27 = (byte~) bb#108 [phi:f0::@18->fa#3] -- register_copy jsr fa - //SEG151 [48] phi from f0::@18 f0::@7 to f0::@8 [phi:f0::@18/f0::@7->f0::@8] + //SEG152 [48] phi from f0::@18 f0::@7 to f0::@8 [phi:f0::@18/f0::@7->f0::@8] b8_from_b18: b8_from_b7: - //SEG152 [48] phi (byte) be#104 = (byte) be#24 [phi:f0::@18/f0::@7->f0::@8#0] -- register_copy - //SEG153 [48] phi (byte) bd#136 = (byte) bd#24 [phi:f0::@18/f0::@7->f0::@8#1] -- register_copy - //SEG154 [48] phi (byte) bc#103 = (byte) bc#24 [phi:f0::@18/f0::@7->f0::@8#2] -- register_copy - //SEG155 [48] phi (byte) bb#25 = (byte) bb#10 [phi:f0::@18/f0::@7->f0::@8#3] -- register_copy + //SEG153 [48] phi (byte) be#104 = (byte) be#24 [phi:f0::@18/f0::@7->f0::@8#0] -- register_copy + //SEG154 [48] phi (byte) bd#136 = (byte) bd#24 [phi:f0::@18/f0::@7->f0::@8#1] -- register_copy + //SEG155 [48] phi (byte) bc#103 = (byte) bc#24 [phi:f0::@18/f0::@7->f0::@8#2] -- register_copy + //SEG156 [48] phi (byte) bb#25 = (byte) bb#10 [phi:f0::@18/f0::@7->f0::@8#3] -- register_copy jmp b8 - //SEG156 f0::@8 + //SEG157 f0::@8 b8: - //SEG157 [49] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto f0::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG158 [49] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto f0::@9 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #8 bne b9_from_b8 jmp b19 - //SEG158 f0::@19 + //SEG159 f0::@19 b19: - //SEG159 [50] (byte) bb#11 ← ++ (byte) bb#25 -- vbuz1=_inc_vbuz1 + //SEG160 [50] (byte) bb#11 ← ++ (byte) bb#25 -- vbuz1=_inc_vbuz1 inc bb - //SEG160 [51] (byte~) bb#109 ← (byte) bb#11 -- vbuz1=vbuz2 + //SEG161 [51] (byte~) bb#109 ← (byte) bb#11 -- vbuz1=vbuz2 lda bb sta bb_109 - //SEG161 [52] call fa - //SEG162 [59] phi from f0::@19 to fa [phi:f0::@19->fa] + //SEG162 [52] call fa + //SEG163 [59] phi from f0::@19 to fa [phi:f0::@19->fa] fa_from_b19: - //SEG163 [59] phi (byte) be#107 = (byte) be#104 [phi:f0::@19->fa#0] -- register_copy - //SEG164 [59] phi (byte) bd#138 = (byte) bd#136 [phi:f0::@19->fa#1] -- register_copy - //SEG165 [59] phi (byte) bc#39 = (byte) bc#103 [phi:f0::@19->fa#2] -- register_copy - //SEG166 [59] phi (byte) bb#27 = (byte~) bb#109 [phi:f0::@19->fa#3] -- register_copy + //SEG164 [59] phi (byte) be#107 = (byte) be#104 [phi:f0::@19->fa#0] -- register_copy + //SEG165 [59] phi (byte) bd#138 = (byte) bd#136 [phi:f0::@19->fa#1] -- register_copy + //SEG166 [59] phi (byte) bc#39 = (byte) bc#103 [phi:f0::@19->fa#2] -- register_copy + //SEG167 [59] phi (byte) bb#27 = (byte~) bb#109 [phi:f0::@19->fa#3] -- register_copy jsr fa - //SEG167 [53] phi from f0::@19 f0::@8 to f0::@9 [phi:f0::@19/f0::@8->f0::@9] + //SEG168 [53] phi from f0::@19 f0::@8 to f0::@9 [phi:f0::@19/f0::@8->f0::@9] b9_from_b19: b9_from_b8: - //SEG168 [53] phi (byte) be#105 = (byte) be#24 [phi:f0::@19/f0::@8->f0::@9#0] -- register_copy - //SEG169 [53] phi (byte) bd#137 = (byte) bd#24 [phi:f0::@19/f0::@8->f0::@9#1] -- register_copy - //SEG170 [53] phi (byte) bc#104 = (byte) bc#24 [phi:f0::@19/f0::@8->f0::@9#2] -- register_copy - //SEG171 [53] phi (byte) bb#49 = (byte) bb#11 [phi:f0::@19/f0::@8->f0::@9#3] -- register_copy + //SEG169 [53] phi (byte) be#105 = (byte) be#24 [phi:f0::@19/f0::@8->f0::@9#0] -- register_copy + //SEG170 [53] phi (byte) bd#137 = (byte) bd#24 [phi:f0::@19/f0::@8->f0::@9#1] -- register_copy + //SEG171 [53] phi (byte) bc#104 = (byte) bc#24 [phi:f0::@19/f0::@8->f0::@9#2] -- register_copy + //SEG172 [53] phi (byte) bb#49 = (byte) bb#11 [phi:f0::@19/f0::@8->f0::@9#3] -- register_copy jmp b9 - //SEG172 f0::@9 + //SEG173 f0::@9 b9: - //SEG173 [54] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto f0::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG174 [54] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto f0::@return -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #9 bne breturn_from_b9 - //SEG174 [55] phi from f0::@9 to f0::@20 [phi:f0::@9->f0::@20] + //SEG175 [55] phi from f0::@9 to f0::@20 [phi:f0::@9->f0::@20] b20_from_b9: jmp b20 - //SEG175 f0::@20 + //SEG176 f0::@20 b20: - //SEG176 [56] call fa - //SEG177 [59] phi from f0::@20 to fa [phi:f0::@20->fa] + //SEG177 [56] call fa + //SEG178 [59] phi from f0::@20 to fa [phi:f0::@20->fa] fa_from_b20: - //SEG178 [59] phi (byte) be#107 = (byte) be#105 [phi:f0::@20->fa#0] -- register_copy - //SEG179 [59] phi (byte) bd#138 = (byte) bd#137 [phi:f0::@20->fa#1] -- register_copy - //SEG180 [59] phi (byte) bc#39 = (byte) bc#104 [phi:f0::@20->fa#2] -- register_copy - //SEG181 [59] phi (byte) bb#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->fa#3] -- vbuz1=vbuc1 + //SEG179 [59] phi (byte) be#107 = (byte) be#105 [phi:f0::@20->fa#0] -- register_copy + //SEG180 [59] phi (byte) bd#138 = (byte) bd#137 [phi:f0::@20->fa#1] -- register_copy + //SEG181 [59] phi (byte) bc#39 = (byte) bc#104 [phi:f0::@20->fa#2] -- register_copy + //SEG182 [59] phi (byte) bb#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->fa#3] -- vbuz1=vbuc1 lda #0 sta bb_27 jsr fa - //SEG182 [57] phi from f0::@20 to f0::@return [phi:f0::@20->f0::@return] + //SEG183 [57] phi from f0::@20 to f0::@return [phi:f0::@20->f0::@return] breturn_from_b20: - //SEG183 [57] phi (byte) be#13 = (byte) be#24 [phi:f0::@20->f0::@return#0] -- register_copy - //SEG184 [57] phi (byte) bd#13 = (byte) bd#24 [phi:f0::@20->f0::@return#1] -- register_copy - //SEG185 [57] phi (byte) bc#13 = (byte) bc#24 [phi:f0::@20->f0::@return#2] -- register_copy - //SEG186 [57] phi (byte) bb#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->f0::@return#3] -- vbuz1=vbuc1 + //SEG184 [57] phi (byte) be#13 = (byte) be#24 [phi:f0::@20->f0::@return#0] -- register_copy + //SEG185 [57] phi (byte) bd#13 = (byte) bd#24 [phi:f0::@20->f0::@return#1] -- register_copy + //SEG186 [57] phi (byte) bc#13 = (byte) bc#24 [phi:f0::@20->f0::@return#2] -- register_copy + //SEG187 [57] phi (byte) bb#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->f0::@return#3] -- vbuz1=vbuc1 lda #0 sta bb jmp breturn - //SEG187 [57] phi from f0::@9 to f0::@return [phi:f0::@9->f0::@return] + //SEG188 [57] phi from f0::@9 to f0::@return [phi:f0::@9->f0::@return] breturn_from_b9: - //SEG188 [57] phi (byte) be#13 = (byte) be#105 [phi:f0::@9->f0::@return#0] -- register_copy - //SEG189 [57] phi (byte) bd#13 = (byte) bd#137 [phi:f0::@9->f0::@return#1] -- register_copy - //SEG190 [57] phi (byte) bc#13 = (byte) bc#104 [phi:f0::@9->f0::@return#2] -- register_copy - //SEG191 [57] phi (byte) bb#13 = (byte) bb#49 [phi:f0::@9->f0::@return#3] -- register_copy + //SEG189 [57] phi (byte) be#13 = (byte) be#105 [phi:f0::@9->f0::@return#0] -- register_copy + //SEG190 [57] phi (byte) bd#13 = (byte) bd#137 [phi:f0::@9->f0::@return#1] -- register_copy + //SEG191 [57] phi (byte) bc#13 = (byte) bc#104 [phi:f0::@9->f0::@return#2] -- register_copy + //SEG192 [57] phi (byte) bb#13 = (byte) bb#49 [phi:f0::@9->f0::@return#3] -- register_copy jmp breturn - //SEG192 f0::@return + //SEG193 f0::@return breturn: - //SEG193 [58] return + //SEG194 [58] return rts } -//SEG194 fa +//SEG195 fa fa: { - //SEG195 [60] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fa::@1 -- vbuz1_neq_0_then_la1 + //SEG196 [60] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fa::@1 -- vbuz1_neq_0_then_la1 lda bb_27 cmp #0 bne b1_from_fa jmp b11 - //SEG196 fa::@11 + //SEG197 fa::@11 b11: - //SEG197 [61] (byte) bc#105 ← ++ (byte) bc#39 -- vbuz1=_inc_vbuz1 + //SEG198 [61] (byte) bc#105 ← ++ (byte) bc#39 -- vbuz1=_inc_vbuz1 inc bc - //SEG198 [62] (byte~) bc#174 ← (byte) bc#105 -- vbuz1=vbuz2 + //SEG199 [62] (byte~) bc#174 ← (byte) bc#105 -- vbuz1=vbuz2 lda bc sta bc_174 - //SEG199 [63] call fb - //SEG200 [110] phi from fa::@11 to fb [phi:fa::@11->fb] + //SEG200 [63] call fb + //SEG201 [110] phi from fa::@11 to fb [phi:fa::@11->fb] fb_from_b11: - //SEG201 [110] phi (byte) be#118 = (byte) be#107 [phi:fa::@11->fb#0] -- register_copy - //SEG202 [110] phi (byte) bd#106 = (byte) bd#138 [phi:fa::@11->fb#1] -- register_copy - //SEG203 [110] phi (byte) bc#114 = (byte~) bc#174 [phi:fa::@11->fb#2] -- register_copy + //SEG202 [110] phi (byte) be#118 = (byte) be#107 [phi:fa::@11->fb#0] -- register_copy + //SEG203 [110] phi (byte) bd#106 = (byte) bd#138 [phi:fa::@11->fb#1] -- register_copy + //SEG204 [110] phi (byte) bc#114 = (byte~) bc#174 [phi:fa::@11->fb#2] -- register_copy jsr fb - //SEG204 [64] phi from fa fa::@11 to fa::@1 [phi:fa/fa::@11->fa::@1] + //SEG205 [64] phi from fa fa::@11 to fa::@1 [phi:fa/fa::@11->fa::@1] b1_from_fa: b1_from_b11: - //SEG205 [64] phi (byte) be#108 = (byte) be#107 [phi:fa/fa::@11->fa::@1#0] -- register_copy - //SEG206 [64] phi (byte) bd#139 = (byte) bd#138 [phi:fa/fa::@11->fa::@1#1] -- register_copy - //SEG207 [64] phi (byte) bc#40 = (byte) bc#39 [phi:fa/fa::@11->fa::@1#2] -- register_copy + //SEG206 [64] phi (byte) be#108 = (byte) be#107 [phi:fa/fa::@11->fa::@1#0] -- register_copy + //SEG207 [64] phi (byte) bd#139 = (byte) bd#138 [phi:fa/fa::@11->fa::@1#1] -- register_copy + //SEG208 [64] phi (byte) bc#40 = (byte) bc#39 [phi:fa/fa::@11->fa::@1#2] -- register_copy jmp b1 - //SEG208 fa::@1 + //SEG209 fa::@1 b1: - //SEG209 [65] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fa::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG210 [65] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fa::@2 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #1 bne b2_from_b1 jmp b12 - //SEG210 fa::@12 + //SEG211 fa::@12 b12: - //SEG211 [66] (byte) bc#106 ← ++ (byte) bc#40 -- vbuz1=_inc_vbuz1 + //SEG212 [66] (byte) bc#106 ← ++ (byte) bc#40 -- vbuz1=_inc_vbuz1 inc bc - //SEG212 [67] (byte~) bc#175 ← (byte) bc#106 -- vbuz1=vbuz2 + //SEG213 [67] (byte~) bc#175 ← (byte) bc#106 -- vbuz1=vbuz2 lda bc sta bc_175 - //SEG213 [68] call fb - //SEG214 [110] phi from fa::@12 to fb [phi:fa::@12->fb] + //SEG214 [68] call fb + //SEG215 [110] phi from fa::@12 to fb [phi:fa::@12->fb] fb_from_b12: - //SEG215 [110] phi (byte) be#118 = (byte) be#108 [phi:fa::@12->fb#0] -- register_copy - //SEG216 [110] phi (byte) bd#106 = (byte) bd#139 [phi:fa::@12->fb#1] -- register_copy - //SEG217 [110] phi (byte) bc#114 = (byte~) bc#175 [phi:fa::@12->fb#2] -- register_copy + //SEG216 [110] phi (byte) be#118 = (byte) be#108 [phi:fa::@12->fb#0] -- register_copy + //SEG217 [110] phi (byte) bd#106 = (byte) bd#139 [phi:fa::@12->fb#1] -- register_copy + //SEG218 [110] phi (byte) bc#114 = (byte~) bc#175 [phi:fa::@12->fb#2] -- register_copy jsr fb - //SEG218 [69] phi from fa::@1 fa::@12 to fa::@2 [phi:fa::@1/fa::@12->fa::@2] + //SEG219 [69] phi from fa::@1 fa::@12 to fa::@2 [phi:fa::@1/fa::@12->fa::@2] b2_from_b1: b2_from_b12: - //SEG219 [69] phi (byte) be#109 = (byte) be#108 [phi:fa::@1/fa::@12->fa::@2#0] -- register_copy - //SEG220 [69] phi (byte) bd#140 = (byte) bd#139 [phi:fa::@1/fa::@12->fa::@2#1] -- register_copy - //SEG221 [69] phi (byte) bc#41 = (byte) bc#40 [phi:fa::@1/fa::@12->fa::@2#2] -- register_copy + //SEG220 [69] phi (byte) be#109 = (byte) be#108 [phi:fa::@1/fa::@12->fa::@2#0] -- register_copy + //SEG221 [69] phi (byte) bd#140 = (byte) bd#139 [phi:fa::@1/fa::@12->fa::@2#1] -- register_copy + //SEG222 [69] phi (byte) bc#41 = (byte) bc#40 [phi:fa::@1/fa::@12->fa::@2#2] -- register_copy jmp b2 - //SEG222 fa::@2 + //SEG223 fa::@2 b2: - //SEG223 [70] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fa::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG224 [70] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fa::@3 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #2 bne b3_from_b2 jmp b13 - //SEG224 fa::@13 + //SEG225 fa::@13 b13: - //SEG225 [71] (byte) bc#107 ← ++ (byte) bc#41 -- vbuz1=_inc_vbuz1 + //SEG226 [71] (byte) bc#107 ← ++ (byte) bc#41 -- vbuz1=_inc_vbuz1 inc bc - //SEG226 [72] (byte~) bc#176 ← (byte) bc#107 -- vbuz1=vbuz2 + //SEG227 [72] (byte~) bc#176 ← (byte) bc#107 -- vbuz1=vbuz2 lda bc sta bc_176 - //SEG227 [73] call fb - //SEG228 [110] phi from fa::@13 to fb [phi:fa::@13->fb] + //SEG228 [73] call fb + //SEG229 [110] phi from fa::@13 to fb [phi:fa::@13->fb] fb_from_b13: - //SEG229 [110] phi (byte) be#118 = (byte) be#109 [phi:fa::@13->fb#0] -- register_copy - //SEG230 [110] phi (byte) bd#106 = (byte) bd#140 [phi:fa::@13->fb#1] -- register_copy - //SEG231 [110] phi (byte) bc#114 = (byte~) bc#176 [phi:fa::@13->fb#2] -- register_copy + //SEG230 [110] phi (byte) be#118 = (byte) be#109 [phi:fa::@13->fb#0] -- register_copy + //SEG231 [110] phi (byte) bd#106 = (byte) bd#140 [phi:fa::@13->fb#1] -- register_copy + //SEG232 [110] phi (byte) bc#114 = (byte~) bc#176 [phi:fa::@13->fb#2] -- register_copy jsr fb - //SEG232 [74] phi from fa::@13 fa::@2 to fa::@3 [phi:fa::@13/fa::@2->fa::@3] + //SEG233 [74] phi from fa::@13 fa::@2 to fa::@3 [phi:fa::@13/fa::@2->fa::@3] b3_from_b13: b3_from_b2: - //SEG233 [74] phi (byte) be#110 = (byte) be#35 [phi:fa::@13/fa::@2->fa::@3#0] -- register_copy - //SEG234 [74] phi (byte) bd#141 = (byte) bd#35 [phi:fa::@13/fa::@2->fa::@3#1] -- register_copy - //SEG235 [74] phi (byte) bc#42 = (byte) bc#107 [phi:fa::@13/fa::@2->fa::@3#2] -- register_copy + //SEG234 [74] phi (byte) be#110 = (byte) be#35 [phi:fa::@13/fa::@2->fa::@3#0] -- register_copy + //SEG235 [74] phi (byte) bd#141 = (byte) bd#35 [phi:fa::@13/fa::@2->fa::@3#1] -- register_copy + //SEG236 [74] phi (byte) bc#42 = (byte) bc#107 [phi:fa::@13/fa::@2->fa::@3#2] -- register_copy jmp b3 - //SEG236 fa::@3 + //SEG237 fa::@3 b3: - //SEG237 [75] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fa::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG238 [75] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fa::@4 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #3 bne b4_from_b3 jmp b14 - //SEG238 fa::@14 + //SEG239 fa::@14 b14: - //SEG239 [76] (byte) bc#108 ← ++ (byte) bc#42 -- vbuz1=_inc_vbuz1 + //SEG240 [76] (byte) bc#108 ← ++ (byte) bc#42 -- vbuz1=_inc_vbuz1 inc bc - //SEG240 [77] (byte~) bc#177 ← (byte) bc#108 -- vbuz1=vbuz2 + //SEG241 [77] (byte~) bc#177 ← (byte) bc#108 -- vbuz1=vbuz2 lda bc sta bc_177 - //SEG241 [78] call fb - //SEG242 [110] phi from fa::@14 to fb [phi:fa::@14->fb] + //SEG242 [78] call fb + //SEG243 [110] phi from fa::@14 to fb [phi:fa::@14->fb] fb_from_b14: - //SEG243 [110] phi (byte) be#118 = (byte) be#110 [phi:fa::@14->fb#0] -- register_copy - //SEG244 [110] phi (byte) bd#106 = (byte) bd#141 [phi:fa::@14->fb#1] -- register_copy - //SEG245 [110] phi (byte) bc#114 = (byte~) bc#177 [phi:fa::@14->fb#2] -- register_copy + //SEG244 [110] phi (byte) be#118 = (byte) be#110 [phi:fa::@14->fb#0] -- register_copy + //SEG245 [110] phi (byte) bd#106 = (byte) bd#141 [phi:fa::@14->fb#1] -- register_copy + //SEG246 [110] phi (byte) bc#114 = (byte~) bc#177 [phi:fa::@14->fb#2] -- register_copy jsr fb - //SEG246 [79] phi from fa::@14 fa::@3 to fa::@4 [phi:fa::@14/fa::@3->fa::@4] + //SEG247 [79] phi from fa::@14 fa::@3 to fa::@4 [phi:fa::@14/fa::@3->fa::@4] b4_from_b14: b4_from_b3: - //SEG247 [79] phi (byte) be#111 = (byte) be#35 [phi:fa::@14/fa::@3->fa::@4#0] -- register_copy - //SEG248 [79] phi (byte) bd#142 = (byte) bd#35 [phi:fa::@14/fa::@3->fa::@4#1] -- register_copy - //SEG249 [79] phi (byte) bc#43 = (byte) bc#108 [phi:fa::@14/fa::@3->fa::@4#2] -- register_copy + //SEG248 [79] phi (byte) be#111 = (byte) be#35 [phi:fa::@14/fa::@3->fa::@4#0] -- register_copy + //SEG249 [79] phi (byte) bd#142 = (byte) bd#35 [phi:fa::@14/fa::@3->fa::@4#1] -- register_copy + //SEG250 [79] phi (byte) bc#43 = (byte) bc#108 [phi:fa::@14/fa::@3->fa::@4#2] -- register_copy jmp b4 - //SEG250 fa::@4 + //SEG251 fa::@4 b4: - //SEG251 [80] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fa::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG252 [80] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fa::@5 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #4 bne b5_from_b4 jmp b15 - //SEG252 fa::@15 + //SEG253 fa::@15 b15: - //SEG253 [81] (byte) bc#109 ← ++ (byte) bc#43 -- vbuz1=_inc_vbuz1 + //SEG254 [81] (byte) bc#109 ← ++ (byte) bc#43 -- vbuz1=_inc_vbuz1 inc bc - //SEG254 [82] (byte~) bc#178 ← (byte) bc#109 -- vbuz1=vbuz2 + //SEG255 [82] (byte~) bc#178 ← (byte) bc#109 -- vbuz1=vbuz2 lda bc sta bc_178 - //SEG255 [83] call fb - //SEG256 [110] phi from fa::@15 to fb [phi:fa::@15->fb] + //SEG256 [83] call fb + //SEG257 [110] phi from fa::@15 to fb [phi:fa::@15->fb] fb_from_b15: - //SEG257 [110] phi (byte) be#118 = (byte) be#111 [phi:fa::@15->fb#0] -- register_copy - //SEG258 [110] phi (byte) bd#106 = (byte) bd#142 [phi:fa::@15->fb#1] -- register_copy - //SEG259 [110] phi (byte) bc#114 = (byte~) bc#178 [phi:fa::@15->fb#2] -- register_copy + //SEG258 [110] phi (byte) be#118 = (byte) be#111 [phi:fa::@15->fb#0] -- register_copy + //SEG259 [110] phi (byte) bd#106 = (byte) bd#142 [phi:fa::@15->fb#1] -- register_copy + //SEG260 [110] phi (byte) bc#114 = (byte~) bc#178 [phi:fa::@15->fb#2] -- register_copy jsr fb - //SEG260 [84] phi from fa::@15 fa::@4 to fa::@5 [phi:fa::@15/fa::@4->fa::@5] + //SEG261 [84] phi from fa::@15 fa::@4 to fa::@5 [phi:fa::@15/fa::@4->fa::@5] b5_from_b15: b5_from_b4: - //SEG261 [84] phi (byte) be#112 = (byte) be#35 [phi:fa::@15/fa::@4->fa::@5#0] -- register_copy - //SEG262 [84] phi (byte) bd#100 = (byte) bd#35 [phi:fa::@15/fa::@4->fa::@5#1] -- register_copy - //SEG263 [84] phi (byte) bc#44 = (byte) bc#109 [phi:fa::@15/fa::@4->fa::@5#2] -- register_copy + //SEG262 [84] phi (byte) be#112 = (byte) be#35 [phi:fa::@15/fa::@4->fa::@5#0] -- register_copy + //SEG263 [84] phi (byte) bd#100 = (byte) bd#35 [phi:fa::@15/fa::@4->fa::@5#1] -- register_copy + //SEG264 [84] phi (byte) bc#44 = (byte) bc#109 [phi:fa::@15/fa::@4->fa::@5#2] -- register_copy jmp b5 - //SEG264 fa::@5 + //SEG265 fa::@5 b5: - //SEG265 [85] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fa::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG266 [85] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fa::@6 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #5 bne b6_from_b5 jmp b16 - //SEG266 fa::@16 + //SEG267 fa::@16 b16: - //SEG267 [86] (byte) bc#110 ← ++ (byte) bc#44 -- vbuz1=_inc_vbuz1 + //SEG268 [86] (byte) bc#110 ← ++ (byte) bc#44 -- vbuz1=_inc_vbuz1 inc bc - //SEG268 [87] (byte~) bc#179 ← (byte) bc#110 -- vbuz1=vbuz2 + //SEG269 [87] (byte~) bc#179 ← (byte) bc#110 -- vbuz1=vbuz2 lda bc sta bc_179 - //SEG269 [88] call fb - //SEG270 [110] phi from fa::@16 to fb [phi:fa::@16->fb] + //SEG270 [88] call fb + //SEG271 [110] phi from fa::@16 to fb [phi:fa::@16->fb] fb_from_b16: - //SEG271 [110] phi (byte) be#118 = (byte) be#112 [phi:fa::@16->fb#0] -- register_copy - //SEG272 [110] phi (byte) bd#106 = (byte) bd#100 [phi:fa::@16->fb#1] -- register_copy - //SEG273 [110] phi (byte) bc#114 = (byte~) bc#179 [phi:fa::@16->fb#2] -- register_copy + //SEG272 [110] phi (byte) be#118 = (byte) be#112 [phi:fa::@16->fb#0] -- register_copy + //SEG273 [110] phi (byte) bd#106 = (byte) bd#100 [phi:fa::@16->fb#1] -- register_copy + //SEG274 [110] phi (byte) bc#114 = (byte~) bc#179 [phi:fa::@16->fb#2] -- register_copy jsr fb - //SEG274 [89] phi from fa::@16 fa::@5 to fa::@6 [phi:fa::@16/fa::@5->fa::@6] + //SEG275 [89] phi from fa::@16 fa::@5 to fa::@6 [phi:fa::@16/fa::@5->fa::@6] b6_from_b16: b6_from_b5: - //SEG275 [89] phi (byte) be#113 = (byte) be#35 [phi:fa::@16/fa::@5->fa::@6#0] -- register_copy - //SEG276 [89] phi (byte) bd#101 = (byte) bd#35 [phi:fa::@16/fa::@5->fa::@6#1] -- register_copy - //SEG277 [89] phi (byte) bc#45 = (byte) bc#110 [phi:fa::@16/fa::@5->fa::@6#2] -- register_copy + //SEG276 [89] phi (byte) be#113 = (byte) be#35 [phi:fa::@16/fa::@5->fa::@6#0] -- register_copy + //SEG277 [89] phi (byte) bd#101 = (byte) bd#35 [phi:fa::@16/fa::@5->fa::@6#1] -- register_copy + //SEG278 [89] phi (byte) bc#45 = (byte) bc#110 [phi:fa::@16/fa::@5->fa::@6#2] -- register_copy jmp b6 - //SEG278 fa::@6 + //SEG279 fa::@6 b6: - //SEG279 [90] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fa::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG280 [90] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fa::@7 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #6 bne b7_from_b6 jmp b17 - //SEG280 fa::@17 + //SEG281 fa::@17 b17: - //SEG281 [91] (byte) bc#111 ← ++ (byte) bc#45 -- vbuz1=_inc_vbuz1 + //SEG282 [91] (byte) bc#111 ← ++ (byte) bc#45 -- vbuz1=_inc_vbuz1 inc bc - //SEG282 [92] (byte~) bc#180 ← (byte) bc#111 -- vbuz1=vbuz2 + //SEG283 [92] (byte~) bc#180 ← (byte) bc#111 -- vbuz1=vbuz2 lda bc sta bc_180 - //SEG283 [93] call fb - //SEG284 [110] phi from fa::@17 to fb [phi:fa::@17->fb] + //SEG284 [93] call fb + //SEG285 [110] phi from fa::@17 to fb [phi:fa::@17->fb] fb_from_b17: - //SEG285 [110] phi (byte) be#118 = (byte) be#113 [phi:fa::@17->fb#0] -- register_copy - //SEG286 [110] phi (byte) bd#106 = (byte) bd#101 [phi:fa::@17->fb#1] -- register_copy - //SEG287 [110] phi (byte) bc#114 = (byte~) bc#180 [phi:fa::@17->fb#2] -- register_copy + //SEG286 [110] phi (byte) be#118 = (byte) be#113 [phi:fa::@17->fb#0] -- register_copy + //SEG287 [110] phi (byte) bd#106 = (byte) bd#101 [phi:fa::@17->fb#1] -- register_copy + //SEG288 [110] phi (byte) bc#114 = (byte~) bc#180 [phi:fa::@17->fb#2] -- register_copy jsr fb - //SEG288 [94] phi from fa::@17 fa::@6 to fa::@7 [phi:fa::@17/fa::@6->fa::@7] + //SEG289 [94] phi from fa::@17 fa::@6 to fa::@7 [phi:fa::@17/fa::@6->fa::@7] b7_from_b17: b7_from_b6: - //SEG289 [94] phi (byte) be#114 = (byte) be#35 [phi:fa::@17/fa::@6->fa::@7#0] -- register_copy - //SEG290 [94] phi (byte) bd#102 = (byte) bd#35 [phi:fa::@17/fa::@6->fa::@7#1] -- register_copy - //SEG291 [94] phi (byte) bc#46 = (byte) bc#111 [phi:fa::@17/fa::@6->fa::@7#2] -- register_copy + //SEG290 [94] phi (byte) be#114 = (byte) be#35 [phi:fa::@17/fa::@6->fa::@7#0] -- register_copy + //SEG291 [94] phi (byte) bd#102 = (byte) bd#35 [phi:fa::@17/fa::@6->fa::@7#1] -- register_copy + //SEG292 [94] phi (byte) bc#46 = (byte) bc#111 [phi:fa::@17/fa::@6->fa::@7#2] -- register_copy jmp b7 - //SEG292 fa::@7 + //SEG293 fa::@7 b7: - //SEG293 [95] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fa::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG294 [95] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fa::@8 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #7 bne b8_from_b7 jmp b18 - //SEG294 fa::@18 + //SEG295 fa::@18 b18: - //SEG295 [96] (byte) bc#112 ← ++ (byte) bc#46 -- vbuz1=_inc_vbuz1 + //SEG296 [96] (byte) bc#112 ← ++ (byte) bc#46 -- vbuz1=_inc_vbuz1 inc bc - //SEG296 [97] (byte~) bc#181 ← (byte) bc#112 -- vbuz1=vbuz2 + //SEG297 [97] (byte~) bc#181 ← (byte) bc#112 -- vbuz1=vbuz2 lda bc sta bc_181 - //SEG297 [98] call fb - //SEG298 [110] phi from fa::@18 to fb [phi:fa::@18->fb] + //SEG298 [98] call fb + //SEG299 [110] phi from fa::@18 to fb [phi:fa::@18->fb] fb_from_b18: - //SEG299 [110] phi (byte) be#118 = (byte) be#114 [phi:fa::@18->fb#0] -- register_copy - //SEG300 [110] phi (byte) bd#106 = (byte) bd#102 [phi:fa::@18->fb#1] -- register_copy - //SEG301 [110] phi (byte) bc#114 = (byte~) bc#181 [phi:fa::@18->fb#2] -- register_copy + //SEG300 [110] phi (byte) be#118 = (byte) be#114 [phi:fa::@18->fb#0] -- register_copy + //SEG301 [110] phi (byte) bd#106 = (byte) bd#102 [phi:fa::@18->fb#1] -- register_copy + //SEG302 [110] phi (byte) bc#114 = (byte~) bc#181 [phi:fa::@18->fb#2] -- register_copy jsr fb - //SEG302 [99] phi from fa::@18 fa::@7 to fa::@8 [phi:fa::@18/fa::@7->fa::@8] + //SEG303 [99] phi from fa::@18 fa::@7 to fa::@8 [phi:fa::@18/fa::@7->fa::@8] b8_from_b18: b8_from_b7: - //SEG303 [99] phi (byte) be#115 = (byte) be#35 [phi:fa::@18/fa::@7->fa::@8#0] -- register_copy - //SEG304 [99] phi (byte) bd#103 = (byte) bd#35 [phi:fa::@18/fa::@7->fa::@8#1] -- register_copy - //SEG305 [99] phi (byte) bc#47 = (byte) bc#112 [phi:fa::@18/fa::@7->fa::@8#2] -- register_copy + //SEG304 [99] phi (byte) be#115 = (byte) be#35 [phi:fa::@18/fa::@7->fa::@8#0] -- register_copy + //SEG305 [99] phi (byte) bd#103 = (byte) bd#35 [phi:fa::@18/fa::@7->fa::@8#1] -- register_copy + //SEG306 [99] phi (byte) bc#47 = (byte) bc#112 [phi:fa::@18/fa::@7->fa::@8#2] -- register_copy jmp b8 - //SEG306 fa::@8 + //SEG307 fa::@8 b8: - //SEG307 [100] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fa::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG308 [100] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fa::@9 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #8 bne b9_from_b8 jmp b19 - //SEG308 fa::@19 + //SEG309 fa::@19 b19: - //SEG309 [101] (byte) bc#123 ← ++ (byte) bc#47 -- vbuz1=_inc_vbuz1 + //SEG310 [101] (byte) bc#123 ← ++ (byte) bc#47 -- vbuz1=_inc_vbuz1 inc bc - //SEG310 [102] (byte~) bc#182 ← (byte) bc#123 -- vbuz1=vbuz2 + //SEG311 [102] (byte~) bc#182 ← (byte) bc#123 -- vbuz1=vbuz2 lda bc sta bc_182 - //SEG311 [103] call fb - //SEG312 [110] phi from fa::@19 to fb [phi:fa::@19->fb] + //SEG312 [103] call fb + //SEG313 [110] phi from fa::@19 to fb [phi:fa::@19->fb] fb_from_b19: - //SEG313 [110] phi (byte) be#118 = (byte) be#115 [phi:fa::@19->fb#0] -- register_copy - //SEG314 [110] phi (byte) bd#106 = (byte) bd#103 [phi:fa::@19->fb#1] -- register_copy - //SEG315 [110] phi (byte) bc#114 = (byte~) bc#182 [phi:fa::@19->fb#2] -- register_copy + //SEG314 [110] phi (byte) be#118 = (byte) be#115 [phi:fa::@19->fb#0] -- register_copy + //SEG315 [110] phi (byte) bd#106 = (byte) bd#103 [phi:fa::@19->fb#1] -- register_copy + //SEG316 [110] phi (byte) bc#114 = (byte~) bc#182 [phi:fa::@19->fb#2] -- register_copy jsr fb - //SEG316 [104] phi from fa::@19 fa::@8 to fa::@9 [phi:fa::@19/fa::@8->fa::@9] + //SEG317 [104] phi from fa::@19 fa::@8 to fa::@9 [phi:fa::@19/fa::@8->fa::@9] b9_from_b19: b9_from_b8: - //SEG317 [104] phi (byte) be#116 = (byte) be#35 [phi:fa::@19/fa::@8->fa::@9#0] -- register_copy - //SEG318 [104] phi (byte) bd#104 = (byte) bd#35 [phi:fa::@19/fa::@8->fa::@9#1] -- register_copy - //SEG319 [104] phi (byte) bc#113 = (byte) bc#123 [phi:fa::@19/fa::@8->fa::@9#2] -- register_copy + //SEG318 [104] phi (byte) be#116 = (byte) be#35 [phi:fa::@19/fa::@8->fa::@9#0] -- register_copy + //SEG319 [104] phi (byte) bd#104 = (byte) bd#35 [phi:fa::@19/fa::@8->fa::@9#1] -- register_copy + //SEG320 [104] phi (byte) bc#113 = (byte) bc#123 [phi:fa::@19/fa::@8->fa::@9#2] -- register_copy jmp b9 - //SEG320 fa::@9 + //SEG321 fa::@9 b9: - //SEG321 [105] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fa::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG322 [105] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fa::@return -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #9 bne breturn_from_b9 - //SEG322 [106] phi from fa::@9 to fa::@20 [phi:fa::@9->fa::@20] + //SEG323 [106] phi from fa::@9 to fa::@20 [phi:fa::@9->fa::@20] b20_from_b9: jmp b20 - //SEG323 fa::@20 + //SEG324 fa::@20 b20: - //SEG324 [107] call fb - //SEG325 [110] phi from fa::@20 to fb [phi:fa::@20->fb] + //SEG325 [107] call fb + //SEG326 [110] phi from fa::@20 to fb [phi:fa::@20->fb] fb_from_b20: - //SEG326 [110] phi (byte) be#118 = (byte) be#116 [phi:fa::@20->fb#0] -- register_copy - //SEG327 [110] phi (byte) bd#106 = (byte) bd#104 [phi:fa::@20->fb#1] -- register_copy - //SEG328 [110] phi (byte) bc#114 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fb#2] -- vbuz1=vbuc1 + //SEG327 [110] phi (byte) be#118 = (byte) be#116 [phi:fa::@20->fb#0] -- register_copy + //SEG328 [110] phi (byte) bd#106 = (byte) bd#104 [phi:fa::@20->fb#1] -- register_copy + //SEG329 [110] phi (byte) bc#114 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fb#2] -- vbuz1=vbuc1 lda #0 sta bc_114 jsr fb - //SEG329 [108] phi from fa::@20 to fa::@return [phi:fa::@20->fa::@return] + //SEG330 [108] phi from fa::@20 to fa::@return [phi:fa::@20->fa::@return] breturn_from_b20: - //SEG330 [108] phi (byte) be#24 = (byte) be#35 [phi:fa::@20->fa::@return#0] -- register_copy - //SEG331 [108] phi (byte) bd#24 = (byte) bd#35 [phi:fa::@20->fa::@return#1] -- register_copy - //SEG332 [108] phi (byte) bc#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fa::@return#2] -- vbuz1=vbuc1 + //SEG331 [108] phi (byte) be#24 = (byte) be#35 [phi:fa::@20->fa::@return#0] -- register_copy + //SEG332 [108] phi (byte) bd#24 = (byte) bd#35 [phi:fa::@20->fa::@return#1] -- register_copy + //SEG333 [108] phi (byte) bc#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fa::@return#2] -- vbuz1=vbuc1 lda #0 sta bc jmp breturn - //SEG333 [108] phi from fa::@9 to fa::@return [phi:fa::@9->fa::@return] + //SEG334 [108] phi from fa::@9 to fa::@return [phi:fa::@9->fa::@return] breturn_from_b9: - //SEG334 [108] phi (byte) be#24 = (byte) be#116 [phi:fa::@9->fa::@return#0] -- register_copy - //SEG335 [108] phi (byte) bd#24 = (byte) bd#104 [phi:fa::@9->fa::@return#1] -- register_copy - //SEG336 [108] phi (byte) bc#24 = (byte) bc#113 [phi:fa::@9->fa::@return#2] -- register_copy + //SEG335 [108] phi (byte) be#24 = (byte) be#116 [phi:fa::@9->fa::@return#0] -- register_copy + //SEG336 [108] phi (byte) bd#24 = (byte) bd#104 [phi:fa::@9->fa::@return#1] -- register_copy + //SEG337 [108] phi (byte) bc#24 = (byte) bc#113 [phi:fa::@9->fa::@return#2] -- register_copy jmp breturn - //SEG337 fa::@return + //SEG338 fa::@return breturn: - //SEG338 [109] return + //SEG339 [109] return rts } -//SEG339 fb +//SEG340 fb fb: { - //SEG340 [111] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fb::@1 -- vbuz1_neq_0_then_la1 + //SEG341 [111] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fb::@1 -- vbuz1_neq_0_then_la1 lda bc_114 cmp #0 bne b1_from_fb jmp b11 - //SEG341 fb::@11 + //SEG342 fb::@11 b11: - //SEG342 [112] (byte) bd#148 ← ++ (byte) bd#106 -- vbuz1=_inc_vbuz1 + //SEG343 [112] (byte) bd#148 ← ++ (byte) bd#106 -- vbuz1=_inc_vbuz1 inc bd - //SEG343 [113] (byte~) bd#238 ← (byte) bd#148 -- vbuz1=vbuz2 + //SEG344 [113] (byte~) bd#238 ← (byte) bd#148 -- vbuz1=vbuz2 lda bd sta bd_238 - //SEG344 [114] call fc - //SEG345 [161] phi from fb::@11 to fc [phi:fb::@11->fc] + //SEG345 [114] call fc + //SEG346 [161] phi from fb::@11 to fc [phi:fb::@11->fc] fc_from_b11: - //SEG346 [161] phi (byte) be#129 = (byte) be#118 [phi:fb::@11->fc#0] -- register_copy - //SEG347 [161] phi (byte) bd#117 = (byte~) bd#238 [phi:fb::@11->fc#1] -- register_copy + //SEG347 [161] phi (byte) be#129 = (byte) be#118 [phi:fb::@11->fc#0] -- register_copy + //SEG348 [161] phi (byte) bd#117 = (byte~) bd#238 [phi:fb::@11->fc#1] -- register_copy jsr fc - //SEG348 [115] phi from fb fb::@11 to fb::@1 [phi:fb/fb::@11->fb::@1] + //SEG349 [115] phi from fb fb::@11 to fb::@1 [phi:fb/fb::@11->fb::@1] b1_from_fb: b1_from_b11: - //SEG349 [115] phi (byte) be#119 = (byte) be#118 [phi:fb/fb::@11->fb::@1#0] -- register_copy - //SEG350 [115] phi (byte) bd#107 = (byte) bd#106 [phi:fb/fb::@11->fb::@1#1] -- register_copy + //SEG350 [115] phi (byte) be#119 = (byte) be#118 [phi:fb/fb::@11->fb::@1#0] -- register_copy + //SEG351 [115] phi (byte) bd#107 = (byte) bd#106 [phi:fb/fb::@11->fb::@1#1] -- register_copy jmp b1 - //SEG351 fb::@1 + //SEG352 fb::@1 b1: - //SEG352 [116] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fb::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG353 [116] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fb::@2 -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #1 bne b2_from_b1 jmp b12 - //SEG353 fb::@12 + //SEG354 fb::@12 b12: - //SEG354 [117] (byte) bd#149 ← ++ (byte) bd#107 -- vbuz1=_inc_vbuz1 + //SEG355 [117] (byte) bd#149 ← ++ (byte) bd#107 -- vbuz1=_inc_vbuz1 inc bd - //SEG355 [118] (byte~) bd#239 ← (byte) bd#149 -- vbuz1=vbuz2 + //SEG356 [118] (byte~) bd#239 ← (byte) bd#149 -- vbuz1=vbuz2 lda bd sta bd_239 - //SEG356 [119] call fc - //SEG357 [161] phi from fb::@12 to fc [phi:fb::@12->fc] + //SEG357 [119] call fc + //SEG358 [161] phi from fb::@12 to fc [phi:fb::@12->fc] fc_from_b12: - //SEG358 [161] phi (byte) be#129 = (byte) be#119 [phi:fb::@12->fc#0] -- register_copy - //SEG359 [161] phi (byte) bd#117 = (byte~) bd#239 [phi:fb::@12->fc#1] -- register_copy + //SEG359 [161] phi (byte) be#129 = (byte) be#119 [phi:fb::@12->fc#0] -- register_copy + //SEG360 [161] phi (byte) bd#117 = (byte~) bd#239 [phi:fb::@12->fc#1] -- register_copy jsr fc - //SEG360 [120] phi from fb::@1 fb::@12 to fb::@2 [phi:fb::@1/fb::@12->fb::@2] + //SEG361 [120] phi from fb::@1 fb::@12 to fb::@2 [phi:fb::@1/fb::@12->fb::@2] b2_from_b1: b2_from_b12: - //SEG361 [120] phi (byte) be#120 = (byte) be#119 [phi:fb::@1/fb::@12->fb::@2#0] -- register_copy - //SEG362 [120] phi (byte) bd#108 = (byte) bd#107 [phi:fb::@1/fb::@12->fb::@2#1] -- register_copy + //SEG362 [120] phi (byte) be#120 = (byte) be#119 [phi:fb::@1/fb::@12->fb::@2#0] -- register_copy + //SEG363 [120] phi (byte) bd#108 = (byte) bd#107 [phi:fb::@1/fb::@12->fb::@2#1] -- register_copy jmp b2 - //SEG363 fb::@2 + //SEG364 fb::@2 b2: - //SEG364 [121] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fb::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG365 [121] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fb::@3 -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #2 bne b3_from_b2 jmp b13 - //SEG365 fb::@13 + //SEG366 fb::@13 b13: - //SEG366 [122] (byte) bd#150 ← ++ (byte) bd#108 -- vbuz1=_inc_vbuz1 + //SEG367 [122] (byte) bd#150 ← ++ (byte) bd#108 -- vbuz1=_inc_vbuz1 inc bd - //SEG367 [123] (byte~) bd#240 ← (byte) bd#150 -- vbuz1=vbuz2 + //SEG368 [123] (byte~) bd#240 ← (byte) bd#150 -- vbuz1=vbuz2 lda bd sta bd_240 - //SEG368 [124] call fc - //SEG369 [161] phi from fb::@13 to fc [phi:fb::@13->fc] + //SEG369 [124] call fc + //SEG370 [161] phi from fb::@13 to fc [phi:fb::@13->fc] fc_from_b13: - //SEG370 [161] phi (byte) be#129 = (byte) be#120 [phi:fb::@13->fc#0] -- register_copy - //SEG371 [161] phi (byte) bd#117 = (byte~) bd#240 [phi:fb::@13->fc#1] -- register_copy + //SEG371 [161] phi (byte) be#129 = (byte) be#120 [phi:fb::@13->fc#0] -- register_copy + //SEG372 [161] phi (byte) bd#117 = (byte~) bd#240 [phi:fb::@13->fc#1] -- register_copy jsr fc - //SEG372 [125] phi from fb::@13 fb::@2 to fb::@3 [phi:fb::@13/fb::@2->fb::@3] + //SEG373 [125] phi from fb::@13 fb::@2 to fb::@3 [phi:fb::@13/fb::@2->fb::@3] b3_from_b13: b3_from_b2: - //SEG373 [125] phi (byte) be#121 = (byte) be#46 [phi:fb::@13/fb::@2->fb::@3#0] -- register_copy - //SEG374 [125] phi (byte) bd#109 = (byte) bd#150 [phi:fb::@13/fb::@2->fb::@3#1] -- register_copy + //SEG374 [125] phi (byte) be#121 = (byte) be#46 [phi:fb::@13/fb::@2->fb::@3#0] -- register_copy + //SEG375 [125] phi (byte) bd#109 = (byte) bd#150 [phi:fb::@13/fb::@2->fb::@3#1] -- register_copy jmp b3 - //SEG375 fb::@3 + //SEG376 fb::@3 b3: - //SEG376 [126] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fb::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG377 [126] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fb::@4 -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #3 bne b4_from_b3 jmp b14 - //SEG377 fb::@14 + //SEG378 fb::@14 b14: - //SEG378 [127] (byte) bd#151 ← ++ (byte) bd#109 -- vbuz1=_inc_vbuz1 + //SEG379 [127] (byte) bd#151 ← ++ (byte) bd#109 -- vbuz1=_inc_vbuz1 inc bd - //SEG379 [128] (byte~) bd#241 ← (byte) bd#151 -- vbuz1=vbuz2 + //SEG380 [128] (byte~) bd#241 ← (byte) bd#151 -- vbuz1=vbuz2 lda bd sta bd_241 - //SEG380 [129] call fc - //SEG381 [161] phi from fb::@14 to fc [phi:fb::@14->fc] + //SEG381 [129] call fc + //SEG382 [161] phi from fb::@14 to fc [phi:fb::@14->fc] fc_from_b14: - //SEG382 [161] phi (byte) be#129 = (byte) be#121 [phi:fb::@14->fc#0] -- register_copy - //SEG383 [161] phi (byte) bd#117 = (byte~) bd#241 [phi:fb::@14->fc#1] -- register_copy + //SEG383 [161] phi (byte) be#129 = (byte) be#121 [phi:fb::@14->fc#0] -- register_copy + //SEG384 [161] phi (byte) bd#117 = (byte~) bd#241 [phi:fb::@14->fc#1] -- register_copy jsr fc - //SEG384 [130] phi from fb::@14 fb::@3 to fb::@4 [phi:fb::@14/fb::@3->fb::@4] + //SEG385 [130] phi from fb::@14 fb::@3 to fb::@4 [phi:fb::@14/fb::@3->fb::@4] b4_from_b14: b4_from_b3: - //SEG385 [130] phi (byte) be#122 = (byte) be#46 [phi:fb::@14/fb::@3->fb::@4#0] -- register_copy - //SEG386 [130] phi (byte) bd#110 = (byte) bd#151 [phi:fb::@14/fb::@3->fb::@4#1] -- register_copy + //SEG386 [130] phi (byte) be#122 = (byte) be#46 [phi:fb::@14/fb::@3->fb::@4#0] -- register_copy + //SEG387 [130] phi (byte) bd#110 = (byte) bd#151 [phi:fb::@14/fb::@3->fb::@4#1] -- register_copy jmp b4 - //SEG387 fb::@4 + //SEG388 fb::@4 b4: - //SEG388 [131] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fb::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG389 [131] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fb::@5 -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #4 bne b5_from_b4 jmp b15 - //SEG389 fb::@15 + //SEG390 fb::@15 b15: - //SEG390 [132] (byte) bd#152 ← ++ (byte) bd#110 -- vbuz1=_inc_vbuz1 + //SEG391 [132] (byte) bd#152 ← ++ (byte) bd#110 -- vbuz1=_inc_vbuz1 inc bd - //SEG391 [133] (byte~) bd#242 ← (byte) bd#152 -- vbuz1=vbuz2 + //SEG392 [133] (byte~) bd#242 ← (byte) bd#152 -- vbuz1=vbuz2 lda bd sta bd_242 - //SEG392 [134] call fc - //SEG393 [161] phi from fb::@15 to fc [phi:fb::@15->fc] + //SEG393 [134] call fc + //SEG394 [161] phi from fb::@15 to fc [phi:fb::@15->fc] fc_from_b15: - //SEG394 [161] phi (byte) be#129 = (byte) be#122 [phi:fb::@15->fc#0] -- register_copy - //SEG395 [161] phi (byte) bd#117 = (byte~) bd#242 [phi:fb::@15->fc#1] -- register_copy + //SEG395 [161] phi (byte) be#129 = (byte) be#122 [phi:fb::@15->fc#0] -- register_copy + //SEG396 [161] phi (byte) bd#117 = (byte~) bd#242 [phi:fb::@15->fc#1] -- register_copy jsr fc - //SEG396 [135] phi from fb::@15 fb::@4 to fb::@5 [phi:fb::@15/fb::@4->fb::@5] + //SEG397 [135] phi from fb::@15 fb::@4 to fb::@5 [phi:fb::@15/fb::@4->fb::@5] b5_from_b15: b5_from_b4: - //SEG397 [135] phi (byte) be#123 = (byte) be#46 [phi:fb::@15/fb::@4->fb::@5#0] -- register_copy - //SEG398 [135] phi (byte) bd#111 = (byte) bd#152 [phi:fb::@15/fb::@4->fb::@5#1] -- register_copy + //SEG398 [135] phi (byte) be#123 = (byte) be#46 [phi:fb::@15/fb::@4->fb::@5#0] -- register_copy + //SEG399 [135] phi (byte) bd#111 = (byte) bd#152 [phi:fb::@15/fb::@4->fb::@5#1] -- register_copy jmp b5 - //SEG399 fb::@5 + //SEG400 fb::@5 b5: - //SEG400 [136] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fb::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG401 [136] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fb::@6 -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #5 bne b6_from_b5 jmp b16 - //SEG401 fb::@16 + //SEG402 fb::@16 b16: - //SEG402 [137] (byte) bd#153 ← ++ (byte) bd#111 -- vbuz1=_inc_vbuz1 + //SEG403 [137] (byte) bd#153 ← ++ (byte) bd#111 -- vbuz1=_inc_vbuz1 inc bd - //SEG403 [138] (byte~) bd#243 ← (byte) bd#153 -- vbuz1=vbuz2 + //SEG404 [138] (byte~) bd#243 ← (byte) bd#153 -- vbuz1=vbuz2 lda bd sta bd_243 - //SEG404 [139] call fc - //SEG405 [161] phi from fb::@16 to fc [phi:fb::@16->fc] + //SEG405 [139] call fc + //SEG406 [161] phi from fb::@16 to fc [phi:fb::@16->fc] fc_from_b16: - //SEG406 [161] phi (byte) be#129 = (byte) be#123 [phi:fb::@16->fc#0] -- register_copy - //SEG407 [161] phi (byte) bd#117 = (byte~) bd#243 [phi:fb::@16->fc#1] -- register_copy + //SEG407 [161] phi (byte) be#129 = (byte) be#123 [phi:fb::@16->fc#0] -- register_copy + //SEG408 [161] phi (byte) bd#117 = (byte~) bd#243 [phi:fb::@16->fc#1] -- register_copy jsr fc - //SEG408 [140] phi from fb::@16 fb::@5 to fb::@6 [phi:fb::@16/fb::@5->fb::@6] + //SEG409 [140] phi from fb::@16 fb::@5 to fb::@6 [phi:fb::@16/fb::@5->fb::@6] b6_from_b16: b6_from_b5: - //SEG409 [140] phi (byte) be#124 = (byte) be#46 [phi:fb::@16/fb::@5->fb::@6#0] -- register_copy - //SEG410 [140] phi (byte) bd#112 = (byte) bd#153 [phi:fb::@16/fb::@5->fb::@6#1] -- register_copy + //SEG410 [140] phi (byte) be#124 = (byte) be#46 [phi:fb::@16/fb::@5->fb::@6#0] -- register_copy + //SEG411 [140] phi (byte) bd#112 = (byte) bd#153 [phi:fb::@16/fb::@5->fb::@6#1] -- register_copy jmp b6 - //SEG411 fb::@6 + //SEG412 fb::@6 b6: - //SEG412 [141] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fb::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG413 [141] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fb::@7 -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #6 bne b7_from_b6 jmp b17 - //SEG413 fb::@17 + //SEG414 fb::@17 b17: - //SEG414 [142] (byte) bd#154 ← ++ (byte) bd#112 -- vbuz1=_inc_vbuz1 + //SEG415 [142] (byte) bd#154 ← ++ (byte) bd#112 -- vbuz1=_inc_vbuz1 inc bd - //SEG415 [143] (byte~) bd#244 ← (byte) bd#154 -- vbuz1=vbuz2 + //SEG416 [143] (byte~) bd#244 ← (byte) bd#154 -- vbuz1=vbuz2 lda bd sta bd_244 - //SEG416 [144] call fc - //SEG417 [161] phi from fb::@17 to fc [phi:fb::@17->fc] + //SEG417 [144] call fc + //SEG418 [161] phi from fb::@17 to fc [phi:fb::@17->fc] fc_from_b17: - //SEG418 [161] phi (byte) be#129 = (byte) be#124 [phi:fb::@17->fc#0] -- register_copy - //SEG419 [161] phi (byte) bd#117 = (byte~) bd#244 [phi:fb::@17->fc#1] -- register_copy + //SEG419 [161] phi (byte) be#129 = (byte) be#124 [phi:fb::@17->fc#0] -- register_copy + //SEG420 [161] phi (byte) bd#117 = (byte~) bd#244 [phi:fb::@17->fc#1] -- register_copy jsr fc - //SEG420 [145] phi from fb::@17 fb::@6 to fb::@7 [phi:fb::@17/fb::@6->fb::@7] + //SEG421 [145] phi from fb::@17 fb::@6 to fb::@7 [phi:fb::@17/fb::@6->fb::@7] b7_from_b17: b7_from_b6: - //SEG421 [145] phi (byte) be#125 = (byte) be#46 [phi:fb::@17/fb::@6->fb::@7#0] -- register_copy - //SEG422 [145] phi (byte) bd#113 = (byte) bd#154 [phi:fb::@17/fb::@6->fb::@7#1] -- register_copy + //SEG422 [145] phi (byte) be#125 = (byte) be#46 [phi:fb::@17/fb::@6->fb::@7#0] -- register_copy + //SEG423 [145] phi (byte) bd#113 = (byte) bd#154 [phi:fb::@17/fb::@6->fb::@7#1] -- register_copy jmp b7 - //SEG423 fb::@7 + //SEG424 fb::@7 b7: - //SEG424 [146] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fb::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG425 [146] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fb::@8 -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #7 bne b8_from_b7 jmp b18 - //SEG425 fb::@18 + //SEG426 fb::@18 b18: - //SEG426 [147] (byte) bd#155 ← ++ (byte) bd#113 -- vbuz1=_inc_vbuz1 + //SEG427 [147] (byte) bd#155 ← ++ (byte) bd#113 -- vbuz1=_inc_vbuz1 inc bd - //SEG427 [148] (byte~) bd#245 ← (byte) bd#155 -- vbuz1=vbuz2 + //SEG428 [148] (byte~) bd#245 ← (byte) bd#155 -- vbuz1=vbuz2 lda bd sta bd_245 - //SEG428 [149] call fc - //SEG429 [161] phi from fb::@18 to fc [phi:fb::@18->fc] + //SEG429 [149] call fc + //SEG430 [161] phi from fb::@18 to fc [phi:fb::@18->fc] fc_from_b18: - //SEG430 [161] phi (byte) be#129 = (byte) be#125 [phi:fb::@18->fc#0] -- register_copy - //SEG431 [161] phi (byte) bd#117 = (byte~) bd#245 [phi:fb::@18->fc#1] -- register_copy + //SEG431 [161] phi (byte) be#129 = (byte) be#125 [phi:fb::@18->fc#0] -- register_copy + //SEG432 [161] phi (byte) bd#117 = (byte~) bd#245 [phi:fb::@18->fc#1] -- register_copy jsr fc - //SEG432 [150] phi from fb::@18 fb::@7 to fb::@8 [phi:fb::@18/fb::@7->fb::@8] + //SEG433 [150] phi from fb::@18 fb::@7 to fb::@8 [phi:fb::@18/fb::@7->fb::@8] b8_from_b18: b8_from_b7: - //SEG433 [150] phi (byte) be#126 = (byte) be#46 [phi:fb::@18/fb::@7->fb::@8#0] -- register_copy - //SEG434 [150] phi (byte) bd#114 = (byte) bd#155 [phi:fb::@18/fb::@7->fb::@8#1] -- register_copy + //SEG434 [150] phi (byte) be#126 = (byte) be#46 [phi:fb::@18/fb::@7->fb::@8#0] -- register_copy + //SEG435 [150] phi (byte) bd#114 = (byte) bd#155 [phi:fb::@18/fb::@7->fb::@8#1] -- register_copy jmp b8 - //SEG435 fb::@8 + //SEG436 fb::@8 b8: - //SEG436 [151] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fb::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG437 [151] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fb::@9 -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #8 bne b9_from_b8 jmp b19 - //SEG437 fb::@19 + //SEG438 fb::@19 b19: - //SEG438 [152] (byte) bd#157 ← ++ (byte) bd#114 -- vbuz1=_inc_vbuz1 + //SEG439 [152] (byte) bd#157 ← ++ (byte) bd#114 -- vbuz1=_inc_vbuz1 inc bd - //SEG439 [153] (byte~) bd#246 ← (byte) bd#157 -- vbuz1=vbuz2 + //SEG440 [153] (byte~) bd#246 ← (byte) bd#157 -- vbuz1=vbuz2 lda bd sta bd_246 - //SEG440 [154] call fc - //SEG441 [161] phi from fb::@19 to fc [phi:fb::@19->fc] + //SEG441 [154] call fc + //SEG442 [161] phi from fb::@19 to fc [phi:fb::@19->fc] fc_from_b19: - //SEG442 [161] phi (byte) be#129 = (byte) be#126 [phi:fb::@19->fc#0] -- register_copy - //SEG443 [161] phi (byte) bd#117 = (byte~) bd#246 [phi:fb::@19->fc#1] -- register_copy + //SEG443 [161] phi (byte) be#129 = (byte) be#126 [phi:fb::@19->fc#0] -- register_copy + //SEG444 [161] phi (byte) bd#117 = (byte~) bd#246 [phi:fb::@19->fc#1] -- register_copy jsr fc - //SEG444 [155] phi from fb::@19 fb::@8 to fb::@9 [phi:fb::@19/fb::@8->fb::@9] + //SEG445 [155] phi from fb::@19 fb::@8 to fb::@9 [phi:fb::@19/fb::@8->fb::@9] b9_from_b19: b9_from_b8: - //SEG445 [155] phi (byte) be#127 = (byte) be#46 [phi:fb::@19/fb::@8->fb::@9#0] -- register_copy - //SEG446 [155] phi (byte) bd#115 = (byte) bd#157 [phi:fb::@19/fb::@8->fb::@9#1] -- register_copy + //SEG446 [155] phi (byte) be#127 = (byte) be#46 [phi:fb::@19/fb::@8->fb::@9#0] -- register_copy + //SEG447 [155] phi (byte) bd#115 = (byte) bd#157 [phi:fb::@19/fb::@8->fb::@9#1] -- register_copy jmp b9 - //SEG447 fb::@9 + //SEG448 fb::@9 b9: - //SEG448 [156] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fb::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG449 [156] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fb::@return -- vbuz1_neq_vbuc1_then_la1 lda bc_114 cmp #9 bne breturn_from_b9 - //SEG449 [157] phi from fb::@9 to fb::@20 [phi:fb::@9->fb::@20] + //SEG450 [157] phi from fb::@9 to fb::@20 [phi:fb::@9->fb::@20] b20_from_b9: jmp b20 - //SEG450 fb::@20 + //SEG451 fb::@20 b20: - //SEG451 [158] call fc - //SEG452 [161] phi from fb::@20 to fc [phi:fb::@20->fc] + //SEG452 [158] call fc + //SEG453 [161] phi from fb::@20 to fc [phi:fb::@20->fc] fc_from_b20: - //SEG453 [161] phi (byte) be#129 = (byte) be#127 [phi:fb::@20->fc#0] -- register_copy - //SEG454 [161] phi (byte) bd#117 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fc#1] -- vbuz1=vbuc1 + //SEG454 [161] phi (byte) be#129 = (byte) be#127 [phi:fb::@20->fc#0] -- register_copy + //SEG455 [161] phi (byte) bd#117 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fc#1] -- vbuz1=vbuc1 lda #0 sta bd_117 jsr fc - //SEG455 [159] phi from fb::@20 to fb::@return [phi:fb::@20->fb::@return] + //SEG456 [159] phi from fb::@20 to fb::@return [phi:fb::@20->fb::@return] breturn_from_b20: - //SEG456 [159] phi (byte) be#35 = (byte) be#46 [phi:fb::@20->fb::@return#0] -- register_copy - //SEG457 [159] phi (byte) bd#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fb::@return#1] -- vbuz1=vbuc1 + //SEG457 [159] phi (byte) be#35 = (byte) be#46 [phi:fb::@20->fb::@return#0] -- register_copy + //SEG458 [159] phi (byte) bd#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fb::@return#1] -- vbuz1=vbuc1 lda #0 sta bd jmp breturn - //SEG458 [159] phi from fb::@9 to fb::@return [phi:fb::@9->fb::@return] + //SEG459 [159] phi from fb::@9 to fb::@return [phi:fb::@9->fb::@return] breturn_from_b9: - //SEG459 [159] phi (byte) be#35 = (byte) be#127 [phi:fb::@9->fb::@return#0] -- register_copy - //SEG460 [159] phi (byte) bd#35 = (byte) bd#115 [phi:fb::@9->fb::@return#1] -- register_copy + //SEG460 [159] phi (byte) be#35 = (byte) be#127 [phi:fb::@9->fb::@return#0] -- register_copy + //SEG461 [159] phi (byte) bd#35 = (byte) bd#115 [phi:fb::@9->fb::@return#1] -- register_copy jmp breturn - //SEG461 fb::@return + //SEG462 fb::@return breturn: - //SEG462 [160] return + //SEG463 [160] return rts } -//SEG463 fc +//SEG464 fc fc: { - //SEG464 [162] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fc::@1 -- vbuz1_neq_0_then_la1 + //SEG465 [162] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fc::@1 -- vbuz1_neq_0_then_la1 lda bd_117 cmp #0 bne b1_from_fc jmp b11 - //SEG465 fc::@11 + //SEG466 fc::@11 b11: - //SEG466 [163] (byte) be#36 ← ++ (byte) be#129 -- vbuz1=_inc_vbuz1 + //SEG467 [163] (byte) be#36 ← ++ (byte) be#129 -- vbuz1=_inc_vbuz1 inc be - //SEG467 [164] phi from fc fc::@11 to fc::@1 [phi:fc/fc::@11->fc::@1] + //SEG468 [164] phi from fc fc::@11 to fc::@1 [phi:fc/fc::@11->fc::@1] b1_from_fc: b1_from_b11: - //SEG468 [164] phi (byte) be#130 = (byte) be#129 [phi:fc/fc::@11->fc::@1#0] -- register_copy + //SEG469 [164] phi (byte) be#130 = (byte) be#129 [phi:fc/fc::@11->fc::@1#0] -- register_copy jmp b1 - //SEG469 fc::@1 + //SEG470 fc::@1 b1: - //SEG470 [165] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fc::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG471 [165] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fc::@2 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #1 bne b2_from_b1 jmp b12 - //SEG471 fc::@12 + //SEG472 fc::@12 b12: - //SEG472 [166] (byte) be#37 ← ++ (byte) be#130 -- vbuz1=_inc_vbuz1 + //SEG473 [166] (byte) be#37 ← ++ (byte) be#130 -- vbuz1=_inc_vbuz1 inc be - //SEG473 [167] phi from fc::@1 fc::@12 to fc::@2 [phi:fc::@1/fc::@12->fc::@2] + //SEG474 [167] phi from fc::@1 fc::@12 to fc::@2 [phi:fc::@1/fc::@12->fc::@2] b2_from_b1: b2_from_b12: - //SEG474 [167] phi (byte) be#131 = (byte) be#130 [phi:fc::@1/fc::@12->fc::@2#0] -- register_copy + //SEG475 [167] phi (byte) be#131 = (byte) be#130 [phi:fc::@1/fc::@12->fc::@2#0] -- register_copy jmp b2 - //SEG475 fc::@2 + //SEG476 fc::@2 b2: - //SEG476 [168] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fc::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG477 [168] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fc::@3 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #2 bne b3_from_b2 jmp b13 - //SEG477 fc::@13 + //SEG478 fc::@13 b13: - //SEG478 [169] (byte) be#38 ← ++ (byte) be#131 -- vbuz1=_inc_vbuz1 + //SEG479 [169] (byte) be#38 ← ++ (byte) be#131 -- vbuz1=_inc_vbuz1 inc be - //SEG479 [170] phi from fc::@13 fc::@2 to fc::@3 [phi:fc::@13/fc::@2->fc::@3] + //SEG480 [170] phi from fc::@13 fc::@2 to fc::@3 [phi:fc::@13/fc::@2->fc::@3] b3_from_b13: b3_from_b2: - //SEG480 [170] phi (byte) be#132 = (byte) be#38 [phi:fc::@13/fc::@2->fc::@3#0] -- register_copy + //SEG481 [170] phi (byte) be#132 = (byte) be#38 [phi:fc::@13/fc::@2->fc::@3#0] -- register_copy jmp b3 - //SEG481 fc::@3 + //SEG482 fc::@3 b3: - //SEG482 [171] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fc::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG483 [171] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fc::@4 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #3 bne b4_from_b3 jmp b14 - //SEG483 fc::@14 + //SEG484 fc::@14 b14: - //SEG484 [172] (byte) be#39 ← ++ (byte) be#132 -- vbuz1=_inc_vbuz1 + //SEG485 [172] (byte) be#39 ← ++ (byte) be#132 -- vbuz1=_inc_vbuz1 inc be - //SEG485 [173] phi from fc::@14 fc::@3 to fc::@4 [phi:fc::@14/fc::@3->fc::@4] + //SEG486 [173] phi from fc::@14 fc::@3 to fc::@4 [phi:fc::@14/fc::@3->fc::@4] b4_from_b14: b4_from_b3: - //SEG486 [173] phi (byte) be#133 = (byte) be#39 [phi:fc::@14/fc::@3->fc::@4#0] -- register_copy + //SEG487 [173] phi (byte) be#133 = (byte) be#39 [phi:fc::@14/fc::@3->fc::@4#0] -- register_copy jmp b4 - //SEG487 fc::@4 + //SEG488 fc::@4 b4: - //SEG488 [174] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fc::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG489 [174] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fc::@5 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #4 bne b5_from_b4 jmp b15 - //SEG489 fc::@15 + //SEG490 fc::@15 b15: - //SEG490 [175] (byte) be#40 ← ++ (byte) be#133 -- vbuz1=_inc_vbuz1 + //SEG491 [175] (byte) be#40 ← ++ (byte) be#133 -- vbuz1=_inc_vbuz1 inc be - //SEG491 [176] phi from fc::@15 fc::@4 to fc::@5 [phi:fc::@15/fc::@4->fc::@5] + //SEG492 [176] phi from fc::@15 fc::@4 to fc::@5 [phi:fc::@15/fc::@4->fc::@5] b5_from_b15: b5_from_b4: - //SEG492 [176] phi (byte) be#134 = (byte) be#40 [phi:fc::@15/fc::@4->fc::@5#0] -- register_copy + //SEG493 [176] phi (byte) be#134 = (byte) be#40 [phi:fc::@15/fc::@4->fc::@5#0] -- register_copy jmp b5 - //SEG493 fc::@5 + //SEG494 fc::@5 b5: - //SEG494 [177] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fc::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG495 [177] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fc::@6 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #5 bne b6_from_b5 jmp b16 - //SEG495 fc::@16 + //SEG496 fc::@16 b16: - //SEG496 [178] (byte) be#41 ← ++ (byte) be#134 -- vbuz1=_inc_vbuz1 + //SEG497 [178] (byte) be#41 ← ++ (byte) be#134 -- vbuz1=_inc_vbuz1 inc be - //SEG497 [179] phi from fc::@16 fc::@5 to fc::@6 [phi:fc::@16/fc::@5->fc::@6] + //SEG498 [179] phi from fc::@16 fc::@5 to fc::@6 [phi:fc::@16/fc::@5->fc::@6] b6_from_b16: b6_from_b5: - //SEG498 [179] phi (byte) be#135 = (byte) be#41 [phi:fc::@16/fc::@5->fc::@6#0] -- register_copy + //SEG499 [179] phi (byte) be#135 = (byte) be#41 [phi:fc::@16/fc::@5->fc::@6#0] -- register_copy jmp b6 - //SEG499 fc::@6 + //SEG500 fc::@6 b6: - //SEG500 [180] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fc::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG501 [180] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fc::@7 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #6 bne b7_from_b6 jmp b17 - //SEG501 fc::@17 + //SEG502 fc::@17 b17: - //SEG502 [181] (byte) be#42 ← ++ (byte) be#135 -- vbuz1=_inc_vbuz1 + //SEG503 [181] (byte) be#42 ← ++ (byte) be#135 -- vbuz1=_inc_vbuz1 inc be - //SEG503 [182] phi from fc::@17 fc::@6 to fc::@7 [phi:fc::@17/fc::@6->fc::@7] + //SEG504 [182] phi from fc::@17 fc::@6 to fc::@7 [phi:fc::@17/fc::@6->fc::@7] b7_from_b17: b7_from_b6: - //SEG504 [182] phi (byte) be#136 = (byte) be#42 [phi:fc::@17/fc::@6->fc::@7#0] -- register_copy + //SEG505 [182] phi (byte) be#136 = (byte) be#42 [phi:fc::@17/fc::@6->fc::@7#0] -- register_copy jmp b7 - //SEG505 fc::@7 + //SEG506 fc::@7 b7: - //SEG506 [183] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fc::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG507 [183] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fc::@8 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #7 bne b8_from_b7 jmp b18 - //SEG507 fc::@18 + //SEG508 fc::@18 b18: - //SEG508 [184] (byte) be#43 ← ++ (byte) be#136 -- vbuz1=_inc_vbuz1 + //SEG509 [184] (byte) be#43 ← ++ (byte) be#136 -- vbuz1=_inc_vbuz1 inc be - //SEG509 [185] phi from fc::@18 fc::@7 to fc::@8 [phi:fc::@18/fc::@7->fc::@8] + //SEG510 [185] phi from fc::@18 fc::@7 to fc::@8 [phi:fc::@18/fc::@7->fc::@8] b8_from_b18: b8_from_b7: - //SEG510 [185] phi (byte) be#137 = (byte) be#43 [phi:fc::@18/fc::@7->fc::@8#0] -- register_copy + //SEG511 [185] phi (byte) be#137 = (byte) be#43 [phi:fc::@18/fc::@7->fc::@8#0] -- register_copy jmp b8 - //SEG511 fc::@8 + //SEG512 fc::@8 b8: - //SEG512 [186] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fc::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG513 [186] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fc::@9 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #8 bne b9_from_b8 jmp b19 - //SEG513 fc::@19 + //SEG514 fc::@19 b19: - //SEG514 [187] (byte) be#44 ← ++ (byte) be#137 -- vbuz1=_inc_vbuz1 + //SEG515 [187] (byte) be#44 ← ++ (byte) be#137 -- vbuz1=_inc_vbuz1 inc be - //SEG515 [188] phi from fc::@19 fc::@8 to fc::@9 [phi:fc::@19/fc::@8->fc::@9] + //SEG516 [188] phi from fc::@19 fc::@8 to fc::@9 [phi:fc::@19/fc::@8->fc::@9] b9_from_b19: b9_from_b8: - //SEG516 [188] phi (byte) be#138 = (byte) be#44 [phi:fc::@19/fc::@8->fc::@9#0] -- register_copy + //SEG517 [188] phi (byte) be#138 = (byte) be#44 [phi:fc::@19/fc::@8->fc::@9#0] -- register_copy jmp b9 - //SEG517 fc::@9 + //SEG518 fc::@9 b9: - //SEG518 [189] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fc::@30 -- vbuz1_neq_vbuc1_then_la1 + //SEG519 [189] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fc::@30 -- vbuz1_neq_vbuc1_then_la1 lda bd_117 cmp #9 bne b30_from_b9 - //SEG519 [190] phi from fc::@9 to fc::@return [phi:fc::@9->fc::@return] + //SEG520 [190] phi from fc::@9 to fc::@return [phi:fc::@9->fc::@return] breturn_from_b9: - //SEG520 [190] phi (byte) be#46 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fc::@9->fc::@return#0] -- vbuz1=vbuc1 + //SEG521 [190] phi (byte) be#46 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fc::@9->fc::@return#0] -- vbuz1=vbuc1 lda #0 sta be jmp breturn - //SEG521 fc::@return + //SEG522 fc::@return breturn: - //SEG522 [191] return + //SEG523 [191] return rts - //SEG523 [192] phi from fc::@9 to fc::@30 [phi:fc::@9->fc::@30] + //SEG524 [192] phi from fc::@9 to fc::@30 [phi:fc::@9->fc::@30] b30_from_b9: jmp b30 - //SEG524 fc::@30 + //SEG525 fc::@30 b30: - //SEG525 [190] phi from fc::@30 to fc::@return [phi:fc::@30->fc::@return] + //SEG526 [190] phi from fc::@30 to fc::@return [phi:fc::@30->fc::@return] breturn_from_b30: - //SEG526 [190] phi (byte) be#46 = (byte) be#138 [phi:fc::@30->fc::@return#0] -- register_copy + //SEG527 [190] phi (byte) be#46 = (byte) be#138 [phi:fc::@30->fc::@return#0] -- register_copy jmp breturn } @@ -4508,11 +4509,12 @@ Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ bc#114 bc#174 bc#175 bc#176 bc#177 b Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:6 [ be#138 be#44 be#137 be#43 be#136 be#42 be#135 be#41 be#134 be#40 be#133 be#39 be#132 be#38 be#131 be#130 be#129 be#127 be#126 be#125 be#124 be#123 be#122 be#121 be#120 be#119 be#118 be#116 be#115 be#114 be#113 be#112 be#111 be#110 be#109 be#108 be#107 be#105 be#104 be#103 be#102 be#101 be#100 be#144 be#143 be#142 be#2 be#13 be#24 be#35 be#46 be#36 be#37 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label ba = 2 .label be = 6 .label bb = 3 @@ -4527,1073 +4529,1073 @@ ASSEMBLER BEFORE OPTIMIZATION .label bb_107 = 4 .label bb_108 = 4 .label bb_109 = 4 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) ba#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) ba#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta ba - //SEG12 [5] phi (byte) be#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) be#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta be - //SEG13 [5] phi (byte) bd#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuyy=vbuc1 + //SEG14 [5] phi (byte) bd#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuyy=vbuc1 ldy #0 - //SEG14 [5] phi (byte) bc#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vbuxx=vbuc1 + //SEG15 [5] phi (byte) bc#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vbuxx=vbuc1 ldx #0 - //SEG15 [5] phi (byte) bb#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#4] -- vbuz1=vbuc1 + //SEG16 [5] phi (byte) bb#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#4] -- vbuz1=vbuc1 lda #0 sta bb jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [7] call f0 + //SEG20 [7] call f0 jsr f0 jmp b7 - //SEG20 main::@7 + //SEG21 main::@7 b7: - //SEG21 [8] (byte) ba#1 ← ++ (byte) ba#17 -- vbuz1=_inc_vbuz1 + //SEG22 [8] (byte) ba#1 ← ++ (byte) ba#17 -- vbuz1=_inc_vbuz1 inc ba - //SEG22 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG23 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: - //SEG23 [5] phi (byte) ba#17 = (byte) ba#1 [phi:main::@7->main::@1#0] -- register_copy - //SEG24 [5] phi (byte) be#2 = (byte) be#13 [phi:main::@7->main::@1#1] -- register_copy - //SEG25 [5] phi (byte) bd#2 = (byte) bd#13 [phi:main::@7->main::@1#2] -- register_copy - //SEG26 [5] phi (byte) bc#2 = (byte) bc#13 [phi:main::@7->main::@1#3] -- register_copy - //SEG27 [5] phi (byte) bb#16 = (byte) bb#13 [phi:main::@7->main::@1#4] -- register_copy + //SEG24 [5] phi (byte) ba#17 = (byte) ba#1 [phi:main::@7->main::@1#0] -- register_copy + //SEG25 [5] phi (byte) be#2 = (byte) be#13 [phi:main::@7->main::@1#1] -- register_copy + //SEG26 [5] phi (byte) bd#2 = (byte) bd#13 [phi:main::@7->main::@1#2] -- register_copy + //SEG27 [5] phi (byte) bc#2 = (byte) bc#13 [phi:main::@7->main::@1#3] -- register_copy + //SEG28 [5] phi (byte) bb#16 = (byte) bb#13 [phi:main::@7->main::@1#4] -- register_copy jmp b1 } -//SEG28 f0 +//SEG29 f0 f0: { - //SEG29 [9] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto f0::@1 -- vbuz1_neq_0_then_la1 + //SEG30 [9] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto f0::@1 -- vbuz1_neq_0_then_la1 lda ba cmp #0 bne b1_from_f0 jmp b11 - //SEG30 f0::@11 + //SEG31 f0::@11 b11: - //SEG31 [10] (byte) bb#3 ← ++ (byte) bb#16 -- vbuz1=_inc_vbuz1 + //SEG32 [10] (byte) bb#3 ← ++ (byte) bb#16 -- vbuz1=_inc_vbuz1 inc bb - //SEG32 [11] (byte~) bb#101 ← (byte) bb#3 -- vbuz1=vbuz2 + //SEG33 [11] (byte~) bb#101 ← (byte) bb#3 -- vbuz1=vbuz2 lda bb sta bb_101 - //SEG33 [12] call fa - //SEG34 [59] phi from f0::@11 to fa [phi:f0::@11->fa] + //SEG34 [12] call fa + //SEG35 [59] phi from f0::@11 to fa [phi:f0::@11->fa] fa_from_b11: - //SEG35 [59] phi (byte) be#107 = (byte) be#2 [phi:f0::@11->fa#0] -- register_copy - //SEG36 [59] phi (byte) bd#138 = (byte) bd#2 [phi:f0::@11->fa#1] -- register_copy - //SEG37 [59] phi (byte) bc#39 = (byte) bc#2 [phi:f0::@11->fa#2] -- register_copy - //SEG38 [59] phi (byte) bb#27 = (byte~) bb#101 [phi:f0::@11->fa#3] -- register_copy + //SEG36 [59] phi (byte) be#107 = (byte) be#2 [phi:f0::@11->fa#0] -- register_copy + //SEG37 [59] phi (byte) bd#138 = (byte) bd#2 [phi:f0::@11->fa#1] -- register_copy + //SEG38 [59] phi (byte) bc#39 = (byte) bc#2 [phi:f0::@11->fa#2] -- register_copy + //SEG39 [59] phi (byte) bb#27 = (byte~) bb#101 [phi:f0::@11->fa#3] -- register_copy jsr fa - //SEG39 [13] phi from f0 f0::@11 to f0::@1 [phi:f0/f0::@11->f0::@1] + //SEG40 [13] phi from f0 f0::@11 to f0::@1 [phi:f0/f0::@11->f0::@1] b1_from_f0: b1_from_b11: - //SEG40 [13] phi (byte) be#142 = (byte) be#2 [phi:f0/f0::@11->f0::@1#0] -- register_copy - //SEG41 [13] phi (byte) bd#129 = (byte) bd#2 [phi:f0/f0::@11->f0::@1#1] -- register_copy - //SEG42 [13] phi (byte) bc#63 = (byte) bc#2 [phi:f0/f0::@11->f0::@1#2] -- register_copy - //SEG43 [13] phi (byte) bb#18 = (byte) bb#16 [phi:f0/f0::@11->f0::@1#3] -- register_copy + //SEG41 [13] phi (byte) be#142 = (byte) be#2 [phi:f0/f0::@11->f0::@1#0] -- register_copy + //SEG42 [13] phi (byte) bd#129 = (byte) bd#2 [phi:f0/f0::@11->f0::@1#1] -- register_copy + //SEG43 [13] phi (byte) bc#63 = (byte) bc#2 [phi:f0/f0::@11->f0::@1#2] -- register_copy + //SEG44 [13] phi (byte) bb#18 = (byte) bb#16 [phi:f0/f0::@11->f0::@1#3] -- register_copy jmp b1 - //SEG44 f0::@1 + //SEG45 f0::@1 b1: - //SEG45 [14] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto f0::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG46 [14] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto f0::@2 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #1 bne b2_from_b1 jmp b12 - //SEG46 f0::@12 + //SEG47 f0::@12 b12: - //SEG47 [15] (byte) bb#4 ← ++ (byte) bb#18 -- vbuz1=_inc_vbuz1 + //SEG48 [15] (byte) bb#4 ← ++ (byte) bb#18 -- vbuz1=_inc_vbuz1 inc bb - //SEG48 [16] (byte~) bb#102 ← (byte) bb#4 -- vbuz1=vbuz2 + //SEG49 [16] (byte~) bb#102 ← (byte) bb#4 -- vbuz1=vbuz2 lda bb sta bb_102 - //SEG49 [17] call fa - //SEG50 [59] phi from f0::@12 to fa [phi:f0::@12->fa] + //SEG50 [17] call fa + //SEG51 [59] phi from f0::@12 to fa [phi:f0::@12->fa] fa_from_b12: - //SEG51 [59] phi (byte) be#107 = (byte) be#142 [phi:f0::@12->fa#0] -- register_copy - //SEG52 [59] phi (byte) bd#138 = (byte) bd#129 [phi:f0::@12->fa#1] -- register_copy - //SEG53 [59] phi (byte) bc#39 = (byte) bc#63 [phi:f0::@12->fa#2] -- register_copy - //SEG54 [59] phi (byte) bb#27 = (byte~) bb#102 [phi:f0::@12->fa#3] -- register_copy + //SEG52 [59] phi (byte) be#107 = (byte) be#142 [phi:f0::@12->fa#0] -- register_copy + //SEG53 [59] phi (byte) bd#138 = (byte) bd#129 [phi:f0::@12->fa#1] -- register_copy + //SEG54 [59] phi (byte) bc#39 = (byte) bc#63 [phi:f0::@12->fa#2] -- register_copy + //SEG55 [59] phi (byte) bb#27 = (byte~) bb#102 [phi:f0::@12->fa#3] -- register_copy jsr fa - //SEG55 [18] phi from f0::@1 f0::@12 to f0::@2 [phi:f0::@1/f0::@12->f0::@2] + //SEG56 [18] phi from f0::@1 f0::@12 to f0::@2 [phi:f0::@1/f0::@12->f0::@2] b2_from_b1: b2_from_b12: - //SEG56 [18] phi (byte) be#143 = (byte) be#142 [phi:f0::@1/f0::@12->f0::@2#0] -- register_copy - //SEG57 [18] phi (byte) bd#130 = (byte) bd#129 [phi:f0::@1/f0::@12->f0::@2#1] -- register_copy - //SEG58 [18] phi (byte) bc#64 = (byte) bc#63 [phi:f0::@1/f0::@12->f0::@2#2] -- register_copy - //SEG59 [18] phi (byte) bb#19 = (byte) bb#18 [phi:f0::@1/f0::@12->f0::@2#3] -- register_copy + //SEG57 [18] phi (byte) be#143 = (byte) be#142 [phi:f0::@1/f0::@12->f0::@2#0] -- register_copy + //SEG58 [18] phi (byte) bd#130 = (byte) bd#129 [phi:f0::@1/f0::@12->f0::@2#1] -- register_copy + //SEG59 [18] phi (byte) bc#64 = (byte) bc#63 [phi:f0::@1/f0::@12->f0::@2#2] -- register_copy + //SEG60 [18] phi (byte) bb#19 = (byte) bb#18 [phi:f0::@1/f0::@12->f0::@2#3] -- register_copy jmp b2 - //SEG60 f0::@2 + //SEG61 f0::@2 b2: - //SEG61 [19] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto f0::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG62 [19] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto f0::@3 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #2 bne b3_from_b2 jmp b13 - //SEG62 f0::@13 + //SEG63 f0::@13 b13: - //SEG63 [20] (byte) bb#5 ← ++ (byte) bb#19 -- vbuz1=_inc_vbuz1 + //SEG64 [20] (byte) bb#5 ← ++ (byte) bb#19 -- vbuz1=_inc_vbuz1 inc bb - //SEG64 [21] (byte~) bb#103 ← (byte) bb#5 -- vbuz1=vbuz2 + //SEG65 [21] (byte~) bb#103 ← (byte) bb#5 -- vbuz1=vbuz2 lda bb sta bb_103 - //SEG65 [22] call fa - //SEG66 [59] phi from f0::@13 to fa [phi:f0::@13->fa] + //SEG66 [22] call fa + //SEG67 [59] phi from f0::@13 to fa [phi:f0::@13->fa] fa_from_b13: - //SEG67 [59] phi (byte) be#107 = (byte) be#143 [phi:f0::@13->fa#0] -- register_copy - //SEG68 [59] phi (byte) bd#138 = (byte) bd#130 [phi:f0::@13->fa#1] -- register_copy - //SEG69 [59] phi (byte) bc#39 = (byte) bc#64 [phi:f0::@13->fa#2] -- register_copy - //SEG70 [59] phi (byte) bb#27 = (byte~) bb#103 [phi:f0::@13->fa#3] -- register_copy + //SEG68 [59] phi (byte) be#107 = (byte) be#143 [phi:f0::@13->fa#0] -- register_copy + //SEG69 [59] phi (byte) bd#138 = (byte) bd#130 [phi:f0::@13->fa#1] -- register_copy + //SEG70 [59] phi (byte) bc#39 = (byte) bc#64 [phi:f0::@13->fa#2] -- register_copy + //SEG71 [59] phi (byte) bb#27 = (byte~) bb#103 [phi:f0::@13->fa#3] -- register_copy jsr fa - //SEG71 [23] phi from f0::@13 f0::@2 to f0::@3 [phi:f0::@13/f0::@2->f0::@3] + //SEG72 [23] phi from f0::@13 f0::@2 to f0::@3 [phi:f0::@13/f0::@2->f0::@3] b3_from_b13: b3_from_b2: - //SEG72 [23] phi (byte) be#144 = (byte) be#24 [phi:f0::@13/f0::@2->f0::@3#0] -- register_copy - //SEG73 [23] phi (byte) bd#131 = (byte) bd#24 [phi:f0::@13/f0::@2->f0::@3#1] -- register_copy - //SEG74 [23] phi (byte) bc#65 = (byte) bc#24 [phi:f0::@13/f0::@2->f0::@3#2] -- register_copy - //SEG75 [23] phi (byte) bb#20 = (byte) bb#5 [phi:f0::@13/f0::@2->f0::@3#3] -- register_copy + //SEG73 [23] phi (byte) be#144 = (byte) be#24 [phi:f0::@13/f0::@2->f0::@3#0] -- register_copy + //SEG74 [23] phi (byte) bd#131 = (byte) bd#24 [phi:f0::@13/f0::@2->f0::@3#1] -- register_copy + //SEG75 [23] phi (byte) bc#65 = (byte) bc#24 [phi:f0::@13/f0::@2->f0::@3#2] -- register_copy + //SEG76 [23] phi (byte) bb#20 = (byte) bb#5 [phi:f0::@13/f0::@2->f0::@3#3] -- register_copy jmp b3 - //SEG76 f0::@3 + //SEG77 f0::@3 b3: - //SEG77 [24] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto f0::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG78 [24] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto f0::@4 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #3 bne b4_from_b3 jmp b14 - //SEG78 f0::@14 + //SEG79 f0::@14 b14: - //SEG79 [25] (byte) bb#6 ← ++ (byte) bb#20 -- vbuz1=_inc_vbuz1 + //SEG80 [25] (byte) bb#6 ← ++ (byte) bb#20 -- vbuz1=_inc_vbuz1 inc bb - //SEG80 [26] (byte~) bb#104 ← (byte) bb#6 -- vbuz1=vbuz2 + //SEG81 [26] (byte~) bb#104 ← (byte) bb#6 -- vbuz1=vbuz2 lda bb sta bb_104 - //SEG81 [27] call fa - //SEG82 [59] phi from f0::@14 to fa [phi:f0::@14->fa] + //SEG82 [27] call fa + //SEG83 [59] phi from f0::@14 to fa [phi:f0::@14->fa] fa_from_b14: - //SEG83 [59] phi (byte) be#107 = (byte) be#144 [phi:f0::@14->fa#0] -- register_copy - //SEG84 [59] phi (byte) bd#138 = (byte) bd#131 [phi:f0::@14->fa#1] -- register_copy - //SEG85 [59] phi (byte) bc#39 = (byte) bc#65 [phi:f0::@14->fa#2] -- register_copy - //SEG86 [59] phi (byte) bb#27 = (byte~) bb#104 [phi:f0::@14->fa#3] -- register_copy + //SEG84 [59] phi (byte) be#107 = (byte) be#144 [phi:f0::@14->fa#0] -- register_copy + //SEG85 [59] phi (byte) bd#138 = (byte) bd#131 [phi:f0::@14->fa#1] -- register_copy + //SEG86 [59] phi (byte) bc#39 = (byte) bc#65 [phi:f0::@14->fa#2] -- register_copy + //SEG87 [59] phi (byte) bb#27 = (byte~) bb#104 [phi:f0::@14->fa#3] -- register_copy jsr fa - //SEG87 [28] phi from f0::@14 f0::@3 to f0::@4 [phi:f0::@14/f0::@3->f0::@4] + //SEG88 [28] phi from f0::@14 f0::@3 to f0::@4 [phi:f0::@14/f0::@3->f0::@4] b4_from_b14: b4_from_b3: - //SEG88 [28] phi (byte) be#100 = (byte) be#24 [phi:f0::@14/f0::@3->f0::@4#0] -- register_copy - //SEG89 [28] phi (byte) bd#132 = (byte) bd#24 [phi:f0::@14/f0::@3->f0::@4#1] -- register_copy - //SEG90 [28] phi (byte) bc#66 = (byte) bc#24 [phi:f0::@14/f0::@3->f0::@4#2] -- register_copy - //SEG91 [28] phi (byte) bb#21 = (byte) bb#6 [phi:f0::@14/f0::@3->f0::@4#3] -- register_copy + //SEG89 [28] phi (byte) be#100 = (byte) be#24 [phi:f0::@14/f0::@3->f0::@4#0] -- register_copy + //SEG90 [28] phi (byte) bd#132 = (byte) bd#24 [phi:f0::@14/f0::@3->f0::@4#1] -- register_copy + //SEG91 [28] phi (byte) bc#66 = (byte) bc#24 [phi:f0::@14/f0::@3->f0::@4#2] -- register_copy + //SEG92 [28] phi (byte) bb#21 = (byte) bb#6 [phi:f0::@14/f0::@3->f0::@4#3] -- register_copy jmp b4 - //SEG92 f0::@4 + //SEG93 f0::@4 b4: - //SEG93 [29] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto f0::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG94 [29] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto f0::@5 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #4 bne b5_from_b4 jmp b15 - //SEG94 f0::@15 + //SEG95 f0::@15 b15: - //SEG95 [30] (byte) bb#66 ← ++ (byte) bb#21 -- vbuz1=_inc_vbuz1 + //SEG96 [30] (byte) bb#66 ← ++ (byte) bb#21 -- vbuz1=_inc_vbuz1 inc bb - //SEG96 [31] (byte~) bb#105 ← (byte) bb#66 -- vbuz1=vbuz2 + //SEG97 [31] (byte~) bb#105 ← (byte) bb#66 -- vbuz1=vbuz2 lda bb sta bb_105 - //SEG97 [32] call fa - //SEG98 [59] phi from f0::@15 to fa [phi:f0::@15->fa] + //SEG98 [32] call fa + //SEG99 [59] phi from f0::@15 to fa [phi:f0::@15->fa] fa_from_b15: - //SEG99 [59] phi (byte) be#107 = (byte) be#100 [phi:f0::@15->fa#0] -- register_copy - //SEG100 [59] phi (byte) bd#138 = (byte) bd#132 [phi:f0::@15->fa#1] -- register_copy - //SEG101 [59] phi (byte) bc#39 = (byte) bc#66 [phi:f0::@15->fa#2] -- register_copy - //SEG102 [59] phi (byte) bb#27 = (byte~) bb#105 [phi:f0::@15->fa#3] -- register_copy + //SEG100 [59] phi (byte) be#107 = (byte) be#100 [phi:f0::@15->fa#0] -- register_copy + //SEG101 [59] phi (byte) bd#138 = (byte) bd#132 [phi:f0::@15->fa#1] -- register_copy + //SEG102 [59] phi (byte) bc#39 = (byte) bc#66 [phi:f0::@15->fa#2] -- register_copy + //SEG103 [59] phi (byte) bb#27 = (byte~) bb#105 [phi:f0::@15->fa#3] -- register_copy jsr fa - //SEG103 [33] phi from f0::@15 f0::@4 to f0::@5 [phi:f0::@15/f0::@4->f0::@5] + //SEG104 [33] phi from f0::@15 f0::@4 to f0::@5 [phi:f0::@15/f0::@4->f0::@5] b5_from_b15: b5_from_b4: - //SEG104 [33] phi (byte) be#101 = (byte) be#24 [phi:f0::@15/f0::@4->f0::@5#0] -- register_copy - //SEG105 [33] phi (byte) bd#133 = (byte) bd#24 [phi:f0::@15/f0::@4->f0::@5#1] -- register_copy - //SEG106 [33] phi (byte) bc#100 = (byte) bc#24 [phi:f0::@15/f0::@4->f0::@5#2] -- register_copy - //SEG107 [33] phi (byte) bb#22 = (byte) bb#66 [phi:f0::@15/f0::@4->f0::@5#3] -- register_copy + //SEG105 [33] phi (byte) be#101 = (byte) be#24 [phi:f0::@15/f0::@4->f0::@5#0] -- register_copy + //SEG106 [33] phi (byte) bd#133 = (byte) bd#24 [phi:f0::@15/f0::@4->f0::@5#1] -- register_copy + //SEG107 [33] phi (byte) bc#100 = (byte) bc#24 [phi:f0::@15/f0::@4->f0::@5#2] -- register_copy + //SEG108 [33] phi (byte) bb#22 = (byte) bb#66 [phi:f0::@15/f0::@4->f0::@5#3] -- register_copy jmp b5 - //SEG108 f0::@5 + //SEG109 f0::@5 b5: - //SEG109 [34] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto f0::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG110 [34] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto f0::@6 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #5 bne b6_from_b5 jmp b16 - //SEG110 f0::@16 + //SEG111 f0::@16 b16: - //SEG111 [35] (byte) bb#67 ← ++ (byte) bb#22 -- vbuz1=_inc_vbuz1 + //SEG112 [35] (byte) bb#67 ← ++ (byte) bb#22 -- vbuz1=_inc_vbuz1 inc bb - //SEG112 [36] (byte~) bb#106 ← (byte) bb#67 -- vbuz1=vbuz2 + //SEG113 [36] (byte~) bb#106 ← (byte) bb#67 -- vbuz1=vbuz2 lda bb sta bb_106 - //SEG113 [37] call fa - //SEG114 [59] phi from f0::@16 to fa [phi:f0::@16->fa] + //SEG114 [37] call fa + //SEG115 [59] phi from f0::@16 to fa [phi:f0::@16->fa] fa_from_b16: - //SEG115 [59] phi (byte) be#107 = (byte) be#101 [phi:f0::@16->fa#0] -- register_copy - //SEG116 [59] phi (byte) bd#138 = (byte) bd#133 [phi:f0::@16->fa#1] -- register_copy - //SEG117 [59] phi (byte) bc#39 = (byte) bc#100 [phi:f0::@16->fa#2] -- register_copy - //SEG118 [59] phi (byte) bb#27 = (byte~) bb#106 [phi:f0::@16->fa#3] -- register_copy + //SEG116 [59] phi (byte) be#107 = (byte) be#101 [phi:f0::@16->fa#0] -- register_copy + //SEG117 [59] phi (byte) bd#138 = (byte) bd#133 [phi:f0::@16->fa#1] -- register_copy + //SEG118 [59] phi (byte) bc#39 = (byte) bc#100 [phi:f0::@16->fa#2] -- register_copy + //SEG119 [59] phi (byte) bb#27 = (byte~) bb#106 [phi:f0::@16->fa#3] -- register_copy jsr fa - //SEG119 [38] phi from f0::@16 f0::@5 to f0::@6 [phi:f0::@16/f0::@5->f0::@6] + //SEG120 [38] phi from f0::@16 f0::@5 to f0::@6 [phi:f0::@16/f0::@5->f0::@6] b6_from_b16: b6_from_b5: - //SEG120 [38] phi (byte) be#102 = (byte) be#24 [phi:f0::@16/f0::@5->f0::@6#0] -- register_copy - //SEG121 [38] phi (byte) bd#134 = (byte) bd#24 [phi:f0::@16/f0::@5->f0::@6#1] -- register_copy - //SEG122 [38] phi (byte) bc#101 = (byte) bc#24 [phi:f0::@16/f0::@5->f0::@6#2] -- register_copy - //SEG123 [38] phi (byte) bb#23 = (byte) bb#67 [phi:f0::@16/f0::@5->f0::@6#3] -- register_copy + //SEG121 [38] phi (byte) be#102 = (byte) be#24 [phi:f0::@16/f0::@5->f0::@6#0] -- register_copy + //SEG122 [38] phi (byte) bd#134 = (byte) bd#24 [phi:f0::@16/f0::@5->f0::@6#1] -- register_copy + //SEG123 [38] phi (byte) bc#101 = (byte) bc#24 [phi:f0::@16/f0::@5->f0::@6#2] -- register_copy + //SEG124 [38] phi (byte) bb#23 = (byte) bb#67 [phi:f0::@16/f0::@5->f0::@6#3] -- register_copy jmp b6 - //SEG124 f0::@6 + //SEG125 f0::@6 b6: - //SEG125 [39] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto f0::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG126 [39] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto f0::@7 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #6 bne b7_from_b6 jmp b17 - //SEG126 f0::@17 + //SEG127 f0::@17 b17: - //SEG127 [40] (byte) bb#68 ← ++ (byte) bb#23 -- vbuz1=_inc_vbuz1 + //SEG128 [40] (byte) bb#68 ← ++ (byte) bb#23 -- vbuz1=_inc_vbuz1 inc bb - //SEG128 [41] (byte~) bb#107 ← (byte) bb#68 -- vbuz1=vbuz2 + //SEG129 [41] (byte~) bb#107 ← (byte) bb#68 -- vbuz1=vbuz2 lda bb sta bb_107 - //SEG129 [42] call fa - //SEG130 [59] phi from f0::@17 to fa [phi:f0::@17->fa] + //SEG130 [42] call fa + //SEG131 [59] phi from f0::@17 to fa [phi:f0::@17->fa] fa_from_b17: - //SEG131 [59] phi (byte) be#107 = (byte) be#102 [phi:f0::@17->fa#0] -- register_copy - //SEG132 [59] phi (byte) bd#138 = (byte) bd#134 [phi:f0::@17->fa#1] -- register_copy - //SEG133 [59] phi (byte) bc#39 = (byte) bc#101 [phi:f0::@17->fa#2] -- register_copy - //SEG134 [59] phi (byte) bb#27 = (byte~) bb#107 [phi:f0::@17->fa#3] -- register_copy + //SEG132 [59] phi (byte) be#107 = (byte) be#102 [phi:f0::@17->fa#0] -- register_copy + //SEG133 [59] phi (byte) bd#138 = (byte) bd#134 [phi:f0::@17->fa#1] -- register_copy + //SEG134 [59] phi (byte) bc#39 = (byte) bc#101 [phi:f0::@17->fa#2] -- register_copy + //SEG135 [59] phi (byte) bb#27 = (byte~) bb#107 [phi:f0::@17->fa#3] -- register_copy jsr fa - //SEG135 [43] phi from f0::@17 f0::@6 to f0::@7 [phi:f0::@17/f0::@6->f0::@7] + //SEG136 [43] phi from f0::@17 f0::@6 to f0::@7 [phi:f0::@17/f0::@6->f0::@7] b7_from_b17: b7_from_b6: - //SEG136 [43] phi (byte) be#103 = (byte) be#24 [phi:f0::@17/f0::@6->f0::@7#0] -- register_copy - //SEG137 [43] phi (byte) bd#135 = (byte) bd#24 [phi:f0::@17/f0::@6->f0::@7#1] -- register_copy - //SEG138 [43] phi (byte) bc#102 = (byte) bc#24 [phi:f0::@17/f0::@6->f0::@7#2] -- register_copy - //SEG139 [43] phi (byte) bb#24 = (byte) bb#68 [phi:f0::@17/f0::@6->f0::@7#3] -- register_copy + //SEG137 [43] phi (byte) be#103 = (byte) be#24 [phi:f0::@17/f0::@6->f0::@7#0] -- register_copy + //SEG138 [43] phi (byte) bd#135 = (byte) bd#24 [phi:f0::@17/f0::@6->f0::@7#1] -- register_copy + //SEG139 [43] phi (byte) bc#102 = (byte) bc#24 [phi:f0::@17/f0::@6->f0::@7#2] -- register_copy + //SEG140 [43] phi (byte) bb#24 = (byte) bb#68 [phi:f0::@17/f0::@6->f0::@7#3] -- register_copy jmp b7 - //SEG140 f0::@7 + //SEG141 f0::@7 b7: - //SEG141 [44] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto f0::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG142 [44] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto f0::@8 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #7 bne b8_from_b7 jmp b18 - //SEG142 f0::@18 + //SEG143 f0::@18 b18: - //SEG143 [45] (byte) bb#10 ← ++ (byte) bb#24 -- vbuz1=_inc_vbuz1 + //SEG144 [45] (byte) bb#10 ← ++ (byte) bb#24 -- vbuz1=_inc_vbuz1 inc bb - //SEG144 [46] (byte~) bb#108 ← (byte) bb#10 -- vbuz1=vbuz2 + //SEG145 [46] (byte~) bb#108 ← (byte) bb#10 -- vbuz1=vbuz2 lda bb sta bb_108 - //SEG145 [47] call fa - //SEG146 [59] phi from f0::@18 to fa [phi:f0::@18->fa] + //SEG146 [47] call fa + //SEG147 [59] phi from f0::@18 to fa [phi:f0::@18->fa] fa_from_b18: - //SEG147 [59] phi (byte) be#107 = (byte) be#103 [phi:f0::@18->fa#0] -- register_copy - //SEG148 [59] phi (byte) bd#138 = (byte) bd#135 [phi:f0::@18->fa#1] -- register_copy - //SEG149 [59] phi (byte) bc#39 = (byte) bc#102 [phi:f0::@18->fa#2] -- register_copy - //SEG150 [59] phi (byte) bb#27 = (byte~) bb#108 [phi:f0::@18->fa#3] -- register_copy + //SEG148 [59] phi (byte) be#107 = (byte) be#103 [phi:f0::@18->fa#0] -- register_copy + //SEG149 [59] phi (byte) bd#138 = (byte) bd#135 [phi:f0::@18->fa#1] -- register_copy + //SEG150 [59] phi (byte) bc#39 = (byte) bc#102 [phi:f0::@18->fa#2] -- register_copy + //SEG151 [59] phi (byte) bb#27 = (byte~) bb#108 [phi:f0::@18->fa#3] -- register_copy jsr fa - //SEG151 [48] phi from f0::@18 f0::@7 to f0::@8 [phi:f0::@18/f0::@7->f0::@8] + //SEG152 [48] phi from f0::@18 f0::@7 to f0::@8 [phi:f0::@18/f0::@7->f0::@8] b8_from_b18: b8_from_b7: - //SEG152 [48] phi (byte) be#104 = (byte) be#24 [phi:f0::@18/f0::@7->f0::@8#0] -- register_copy - //SEG153 [48] phi (byte) bd#136 = (byte) bd#24 [phi:f0::@18/f0::@7->f0::@8#1] -- register_copy - //SEG154 [48] phi (byte) bc#103 = (byte) bc#24 [phi:f0::@18/f0::@7->f0::@8#2] -- register_copy - //SEG155 [48] phi (byte) bb#25 = (byte) bb#10 [phi:f0::@18/f0::@7->f0::@8#3] -- register_copy + //SEG153 [48] phi (byte) be#104 = (byte) be#24 [phi:f0::@18/f0::@7->f0::@8#0] -- register_copy + //SEG154 [48] phi (byte) bd#136 = (byte) bd#24 [phi:f0::@18/f0::@7->f0::@8#1] -- register_copy + //SEG155 [48] phi (byte) bc#103 = (byte) bc#24 [phi:f0::@18/f0::@7->f0::@8#2] -- register_copy + //SEG156 [48] phi (byte) bb#25 = (byte) bb#10 [phi:f0::@18/f0::@7->f0::@8#3] -- register_copy jmp b8 - //SEG156 f0::@8 + //SEG157 f0::@8 b8: - //SEG157 [49] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto f0::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG158 [49] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto f0::@9 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #8 bne b9_from_b8 jmp b19 - //SEG158 f0::@19 + //SEG159 f0::@19 b19: - //SEG159 [50] (byte) bb#11 ← ++ (byte) bb#25 -- vbuz1=_inc_vbuz1 + //SEG160 [50] (byte) bb#11 ← ++ (byte) bb#25 -- vbuz1=_inc_vbuz1 inc bb - //SEG160 [51] (byte~) bb#109 ← (byte) bb#11 -- vbuz1=vbuz2 + //SEG161 [51] (byte~) bb#109 ← (byte) bb#11 -- vbuz1=vbuz2 lda bb sta bb_109 - //SEG161 [52] call fa - //SEG162 [59] phi from f0::@19 to fa [phi:f0::@19->fa] + //SEG162 [52] call fa + //SEG163 [59] phi from f0::@19 to fa [phi:f0::@19->fa] fa_from_b19: - //SEG163 [59] phi (byte) be#107 = (byte) be#104 [phi:f0::@19->fa#0] -- register_copy - //SEG164 [59] phi (byte) bd#138 = (byte) bd#136 [phi:f0::@19->fa#1] -- register_copy - //SEG165 [59] phi (byte) bc#39 = (byte) bc#103 [phi:f0::@19->fa#2] -- register_copy - //SEG166 [59] phi (byte) bb#27 = (byte~) bb#109 [phi:f0::@19->fa#3] -- register_copy + //SEG164 [59] phi (byte) be#107 = (byte) be#104 [phi:f0::@19->fa#0] -- register_copy + //SEG165 [59] phi (byte) bd#138 = (byte) bd#136 [phi:f0::@19->fa#1] -- register_copy + //SEG166 [59] phi (byte) bc#39 = (byte) bc#103 [phi:f0::@19->fa#2] -- register_copy + //SEG167 [59] phi (byte) bb#27 = (byte~) bb#109 [phi:f0::@19->fa#3] -- register_copy jsr fa - //SEG167 [53] phi from f0::@19 f0::@8 to f0::@9 [phi:f0::@19/f0::@8->f0::@9] + //SEG168 [53] phi from f0::@19 f0::@8 to f0::@9 [phi:f0::@19/f0::@8->f0::@9] b9_from_b19: b9_from_b8: - //SEG168 [53] phi (byte) be#105 = (byte) be#24 [phi:f0::@19/f0::@8->f0::@9#0] -- register_copy - //SEG169 [53] phi (byte) bd#137 = (byte) bd#24 [phi:f0::@19/f0::@8->f0::@9#1] -- register_copy - //SEG170 [53] phi (byte) bc#104 = (byte) bc#24 [phi:f0::@19/f0::@8->f0::@9#2] -- register_copy - //SEG171 [53] phi (byte) bb#49 = (byte) bb#11 [phi:f0::@19/f0::@8->f0::@9#3] -- register_copy + //SEG169 [53] phi (byte) be#105 = (byte) be#24 [phi:f0::@19/f0::@8->f0::@9#0] -- register_copy + //SEG170 [53] phi (byte) bd#137 = (byte) bd#24 [phi:f0::@19/f0::@8->f0::@9#1] -- register_copy + //SEG171 [53] phi (byte) bc#104 = (byte) bc#24 [phi:f0::@19/f0::@8->f0::@9#2] -- register_copy + //SEG172 [53] phi (byte) bb#49 = (byte) bb#11 [phi:f0::@19/f0::@8->f0::@9#3] -- register_copy jmp b9 - //SEG172 f0::@9 + //SEG173 f0::@9 b9: - //SEG173 [54] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto f0::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG174 [54] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto f0::@return -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #9 bne breturn_from_b9 - //SEG174 [55] phi from f0::@9 to f0::@20 [phi:f0::@9->f0::@20] + //SEG175 [55] phi from f0::@9 to f0::@20 [phi:f0::@9->f0::@20] b20_from_b9: jmp b20 - //SEG175 f0::@20 + //SEG176 f0::@20 b20: - //SEG176 [56] call fa - //SEG177 [59] phi from f0::@20 to fa [phi:f0::@20->fa] + //SEG177 [56] call fa + //SEG178 [59] phi from f0::@20 to fa [phi:f0::@20->fa] fa_from_b20: - //SEG178 [59] phi (byte) be#107 = (byte) be#105 [phi:f0::@20->fa#0] -- register_copy - //SEG179 [59] phi (byte) bd#138 = (byte) bd#137 [phi:f0::@20->fa#1] -- register_copy - //SEG180 [59] phi (byte) bc#39 = (byte) bc#104 [phi:f0::@20->fa#2] -- register_copy - //SEG181 [59] phi (byte) bb#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->fa#3] -- vbuz1=vbuc1 + //SEG179 [59] phi (byte) be#107 = (byte) be#105 [phi:f0::@20->fa#0] -- register_copy + //SEG180 [59] phi (byte) bd#138 = (byte) bd#137 [phi:f0::@20->fa#1] -- register_copy + //SEG181 [59] phi (byte) bc#39 = (byte) bc#104 [phi:f0::@20->fa#2] -- register_copy + //SEG182 [59] phi (byte) bb#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->fa#3] -- vbuz1=vbuc1 lda #0 sta bb_27 jsr fa - //SEG182 [57] phi from f0::@20 to f0::@return [phi:f0::@20->f0::@return] + //SEG183 [57] phi from f0::@20 to f0::@return [phi:f0::@20->f0::@return] breturn_from_b20: - //SEG183 [57] phi (byte) be#13 = (byte) be#24 [phi:f0::@20->f0::@return#0] -- register_copy - //SEG184 [57] phi (byte) bd#13 = (byte) bd#24 [phi:f0::@20->f0::@return#1] -- register_copy - //SEG185 [57] phi (byte) bc#13 = (byte) bc#24 [phi:f0::@20->f0::@return#2] -- register_copy - //SEG186 [57] phi (byte) bb#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->f0::@return#3] -- vbuz1=vbuc1 + //SEG184 [57] phi (byte) be#13 = (byte) be#24 [phi:f0::@20->f0::@return#0] -- register_copy + //SEG185 [57] phi (byte) bd#13 = (byte) bd#24 [phi:f0::@20->f0::@return#1] -- register_copy + //SEG186 [57] phi (byte) bc#13 = (byte) bc#24 [phi:f0::@20->f0::@return#2] -- register_copy + //SEG187 [57] phi (byte) bb#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->f0::@return#3] -- vbuz1=vbuc1 lda #0 sta bb jmp breturn - //SEG187 [57] phi from f0::@9 to f0::@return [phi:f0::@9->f0::@return] + //SEG188 [57] phi from f0::@9 to f0::@return [phi:f0::@9->f0::@return] breturn_from_b9: - //SEG188 [57] phi (byte) be#13 = (byte) be#105 [phi:f0::@9->f0::@return#0] -- register_copy - //SEG189 [57] phi (byte) bd#13 = (byte) bd#137 [phi:f0::@9->f0::@return#1] -- register_copy - //SEG190 [57] phi (byte) bc#13 = (byte) bc#104 [phi:f0::@9->f0::@return#2] -- register_copy - //SEG191 [57] phi (byte) bb#13 = (byte) bb#49 [phi:f0::@9->f0::@return#3] -- register_copy + //SEG189 [57] phi (byte) be#13 = (byte) be#105 [phi:f0::@9->f0::@return#0] -- register_copy + //SEG190 [57] phi (byte) bd#13 = (byte) bd#137 [phi:f0::@9->f0::@return#1] -- register_copy + //SEG191 [57] phi (byte) bc#13 = (byte) bc#104 [phi:f0::@9->f0::@return#2] -- register_copy + //SEG192 [57] phi (byte) bb#13 = (byte) bb#49 [phi:f0::@9->f0::@return#3] -- register_copy jmp breturn - //SEG192 f0::@return + //SEG193 f0::@return breturn: - //SEG193 [58] return + //SEG194 [58] return rts } -//SEG194 fa +//SEG195 fa fa: { - //SEG195 [60] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fa::@1 -- vbuz1_neq_0_then_la1 + //SEG196 [60] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fa::@1 -- vbuz1_neq_0_then_la1 lda bb_27 cmp #0 bne b1_from_fa jmp b11 - //SEG196 fa::@11 + //SEG197 fa::@11 b11: - //SEG197 [61] (byte) bc#105 ← ++ (byte) bc#39 -- vbuxx=_inc_vbuxx + //SEG198 [61] (byte) bc#105 ← ++ (byte) bc#39 -- vbuxx=_inc_vbuxx inx - //SEG198 [62] (byte~) bc#174 ← (byte) bc#105 -- vbuz1=vbuxx + //SEG199 [62] (byte~) bc#174 ← (byte) bc#105 -- vbuz1=vbuxx stx bc - //SEG199 [63] call fb - //SEG200 [110] phi from fa::@11 to fb [phi:fa::@11->fb] + //SEG200 [63] call fb + //SEG201 [110] phi from fa::@11 to fb [phi:fa::@11->fb] fb_from_b11: - //SEG201 [110] phi (byte) be#118 = (byte) be#107 [phi:fa::@11->fb#0] -- register_copy - //SEG202 [110] phi (byte) bd#106 = (byte) bd#138 [phi:fa::@11->fb#1] -- register_copy - //SEG203 [110] phi (byte) bc#114 = (byte~) bc#174 [phi:fa::@11->fb#2] -- register_copy + //SEG202 [110] phi (byte) be#118 = (byte) be#107 [phi:fa::@11->fb#0] -- register_copy + //SEG203 [110] phi (byte) bd#106 = (byte) bd#138 [phi:fa::@11->fb#1] -- register_copy + //SEG204 [110] phi (byte) bc#114 = (byte~) bc#174 [phi:fa::@11->fb#2] -- register_copy jsr fb - //SEG204 [64] phi from fa fa::@11 to fa::@1 [phi:fa/fa::@11->fa::@1] + //SEG205 [64] phi from fa fa::@11 to fa::@1 [phi:fa/fa::@11->fa::@1] b1_from_fa: b1_from_b11: - //SEG205 [64] phi (byte) be#108 = (byte) be#107 [phi:fa/fa::@11->fa::@1#0] -- register_copy - //SEG206 [64] phi (byte) bd#139 = (byte) bd#138 [phi:fa/fa::@11->fa::@1#1] -- register_copy - //SEG207 [64] phi (byte) bc#40 = (byte) bc#39 [phi:fa/fa::@11->fa::@1#2] -- register_copy + //SEG206 [64] phi (byte) be#108 = (byte) be#107 [phi:fa/fa::@11->fa::@1#0] -- register_copy + //SEG207 [64] phi (byte) bd#139 = (byte) bd#138 [phi:fa/fa::@11->fa::@1#1] -- register_copy + //SEG208 [64] phi (byte) bc#40 = (byte) bc#39 [phi:fa/fa::@11->fa::@1#2] -- register_copy jmp b1 - //SEG208 fa::@1 + //SEG209 fa::@1 b1: - //SEG209 [65] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fa::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG210 [65] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fa::@2 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #1 bne b2_from_b1 jmp b12 - //SEG210 fa::@12 + //SEG211 fa::@12 b12: - //SEG211 [66] (byte) bc#106 ← ++ (byte) bc#40 -- vbuxx=_inc_vbuxx + //SEG212 [66] (byte) bc#106 ← ++ (byte) bc#40 -- vbuxx=_inc_vbuxx inx - //SEG212 [67] (byte~) bc#175 ← (byte) bc#106 -- vbuz1=vbuxx + //SEG213 [67] (byte~) bc#175 ← (byte) bc#106 -- vbuz1=vbuxx stx bc - //SEG213 [68] call fb - //SEG214 [110] phi from fa::@12 to fb [phi:fa::@12->fb] + //SEG214 [68] call fb + //SEG215 [110] phi from fa::@12 to fb [phi:fa::@12->fb] fb_from_b12: - //SEG215 [110] phi (byte) be#118 = (byte) be#108 [phi:fa::@12->fb#0] -- register_copy - //SEG216 [110] phi (byte) bd#106 = (byte) bd#139 [phi:fa::@12->fb#1] -- register_copy - //SEG217 [110] phi (byte) bc#114 = (byte~) bc#175 [phi:fa::@12->fb#2] -- register_copy + //SEG216 [110] phi (byte) be#118 = (byte) be#108 [phi:fa::@12->fb#0] -- register_copy + //SEG217 [110] phi (byte) bd#106 = (byte) bd#139 [phi:fa::@12->fb#1] -- register_copy + //SEG218 [110] phi (byte) bc#114 = (byte~) bc#175 [phi:fa::@12->fb#2] -- register_copy jsr fb - //SEG218 [69] phi from fa::@1 fa::@12 to fa::@2 [phi:fa::@1/fa::@12->fa::@2] + //SEG219 [69] phi from fa::@1 fa::@12 to fa::@2 [phi:fa::@1/fa::@12->fa::@2] b2_from_b1: b2_from_b12: - //SEG219 [69] phi (byte) be#109 = (byte) be#108 [phi:fa::@1/fa::@12->fa::@2#0] -- register_copy - //SEG220 [69] phi (byte) bd#140 = (byte) bd#139 [phi:fa::@1/fa::@12->fa::@2#1] -- register_copy - //SEG221 [69] phi (byte) bc#41 = (byte) bc#40 [phi:fa::@1/fa::@12->fa::@2#2] -- register_copy + //SEG220 [69] phi (byte) be#109 = (byte) be#108 [phi:fa::@1/fa::@12->fa::@2#0] -- register_copy + //SEG221 [69] phi (byte) bd#140 = (byte) bd#139 [phi:fa::@1/fa::@12->fa::@2#1] -- register_copy + //SEG222 [69] phi (byte) bc#41 = (byte) bc#40 [phi:fa::@1/fa::@12->fa::@2#2] -- register_copy jmp b2 - //SEG222 fa::@2 + //SEG223 fa::@2 b2: - //SEG223 [70] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fa::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG224 [70] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fa::@3 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #2 bne b3_from_b2 jmp b13 - //SEG224 fa::@13 + //SEG225 fa::@13 b13: - //SEG225 [71] (byte) bc#107 ← ++ (byte) bc#41 -- vbuxx=_inc_vbuxx + //SEG226 [71] (byte) bc#107 ← ++ (byte) bc#41 -- vbuxx=_inc_vbuxx inx - //SEG226 [72] (byte~) bc#176 ← (byte) bc#107 -- vbuz1=vbuxx + //SEG227 [72] (byte~) bc#176 ← (byte) bc#107 -- vbuz1=vbuxx stx bc - //SEG227 [73] call fb - //SEG228 [110] phi from fa::@13 to fb [phi:fa::@13->fb] + //SEG228 [73] call fb + //SEG229 [110] phi from fa::@13 to fb [phi:fa::@13->fb] fb_from_b13: - //SEG229 [110] phi (byte) be#118 = (byte) be#109 [phi:fa::@13->fb#0] -- register_copy - //SEG230 [110] phi (byte) bd#106 = (byte) bd#140 [phi:fa::@13->fb#1] -- register_copy - //SEG231 [110] phi (byte) bc#114 = (byte~) bc#176 [phi:fa::@13->fb#2] -- register_copy + //SEG230 [110] phi (byte) be#118 = (byte) be#109 [phi:fa::@13->fb#0] -- register_copy + //SEG231 [110] phi (byte) bd#106 = (byte) bd#140 [phi:fa::@13->fb#1] -- register_copy + //SEG232 [110] phi (byte) bc#114 = (byte~) bc#176 [phi:fa::@13->fb#2] -- register_copy jsr fb - //SEG232 [74] phi from fa::@13 fa::@2 to fa::@3 [phi:fa::@13/fa::@2->fa::@3] + //SEG233 [74] phi from fa::@13 fa::@2 to fa::@3 [phi:fa::@13/fa::@2->fa::@3] b3_from_b13: b3_from_b2: - //SEG233 [74] phi (byte) be#110 = (byte) be#35 [phi:fa::@13/fa::@2->fa::@3#0] -- register_copy - //SEG234 [74] phi (byte) bd#141 = (byte) bd#35 [phi:fa::@13/fa::@2->fa::@3#1] -- register_copy - //SEG235 [74] phi (byte) bc#42 = (byte) bc#107 [phi:fa::@13/fa::@2->fa::@3#2] -- register_copy + //SEG234 [74] phi (byte) be#110 = (byte) be#35 [phi:fa::@13/fa::@2->fa::@3#0] -- register_copy + //SEG235 [74] phi (byte) bd#141 = (byte) bd#35 [phi:fa::@13/fa::@2->fa::@3#1] -- register_copy + //SEG236 [74] phi (byte) bc#42 = (byte) bc#107 [phi:fa::@13/fa::@2->fa::@3#2] -- register_copy jmp b3 - //SEG236 fa::@3 + //SEG237 fa::@3 b3: - //SEG237 [75] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fa::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG238 [75] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fa::@4 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #3 bne b4_from_b3 jmp b14 - //SEG238 fa::@14 + //SEG239 fa::@14 b14: - //SEG239 [76] (byte) bc#108 ← ++ (byte) bc#42 -- vbuxx=_inc_vbuxx + //SEG240 [76] (byte) bc#108 ← ++ (byte) bc#42 -- vbuxx=_inc_vbuxx inx - //SEG240 [77] (byte~) bc#177 ← (byte) bc#108 -- vbuz1=vbuxx + //SEG241 [77] (byte~) bc#177 ← (byte) bc#108 -- vbuz1=vbuxx stx bc - //SEG241 [78] call fb - //SEG242 [110] phi from fa::@14 to fb [phi:fa::@14->fb] + //SEG242 [78] call fb + //SEG243 [110] phi from fa::@14 to fb [phi:fa::@14->fb] fb_from_b14: - //SEG243 [110] phi (byte) be#118 = (byte) be#110 [phi:fa::@14->fb#0] -- register_copy - //SEG244 [110] phi (byte) bd#106 = (byte) bd#141 [phi:fa::@14->fb#1] -- register_copy - //SEG245 [110] phi (byte) bc#114 = (byte~) bc#177 [phi:fa::@14->fb#2] -- register_copy + //SEG244 [110] phi (byte) be#118 = (byte) be#110 [phi:fa::@14->fb#0] -- register_copy + //SEG245 [110] phi (byte) bd#106 = (byte) bd#141 [phi:fa::@14->fb#1] -- register_copy + //SEG246 [110] phi (byte) bc#114 = (byte~) bc#177 [phi:fa::@14->fb#2] -- register_copy jsr fb - //SEG246 [79] phi from fa::@14 fa::@3 to fa::@4 [phi:fa::@14/fa::@3->fa::@4] + //SEG247 [79] phi from fa::@14 fa::@3 to fa::@4 [phi:fa::@14/fa::@3->fa::@4] b4_from_b14: b4_from_b3: - //SEG247 [79] phi (byte) be#111 = (byte) be#35 [phi:fa::@14/fa::@3->fa::@4#0] -- register_copy - //SEG248 [79] phi (byte) bd#142 = (byte) bd#35 [phi:fa::@14/fa::@3->fa::@4#1] -- register_copy - //SEG249 [79] phi (byte) bc#43 = (byte) bc#108 [phi:fa::@14/fa::@3->fa::@4#2] -- register_copy + //SEG248 [79] phi (byte) be#111 = (byte) be#35 [phi:fa::@14/fa::@3->fa::@4#0] -- register_copy + //SEG249 [79] phi (byte) bd#142 = (byte) bd#35 [phi:fa::@14/fa::@3->fa::@4#1] -- register_copy + //SEG250 [79] phi (byte) bc#43 = (byte) bc#108 [phi:fa::@14/fa::@3->fa::@4#2] -- register_copy jmp b4 - //SEG250 fa::@4 + //SEG251 fa::@4 b4: - //SEG251 [80] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fa::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG252 [80] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fa::@5 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #4 bne b5_from_b4 jmp b15 - //SEG252 fa::@15 + //SEG253 fa::@15 b15: - //SEG253 [81] (byte) bc#109 ← ++ (byte) bc#43 -- vbuxx=_inc_vbuxx + //SEG254 [81] (byte) bc#109 ← ++ (byte) bc#43 -- vbuxx=_inc_vbuxx inx - //SEG254 [82] (byte~) bc#178 ← (byte) bc#109 -- vbuz1=vbuxx + //SEG255 [82] (byte~) bc#178 ← (byte) bc#109 -- vbuz1=vbuxx stx bc - //SEG255 [83] call fb - //SEG256 [110] phi from fa::@15 to fb [phi:fa::@15->fb] + //SEG256 [83] call fb + //SEG257 [110] phi from fa::@15 to fb [phi:fa::@15->fb] fb_from_b15: - //SEG257 [110] phi (byte) be#118 = (byte) be#111 [phi:fa::@15->fb#0] -- register_copy - //SEG258 [110] phi (byte) bd#106 = (byte) bd#142 [phi:fa::@15->fb#1] -- register_copy - //SEG259 [110] phi (byte) bc#114 = (byte~) bc#178 [phi:fa::@15->fb#2] -- register_copy + //SEG258 [110] phi (byte) be#118 = (byte) be#111 [phi:fa::@15->fb#0] -- register_copy + //SEG259 [110] phi (byte) bd#106 = (byte) bd#142 [phi:fa::@15->fb#1] -- register_copy + //SEG260 [110] phi (byte) bc#114 = (byte~) bc#178 [phi:fa::@15->fb#2] -- register_copy jsr fb - //SEG260 [84] phi from fa::@15 fa::@4 to fa::@5 [phi:fa::@15/fa::@4->fa::@5] + //SEG261 [84] phi from fa::@15 fa::@4 to fa::@5 [phi:fa::@15/fa::@4->fa::@5] b5_from_b15: b5_from_b4: - //SEG261 [84] phi (byte) be#112 = (byte) be#35 [phi:fa::@15/fa::@4->fa::@5#0] -- register_copy - //SEG262 [84] phi (byte) bd#100 = (byte) bd#35 [phi:fa::@15/fa::@4->fa::@5#1] -- register_copy - //SEG263 [84] phi (byte) bc#44 = (byte) bc#109 [phi:fa::@15/fa::@4->fa::@5#2] -- register_copy + //SEG262 [84] phi (byte) be#112 = (byte) be#35 [phi:fa::@15/fa::@4->fa::@5#0] -- register_copy + //SEG263 [84] phi (byte) bd#100 = (byte) bd#35 [phi:fa::@15/fa::@4->fa::@5#1] -- register_copy + //SEG264 [84] phi (byte) bc#44 = (byte) bc#109 [phi:fa::@15/fa::@4->fa::@5#2] -- register_copy jmp b5 - //SEG264 fa::@5 + //SEG265 fa::@5 b5: - //SEG265 [85] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fa::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG266 [85] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fa::@6 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #5 bne b6_from_b5 jmp b16 - //SEG266 fa::@16 + //SEG267 fa::@16 b16: - //SEG267 [86] (byte) bc#110 ← ++ (byte) bc#44 -- vbuxx=_inc_vbuxx + //SEG268 [86] (byte) bc#110 ← ++ (byte) bc#44 -- vbuxx=_inc_vbuxx inx - //SEG268 [87] (byte~) bc#179 ← (byte) bc#110 -- vbuz1=vbuxx + //SEG269 [87] (byte~) bc#179 ← (byte) bc#110 -- vbuz1=vbuxx stx bc - //SEG269 [88] call fb - //SEG270 [110] phi from fa::@16 to fb [phi:fa::@16->fb] + //SEG270 [88] call fb + //SEG271 [110] phi from fa::@16 to fb [phi:fa::@16->fb] fb_from_b16: - //SEG271 [110] phi (byte) be#118 = (byte) be#112 [phi:fa::@16->fb#0] -- register_copy - //SEG272 [110] phi (byte) bd#106 = (byte) bd#100 [phi:fa::@16->fb#1] -- register_copy - //SEG273 [110] phi (byte) bc#114 = (byte~) bc#179 [phi:fa::@16->fb#2] -- register_copy + //SEG272 [110] phi (byte) be#118 = (byte) be#112 [phi:fa::@16->fb#0] -- register_copy + //SEG273 [110] phi (byte) bd#106 = (byte) bd#100 [phi:fa::@16->fb#1] -- register_copy + //SEG274 [110] phi (byte) bc#114 = (byte~) bc#179 [phi:fa::@16->fb#2] -- register_copy jsr fb - //SEG274 [89] phi from fa::@16 fa::@5 to fa::@6 [phi:fa::@16/fa::@5->fa::@6] + //SEG275 [89] phi from fa::@16 fa::@5 to fa::@6 [phi:fa::@16/fa::@5->fa::@6] b6_from_b16: b6_from_b5: - //SEG275 [89] phi (byte) be#113 = (byte) be#35 [phi:fa::@16/fa::@5->fa::@6#0] -- register_copy - //SEG276 [89] phi (byte) bd#101 = (byte) bd#35 [phi:fa::@16/fa::@5->fa::@6#1] -- register_copy - //SEG277 [89] phi (byte) bc#45 = (byte) bc#110 [phi:fa::@16/fa::@5->fa::@6#2] -- register_copy + //SEG276 [89] phi (byte) be#113 = (byte) be#35 [phi:fa::@16/fa::@5->fa::@6#0] -- register_copy + //SEG277 [89] phi (byte) bd#101 = (byte) bd#35 [phi:fa::@16/fa::@5->fa::@6#1] -- register_copy + //SEG278 [89] phi (byte) bc#45 = (byte) bc#110 [phi:fa::@16/fa::@5->fa::@6#2] -- register_copy jmp b6 - //SEG278 fa::@6 + //SEG279 fa::@6 b6: - //SEG279 [90] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fa::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG280 [90] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fa::@7 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #6 bne b7_from_b6 jmp b17 - //SEG280 fa::@17 + //SEG281 fa::@17 b17: - //SEG281 [91] (byte) bc#111 ← ++ (byte) bc#45 -- vbuxx=_inc_vbuxx + //SEG282 [91] (byte) bc#111 ← ++ (byte) bc#45 -- vbuxx=_inc_vbuxx inx - //SEG282 [92] (byte~) bc#180 ← (byte) bc#111 -- vbuz1=vbuxx + //SEG283 [92] (byte~) bc#180 ← (byte) bc#111 -- vbuz1=vbuxx stx bc - //SEG283 [93] call fb - //SEG284 [110] phi from fa::@17 to fb [phi:fa::@17->fb] + //SEG284 [93] call fb + //SEG285 [110] phi from fa::@17 to fb [phi:fa::@17->fb] fb_from_b17: - //SEG285 [110] phi (byte) be#118 = (byte) be#113 [phi:fa::@17->fb#0] -- register_copy - //SEG286 [110] phi (byte) bd#106 = (byte) bd#101 [phi:fa::@17->fb#1] -- register_copy - //SEG287 [110] phi (byte) bc#114 = (byte~) bc#180 [phi:fa::@17->fb#2] -- register_copy + //SEG286 [110] phi (byte) be#118 = (byte) be#113 [phi:fa::@17->fb#0] -- register_copy + //SEG287 [110] phi (byte) bd#106 = (byte) bd#101 [phi:fa::@17->fb#1] -- register_copy + //SEG288 [110] phi (byte) bc#114 = (byte~) bc#180 [phi:fa::@17->fb#2] -- register_copy jsr fb - //SEG288 [94] phi from fa::@17 fa::@6 to fa::@7 [phi:fa::@17/fa::@6->fa::@7] + //SEG289 [94] phi from fa::@17 fa::@6 to fa::@7 [phi:fa::@17/fa::@6->fa::@7] b7_from_b17: b7_from_b6: - //SEG289 [94] phi (byte) be#114 = (byte) be#35 [phi:fa::@17/fa::@6->fa::@7#0] -- register_copy - //SEG290 [94] phi (byte) bd#102 = (byte) bd#35 [phi:fa::@17/fa::@6->fa::@7#1] -- register_copy - //SEG291 [94] phi (byte) bc#46 = (byte) bc#111 [phi:fa::@17/fa::@6->fa::@7#2] -- register_copy + //SEG290 [94] phi (byte) be#114 = (byte) be#35 [phi:fa::@17/fa::@6->fa::@7#0] -- register_copy + //SEG291 [94] phi (byte) bd#102 = (byte) bd#35 [phi:fa::@17/fa::@6->fa::@7#1] -- register_copy + //SEG292 [94] phi (byte) bc#46 = (byte) bc#111 [phi:fa::@17/fa::@6->fa::@7#2] -- register_copy jmp b7 - //SEG292 fa::@7 + //SEG293 fa::@7 b7: - //SEG293 [95] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fa::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG294 [95] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fa::@8 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #7 bne b8_from_b7 jmp b18 - //SEG294 fa::@18 + //SEG295 fa::@18 b18: - //SEG295 [96] (byte) bc#112 ← ++ (byte) bc#46 -- vbuxx=_inc_vbuxx + //SEG296 [96] (byte) bc#112 ← ++ (byte) bc#46 -- vbuxx=_inc_vbuxx inx - //SEG296 [97] (byte~) bc#181 ← (byte) bc#112 -- vbuz1=vbuxx + //SEG297 [97] (byte~) bc#181 ← (byte) bc#112 -- vbuz1=vbuxx stx bc - //SEG297 [98] call fb - //SEG298 [110] phi from fa::@18 to fb [phi:fa::@18->fb] + //SEG298 [98] call fb + //SEG299 [110] phi from fa::@18 to fb [phi:fa::@18->fb] fb_from_b18: - //SEG299 [110] phi (byte) be#118 = (byte) be#114 [phi:fa::@18->fb#0] -- register_copy - //SEG300 [110] phi (byte) bd#106 = (byte) bd#102 [phi:fa::@18->fb#1] -- register_copy - //SEG301 [110] phi (byte) bc#114 = (byte~) bc#181 [phi:fa::@18->fb#2] -- register_copy + //SEG300 [110] phi (byte) be#118 = (byte) be#114 [phi:fa::@18->fb#0] -- register_copy + //SEG301 [110] phi (byte) bd#106 = (byte) bd#102 [phi:fa::@18->fb#1] -- register_copy + //SEG302 [110] phi (byte) bc#114 = (byte~) bc#181 [phi:fa::@18->fb#2] -- register_copy jsr fb - //SEG302 [99] phi from fa::@18 fa::@7 to fa::@8 [phi:fa::@18/fa::@7->fa::@8] + //SEG303 [99] phi from fa::@18 fa::@7 to fa::@8 [phi:fa::@18/fa::@7->fa::@8] b8_from_b18: b8_from_b7: - //SEG303 [99] phi (byte) be#115 = (byte) be#35 [phi:fa::@18/fa::@7->fa::@8#0] -- register_copy - //SEG304 [99] phi (byte) bd#103 = (byte) bd#35 [phi:fa::@18/fa::@7->fa::@8#1] -- register_copy - //SEG305 [99] phi (byte) bc#47 = (byte) bc#112 [phi:fa::@18/fa::@7->fa::@8#2] -- register_copy + //SEG304 [99] phi (byte) be#115 = (byte) be#35 [phi:fa::@18/fa::@7->fa::@8#0] -- register_copy + //SEG305 [99] phi (byte) bd#103 = (byte) bd#35 [phi:fa::@18/fa::@7->fa::@8#1] -- register_copy + //SEG306 [99] phi (byte) bc#47 = (byte) bc#112 [phi:fa::@18/fa::@7->fa::@8#2] -- register_copy jmp b8 - //SEG306 fa::@8 + //SEG307 fa::@8 b8: - //SEG307 [100] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fa::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG308 [100] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fa::@9 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #8 bne b9_from_b8 jmp b19 - //SEG308 fa::@19 + //SEG309 fa::@19 b19: - //SEG309 [101] (byte) bc#123 ← ++ (byte) bc#47 -- vbuxx=_inc_vbuxx + //SEG310 [101] (byte) bc#123 ← ++ (byte) bc#47 -- vbuxx=_inc_vbuxx inx - //SEG310 [102] (byte~) bc#182 ← (byte) bc#123 -- vbuz1=vbuxx + //SEG311 [102] (byte~) bc#182 ← (byte) bc#123 -- vbuz1=vbuxx stx bc - //SEG311 [103] call fb - //SEG312 [110] phi from fa::@19 to fb [phi:fa::@19->fb] + //SEG312 [103] call fb + //SEG313 [110] phi from fa::@19 to fb [phi:fa::@19->fb] fb_from_b19: - //SEG313 [110] phi (byte) be#118 = (byte) be#115 [phi:fa::@19->fb#0] -- register_copy - //SEG314 [110] phi (byte) bd#106 = (byte) bd#103 [phi:fa::@19->fb#1] -- register_copy - //SEG315 [110] phi (byte) bc#114 = (byte~) bc#182 [phi:fa::@19->fb#2] -- register_copy + //SEG314 [110] phi (byte) be#118 = (byte) be#115 [phi:fa::@19->fb#0] -- register_copy + //SEG315 [110] phi (byte) bd#106 = (byte) bd#103 [phi:fa::@19->fb#1] -- register_copy + //SEG316 [110] phi (byte) bc#114 = (byte~) bc#182 [phi:fa::@19->fb#2] -- register_copy jsr fb - //SEG316 [104] phi from fa::@19 fa::@8 to fa::@9 [phi:fa::@19/fa::@8->fa::@9] + //SEG317 [104] phi from fa::@19 fa::@8 to fa::@9 [phi:fa::@19/fa::@8->fa::@9] b9_from_b19: b9_from_b8: - //SEG317 [104] phi (byte) be#116 = (byte) be#35 [phi:fa::@19/fa::@8->fa::@9#0] -- register_copy - //SEG318 [104] phi (byte) bd#104 = (byte) bd#35 [phi:fa::@19/fa::@8->fa::@9#1] -- register_copy - //SEG319 [104] phi (byte) bc#113 = (byte) bc#123 [phi:fa::@19/fa::@8->fa::@9#2] -- register_copy + //SEG318 [104] phi (byte) be#116 = (byte) be#35 [phi:fa::@19/fa::@8->fa::@9#0] -- register_copy + //SEG319 [104] phi (byte) bd#104 = (byte) bd#35 [phi:fa::@19/fa::@8->fa::@9#1] -- register_copy + //SEG320 [104] phi (byte) bc#113 = (byte) bc#123 [phi:fa::@19/fa::@8->fa::@9#2] -- register_copy jmp b9 - //SEG320 fa::@9 + //SEG321 fa::@9 b9: - //SEG321 [105] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fa::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG322 [105] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fa::@return -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #9 bne breturn_from_b9 - //SEG322 [106] phi from fa::@9 to fa::@20 [phi:fa::@9->fa::@20] + //SEG323 [106] phi from fa::@9 to fa::@20 [phi:fa::@9->fa::@20] b20_from_b9: jmp b20 - //SEG323 fa::@20 + //SEG324 fa::@20 b20: - //SEG324 [107] call fb - //SEG325 [110] phi from fa::@20 to fb [phi:fa::@20->fb] + //SEG325 [107] call fb + //SEG326 [110] phi from fa::@20 to fb [phi:fa::@20->fb] fb_from_b20: - //SEG326 [110] phi (byte) be#118 = (byte) be#116 [phi:fa::@20->fb#0] -- register_copy - //SEG327 [110] phi (byte) bd#106 = (byte) bd#104 [phi:fa::@20->fb#1] -- register_copy - //SEG328 [110] phi (byte) bc#114 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fb#2] -- vbuz1=vbuc1 + //SEG327 [110] phi (byte) be#118 = (byte) be#116 [phi:fa::@20->fb#0] -- register_copy + //SEG328 [110] phi (byte) bd#106 = (byte) bd#104 [phi:fa::@20->fb#1] -- register_copy + //SEG329 [110] phi (byte) bc#114 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fb#2] -- vbuz1=vbuc1 lda #0 sta bc jsr fb - //SEG329 [108] phi from fa::@20 to fa::@return [phi:fa::@20->fa::@return] + //SEG330 [108] phi from fa::@20 to fa::@return [phi:fa::@20->fa::@return] breturn_from_b20: - //SEG330 [108] phi (byte) be#24 = (byte) be#35 [phi:fa::@20->fa::@return#0] -- register_copy - //SEG331 [108] phi (byte) bd#24 = (byte) bd#35 [phi:fa::@20->fa::@return#1] -- register_copy - //SEG332 [108] phi (byte) bc#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fa::@return#2] -- vbuxx=vbuc1 + //SEG331 [108] phi (byte) be#24 = (byte) be#35 [phi:fa::@20->fa::@return#0] -- register_copy + //SEG332 [108] phi (byte) bd#24 = (byte) bd#35 [phi:fa::@20->fa::@return#1] -- register_copy + //SEG333 [108] phi (byte) bc#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fa::@return#2] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG333 [108] phi from fa::@9 to fa::@return [phi:fa::@9->fa::@return] + //SEG334 [108] phi from fa::@9 to fa::@return [phi:fa::@9->fa::@return] breturn_from_b9: - //SEG334 [108] phi (byte) be#24 = (byte) be#116 [phi:fa::@9->fa::@return#0] -- register_copy - //SEG335 [108] phi (byte) bd#24 = (byte) bd#104 [phi:fa::@9->fa::@return#1] -- register_copy - //SEG336 [108] phi (byte) bc#24 = (byte) bc#113 [phi:fa::@9->fa::@return#2] -- register_copy + //SEG335 [108] phi (byte) be#24 = (byte) be#116 [phi:fa::@9->fa::@return#0] -- register_copy + //SEG336 [108] phi (byte) bd#24 = (byte) bd#104 [phi:fa::@9->fa::@return#1] -- register_copy + //SEG337 [108] phi (byte) bc#24 = (byte) bc#113 [phi:fa::@9->fa::@return#2] -- register_copy jmp breturn - //SEG337 fa::@return + //SEG338 fa::@return breturn: - //SEG338 [109] return + //SEG339 [109] return rts } -//SEG339 fb +//SEG340 fb fb: { - //SEG340 [111] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fb::@1 -- vbuz1_neq_0_then_la1 + //SEG341 [111] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fb::@1 -- vbuz1_neq_0_then_la1 lda bc cmp #0 bne b1_from_fb jmp b11 - //SEG341 fb::@11 + //SEG342 fb::@11 b11: - //SEG342 [112] (byte) bd#148 ← ++ (byte) bd#106 -- vbuyy=_inc_vbuyy + //SEG343 [112] (byte) bd#148 ← ++ (byte) bd#106 -- vbuyy=_inc_vbuyy iny - //SEG343 [113] (byte~) bd#238 ← (byte) bd#148 -- vbuaa=vbuyy + //SEG344 [113] (byte~) bd#238 ← (byte) bd#148 -- vbuaa=vbuyy tya - //SEG344 [114] call fc - //SEG345 [161] phi from fb::@11 to fc [phi:fb::@11->fc] + //SEG345 [114] call fc + //SEG346 [161] phi from fb::@11 to fc [phi:fb::@11->fc] fc_from_b11: - //SEG346 [161] phi (byte) be#129 = (byte) be#118 [phi:fb::@11->fc#0] -- register_copy - //SEG347 [161] phi (byte) bd#117 = (byte~) bd#238 [phi:fb::@11->fc#1] -- register_copy + //SEG347 [161] phi (byte) be#129 = (byte) be#118 [phi:fb::@11->fc#0] -- register_copy + //SEG348 [161] phi (byte) bd#117 = (byte~) bd#238 [phi:fb::@11->fc#1] -- register_copy jsr fc - //SEG348 [115] phi from fb fb::@11 to fb::@1 [phi:fb/fb::@11->fb::@1] + //SEG349 [115] phi from fb fb::@11 to fb::@1 [phi:fb/fb::@11->fb::@1] b1_from_fb: b1_from_b11: - //SEG349 [115] phi (byte) be#119 = (byte) be#118 [phi:fb/fb::@11->fb::@1#0] -- register_copy - //SEG350 [115] phi (byte) bd#107 = (byte) bd#106 [phi:fb/fb::@11->fb::@1#1] -- register_copy + //SEG350 [115] phi (byte) be#119 = (byte) be#118 [phi:fb/fb::@11->fb::@1#0] -- register_copy + //SEG351 [115] phi (byte) bd#107 = (byte) bd#106 [phi:fb/fb::@11->fb::@1#1] -- register_copy jmp b1 - //SEG351 fb::@1 + //SEG352 fb::@1 b1: - //SEG352 [116] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fb::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG353 [116] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fb::@2 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #1 bne b2_from_b1 jmp b12 - //SEG353 fb::@12 + //SEG354 fb::@12 b12: - //SEG354 [117] (byte) bd#149 ← ++ (byte) bd#107 -- vbuyy=_inc_vbuyy + //SEG355 [117] (byte) bd#149 ← ++ (byte) bd#107 -- vbuyy=_inc_vbuyy iny - //SEG355 [118] (byte~) bd#239 ← (byte) bd#149 -- vbuaa=vbuyy + //SEG356 [118] (byte~) bd#239 ← (byte) bd#149 -- vbuaa=vbuyy tya - //SEG356 [119] call fc - //SEG357 [161] phi from fb::@12 to fc [phi:fb::@12->fc] + //SEG357 [119] call fc + //SEG358 [161] phi from fb::@12 to fc [phi:fb::@12->fc] fc_from_b12: - //SEG358 [161] phi (byte) be#129 = (byte) be#119 [phi:fb::@12->fc#0] -- register_copy - //SEG359 [161] phi (byte) bd#117 = (byte~) bd#239 [phi:fb::@12->fc#1] -- register_copy + //SEG359 [161] phi (byte) be#129 = (byte) be#119 [phi:fb::@12->fc#0] -- register_copy + //SEG360 [161] phi (byte) bd#117 = (byte~) bd#239 [phi:fb::@12->fc#1] -- register_copy jsr fc - //SEG360 [120] phi from fb::@1 fb::@12 to fb::@2 [phi:fb::@1/fb::@12->fb::@2] + //SEG361 [120] phi from fb::@1 fb::@12 to fb::@2 [phi:fb::@1/fb::@12->fb::@2] b2_from_b1: b2_from_b12: - //SEG361 [120] phi (byte) be#120 = (byte) be#119 [phi:fb::@1/fb::@12->fb::@2#0] -- register_copy - //SEG362 [120] phi (byte) bd#108 = (byte) bd#107 [phi:fb::@1/fb::@12->fb::@2#1] -- register_copy + //SEG362 [120] phi (byte) be#120 = (byte) be#119 [phi:fb::@1/fb::@12->fb::@2#0] -- register_copy + //SEG363 [120] phi (byte) bd#108 = (byte) bd#107 [phi:fb::@1/fb::@12->fb::@2#1] -- register_copy jmp b2 - //SEG363 fb::@2 + //SEG364 fb::@2 b2: - //SEG364 [121] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fb::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG365 [121] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fb::@3 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #2 bne b3_from_b2 jmp b13 - //SEG365 fb::@13 + //SEG366 fb::@13 b13: - //SEG366 [122] (byte) bd#150 ← ++ (byte) bd#108 -- vbuyy=_inc_vbuyy + //SEG367 [122] (byte) bd#150 ← ++ (byte) bd#108 -- vbuyy=_inc_vbuyy iny - //SEG367 [123] (byte~) bd#240 ← (byte) bd#150 -- vbuaa=vbuyy + //SEG368 [123] (byte~) bd#240 ← (byte) bd#150 -- vbuaa=vbuyy tya - //SEG368 [124] call fc - //SEG369 [161] phi from fb::@13 to fc [phi:fb::@13->fc] + //SEG369 [124] call fc + //SEG370 [161] phi from fb::@13 to fc [phi:fb::@13->fc] fc_from_b13: - //SEG370 [161] phi (byte) be#129 = (byte) be#120 [phi:fb::@13->fc#0] -- register_copy - //SEG371 [161] phi (byte) bd#117 = (byte~) bd#240 [phi:fb::@13->fc#1] -- register_copy + //SEG371 [161] phi (byte) be#129 = (byte) be#120 [phi:fb::@13->fc#0] -- register_copy + //SEG372 [161] phi (byte) bd#117 = (byte~) bd#240 [phi:fb::@13->fc#1] -- register_copy jsr fc - //SEG372 [125] phi from fb::@13 fb::@2 to fb::@3 [phi:fb::@13/fb::@2->fb::@3] + //SEG373 [125] phi from fb::@13 fb::@2 to fb::@3 [phi:fb::@13/fb::@2->fb::@3] b3_from_b13: b3_from_b2: - //SEG373 [125] phi (byte) be#121 = (byte) be#46 [phi:fb::@13/fb::@2->fb::@3#0] -- register_copy - //SEG374 [125] phi (byte) bd#109 = (byte) bd#150 [phi:fb::@13/fb::@2->fb::@3#1] -- register_copy + //SEG374 [125] phi (byte) be#121 = (byte) be#46 [phi:fb::@13/fb::@2->fb::@3#0] -- register_copy + //SEG375 [125] phi (byte) bd#109 = (byte) bd#150 [phi:fb::@13/fb::@2->fb::@3#1] -- register_copy jmp b3 - //SEG375 fb::@3 + //SEG376 fb::@3 b3: - //SEG376 [126] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fb::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG377 [126] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fb::@4 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #3 bne b4_from_b3 jmp b14 - //SEG377 fb::@14 + //SEG378 fb::@14 b14: - //SEG378 [127] (byte) bd#151 ← ++ (byte) bd#109 -- vbuyy=_inc_vbuyy + //SEG379 [127] (byte) bd#151 ← ++ (byte) bd#109 -- vbuyy=_inc_vbuyy iny - //SEG379 [128] (byte~) bd#241 ← (byte) bd#151 -- vbuaa=vbuyy + //SEG380 [128] (byte~) bd#241 ← (byte) bd#151 -- vbuaa=vbuyy tya - //SEG380 [129] call fc - //SEG381 [161] phi from fb::@14 to fc [phi:fb::@14->fc] + //SEG381 [129] call fc + //SEG382 [161] phi from fb::@14 to fc [phi:fb::@14->fc] fc_from_b14: - //SEG382 [161] phi (byte) be#129 = (byte) be#121 [phi:fb::@14->fc#0] -- register_copy - //SEG383 [161] phi (byte) bd#117 = (byte~) bd#241 [phi:fb::@14->fc#1] -- register_copy + //SEG383 [161] phi (byte) be#129 = (byte) be#121 [phi:fb::@14->fc#0] -- register_copy + //SEG384 [161] phi (byte) bd#117 = (byte~) bd#241 [phi:fb::@14->fc#1] -- register_copy jsr fc - //SEG384 [130] phi from fb::@14 fb::@3 to fb::@4 [phi:fb::@14/fb::@3->fb::@4] + //SEG385 [130] phi from fb::@14 fb::@3 to fb::@4 [phi:fb::@14/fb::@3->fb::@4] b4_from_b14: b4_from_b3: - //SEG385 [130] phi (byte) be#122 = (byte) be#46 [phi:fb::@14/fb::@3->fb::@4#0] -- register_copy - //SEG386 [130] phi (byte) bd#110 = (byte) bd#151 [phi:fb::@14/fb::@3->fb::@4#1] -- register_copy + //SEG386 [130] phi (byte) be#122 = (byte) be#46 [phi:fb::@14/fb::@3->fb::@4#0] -- register_copy + //SEG387 [130] phi (byte) bd#110 = (byte) bd#151 [phi:fb::@14/fb::@3->fb::@4#1] -- register_copy jmp b4 - //SEG387 fb::@4 + //SEG388 fb::@4 b4: - //SEG388 [131] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fb::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG389 [131] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fb::@5 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #4 bne b5_from_b4 jmp b15 - //SEG389 fb::@15 + //SEG390 fb::@15 b15: - //SEG390 [132] (byte) bd#152 ← ++ (byte) bd#110 -- vbuyy=_inc_vbuyy + //SEG391 [132] (byte) bd#152 ← ++ (byte) bd#110 -- vbuyy=_inc_vbuyy iny - //SEG391 [133] (byte~) bd#242 ← (byte) bd#152 -- vbuaa=vbuyy + //SEG392 [133] (byte~) bd#242 ← (byte) bd#152 -- vbuaa=vbuyy tya - //SEG392 [134] call fc - //SEG393 [161] phi from fb::@15 to fc [phi:fb::@15->fc] + //SEG393 [134] call fc + //SEG394 [161] phi from fb::@15 to fc [phi:fb::@15->fc] fc_from_b15: - //SEG394 [161] phi (byte) be#129 = (byte) be#122 [phi:fb::@15->fc#0] -- register_copy - //SEG395 [161] phi (byte) bd#117 = (byte~) bd#242 [phi:fb::@15->fc#1] -- register_copy + //SEG395 [161] phi (byte) be#129 = (byte) be#122 [phi:fb::@15->fc#0] -- register_copy + //SEG396 [161] phi (byte) bd#117 = (byte~) bd#242 [phi:fb::@15->fc#1] -- register_copy jsr fc - //SEG396 [135] phi from fb::@15 fb::@4 to fb::@5 [phi:fb::@15/fb::@4->fb::@5] + //SEG397 [135] phi from fb::@15 fb::@4 to fb::@5 [phi:fb::@15/fb::@4->fb::@5] b5_from_b15: b5_from_b4: - //SEG397 [135] phi (byte) be#123 = (byte) be#46 [phi:fb::@15/fb::@4->fb::@5#0] -- register_copy - //SEG398 [135] phi (byte) bd#111 = (byte) bd#152 [phi:fb::@15/fb::@4->fb::@5#1] -- register_copy + //SEG398 [135] phi (byte) be#123 = (byte) be#46 [phi:fb::@15/fb::@4->fb::@5#0] -- register_copy + //SEG399 [135] phi (byte) bd#111 = (byte) bd#152 [phi:fb::@15/fb::@4->fb::@5#1] -- register_copy jmp b5 - //SEG399 fb::@5 + //SEG400 fb::@5 b5: - //SEG400 [136] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fb::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG401 [136] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fb::@6 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #5 bne b6_from_b5 jmp b16 - //SEG401 fb::@16 + //SEG402 fb::@16 b16: - //SEG402 [137] (byte) bd#153 ← ++ (byte) bd#111 -- vbuyy=_inc_vbuyy + //SEG403 [137] (byte) bd#153 ← ++ (byte) bd#111 -- vbuyy=_inc_vbuyy iny - //SEG403 [138] (byte~) bd#243 ← (byte) bd#153 -- vbuaa=vbuyy + //SEG404 [138] (byte~) bd#243 ← (byte) bd#153 -- vbuaa=vbuyy tya - //SEG404 [139] call fc - //SEG405 [161] phi from fb::@16 to fc [phi:fb::@16->fc] + //SEG405 [139] call fc + //SEG406 [161] phi from fb::@16 to fc [phi:fb::@16->fc] fc_from_b16: - //SEG406 [161] phi (byte) be#129 = (byte) be#123 [phi:fb::@16->fc#0] -- register_copy - //SEG407 [161] phi (byte) bd#117 = (byte~) bd#243 [phi:fb::@16->fc#1] -- register_copy + //SEG407 [161] phi (byte) be#129 = (byte) be#123 [phi:fb::@16->fc#0] -- register_copy + //SEG408 [161] phi (byte) bd#117 = (byte~) bd#243 [phi:fb::@16->fc#1] -- register_copy jsr fc - //SEG408 [140] phi from fb::@16 fb::@5 to fb::@6 [phi:fb::@16/fb::@5->fb::@6] + //SEG409 [140] phi from fb::@16 fb::@5 to fb::@6 [phi:fb::@16/fb::@5->fb::@6] b6_from_b16: b6_from_b5: - //SEG409 [140] phi (byte) be#124 = (byte) be#46 [phi:fb::@16/fb::@5->fb::@6#0] -- register_copy - //SEG410 [140] phi (byte) bd#112 = (byte) bd#153 [phi:fb::@16/fb::@5->fb::@6#1] -- register_copy + //SEG410 [140] phi (byte) be#124 = (byte) be#46 [phi:fb::@16/fb::@5->fb::@6#0] -- register_copy + //SEG411 [140] phi (byte) bd#112 = (byte) bd#153 [phi:fb::@16/fb::@5->fb::@6#1] -- register_copy jmp b6 - //SEG411 fb::@6 + //SEG412 fb::@6 b6: - //SEG412 [141] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fb::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG413 [141] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fb::@7 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #6 bne b7_from_b6 jmp b17 - //SEG413 fb::@17 + //SEG414 fb::@17 b17: - //SEG414 [142] (byte) bd#154 ← ++ (byte) bd#112 -- vbuyy=_inc_vbuyy + //SEG415 [142] (byte) bd#154 ← ++ (byte) bd#112 -- vbuyy=_inc_vbuyy iny - //SEG415 [143] (byte~) bd#244 ← (byte) bd#154 -- vbuaa=vbuyy + //SEG416 [143] (byte~) bd#244 ← (byte) bd#154 -- vbuaa=vbuyy tya - //SEG416 [144] call fc - //SEG417 [161] phi from fb::@17 to fc [phi:fb::@17->fc] + //SEG417 [144] call fc + //SEG418 [161] phi from fb::@17 to fc [phi:fb::@17->fc] fc_from_b17: - //SEG418 [161] phi (byte) be#129 = (byte) be#124 [phi:fb::@17->fc#0] -- register_copy - //SEG419 [161] phi (byte) bd#117 = (byte~) bd#244 [phi:fb::@17->fc#1] -- register_copy + //SEG419 [161] phi (byte) be#129 = (byte) be#124 [phi:fb::@17->fc#0] -- register_copy + //SEG420 [161] phi (byte) bd#117 = (byte~) bd#244 [phi:fb::@17->fc#1] -- register_copy jsr fc - //SEG420 [145] phi from fb::@17 fb::@6 to fb::@7 [phi:fb::@17/fb::@6->fb::@7] + //SEG421 [145] phi from fb::@17 fb::@6 to fb::@7 [phi:fb::@17/fb::@6->fb::@7] b7_from_b17: b7_from_b6: - //SEG421 [145] phi (byte) be#125 = (byte) be#46 [phi:fb::@17/fb::@6->fb::@7#0] -- register_copy - //SEG422 [145] phi (byte) bd#113 = (byte) bd#154 [phi:fb::@17/fb::@6->fb::@7#1] -- register_copy + //SEG422 [145] phi (byte) be#125 = (byte) be#46 [phi:fb::@17/fb::@6->fb::@7#0] -- register_copy + //SEG423 [145] phi (byte) bd#113 = (byte) bd#154 [phi:fb::@17/fb::@6->fb::@7#1] -- register_copy jmp b7 - //SEG423 fb::@7 + //SEG424 fb::@7 b7: - //SEG424 [146] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fb::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG425 [146] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fb::@8 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #7 bne b8_from_b7 jmp b18 - //SEG425 fb::@18 + //SEG426 fb::@18 b18: - //SEG426 [147] (byte) bd#155 ← ++ (byte) bd#113 -- vbuyy=_inc_vbuyy + //SEG427 [147] (byte) bd#155 ← ++ (byte) bd#113 -- vbuyy=_inc_vbuyy iny - //SEG427 [148] (byte~) bd#245 ← (byte) bd#155 -- vbuaa=vbuyy + //SEG428 [148] (byte~) bd#245 ← (byte) bd#155 -- vbuaa=vbuyy tya - //SEG428 [149] call fc - //SEG429 [161] phi from fb::@18 to fc [phi:fb::@18->fc] + //SEG429 [149] call fc + //SEG430 [161] phi from fb::@18 to fc [phi:fb::@18->fc] fc_from_b18: - //SEG430 [161] phi (byte) be#129 = (byte) be#125 [phi:fb::@18->fc#0] -- register_copy - //SEG431 [161] phi (byte) bd#117 = (byte~) bd#245 [phi:fb::@18->fc#1] -- register_copy + //SEG431 [161] phi (byte) be#129 = (byte) be#125 [phi:fb::@18->fc#0] -- register_copy + //SEG432 [161] phi (byte) bd#117 = (byte~) bd#245 [phi:fb::@18->fc#1] -- register_copy jsr fc - //SEG432 [150] phi from fb::@18 fb::@7 to fb::@8 [phi:fb::@18/fb::@7->fb::@8] + //SEG433 [150] phi from fb::@18 fb::@7 to fb::@8 [phi:fb::@18/fb::@7->fb::@8] b8_from_b18: b8_from_b7: - //SEG433 [150] phi (byte) be#126 = (byte) be#46 [phi:fb::@18/fb::@7->fb::@8#0] -- register_copy - //SEG434 [150] phi (byte) bd#114 = (byte) bd#155 [phi:fb::@18/fb::@7->fb::@8#1] -- register_copy + //SEG434 [150] phi (byte) be#126 = (byte) be#46 [phi:fb::@18/fb::@7->fb::@8#0] -- register_copy + //SEG435 [150] phi (byte) bd#114 = (byte) bd#155 [phi:fb::@18/fb::@7->fb::@8#1] -- register_copy jmp b8 - //SEG435 fb::@8 + //SEG436 fb::@8 b8: - //SEG436 [151] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fb::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG437 [151] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fb::@9 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #8 bne b9_from_b8 jmp b19 - //SEG437 fb::@19 + //SEG438 fb::@19 b19: - //SEG438 [152] (byte) bd#157 ← ++ (byte) bd#114 -- vbuyy=_inc_vbuyy + //SEG439 [152] (byte) bd#157 ← ++ (byte) bd#114 -- vbuyy=_inc_vbuyy iny - //SEG439 [153] (byte~) bd#246 ← (byte) bd#157 -- vbuaa=vbuyy + //SEG440 [153] (byte~) bd#246 ← (byte) bd#157 -- vbuaa=vbuyy tya - //SEG440 [154] call fc - //SEG441 [161] phi from fb::@19 to fc [phi:fb::@19->fc] + //SEG441 [154] call fc + //SEG442 [161] phi from fb::@19 to fc [phi:fb::@19->fc] fc_from_b19: - //SEG442 [161] phi (byte) be#129 = (byte) be#126 [phi:fb::@19->fc#0] -- register_copy - //SEG443 [161] phi (byte) bd#117 = (byte~) bd#246 [phi:fb::@19->fc#1] -- register_copy + //SEG443 [161] phi (byte) be#129 = (byte) be#126 [phi:fb::@19->fc#0] -- register_copy + //SEG444 [161] phi (byte) bd#117 = (byte~) bd#246 [phi:fb::@19->fc#1] -- register_copy jsr fc - //SEG444 [155] phi from fb::@19 fb::@8 to fb::@9 [phi:fb::@19/fb::@8->fb::@9] + //SEG445 [155] phi from fb::@19 fb::@8 to fb::@9 [phi:fb::@19/fb::@8->fb::@9] b9_from_b19: b9_from_b8: - //SEG445 [155] phi (byte) be#127 = (byte) be#46 [phi:fb::@19/fb::@8->fb::@9#0] -- register_copy - //SEG446 [155] phi (byte) bd#115 = (byte) bd#157 [phi:fb::@19/fb::@8->fb::@9#1] -- register_copy + //SEG446 [155] phi (byte) be#127 = (byte) be#46 [phi:fb::@19/fb::@8->fb::@9#0] -- register_copy + //SEG447 [155] phi (byte) bd#115 = (byte) bd#157 [phi:fb::@19/fb::@8->fb::@9#1] -- register_copy jmp b9 - //SEG447 fb::@9 + //SEG448 fb::@9 b9: - //SEG448 [156] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fb::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG449 [156] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fb::@return -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #9 bne breturn_from_b9 - //SEG449 [157] phi from fb::@9 to fb::@20 [phi:fb::@9->fb::@20] + //SEG450 [157] phi from fb::@9 to fb::@20 [phi:fb::@9->fb::@20] b20_from_b9: jmp b20 - //SEG450 fb::@20 + //SEG451 fb::@20 b20: - //SEG451 [158] call fc - //SEG452 [161] phi from fb::@20 to fc [phi:fb::@20->fc] + //SEG452 [158] call fc + //SEG453 [161] phi from fb::@20 to fc [phi:fb::@20->fc] fc_from_b20: - //SEG453 [161] phi (byte) be#129 = (byte) be#127 [phi:fb::@20->fc#0] -- register_copy - //SEG454 [161] phi (byte) bd#117 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fc#1] -- vbuaa=vbuc1 + //SEG454 [161] phi (byte) be#129 = (byte) be#127 [phi:fb::@20->fc#0] -- register_copy + //SEG455 [161] phi (byte) bd#117 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fc#1] -- vbuaa=vbuc1 lda #0 jsr fc - //SEG455 [159] phi from fb::@20 to fb::@return [phi:fb::@20->fb::@return] + //SEG456 [159] phi from fb::@20 to fb::@return [phi:fb::@20->fb::@return] breturn_from_b20: - //SEG456 [159] phi (byte) be#35 = (byte) be#46 [phi:fb::@20->fb::@return#0] -- register_copy - //SEG457 [159] phi (byte) bd#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fb::@return#1] -- vbuyy=vbuc1 + //SEG457 [159] phi (byte) be#35 = (byte) be#46 [phi:fb::@20->fb::@return#0] -- register_copy + //SEG458 [159] phi (byte) bd#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fb::@return#1] -- vbuyy=vbuc1 ldy #0 jmp breturn - //SEG458 [159] phi from fb::@9 to fb::@return [phi:fb::@9->fb::@return] + //SEG459 [159] phi from fb::@9 to fb::@return [phi:fb::@9->fb::@return] breturn_from_b9: - //SEG459 [159] phi (byte) be#35 = (byte) be#127 [phi:fb::@9->fb::@return#0] -- register_copy - //SEG460 [159] phi (byte) bd#35 = (byte) bd#115 [phi:fb::@9->fb::@return#1] -- register_copy + //SEG460 [159] phi (byte) be#35 = (byte) be#127 [phi:fb::@9->fb::@return#0] -- register_copy + //SEG461 [159] phi (byte) bd#35 = (byte) bd#115 [phi:fb::@9->fb::@return#1] -- register_copy jmp breturn - //SEG461 fb::@return + //SEG462 fb::@return breturn: - //SEG462 [160] return + //SEG463 [160] return rts } -//SEG463 fc +//SEG464 fc fc: { - //SEG464 [162] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fc::@1 -- vbuaa_neq_0_then_la1 + //SEG465 [162] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fc::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1_from_fc jmp b11 - //SEG465 fc::@11 + //SEG466 fc::@11 b11: - //SEG466 [163] (byte) be#36 ← ++ (byte) be#129 -- vbuz1=_inc_vbuz1 + //SEG467 [163] (byte) be#36 ← ++ (byte) be#129 -- vbuz1=_inc_vbuz1 inc be - //SEG467 [164] phi from fc fc::@11 to fc::@1 [phi:fc/fc::@11->fc::@1] + //SEG468 [164] phi from fc fc::@11 to fc::@1 [phi:fc/fc::@11->fc::@1] b1_from_fc: b1_from_b11: - //SEG468 [164] phi (byte) be#130 = (byte) be#129 [phi:fc/fc::@11->fc::@1#0] -- register_copy + //SEG469 [164] phi (byte) be#130 = (byte) be#129 [phi:fc/fc::@11->fc::@1#0] -- register_copy jmp b1 - //SEG469 fc::@1 + //SEG470 fc::@1 b1: - //SEG470 [165] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fc::@2 -- vbuaa_neq_vbuc1_then_la1 + //SEG471 [165] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fc::@2 -- vbuaa_neq_vbuc1_then_la1 cmp #1 bne b2_from_b1 jmp b12 - //SEG471 fc::@12 + //SEG472 fc::@12 b12: - //SEG472 [166] (byte) be#37 ← ++ (byte) be#130 -- vbuz1=_inc_vbuz1 + //SEG473 [166] (byte) be#37 ← ++ (byte) be#130 -- vbuz1=_inc_vbuz1 inc be - //SEG473 [167] phi from fc::@1 fc::@12 to fc::@2 [phi:fc::@1/fc::@12->fc::@2] + //SEG474 [167] phi from fc::@1 fc::@12 to fc::@2 [phi:fc::@1/fc::@12->fc::@2] b2_from_b1: b2_from_b12: - //SEG474 [167] phi (byte) be#131 = (byte) be#130 [phi:fc::@1/fc::@12->fc::@2#0] -- register_copy + //SEG475 [167] phi (byte) be#131 = (byte) be#130 [phi:fc::@1/fc::@12->fc::@2#0] -- register_copy jmp b2 - //SEG475 fc::@2 + //SEG476 fc::@2 b2: - //SEG476 [168] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fc::@3 -- vbuaa_neq_vbuc1_then_la1 + //SEG477 [168] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fc::@3 -- vbuaa_neq_vbuc1_then_la1 cmp #2 bne b3_from_b2 jmp b13 - //SEG477 fc::@13 + //SEG478 fc::@13 b13: - //SEG478 [169] (byte) be#38 ← ++ (byte) be#131 -- vbuz1=_inc_vbuz1 + //SEG479 [169] (byte) be#38 ← ++ (byte) be#131 -- vbuz1=_inc_vbuz1 inc be - //SEG479 [170] phi from fc::@13 fc::@2 to fc::@3 [phi:fc::@13/fc::@2->fc::@3] + //SEG480 [170] phi from fc::@13 fc::@2 to fc::@3 [phi:fc::@13/fc::@2->fc::@3] b3_from_b13: b3_from_b2: - //SEG480 [170] phi (byte) be#132 = (byte) be#38 [phi:fc::@13/fc::@2->fc::@3#0] -- register_copy + //SEG481 [170] phi (byte) be#132 = (byte) be#38 [phi:fc::@13/fc::@2->fc::@3#0] -- register_copy jmp b3 - //SEG481 fc::@3 + //SEG482 fc::@3 b3: - //SEG482 [171] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fc::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG483 [171] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fc::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #3 bne b4_from_b3 jmp b14 - //SEG483 fc::@14 + //SEG484 fc::@14 b14: - //SEG484 [172] (byte) be#39 ← ++ (byte) be#132 -- vbuz1=_inc_vbuz1 + //SEG485 [172] (byte) be#39 ← ++ (byte) be#132 -- vbuz1=_inc_vbuz1 inc be - //SEG485 [173] phi from fc::@14 fc::@3 to fc::@4 [phi:fc::@14/fc::@3->fc::@4] + //SEG486 [173] phi from fc::@14 fc::@3 to fc::@4 [phi:fc::@14/fc::@3->fc::@4] b4_from_b14: b4_from_b3: - //SEG486 [173] phi (byte) be#133 = (byte) be#39 [phi:fc::@14/fc::@3->fc::@4#0] -- register_copy + //SEG487 [173] phi (byte) be#133 = (byte) be#39 [phi:fc::@14/fc::@3->fc::@4#0] -- register_copy jmp b4 - //SEG487 fc::@4 + //SEG488 fc::@4 b4: - //SEG488 [174] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fc::@5 -- vbuaa_neq_vbuc1_then_la1 + //SEG489 [174] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fc::@5 -- vbuaa_neq_vbuc1_then_la1 cmp #4 bne b5_from_b4 jmp b15 - //SEG489 fc::@15 + //SEG490 fc::@15 b15: - //SEG490 [175] (byte) be#40 ← ++ (byte) be#133 -- vbuz1=_inc_vbuz1 + //SEG491 [175] (byte) be#40 ← ++ (byte) be#133 -- vbuz1=_inc_vbuz1 inc be - //SEG491 [176] phi from fc::@15 fc::@4 to fc::@5 [phi:fc::@15/fc::@4->fc::@5] + //SEG492 [176] phi from fc::@15 fc::@4 to fc::@5 [phi:fc::@15/fc::@4->fc::@5] b5_from_b15: b5_from_b4: - //SEG492 [176] phi (byte) be#134 = (byte) be#40 [phi:fc::@15/fc::@4->fc::@5#0] -- register_copy + //SEG493 [176] phi (byte) be#134 = (byte) be#40 [phi:fc::@15/fc::@4->fc::@5#0] -- register_copy jmp b5 - //SEG493 fc::@5 + //SEG494 fc::@5 b5: - //SEG494 [177] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fc::@6 -- vbuaa_neq_vbuc1_then_la1 + //SEG495 [177] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fc::@6 -- vbuaa_neq_vbuc1_then_la1 cmp #5 bne b6_from_b5 jmp b16 - //SEG495 fc::@16 + //SEG496 fc::@16 b16: - //SEG496 [178] (byte) be#41 ← ++ (byte) be#134 -- vbuz1=_inc_vbuz1 + //SEG497 [178] (byte) be#41 ← ++ (byte) be#134 -- vbuz1=_inc_vbuz1 inc be - //SEG497 [179] phi from fc::@16 fc::@5 to fc::@6 [phi:fc::@16/fc::@5->fc::@6] + //SEG498 [179] phi from fc::@16 fc::@5 to fc::@6 [phi:fc::@16/fc::@5->fc::@6] b6_from_b16: b6_from_b5: - //SEG498 [179] phi (byte) be#135 = (byte) be#41 [phi:fc::@16/fc::@5->fc::@6#0] -- register_copy + //SEG499 [179] phi (byte) be#135 = (byte) be#41 [phi:fc::@16/fc::@5->fc::@6#0] -- register_copy jmp b6 - //SEG499 fc::@6 + //SEG500 fc::@6 b6: - //SEG500 [180] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fc::@7 -- vbuaa_neq_vbuc1_then_la1 + //SEG501 [180] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fc::@7 -- vbuaa_neq_vbuc1_then_la1 cmp #6 bne b7_from_b6 jmp b17 - //SEG501 fc::@17 + //SEG502 fc::@17 b17: - //SEG502 [181] (byte) be#42 ← ++ (byte) be#135 -- vbuz1=_inc_vbuz1 + //SEG503 [181] (byte) be#42 ← ++ (byte) be#135 -- vbuz1=_inc_vbuz1 inc be - //SEG503 [182] phi from fc::@17 fc::@6 to fc::@7 [phi:fc::@17/fc::@6->fc::@7] + //SEG504 [182] phi from fc::@17 fc::@6 to fc::@7 [phi:fc::@17/fc::@6->fc::@7] b7_from_b17: b7_from_b6: - //SEG504 [182] phi (byte) be#136 = (byte) be#42 [phi:fc::@17/fc::@6->fc::@7#0] -- register_copy + //SEG505 [182] phi (byte) be#136 = (byte) be#42 [phi:fc::@17/fc::@6->fc::@7#0] -- register_copy jmp b7 - //SEG505 fc::@7 + //SEG506 fc::@7 b7: - //SEG506 [183] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fc::@8 -- vbuaa_neq_vbuc1_then_la1 + //SEG507 [183] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fc::@8 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b8_from_b7 jmp b18 - //SEG507 fc::@18 + //SEG508 fc::@18 b18: - //SEG508 [184] (byte) be#43 ← ++ (byte) be#136 -- vbuz1=_inc_vbuz1 + //SEG509 [184] (byte) be#43 ← ++ (byte) be#136 -- vbuz1=_inc_vbuz1 inc be - //SEG509 [185] phi from fc::@18 fc::@7 to fc::@8 [phi:fc::@18/fc::@7->fc::@8] + //SEG510 [185] phi from fc::@18 fc::@7 to fc::@8 [phi:fc::@18/fc::@7->fc::@8] b8_from_b18: b8_from_b7: - //SEG510 [185] phi (byte) be#137 = (byte) be#43 [phi:fc::@18/fc::@7->fc::@8#0] -- register_copy + //SEG511 [185] phi (byte) be#137 = (byte) be#43 [phi:fc::@18/fc::@7->fc::@8#0] -- register_copy jmp b8 - //SEG511 fc::@8 + //SEG512 fc::@8 b8: - //SEG512 [186] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fc::@9 -- vbuaa_neq_vbuc1_then_la1 + //SEG513 [186] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fc::@9 -- vbuaa_neq_vbuc1_then_la1 cmp #8 bne b9_from_b8 jmp b19 - //SEG513 fc::@19 + //SEG514 fc::@19 b19: - //SEG514 [187] (byte) be#44 ← ++ (byte) be#137 -- vbuz1=_inc_vbuz1 + //SEG515 [187] (byte) be#44 ← ++ (byte) be#137 -- vbuz1=_inc_vbuz1 inc be - //SEG515 [188] phi from fc::@19 fc::@8 to fc::@9 [phi:fc::@19/fc::@8->fc::@9] + //SEG516 [188] phi from fc::@19 fc::@8 to fc::@9 [phi:fc::@19/fc::@8->fc::@9] b9_from_b19: b9_from_b8: - //SEG516 [188] phi (byte) be#138 = (byte) be#44 [phi:fc::@19/fc::@8->fc::@9#0] -- register_copy + //SEG517 [188] phi (byte) be#138 = (byte) be#44 [phi:fc::@19/fc::@8->fc::@9#0] -- register_copy jmp b9 - //SEG517 fc::@9 + //SEG518 fc::@9 b9: - //SEG518 [189] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fc::@30 -- vbuaa_neq_vbuc1_then_la1 + //SEG519 [189] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fc::@30 -- vbuaa_neq_vbuc1_then_la1 cmp #9 bne b30_from_b9 - //SEG519 [190] phi from fc::@9 to fc::@return [phi:fc::@9->fc::@return] + //SEG520 [190] phi from fc::@9 to fc::@return [phi:fc::@9->fc::@return] breturn_from_b9: - //SEG520 [190] phi (byte) be#46 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fc::@9->fc::@return#0] -- vbuz1=vbuc1 + //SEG521 [190] phi (byte) be#46 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fc::@9->fc::@return#0] -- vbuz1=vbuc1 lda #0 sta be jmp breturn - //SEG521 fc::@return + //SEG522 fc::@return breturn: - //SEG522 [191] return + //SEG523 [191] return rts - //SEG523 [192] phi from fc::@9 to fc::@30 [phi:fc::@9->fc::@30] + //SEG524 [192] phi from fc::@9 to fc::@30 [phi:fc::@9->fc::@30] b30_from_b9: jmp b30 - //SEG524 fc::@30 + //SEG525 fc::@30 b30: - //SEG525 [190] phi from fc::@30 to fc::@return [phi:fc::@30->fc::@return] + //SEG526 [190] phi from fc::@30 to fc::@return [phi:fc::@30->fc::@return] breturn_from_b30: - //SEG526 [190] phi (byte) be#46 = (byte) be#138 [phi:fc::@30->fc::@return#0] -- register_copy + //SEG527 [190] phi (byte) be#46 = (byte) be#138 [phi:fc::@30->fc::@return#0] -- register_copy jmp breturn } @@ -6199,11 +6201,12 @@ zp ZP_BYTE:6 [ be#138 be#44 be#137 be#43 be#136 be#42 be#135 be#41 be#134 be#40 FINAL ASSEMBLER Score: 995 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label ba = 2 .label be = 6 .label bb = 3 @@ -6218,816 +6221,816 @@ Score: 995 .label bb_107 = 4 .label bb_108 = 4 .label bb_109 = 4 -//SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] -//SEG7 [3] phi from @5 to @end [phi:@5->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG5 @5 +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) ba#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) ba#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta ba - //SEG12 [5] phi (byte) be#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) be#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 sta be - //SEG13 [5] phi (byte) bd#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuyy=vbuc1 + //SEG14 [5] phi (byte) bd#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuyy=vbuc1 tay - //SEG14 [5] phi (byte) bc#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vbuxx=vbuc1 + //SEG15 [5] phi (byte) bc#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vbuxx=vbuc1 tax - //SEG15 [5] phi (byte) bb#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#4] -- vbuz1=vbuc1 + //SEG16 [5] phi (byte) bb#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#4] -- vbuz1=vbuc1 sta bb - //SEG16 main::@1 - //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG18 main::@2 + //SEG17 main::@1 + //SEG18 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 main::@2 b2: - //SEG19 [7] call f0 + //SEG20 [7] call f0 jsr f0 - //SEG20 main::@7 - //SEG21 [8] (byte) ba#1 ← ++ (byte) ba#17 -- vbuz1=_inc_vbuz1 + //SEG21 main::@7 + //SEG22 [8] (byte) ba#1 ← ++ (byte) ba#17 -- vbuz1=_inc_vbuz1 inc ba - //SEG22 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - //SEG23 [5] phi (byte) ba#17 = (byte) ba#1 [phi:main::@7->main::@1#0] -- register_copy - //SEG24 [5] phi (byte) be#2 = (byte) be#13 [phi:main::@7->main::@1#1] -- register_copy - //SEG25 [5] phi (byte) bd#2 = (byte) bd#13 [phi:main::@7->main::@1#2] -- register_copy - //SEG26 [5] phi (byte) bc#2 = (byte) bc#13 [phi:main::@7->main::@1#3] -- register_copy - //SEG27 [5] phi (byte) bb#16 = (byte) bb#13 [phi:main::@7->main::@1#4] -- register_copy + //SEG23 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG24 [5] phi (byte) ba#17 = (byte) ba#1 [phi:main::@7->main::@1#0] -- register_copy + //SEG25 [5] phi (byte) be#2 = (byte) be#13 [phi:main::@7->main::@1#1] -- register_copy + //SEG26 [5] phi (byte) bd#2 = (byte) bd#13 [phi:main::@7->main::@1#2] -- register_copy + //SEG27 [5] phi (byte) bc#2 = (byte) bc#13 [phi:main::@7->main::@1#3] -- register_copy + //SEG28 [5] phi (byte) bb#16 = (byte) bb#13 [phi:main::@7->main::@1#4] -- register_copy jmp b2 } -//SEG28 f0 +//SEG29 f0 f0: { - //SEG29 [9] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto f0::@1 -- vbuz1_neq_0_then_la1 + //SEG30 [9] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto f0::@1 -- vbuz1_neq_0_then_la1 lda ba cmp #0 bne b1 - //SEG30 f0::@11 - //SEG31 [10] (byte) bb#3 ← ++ (byte) bb#16 -- vbuz1=_inc_vbuz1 + //SEG31 f0::@11 + //SEG32 [10] (byte) bb#3 ← ++ (byte) bb#16 -- vbuz1=_inc_vbuz1 inc bb - //SEG32 [11] (byte~) bb#101 ← (byte) bb#3 -- vbuz1=vbuz2 + //SEG33 [11] (byte~) bb#101 ← (byte) bb#3 -- vbuz1=vbuz2 lda bb sta bb_101 - //SEG33 [12] call fa - //SEG34 [59] phi from f0::@11 to fa [phi:f0::@11->fa] - //SEG35 [59] phi (byte) be#107 = (byte) be#2 [phi:f0::@11->fa#0] -- register_copy - //SEG36 [59] phi (byte) bd#138 = (byte) bd#2 [phi:f0::@11->fa#1] -- register_copy - //SEG37 [59] phi (byte) bc#39 = (byte) bc#2 [phi:f0::@11->fa#2] -- register_copy - //SEG38 [59] phi (byte) bb#27 = (byte~) bb#101 [phi:f0::@11->fa#3] -- register_copy + //SEG34 [12] call fa + //SEG35 [59] phi from f0::@11 to fa [phi:f0::@11->fa] + //SEG36 [59] phi (byte) be#107 = (byte) be#2 [phi:f0::@11->fa#0] -- register_copy + //SEG37 [59] phi (byte) bd#138 = (byte) bd#2 [phi:f0::@11->fa#1] -- register_copy + //SEG38 [59] phi (byte) bc#39 = (byte) bc#2 [phi:f0::@11->fa#2] -- register_copy + //SEG39 [59] phi (byte) bb#27 = (byte~) bb#101 [phi:f0::@11->fa#3] -- register_copy jsr fa - //SEG39 [13] phi from f0 f0::@11 to f0::@1 [phi:f0/f0::@11->f0::@1] - //SEG40 [13] phi (byte) be#142 = (byte) be#2 [phi:f0/f0::@11->f0::@1#0] -- register_copy - //SEG41 [13] phi (byte) bd#129 = (byte) bd#2 [phi:f0/f0::@11->f0::@1#1] -- register_copy - //SEG42 [13] phi (byte) bc#63 = (byte) bc#2 [phi:f0/f0::@11->f0::@1#2] -- register_copy - //SEG43 [13] phi (byte) bb#18 = (byte) bb#16 [phi:f0/f0::@11->f0::@1#3] -- register_copy - //SEG44 f0::@1 + //SEG40 [13] phi from f0 f0::@11 to f0::@1 [phi:f0/f0::@11->f0::@1] + //SEG41 [13] phi (byte) be#142 = (byte) be#2 [phi:f0/f0::@11->f0::@1#0] -- register_copy + //SEG42 [13] phi (byte) bd#129 = (byte) bd#2 [phi:f0/f0::@11->f0::@1#1] -- register_copy + //SEG43 [13] phi (byte) bc#63 = (byte) bc#2 [phi:f0/f0::@11->f0::@1#2] -- register_copy + //SEG44 [13] phi (byte) bb#18 = (byte) bb#16 [phi:f0/f0::@11->f0::@1#3] -- register_copy + //SEG45 f0::@1 b1: - //SEG45 [14] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto f0::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG46 [14] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto f0::@2 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #1 bne b2 - //SEG46 f0::@12 - //SEG47 [15] (byte) bb#4 ← ++ (byte) bb#18 -- vbuz1=_inc_vbuz1 + //SEG47 f0::@12 + //SEG48 [15] (byte) bb#4 ← ++ (byte) bb#18 -- vbuz1=_inc_vbuz1 inc bb - //SEG48 [16] (byte~) bb#102 ← (byte) bb#4 -- vbuz1=vbuz2 + //SEG49 [16] (byte~) bb#102 ← (byte) bb#4 -- vbuz1=vbuz2 lda bb sta bb_102 - //SEG49 [17] call fa - //SEG50 [59] phi from f0::@12 to fa [phi:f0::@12->fa] - //SEG51 [59] phi (byte) be#107 = (byte) be#142 [phi:f0::@12->fa#0] -- register_copy - //SEG52 [59] phi (byte) bd#138 = (byte) bd#129 [phi:f0::@12->fa#1] -- register_copy - //SEG53 [59] phi (byte) bc#39 = (byte) bc#63 [phi:f0::@12->fa#2] -- register_copy - //SEG54 [59] phi (byte) bb#27 = (byte~) bb#102 [phi:f0::@12->fa#3] -- register_copy + //SEG50 [17] call fa + //SEG51 [59] phi from f0::@12 to fa [phi:f0::@12->fa] + //SEG52 [59] phi (byte) be#107 = (byte) be#142 [phi:f0::@12->fa#0] -- register_copy + //SEG53 [59] phi (byte) bd#138 = (byte) bd#129 [phi:f0::@12->fa#1] -- register_copy + //SEG54 [59] phi (byte) bc#39 = (byte) bc#63 [phi:f0::@12->fa#2] -- register_copy + //SEG55 [59] phi (byte) bb#27 = (byte~) bb#102 [phi:f0::@12->fa#3] -- register_copy jsr fa - //SEG55 [18] phi from f0::@1 f0::@12 to f0::@2 [phi:f0::@1/f0::@12->f0::@2] - //SEG56 [18] phi (byte) be#143 = (byte) be#142 [phi:f0::@1/f0::@12->f0::@2#0] -- register_copy - //SEG57 [18] phi (byte) bd#130 = (byte) bd#129 [phi:f0::@1/f0::@12->f0::@2#1] -- register_copy - //SEG58 [18] phi (byte) bc#64 = (byte) bc#63 [phi:f0::@1/f0::@12->f0::@2#2] -- register_copy - //SEG59 [18] phi (byte) bb#19 = (byte) bb#18 [phi:f0::@1/f0::@12->f0::@2#3] -- register_copy - //SEG60 f0::@2 + //SEG56 [18] phi from f0::@1 f0::@12 to f0::@2 [phi:f0::@1/f0::@12->f0::@2] + //SEG57 [18] phi (byte) be#143 = (byte) be#142 [phi:f0::@1/f0::@12->f0::@2#0] -- register_copy + //SEG58 [18] phi (byte) bd#130 = (byte) bd#129 [phi:f0::@1/f0::@12->f0::@2#1] -- register_copy + //SEG59 [18] phi (byte) bc#64 = (byte) bc#63 [phi:f0::@1/f0::@12->f0::@2#2] -- register_copy + //SEG60 [18] phi (byte) bb#19 = (byte) bb#18 [phi:f0::@1/f0::@12->f0::@2#3] -- register_copy + //SEG61 f0::@2 b2: - //SEG61 [19] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto f0::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG62 [19] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto f0::@3 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #2 bne b3 - //SEG62 f0::@13 - //SEG63 [20] (byte) bb#5 ← ++ (byte) bb#19 -- vbuz1=_inc_vbuz1 + //SEG63 f0::@13 + //SEG64 [20] (byte) bb#5 ← ++ (byte) bb#19 -- vbuz1=_inc_vbuz1 inc bb - //SEG64 [21] (byte~) bb#103 ← (byte) bb#5 -- vbuz1=vbuz2 + //SEG65 [21] (byte~) bb#103 ← (byte) bb#5 -- vbuz1=vbuz2 lda bb sta bb_103 - //SEG65 [22] call fa - //SEG66 [59] phi from f0::@13 to fa [phi:f0::@13->fa] - //SEG67 [59] phi (byte) be#107 = (byte) be#143 [phi:f0::@13->fa#0] -- register_copy - //SEG68 [59] phi (byte) bd#138 = (byte) bd#130 [phi:f0::@13->fa#1] -- register_copy - //SEG69 [59] phi (byte) bc#39 = (byte) bc#64 [phi:f0::@13->fa#2] -- register_copy - //SEG70 [59] phi (byte) bb#27 = (byte~) bb#103 [phi:f0::@13->fa#3] -- register_copy + //SEG66 [22] call fa + //SEG67 [59] phi from f0::@13 to fa [phi:f0::@13->fa] + //SEG68 [59] phi (byte) be#107 = (byte) be#143 [phi:f0::@13->fa#0] -- register_copy + //SEG69 [59] phi (byte) bd#138 = (byte) bd#130 [phi:f0::@13->fa#1] -- register_copy + //SEG70 [59] phi (byte) bc#39 = (byte) bc#64 [phi:f0::@13->fa#2] -- register_copy + //SEG71 [59] phi (byte) bb#27 = (byte~) bb#103 [phi:f0::@13->fa#3] -- register_copy jsr fa - //SEG71 [23] phi from f0::@13 f0::@2 to f0::@3 [phi:f0::@13/f0::@2->f0::@3] - //SEG72 [23] phi (byte) be#144 = (byte) be#24 [phi:f0::@13/f0::@2->f0::@3#0] -- register_copy - //SEG73 [23] phi (byte) bd#131 = (byte) bd#24 [phi:f0::@13/f0::@2->f0::@3#1] -- register_copy - //SEG74 [23] phi (byte) bc#65 = (byte) bc#24 [phi:f0::@13/f0::@2->f0::@3#2] -- register_copy - //SEG75 [23] phi (byte) bb#20 = (byte) bb#5 [phi:f0::@13/f0::@2->f0::@3#3] -- register_copy - //SEG76 f0::@3 + //SEG72 [23] phi from f0::@13 f0::@2 to f0::@3 [phi:f0::@13/f0::@2->f0::@3] + //SEG73 [23] phi (byte) be#144 = (byte) be#24 [phi:f0::@13/f0::@2->f0::@3#0] -- register_copy + //SEG74 [23] phi (byte) bd#131 = (byte) bd#24 [phi:f0::@13/f0::@2->f0::@3#1] -- register_copy + //SEG75 [23] phi (byte) bc#65 = (byte) bc#24 [phi:f0::@13/f0::@2->f0::@3#2] -- register_copy + //SEG76 [23] phi (byte) bb#20 = (byte) bb#5 [phi:f0::@13/f0::@2->f0::@3#3] -- register_copy + //SEG77 f0::@3 b3: - //SEG77 [24] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto f0::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG78 [24] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto f0::@4 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #3 bne b4 - //SEG78 f0::@14 - //SEG79 [25] (byte) bb#6 ← ++ (byte) bb#20 -- vbuz1=_inc_vbuz1 + //SEG79 f0::@14 + //SEG80 [25] (byte) bb#6 ← ++ (byte) bb#20 -- vbuz1=_inc_vbuz1 inc bb - //SEG80 [26] (byte~) bb#104 ← (byte) bb#6 -- vbuz1=vbuz2 + //SEG81 [26] (byte~) bb#104 ← (byte) bb#6 -- vbuz1=vbuz2 lda bb sta bb_104 - //SEG81 [27] call fa - //SEG82 [59] phi from f0::@14 to fa [phi:f0::@14->fa] - //SEG83 [59] phi (byte) be#107 = (byte) be#144 [phi:f0::@14->fa#0] -- register_copy - //SEG84 [59] phi (byte) bd#138 = (byte) bd#131 [phi:f0::@14->fa#1] -- register_copy - //SEG85 [59] phi (byte) bc#39 = (byte) bc#65 [phi:f0::@14->fa#2] -- register_copy - //SEG86 [59] phi (byte) bb#27 = (byte~) bb#104 [phi:f0::@14->fa#3] -- register_copy + //SEG82 [27] call fa + //SEG83 [59] phi from f0::@14 to fa [phi:f0::@14->fa] + //SEG84 [59] phi (byte) be#107 = (byte) be#144 [phi:f0::@14->fa#0] -- register_copy + //SEG85 [59] phi (byte) bd#138 = (byte) bd#131 [phi:f0::@14->fa#1] -- register_copy + //SEG86 [59] phi (byte) bc#39 = (byte) bc#65 [phi:f0::@14->fa#2] -- register_copy + //SEG87 [59] phi (byte) bb#27 = (byte~) bb#104 [phi:f0::@14->fa#3] -- register_copy jsr fa - //SEG87 [28] phi from f0::@14 f0::@3 to f0::@4 [phi:f0::@14/f0::@3->f0::@4] - //SEG88 [28] phi (byte) be#100 = (byte) be#24 [phi:f0::@14/f0::@3->f0::@4#0] -- register_copy - //SEG89 [28] phi (byte) bd#132 = (byte) bd#24 [phi:f0::@14/f0::@3->f0::@4#1] -- register_copy - //SEG90 [28] phi (byte) bc#66 = (byte) bc#24 [phi:f0::@14/f0::@3->f0::@4#2] -- register_copy - //SEG91 [28] phi (byte) bb#21 = (byte) bb#6 [phi:f0::@14/f0::@3->f0::@4#3] -- register_copy - //SEG92 f0::@4 + //SEG88 [28] phi from f0::@14 f0::@3 to f0::@4 [phi:f0::@14/f0::@3->f0::@4] + //SEG89 [28] phi (byte) be#100 = (byte) be#24 [phi:f0::@14/f0::@3->f0::@4#0] -- register_copy + //SEG90 [28] phi (byte) bd#132 = (byte) bd#24 [phi:f0::@14/f0::@3->f0::@4#1] -- register_copy + //SEG91 [28] phi (byte) bc#66 = (byte) bc#24 [phi:f0::@14/f0::@3->f0::@4#2] -- register_copy + //SEG92 [28] phi (byte) bb#21 = (byte) bb#6 [phi:f0::@14/f0::@3->f0::@4#3] -- register_copy + //SEG93 f0::@4 b4: - //SEG93 [29] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto f0::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG94 [29] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto f0::@5 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #4 bne b5 - //SEG94 f0::@15 - //SEG95 [30] (byte) bb#66 ← ++ (byte) bb#21 -- vbuz1=_inc_vbuz1 + //SEG95 f0::@15 + //SEG96 [30] (byte) bb#66 ← ++ (byte) bb#21 -- vbuz1=_inc_vbuz1 inc bb - //SEG96 [31] (byte~) bb#105 ← (byte) bb#66 -- vbuz1=vbuz2 + //SEG97 [31] (byte~) bb#105 ← (byte) bb#66 -- vbuz1=vbuz2 lda bb sta bb_105 - //SEG97 [32] call fa - //SEG98 [59] phi from f0::@15 to fa [phi:f0::@15->fa] - //SEG99 [59] phi (byte) be#107 = (byte) be#100 [phi:f0::@15->fa#0] -- register_copy - //SEG100 [59] phi (byte) bd#138 = (byte) bd#132 [phi:f0::@15->fa#1] -- register_copy - //SEG101 [59] phi (byte) bc#39 = (byte) bc#66 [phi:f0::@15->fa#2] -- register_copy - //SEG102 [59] phi (byte) bb#27 = (byte~) bb#105 [phi:f0::@15->fa#3] -- register_copy + //SEG98 [32] call fa + //SEG99 [59] phi from f0::@15 to fa [phi:f0::@15->fa] + //SEG100 [59] phi (byte) be#107 = (byte) be#100 [phi:f0::@15->fa#0] -- register_copy + //SEG101 [59] phi (byte) bd#138 = (byte) bd#132 [phi:f0::@15->fa#1] -- register_copy + //SEG102 [59] phi (byte) bc#39 = (byte) bc#66 [phi:f0::@15->fa#2] -- register_copy + //SEG103 [59] phi (byte) bb#27 = (byte~) bb#105 [phi:f0::@15->fa#3] -- register_copy jsr fa - //SEG103 [33] phi from f0::@15 f0::@4 to f0::@5 [phi:f0::@15/f0::@4->f0::@5] - //SEG104 [33] phi (byte) be#101 = (byte) be#24 [phi:f0::@15/f0::@4->f0::@5#0] -- register_copy - //SEG105 [33] phi (byte) bd#133 = (byte) bd#24 [phi:f0::@15/f0::@4->f0::@5#1] -- register_copy - //SEG106 [33] phi (byte) bc#100 = (byte) bc#24 [phi:f0::@15/f0::@4->f0::@5#2] -- register_copy - //SEG107 [33] phi (byte) bb#22 = (byte) bb#66 [phi:f0::@15/f0::@4->f0::@5#3] -- register_copy - //SEG108 f0::@5 + //SEG104 [33] phi from f0::@15 f0::@4 to f0::@5 [phi:f0::@15/f0::@4->f0::@5] + //SEG105 [33] phi (byte) be#101 = (byte) be#24 [phi:f0::@15/f0::@4->f0::@5#0] -- register_copy + //SEG106 [33] phi (byte) bd#133 = (byte) bd#24 [phi:f0::@15/f0::@4->f0::@5#1] -- register_copy + //SEG107 [33] phi (byte) bc#100 = (byte) bc#24 [phi:f0::@15/f0::@4->f0::@5#2] -- register_copy + //SEG108 [33] phi (byte) bb#22 = (byte) bb#66 [phi:f0::@15/f0::@4->f0::@5#3] -- register_copy + //SEG109 f0::@5 b5: - //SEG109 [34] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto f0::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG110 [34] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto f0::@6 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #5 bne b6 - //SEG110 f0::@16 - //SEG111 [35] (byte) bb#67 ← ++ (byte) bb#22 -- vbuz1=_inc_vbuz1 + //SEG111 f0::@16 + //SEG112 [35] (byte) bb#67 ← ++ (byte) bb#22 -- vbuz1=_inc_vbuz1 inc bb - //SEG112 [36] (byte~) bb#106 ← (byte) bb#67 -- vbuz1=vbuz2 + //SEG113 [36] (byte~) bb#106 ← (byte) bb#67 -- vbuz1=vbuz2 lda bb sta bb_106 - //SEG113 [37] call fa - //SEG114 [59] phi from f0::@16 to fa [phi:f0::@16->fa] - //SEG115 [59] phi (byte) be#107 = (byte) be#101 [phi:f0::@16->fa#0] -- register_copy - //SEG116 [59] phi (byte) bd#138 = (byte) bd#133 [phi:f0::@16->fa#1] -- register_copy - //SEG117 [59] phi (byte) bc#39 = (byte) bc#100 [phi:f0::@16->fa#2] -- register_copy - //SEG118 [59] phi (byte) bb#27 = (byte~) bb#106 [phi:f0::@16->fa#3] -- register_copy + //SEG114 [37] call fa + //SEG115 [59] phi from f0::@16 to fa [phi:f0::@16->fa] + //SEG116 [59] phi (byte) be#107 = (byte) be#101 [phi:f0::@16->fa#0] -- register_copy + //SEG117 [59] phi (byte) bd#138 = (byte) bd#133 [phi:f0::@16->fa#1] -- register_copy + //SEG118 [59] phi (byte) bc#39 = (byte) bc#100 [phi:f0::@16->fa#2] -- register_copy + //SEG119 [59] phi (byte) bb#27 = (byte~) bb#106 [phi:f0::@16->fa#3] -- register_copy jsr fa - //SEG119 [38] phi from f0::@16 f0::@5 to f0::@6 [phi:f0::@16/f0::@5->f0::@6] - //SEG120 [38] phi (byte) be#102 = (byte) be#24 [phi:f0::@16/f0::@5->f0::@6#0] -- register_copy - //SEG121 [38] phi (byte) bd#134 = (byte) bd#24 [phi:f0::@16/f0::@5->f0::@6#1] -- register_copy - //SEG122 [38] phi (byte) bc#101 = (byte) bc#24 [phi:f0::@16/f0::@5->f0::@6#2] -- register_copy - //SEG123 [38] phi (byte) bb#23 = (byte) bb#67 [phi:f0::@16/f0::@5->f0::@6#3] -- register_copy - //SEG124 f0::@6 + //SEG120 [38] phi from f0::@16 f0::@5 to f0::@6 [phi:f0::@16/f0::@5->f0::@6] + //SEG121 [38] phi (byte) be#102 = (byte) be#24 [phi:f0::@16/f0::@5->f0::@6#0] -- register_copy + //SEG122 [38] phi (byte) bd#134 = (byte) bd#24 [phi:f0::@16/f0::@5->f0::@6#1] -- register_copy + //SEG123 [38] phi (byte) bc#101 = (byte) bc#24 [phi:f0::@16/f0::@5->f0::@6#2] -- register_copy + //SEG124 [38] phi (byte) bb#23 = (byte) bb#67 [phi:f0::@16/f0::@5->f0::@6#3] -- register_copy + //SEG125 f0::@6 b6: - //SEG125 [39] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto f0::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG126 [39] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto f0::@7 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #6 bne b7 - //SEG126 f0::@17 - //SEG127 [40] (byte) bb#68 ← ++ (byte) bb#23 -- vbuz1=_inc_vbuz1 + //SEG127 f0::@17 + //SEG128 [40] (byte) bb#68 ← ++ (byte) bb#23 -- vbuz1=_inc_vbuz1 inc bb - //SEG128 [41] (byte~) bb#107 ← (byte) bb#68 -- vbuz1=vbuz2 + //SEG129 [41] (byte~) bb#107 ← (byte) bb#68 -- vbuz1=vbuz2 lda bb sta bb_107 - //SEG129 [42] call fa - //SEG130 [59] phi from f0::@17 to fa [phi:f0::@17->fa] - //SEG131 [59] phi (byte) be#107 = (byte) be#102 [phi:f0::@17->fa#0] -- register_copy - //SEG132 [59] phi (byte) bd#138 = (byte) bd#134 [phi:f0::@17->fa#1] -- register_copy - //SEG133 [59] phi (byte) bc#39 = (byte) bc#101 [phi:f0::@17->fa#2] -- register_copy - //SEG134 [59] phi (byte) bb#27 = (byte~) bb#107 [phi:f0::@17->fa#3] -- register_copy + //SEG130 [42] call fa + //SEG131 [59] phi from f0::@17 to fa [phi:f0::@17->fa] + //SEG132 [59] phi (byte) be#107 = (byte) be#102 [phi:f0::@17->fa#0] -- register_copy + //SEG133 [59] phi (byte) bd#138 = (byte) bd#134 [phi:f0::@17->fa#1] -- register_copy + //SEG134 [59] phi (byte) bc#39 = (byte) bc#101 [phi:f0::@17->fa#2] -- register_copy + //SEG135 [59] phi (byte) bb#27 = (byte~) bb#107 [phi:f0::@17->fa#3] -- register_copy jsr fa - //SEG135 [43] phi from f0::@17 f0::@6 to f0::@7 [phi:f0::@17/f0::@6->f0::@7] - //SEG136 [43] phi (byte) be#103 = (byte) be#24 [phi:f0::@17/f0::@6->f0::@7#0] -- register_copy - //SEG137 [43] phi (byte) bd#135 = (byte) bd#24 [phi:f0::@17/f0::@6->f0::@7#1] -- register_copy - //SEG138 [43] phi (byte) bc#102 = (byte) bc#24 [phi:f0::@17/f0::@6->f0::@7#2] -- register_copy - //SEG139 [43] phi (byte) bb#24 = (byte) bb#68 [phi:f0::@17/f0::@6->f0::@7#3] -- register_copy - //SEG140 f0::@7 + //SEG136 [43] phi from f0::@17 f0::@6 to f0::@7 [phi:f0::@17/f0::@6->f0::@7] + //SEG137 [43] phi (byte) be#103 = (byte) be#24 [phi:f0::@17/f0::@6->f0::@7#0] -- register_copy + //SEG138 [43] phi (byte) bd#135 = (byte) bd#24 [phi:f0::@17/f0::@6->f0::@7#1] -- register_copy + //SEG139 [43] phi (byte) bc#102 = (byte) bc#24 [phi:f0::@17/f0::@6->f0::@7#2] -- register_copy + //SEG140 [43] phi (byte) bb#24 = (byte) bb#68 [phi:f0::@17/f0::@6->f0::@7#3] -- register_copy + //SEG141 f0::@7 b7: - //SEG141 [44] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto f0::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG142 [44] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto f0::@8 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #7 bne b8 - //SEG142 f0::@18 - //SEG143 [45] (byte) bb#10 ← ++ (byte) bb#24 -- vbuz1=_inc_vbuz1 + //SEG143 f0::@18 + //SEG144 [45] (byte) bb#10 ← ++ (byte) bb#24 -- vbuz1=_inc_vbuz1 inc bb - //SEG144 [46] (byte~) bb#108 ← (byte) bb#10 -- vbuz1=vbuz2 + //SEG145 [46] (byte~) bb#108 ← (byte) bb#10 -- vbuz1=vbuz2 lda bb sta bb_108 - //SEG145 [47] call fa - //SEG146 [59] phi from f0::@18 to fa [phi:f0::@18->fa] - //SEG147 [59] phi (byte) be#107 = (byte) be#103 [phi:f0::@18->fa#0] -- register_copy - //SEG148 [59] phi (byte) bd#138 = (byte) bd#135 [phi:f0::@18->fa#1] -- register_copy - //SEG149 [59] phi (byte) bc#39 = (byte) bc#102 [phi:f0::@18->fa#2] -- register_copy - //SEG150 [59] phi (byte) bb#27 = (byte~) bb#108 [phi:f0::@18->fa#3] -- register_copy + //SEG146 [47] call fa + //SEG147 [59] phi from f0::@18 to fa [phi:f0::@18->fa] + //SEG148 [59] phi (byte) be#107 = (byte) be#103 [phi:f0::@18->fa#0] -- register_copy + //SEG149 [59] phi (byte) bd#138 = (byte) bd#135 [phi:f0::@18->fa#1] -- register_copy + //SEG150 [59] phi (byte) bc#39 = (byte) bc#102 [phi:f0::@18->fa#2] -- register_copy + //SEG151 [59] phi (byte) bb#27 = (byte~) bb#108 [phi:f0::@18->fa#3] -- register_copy jsr fa - //SEG151 [48] phi from f0::@18 f0::@7 to f0::@8 [phi:f0::@18/f0::@7->f0::@8] - //SEG152 [48] phi (byte) be#104 = (byte) be#24 [phi:f0::@18/f0::@7->f0::@8#0] -- register_copy - //SEG153 [48] phi (byte) bd#136 = (byte) bd#24 [phi:f0::@18/f0::@7->f0::@8#1] -- register_copy - //SEG154 [48] phi (byte) bc#103 = (byte) bc#24 [phi:f0::@18/f0::@7->f0::@8#2] -- register_copy - //SEG155 [48] phi (byte) bb#25 = (byte) bb#10 [phi:f0::@18/f0::@7->f0::@8#3] -- register_copy - //SEG156 f0::@8 + //SEG152 [48] phi from f0::@18 f0::@7 to f0::@8 [phi:f0::@18/f0::@7->f0::@8] + //SEG153 [48] phi (byte) be#104 = (byte) be#24 [phi:f0::@18/f0::@7->f0::@8#0] -- register_copy + //SEG154 [48] phi (byte) bd#136 = (byte) bd#24 [phi:f0::@18/f0::@7->f0::@8#1] -- register_copy + //SEG155 [48] phi (byte) bc#103 = (byte) bc#24 [phi:f0::@18/f0::@7->f0::@8#2] -- register_copy + //SEG156 [48] phi (byte) bb#25 = (byte) bb#10 [phi:f0::@18/f0::@7->f0::@8#3] -- register_copy + //SEG157 f0::@8 b8: - //SEG157 [49] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto f0::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG158 [49] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto f0::@9 -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #8 bne b9 - //SEG158 f0::@19 - //SEG159 [50] (byte) bb#11 ← ++ (byte) bb#25 -- vbuz1=_inc_vbuz1 + //SEG159 f0::@19 + //SEG160 [50] (byte) bb#11 ← ++ (byte) bb#25 -- vbuz1=_inc_vbuz1 inc bb - //SEG160 [51] (byte~) bb#109 ← (byte) bb#11 -- vbuz1=vbuz2 + //SEG161 [51] (byte~) bb#109 ← (byte) bb#11 -- vbuz1=vbuz2 lda bb sta bb_109 - //SEG161 [52] call fa - //SEG162 [59] phi from f0::@19 to fa [phi:f0::@19->fa] - //SEG163 [59] phi (byte) be#107 = (byte) be#104 [phi:f0::@19->fa#0] -- register_copy - //SEG164 [59] phi (byte) bd#138 = (byte) bd#136 [phi:f0::@19->fa#1] -- register_copy - //SEG165 [59] phi (byte) bc#39 = (byte) bc#103 [phi:f0::@19->fa#2] -- register_copy - //SEG166 [59] phi (byte) bb#27 = (byte~) bb#109 [phi:f0::@19->fa#3] -- register_copy + //SEG162 [52] call fa + //SEG163 [59] phi from f0::@19 to fa [phi:f0::@19->fa] + //SEG164 [59] phi (byte) be#107 = (byte) be#104 [phi:f0::@19->fa#0] -- register_copy + //SEG165 [59] phi (byte) bd#138 = (byte) bd#136 [phi:f0::@19->fa#1] -- register_copy + //SEG166 [59] phi (byte) bc#39 = (byte) bc#103 [phi:f0::@19->fa#2] -- register_copy + //SEG167 [59] phi (byte) bb#27 = (byte~) bb#109 [phi:f0::@19->fa#3] -- register_copy jsr fa - //SEG167 [53] phi from f0::@19 f0::@8 to f0::@9 [phi:f0::@19/f0::@8->f0::@9] - //SEG168 [53] phi (byte) be#105 = (byte) be#24 [phi:f0::@19/f0::@8->f0::@9#0] -- register_copy - //SEG169 [53] phi (byte) bd#137 = (byte) bd#24 [phi:f0::@19/f0::@8->f0::@9#1] -- register_copy - //SEG170 [53] phi (byte) bc#104 = (byte) bc#24 [phi:f0::@19/f0::@8->f0::@9#2] -- register_copy - //SEG171 [53] phi (byte) bb#49 = (byte) bb#11 [phi:f0::@19/f0::@8->f0::@9#3] -- register_copy - //SEG172 f0::@9 + //SEG168 [53] phi from f0::@19 f0::@8 to f0::@9 [phi:f0::@19/f0::@8->f0::@9] + //SEG169 [53] phi (byte) be#105 = (byte) be#24 [phi:f0::@19/f0::@8->f0::@9#0] -- register_copy + //SEG170 [53] phi (byte) bd#137 = (byte) bd#24 [phi:f0::@19/f0::@8->f0::@9#1] -- register_copy + //SEG171 [53] phi (byte) bc#104 = (byte) bc#24 [phi:f0::@19/f0::@8->f0::@9#2] -- register_copy + //SEG172 [53] phi (byte) bb#49 = (byte) bb#11 [phi:f0::@19/f0::@8->f0::@9#3] -- register_copy + //SEG173 f0::@9 b9: - //SEG173 [54] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto f0::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG174 [54] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto f0::@return -- vbuz1_neq_vbuc1_then_la1 lda ba cmp #9 bne breturn - //SEG174 [55] phi from f0::@9 to f0::@20 [phi:f0::@9->f0::@20] - //SEG175 f0::@20 - //SEG176 [56] call fa - //SEG177 [59] phi from f0::@20 to fa [phi:f0::@20->fa] - //SEG178 [59] phi (byte) be#107 = (byte) be#105 [phi:f0::@20->fa#0] -- register_copy - //SEG179 [59] phi (byte) bd#138 = (byte) bd#137 [phi:f0::@20->fa#1] -- register_copy - //SEG180 [59] phi (byte) bc#39 = (byte) bc#104 [phi:f0::@20->fa#2] -- register_copy - //SEG181 [59] phi (byte) bb#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->fa#3] -- vbuz1=vbuc1 + //SEG175 [55] phi from f0::@9 to f0::@20 [phi:f0::@9->f0::@20] + //SEG176 f0::@20 + //SEG177 [56] call fa + //SEG178 [59] phi from f0::@20 to fa [phi:f0::@20->fa] + //SEG179 [59] phi (byte) be#107 = (byte) be#105 [phi:f0::@20->fa#0] -- register_copy + //SEG180 [59] phi (byte) bd#138 = (byte) bd#137 [phi:f0::@20->fa#1] -- register_copy + //SEG181 [59] phi (byte) bc#39 = (byte) bc#104 [phi:f0::@20->fa#2] -- register_copy + //SEG182 [59] phi (byte) bb#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->fa#3] -- vbuz1=vbuc1 lda #0 sta bb_27 jsr fa - //SEG182 [57] phi from f0::@20 to f0::@return [phi:f0::@20->f0::@return] - //SEG183 [57] phi (byte) be#13 = (byte) be#24 [phi:f0::@20->f0::@return#0] -- register_copy - //SEG184 [57] phi (byte) bd#13 = (byte) bd#24 [phi:f0::@20->f0::@return#1] -- register_copy - //SEG185 [57] phi (byte) bc#13 = (byte) bc#24 [phi:f0::@20->f0::@return#2] -- register_copy - //SEG186 [57] phi (byte) bb#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->f0::@return#3] -- vbuz1=vbuc1 + //SEG183 [57] phi from f0::@20 to f0::@return [phi:f0::@20->f0::@return] + //SEG184 [57] phi (byte) be#13 = (byte) be#24 [phi:f0::@20->f0::@return#0] -- register_copy + //SEG185 [57] phi (byte) bd#13 = (byte) bd#24 [phi:f0::@20->f0::@return#1] -- register_copy + //SEG186 [57] phi (byte) bc#13 = (byte) bc#24 [phi:f0::@20->f0::@return#2] -- register_copy + //SEG187 [57] phi (byte) bb#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:f0::@20->f0::@return#3] -- vbuz1=vbuc1 lda #0 sta bb - //SEG187 [57] phi from f0::@9 to f0::@return [phi:f0::@9->f0::@return] - //SEG188 [57] phi (byte) be#13 = (byte) be#105 [phi:f0::@9->f0::@return#0] -- register_copy - //SEG189 [57] phi (byte) bd#13 = (byte) bd#137 [phi:f0::@9->f0::@return#1] -- register_copy - //SEG190 [57] phi (byte) bc#13 = (byte) bc#104 [phi:f0::@9->f0::@return#2] -- register_copy - //SEG191 [57] phi (byte) bb#13 = (byte) bb#49 [phi:f0::@9->f0::@return#3] -- register_copy - //SEG192 f0::@return + //SEG188 [57] phi from f0::@9 to f0::@return [phi:f0::@9->f0::@return] + //SEG189 [57] phi (byte) be#13 = (byte) be#105 [phi:f0::@9->f0::@return#0] -- register_copy + //SEG190 [57] phi (byte) bd#13 = (byte) bd#137 [phi:f0::@9->f0::@return#1] -- register_copy + //SEG191 [57] phi (byte) bc#13 = (byte) bc#104 [phi:f0::@9->f0::@return#2] -- register_copy + //SEG192 [57] phi (byte) bb#13 = (byte) bb#49 [phi:f0::@9->f0::@return#3] -- register_copy + //SEG193 f0::@return breturn: - //SEG193 [58] return + //SEG194 [58] return rts } -//SEG194 fa +//SEG195 fa fa: { - //SEG195 [60] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fa::@1 -- vbuz1_neq_0_then_la1 + //SEG196 [60] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fa::@1 -- vbuz1_neq_0_then_la1 lda bb_27 cmp #0 bne b1 - //SEG196 fa::@11 - //SEG197 [61] (byte) bc#105 ← ++ (byte) bc#39 -- vbuxx=_inc_vbuxx + //SEG197 fa::@11 + //SEG198 [61] (byte) bc#105 ← ++ (byte) bc#39 -- vbuxx=_inc_vbuxx inx - //SEG198 [62] (byte~) bc#174 ← (byte) bc#105 -- vbuz1=vbuxx + //SEG199 [62] (byte~) bc#174 ← (byte) bc#105 -- vbuz1=vbuxx stx bc - //SEG199 [63] call fb - //SEG200 [110] phi from fa::@11 to fb [phi:fa::@11->fb] - //SEG201 [110] phi (byte) be#118 = (byte) be#107 [phi:fa::@11->fb#0] -- register_copy - //SEG202 [110] phi (byte) bd#106 = (byte) bd#138 [phi:fa::@11->fb#1] -- register_copy - //SEG203 [110] phi (byte) bc#114 = (byte~) bc#174 [phi:fa::@11->fb#2] -- register_copy + //SEG200 [63] call fb + //SEG201 [110] phi from fa::@11 to fb [phi:fa::@11->fb] + //SEG202 [110] phi (byte) be#118 = (byte) be#107 [phi:fa::@11->fb#0] -- register_copy + //SEG203 [110] phi (byte) bd#106 = (byte) bd#138 [phi:fa::@11->fb#1] -- register_copy + //SEG204 [110] phi (byte) bc#114 = (byte~) bc#174 [phi:fa::@11->fb#2] -- register_copy jsr fb - //SEG204 [64] phi from fa fa::@11 to fa::@1 [phi:fa/fa::@11->fa::@1] - //SEG205 [64] phi (byte) be#108 = (byte) be#107 [phi:fa/fa::@11->fa::@1#0] -- register_copy - //SEG206 [64] phi (byte) bd#139 = (byte) bd#138 [phi:fa/fa::@11->fa::@1#1] -- register_copy - //SEG207 [64] phi (byte) bc#40 = (byte) bc#39 [phi:fa/fa::@11->fa::@1#2] -- register_copy - //SEG208 fa::@1 + //SEG205 [64] phi from fa fa::@11 to fa::@1 [phi:fa/fa::@11->fa::@1] + //SEG206 [64] phi (byte) be#108 = (byte) be#107 [phi:fa/fa::@11->fa::@1#0] -- register_copy + //SEG207 [64] phi (byte) bd#139 = (byte) bd#138 [phi:fa/fa::@11->fa::@1#1] -- register_copy + //SEG208 [64] phi (byte) bc#40 = (byte) bc#39 [phi:fa/fa::@11->fa::@1#2] -- register_copy + //SEG209 fa::@1 b1: - //SEG209 [65] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fa::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG210 [65] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fa::@2 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #1 bne b2 - //SEG210 fa::@12 - //SEG211 [66] (byte) bc#106 ← ++ (byte) bc#40 -- vbuxx=_inc_vbuxx + //SEG211 fa::@12 + //SEG212 [66] (byte) bc#106 ← ++ (byte) bc#40 -- vbuxx=_inc_vbuxx inx - //SEG212 [67] (byte~) bc#175 ← (byte) bc#106 -- vbuz1=vbuxx + //SEG213 [67] (byte~) bc#175 ← (byte) bc#106 -- vbuz1=vbuxx stx bc - //SEG213 [68] call fb - //SEG214 [110] phi from fa::@12 to fb [phi:fa::@12->fb] - //SEG215 [110] phi (byte) be#118 = (byte) be#108 [phi:fa::@12->fb#0] -- register_copy - //SEG216 [110] phi (byte) bd#106 = (byte) bd#139 [phi:fa::@12->fb#1] -- register_copy - //SEG217 [110] phi (byte) bc#114 = (byte~) bc#175 [phi:fa::@12->fb#2] -- register_copy + //SEG214 [68] call fb + //SEG215 [110] phi from fa::@12 to fb [phi:fa::@12->fb] + //SEG216 [110] phi (byte) be#118 = (byte) be#108 [phi:fa::@12->fb#0] -- register_copy + //SEG217 [110] phi (byte) bd#106 = (byte) bd#139 [phi:fa::@12->fb#1] -- register_copy + //SEG218 [110] phi (byte) bc#114 = (byte~) bc#175 [phi:fa::@12->fb#2] -- register_copy jsr fb - //SEG218 [69] phi from fa::@1 fa::@12 to fa::@2 [phi:fa::@1/fa::@12->fa::@2] - //SEG219 [69] phi (byte) be#109 = (byte) be#108 [phi:fa::@1/fa::@12->fa::@2#0] -- register_copy - //SEG220 [69] phi (byte) bd#140 = (byte) bd#139 [phi:fa::@1/fa::@12->fa::@2#1] -- register_copy - //SEG221 [69] phi (byte) bc#41 = (byte) bc#40 [phi:fa::@1/fa::@12->fa::@2#2] -- register_copy - //SEG222 fa::@2 + //SEG219 [69] phi from fa::@1 fa::@12 to fa::@2 [phi:fa::@1/fa::@12->fa::@2] + //SEG220 [69] phi (byte) be#109 = (byte) be#108 [phi:fa::@1/fa::@12->fa::@2#0] -- register_copy + //SEG221 [69] phi (byte) bd#140 = (byte) bd#139 [phi:fa::@1/fa::@12->fa::@2#1] -- register_copy + //SEG222 [69] phi (byte) bc#41 = (byte) bc#40 [phi:fa::@1/fa::@12->fa::@2#2] -- register_copy + //SEG223 fa::@2 b2: - //SEG223 [70] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fa::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG224 [70] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fa::@3 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #2 bne b3 - //SEG224 fa::@13 - //SEG225 [71] (byte) bc#107 ← ++ (byte) bc#41 -- vbuxx=_inc_vbuxx + //SEG225 fa::@13 + //SEG226 [71] (byte) bc#107 ← ++ (byte) bc#41 -- vbuxx=_inc_vbuxx inx - //SEG226 [72] (byte~) bc#176 ← (byte) bc#107 -- vbuz1=vbuxx + //SEG227 [72] (byte~) bc#176 ← (byte) bc#107 -- vbuz1=vbuxx stx bc - //SEG227 [73] call fb - //SEG228 [110] phi from fa::@13 to fb [phi:fa::@13->fb] - //SEG229 [110] phi (byte) be#118 = (byte) be#109 [phi:fa::@13->fb#0] -- register_copy - //SEG230 [110] phi (byte) bd#106 = (byte) bd#140 [phi:fa::@13->fb#1] -- register_copy - //SEG231 [110] phi (byte) bc#114 = (byte~) bc#176 [phi:fa::@13->fb#2] -- register_copy + //SEG228 [73] call fb + //SEG229 [110] phi from fa::@13 to fb [phi:fa::@13->fb] + //SEG230 [110] phi (byte) be#118 = (byte) be#109 [phi:fa::@13->fb#0] -- register_copy + //SEG231 [110] phi (byte) bd#106 = (byte) bd#140 [phi:fa::@13->fb#1] -- register_copy + //SEG232 [110] phi (byte) bc#114 = (byte~) bc#176 [phi:fa::@13->fb#2] -- register_copy jsr fb - //SEG232 [74] phi from fa::@13 fa::@2 to fa::@3 [phi:fa::@13/fa::@2->fa::@3] - //SEG233 [74] phi (byte) be#110 = (byte) be#35 [phi:fa::@13/fa::@2->fa::@3#0] -- register_copy - //SEG234 [74] phi (byte) bd#141 = (byte) bd#35 [phi:fa::@13/fa::@2->fa::@3#1] -- register_copy - //SEG235 [74] phi (byte) bc#42 = (byte) bc#107 [phi:fa::@13/fa::@2->fa::@3#2] -- register_copy - //SEG236 fa::@3 + //SEG233 [74] phi from fa::@13 fa::@2 to fa::@3 [phi:fa::@13/fa::@2->fa::@3] + //SEG234 [74] phi (byte) be#110 = (byte) be#35 [phi:fa::@13/fa::@2->fa::@3#0] -- register_copy + //SEG235 [74] phi (byte) bd#141 = (byte) bd#35 [phi:fa::@13/fa::@2->fa::@3#1] -- register_copy + //SEG236 [74] phi (byte) bc#42 = (byte) bc#107 [phi:fa::@13/fa::@2->fa::@3#2] -- register_copy + //SEG237 fa::@3 b3: - //SEG237 [75] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fa::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG238 [75] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fa::@4 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #3 bne b4 - //SEG238 fa::@14 - //SEG239 [76] (byte) bc#108 ← ++ (byte) bc#42 -- vbuxx=_inc_vbuxx + //SEG239 fa::@14 + //SEG240 [76] (byte) bc#108 ← ++ (byte) bc#42 -- vbuxx=_inc_vbuxx inx - //SEG240 [77] (byte~) bc#177 ← (byte) bc#108 -- vbuz1=vbuxx + //SEG241 [77] (byte~) bc#177 ← (byte) bc#108 -- vbuz1=vbuxx stx bc - //SEG241 [78] call fb - //SEG242 [110] phi from fa::@14 to fb [phi:fa::@14->fb] - //SEG243 [110] phi (byte) be#118 = (byte) be#110 [phi:fa::@14->fb#0] -- register_copy - //SEG244 [110] phi (byte) bd#106 = (byte) bd#141 [phi:fa::@14->fb#1] -- register_copy - //SEG245 [110] phi (byte) bc#114 = (byte~) bc#177 [phi:fa::@14->fb#2] -- register_copy + //SEG242 [78] call fb + //SEG243 [110] phi from fa::@14 to fb [phi:fa::@14->fb] + //SEG244 [110] phi (byte) be#118 = (byte) be#110 [phi:fa::@14->fb#0] -- register_copy + //SEG245 [110] phi (byte) bd#106 = (byte) bd#141 [phi:fa::@14->fb#1] -- register_copy + //SEG246 [110] phi (byte) bc#114 = (byte~) bc#177 [phi:fa::@14->fb#2] -- register_copy jsr fb - //SEG246 [79] phi from fa::@14 fa::@3 to fa::@4 [phi:fa::@14/fa::@3->fa::@4] - //SEG247 [79] phi (byte) be#111 = (byte) be#35 [phi:fa::@14/fa::@3->fa::@4#0] -- register_copy - //SEG248 [79] phi (byte) bd#142 = (byte) bd#35 [phi:fa::@14/fa::@3->fa::@4#1] -- register_copy - //SEG249 [79] phi (byte) bc#43 = (byte) bc#108 [phi:fa::@14/fa::@3->fa::@4#2] -- register_copy - //SEG250 fa::@4 + //SEG247 [79] phi from fa::@14 fa::@3 to fa::@4 [phi:fa::@14/fa::@3->fa::@4] + //SEG248 [79] phi (byte) be#111 = (byte) be#35 [phi:fa::@14/fa::@3->fa::@4#0] -- register_copy + //SEG249 [79] phi (byte) bd#142 = (byte) bd#35 [phi:fa::@14/fa::@3->fa::@4#1] -- register_copy + //SEG250 [79] phi (byte) bc#43 = (byte) bc#108 [phi:fa::@14/fa::@3->fa::@4#2] -- register_copy + //SEG251 fa::@4 b4: - //SEG251 [80] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fa::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG252 [80] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fa::@5 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #4 bne b5 - //SEG252 fa::@15 - //SEG253 [81] (byte) bc#109 ← ++ (byte) bc#43 -- vbuxx=_inc_vbuxx + //SEG253 fa::@15 + //SEG254 [81] (byte) bc#109 ← ++ (byte) bc#43 -- vbuxx=_inc_vbuxx inx - //SEG254 [82] (byte~) bc#178 ← (byte) bc#109 -- vbuz1=vbuxx + //SEG255 [82] (byte~) bc#178 ← (byte) bc#109 -- vbuz1=vbuxx stx bc - //SEG255 [83] call fb - //SEG256 [110] phi from fa::@15 to fb [phi:fa::@15->fb] - //SEG257 [110] phi (byte) be#118 = (byte) be#111 [phi:fa::@15->fb#0] -- register_copy - //SEG258 [110] phi (byte) bd#106 = (byte) bd#142 [phi:fa::@15->fb#1] -- register_copy - //SEG259 [110] phi (byte) bc#114 = (byte~) bc#178 [phi:fa::@15->fb#2] -- register_copy + //SEG256 [83] call fb + //SEG257 [110] phi from fa::@15 to fb [phi:fa::@15->fb] + //SEG258 [110] phi (byte) be#118 = (byte) be#111 [phi:fa::@15->fb#0] -- register_copy + //SEG259 [110] phi (byte) bd#106 = (byte) bd#142 [phi:fa::@15->fb#1] -- register_copy + //SEG260 [110] phi (byte) bc#114 = (byte~) bc#178 [phi:fa::@15->fb#2] -- register_copy jsr fb - //SEG260 [84] phi from fa::@15 fa::@4 to fa::@5 [phi:fa::@15/fa::@4->fa::@5] - //SEG261 [84] phi (byte) be#112 = (byte) be#35 [phi:fa::@15/fa::@4->fa::@5#0] -- register_copy - //SEG262 [84] phi (byte) bd#100 = (byte) bd#35 [phi:fa::@15/fa::@4->fa::@5#1] -- register_copy - //SEG263 [84] phi (byte) bc#44 = (byte) bc#109 [phi:fa::@15/fa::@4->fa::@5#2] -- register_copy - //SEG264 fa::@5 + //SEG261 [84] phi from fa::@15 fa::@4 to fa::@5 [phi:fa::@15/fa::@4->fa::@5] + //SEG262 [84] phi (byte) be#112 = (byte) be#35 [phi:fa::@15/fa::@4->fa::@5#0] -- register_copy + //SEG263 [84] phi (byte) bd#100 = (byte) bd#35 [phi:fa::@15/fa::@4->fa::@5#1] -- register_copy + //SEG264 [84] phi (byte) bc#44 = (byte) bc#109 [phi:fa::@15/fa::@4->fa::@5#2] -- register_copy + //SEG265 fa::@5 b5: - //SEG265 [85] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fa::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG266 [85] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fa::@6 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #5 bne b6 - //SEG266 fa::@16 - //SEG267 [86] (byte) bc#110 ← ++ (byte) bc#44 -- vbuxx=_inc_vbuxx + //SEG267 fa::@16 + //SEG268 [86] (byte) bc#110 ← ++ (byte) bc#44 -- vbuxx=_inc_vbuxx inx - //SEG268 [87] (byte~) bc#179 ← (byte) bc#110 -- vbuz1=vbuxx + //SEG269 [87] (byte~) bc#179 ← (byte) bc#110 -- vbuz1=vbuxx stx bc - //SEG269 [88] call fb - //SEG270 [110] phi from fa::@16 to fb [phi:fa::@16->fb] - //SEG271 [110] phi (byte) be#118 = (byte) be#112 [phi:fa::@16->fb#0] -- register_copy - //SEG272 [110] phi (byte) bd#106 = (byte) bd#100 [phi:fa::@16->fb#1] -- register_copy - //SEG273 [110] phi (byte) bc#114 = (byte~) bc#179 [phi:fa::@16->fb#2] -- register_copy + //SEG270 [88] call fb + //SEG271 [110] phi from fa::@16 to fb [phi:fa::@16->fb] + //SEG272 [110] phi (byte) be#118 = (byte) be#112 [phi:fa::@16->fb#0] -- register_copy + //SEG273 [110] phi (byte) bd#106 = (byte) bd#100 [phi:fa::@16->fb#1] -- register_copy + //SEG274 [110] phi (byte) bc#114 = (byte~) bc#179 [phi:fa::@16->fb#2] -- register_copy jsr fb - //SEG274 [89] phi from fa::@16 fa::@5 to fa::@6 [phi:fa::@16/fa::@5->fa::@6] - //SEG275 [89] phi (byte) be#113 = (byte) be#35 [phi:fa::@16/fa::@5->fa::@6#0] -- register_copy - //SEG276 [89] phi (byte) bd#101 = (byte) bd#35 [phi:fa::@16/fa::@5->fa::@6#1] -- register_copy - //SEG277 [89] phi (byte) bc#45 = (byte) bc#110 [phi:fa::@16/fa::@5->fa::@6#2] -- register_copy - //SEG278 fa::@6 + //SEG275 [89] phi from fa::@16 fa::@5 to fa::@6 [phi:fa::@16/fa::@5->fa::@6] + //SEG276 [89] phi (byte) be#113 = (byte) be#35 [phi:fa::@16/fa::@5->fa::@6#0] -- register_copy + //SEG277 [89] phi (byte) bd#101 = (byte) bd#35 [phi:fa::@16/fa::@5->fa::@6#1] -- register_copy + //SEG278 [89] phi (byte) bc#45 = (byte) bc#110 [phi:fa::@16/fa::@5->fa::@6#2] -- register_copy + //SEG279 fa::@6 b6: - //SEG279 [90] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fa::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG280 [90] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fa::@7 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #6 bne b7 - //SEG280 fa::@17 - //SEG281 [91] (byte) bc#111 ← ++ (byte) bc#45 -- vbuxx=_inc_vbuxx + //SEG281 fa::@17 + //SEG282 [91] (byte) bc#111 ← ++ (byte) bc#45 -- vbuxx=_inc_vbuxx inx - //SEG282 [92] (byte~) bc#180 ← (byte) bc#111 -- vbuz1=vbuxx + //SEG283 [92] (byte~) bc#180 ← (byte) bc#111 -- vbuz1=vbuxx stx bc - //SEG283 [93] call fb - //SEG284 [110] phi from fa::@17 to fb [phi:fa::@17->fb] - //SEG285 [110] phi (byte) be#118 = (byte) be#113 [phi:fa::@17->fb#0] -- register_copy - //SEG286 [110] phi (byte) bd#106 = (byte) bd#101 [phi:fa::@17->fb#1] -- register_copy - //SEG287 [110] phi (byte) bc#114 = (byte~) bc#180 [phi:fa::@17->fb#2] -- register_copy + //SEG284 [93] call fb + //SEG285 [110] phi from fa::@17 to fb [phi:fa::@17->fb] + //SEG286 [110] phi (byte) be#118 = (byte) be#113 [phi:fa::@17->fb#0] -- register_copy + //SEG287 [110] phi (byte) bd#106 = (byte) bd#101 [phi:fa::@17->fb#1] -- register_copy + //SEG288 [110] phi (byte) bc#114 = (byte~) bc#180 [phi:fa::@17->fb#2] -- register_copy jsr fb - //SEG288 [94] phi from fa::@17 fa::@6 to fa::@7 [phi:fa::@17/fa::@6->fa::@7] - //SEG289 [94] phi (byte) be#114 = (byte) be#35 [phi:fa::@17/fa::@6->fa::@7#0] -- register_copy - //SEG290 [94] phi (byte) bd#102 = (byte) bd#35 [phi:fa::@17/fa::@6->fa::@7#1] -- register_copy - //SEG291 [94] phi (byte) bc#46 = (byte) bc#111 [phi:fa::@17/fa::@6->fa::@7#2] -- register_copy - //SEG292 fa::@7 + //SEG289 [94] phi from fa::@17 fa::@6 to fa::@7 [phi:fa::@17/fa::@6->fa::@7] + //SEG290 [94] phi (byte) be#114 = (byte) be#35 [phi:fa::@17/fa::@6->fa::@7#0] -- register_copy + //SEG291 [94] phi (byte) bd#102 = (byte) bd#35 [phi:fa::@17/fa::@6->fa::@7#1] -- register_copy + //SEG292 [94] phi (byte) bc#46 = (byte) bc#111 [phi:fa::@17/fa::@6->fa::@7#2] -- register_copy + //SEG293 fa::@7 b7: - //SEG293 [95] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fa::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG294 [95] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fa::@8 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #7 bne b8 - //SEG294 fa::@18 - //SEG295 [96] (byte) bc#112 ← ++ (byte) bc#46 -- vbuxx=_inc_vbuxx + //SEG295 fa::@18 + //SEG296 [96] (byte) bc#112 ← ++ (byte) bc#46 -- vbuxx=_inc_vbuxx inx - //SEG296 [97] (byte~) bc#181 ← (byte) bc#112 -- vbuz1=vbuxx + //SEG297 [97] (byte~) bc#181 ← (byte) bc#112 -- vbuz1=vbuxx stx bc - //SEG297 [98] call fb - //SEG298 [110] phi from fa::@18 to fb [phi:fa::@18->fb] - //SEG299 [110] phi (byte) be#118 = (byte) be#114 [phi:fa::@18->fb#0] -- register_copy - //SEG300 [110] phi (byte) bd#106 = (byte) bd#102 [phi:fa::@18->fb#1] -- register_copy - //SEG301 [110] phi (byte) bc#114 = (byte~) bc#181 [phi:fa::@18->fb#2] -- register_copy + //SEG298 [98] call fb + //SEG299 [110] phi from fa::@18 to fb [phi:fa::@18->fb] + //SEG300 [110] phi (byte) be#118 = (byte) be#114 [phi:fa::@18->fb#0] -- register_copy + //SEG301 [110] phi (byte) bd#106 = (byte) bd#102 [phi:fa::@18->fb#1] -- register_copy + //SEG302 [110] phi (byte) bc#114 = (byte~) bc#181 [phi:fa::@18->fb#2] -- register_copy jsr fb - //SEG302 [99] phi from fa::@18 fa::@7 to fa::@8 [phi:fa::@18/fa::@7->fa::@8] - //SEG303 [99] phi (byte) be#115 = (byte) be#35 [phi:fa::@18/fa::@7->fa::@8#0] -- register_copy - //SEG304 [99] phi (byte) bd#103 = (byte) bd#35 [phi:fa::@18/fa::@7->fa::@8#1] -- register_copy - //SEG305 [99] phi (byte) bc#47 = (byte) bc#112 [phi:fa::@18/fa::@7->fa::@8#2] -- register_copy - //SEG306 fa::@8 + //SEG303 [99] phi from fa::@18 fa::@7 to fa::@8 [phi:fa::@18/fa::@7->fa::@8] + //SEG304 [99] phi (byte) be#115 = (byte) be#35 [phi:fa::@18/fa::@7->fa::@8#0] -- register_copy + //SEG305 [99] phi (byte) bd#103 = (byte) bd#35 [phi:fa::@18/fa::@7->fa::@8#1] -- register_copy + //SEG306 [99] phi (byte) bc#47 = (byte) bc#112 [phi:fa::@18/fa::@7->fa::@8#2] -- register_copy + //SEG307 fa::@8 b8: - //SEG307 [100] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fa::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG308 [100] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fa::@9 -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #8 bne b9 - //SEG308 fa::@19 - //SEG309 [101] (byte) bc#123 ← ++ (byte) bc#47 -- vbuxx=_inc_vbuxx + //SEG309 fa::@19 + //SEG310 [101] (byte) bc#123 ← ++ (byte) bc#47 -- vbuxx=_inc_vbuxx inx - //SEG310 [102] (byte~) bc#182 ← (byte) bc#123 -- vbuz1=vbuxx + //SEG311 [102] (byte~) bc#182 ← (byte) bc#123 -- vbuz1=vbuxx stx bc - //SEG311 [103] call fb - //SEG312 [110] phi from fa::@19 to fb [phi:fa::@19->fb] - //SEG313 [110] phi (byte) be#118 = (byte) be#115 [phi:fa::@19->fb#0] -- register_copy - //SEG314 [110] phi (byte) bd#106 = (byte) bd#103 [phi:fa::@19->fb#1] -- register_copy - //SEG315 [110] phi (byte) bc#114 = (byte~) bc#182 [phi:fa::@19->fb#2] -- register_copy + //SEG312 [103] call fb + //SEG313 [110] phi from fa::@19 to fb [phi:fa::@19->fb] + //SEG314 [110] phi (byte) be#118 = (byte) be#115 [phi:fa::@19->fb#0] -- register_copy + //SEG315 [110] phi (byte) bd#106 = (byte) bd#103 [phi:fa::@19->fb#1] -- register_copy + //SEG316 [110] phi (byte) bc#114 = (byte~) bc#182 [phi:fa::@19->fb#2] -- register_copy jsr fb - //SEG316 [104] phi from fa::@19 fa::@8 to fa::@9 [phi:fa::@19/fa::@8->fa::@9] - //SEG317 [104] phi (byte) be#116 = (byte) be#35 [phi:fa::@19/fa::@8->fa::@9#0] -- register_copy - //SEG318 [104] phi (byte) bd#104 = (byte) bd#35 [phi:fa::@19/fa::@8->fa::@9#1] -- register_copy - //SEG319 [104] phi (byte) bc#113 = (byte) bc#123 [phi:fa::@19/fa::@8->fa::@9#2] -- register_copy - //SEG320 fa::@9 + //SEG317 [104] phi from fa::@19 fa::@8 to fa::@9 [phi:fa::@19/fa::@8->fa::@9] + //SEG318 [104] phi (byte) be#116 = (byte) be#35 [phi:fa::@19/fa::@8->fa::@9#0] -- register_copy + //SEG319 [104] phi (byte) bd#104 = (byte) bd#35 [phi:fa::@19/fa::@8->fa::@9#1] -- register_copy + //SEG320 [104] phi (byte) bc#113 = (byte) bc#123 [phi:fa::@19/fa::@8->fa::@9#2] -- register_copy + //SEG321 fa::@9 b9: - //SEG321 [105] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fa::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG322 [105] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fa::@return -- vbuz1_neq_vbuc1_then_la1 lda bb_27 cmp #9 bne breturn - //SEG322 [106] phi from fa::@9 to fa::@20 [phi:fa::@9->fa::@20] - //SEG323 fa::@20 - //SEG324 [107] call fb - //SEG325 [110] phi from fa::@20 to fb [phi:fa::@20->fb] - //SEG326 [110] phi (byte) be#118 = (byte) be#116 [phi:fa::@20->fb#0] -- register_copy - //SEG327 [110] phi (byte) bd#106 = (byte) bd#104 [phi:fa::@20->fb#1] -- register_copy - //SEG328 [110] phi (byte) bc#114 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fb#2] -- vbuz1=vbuc1 + //SEG323 [106] phi from fa::@9 to fa::@20 [phi:fa::@9->fa::@20] + //SEG324 fa::@20 + //SEG325 [107] call fb + //SEG326 [110] phi from fa::@20 to fb [phi:fa::@20->fb] + //SEG327 [110] phi (byte) be#118 = (byte) be#116 [phi:fa::@20->fb#0] -- register_copy + //SEG328 [110] phi (byte) bd#106 = (byte) bd#104 [phi:fa::@20->fb#1] -- register_copy + //SEG329 [110] phi (byte) bc#114 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fb#2] -- vbuz1=vbuc1 lda #0 sta bc jsr fb - //SEG329 [108] phi from fa::@20 to fa::@return [phi:fa::@20->fa::@return] - //SEG330 [108] phi (byte) be#24 = (byte) be#35 [phi:fa::@20->fa::@return#0] -- register_copy - //SEG331 [108] phi (byte) bd#24 = (byte) bd#35 [phi:fa::@20->fa::@return#1] -- register_copy - //SEG332 [108] phi (byte) bc#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fa::@return#2] -- vbuxx=vbuc1 + //SEG330 [108] phi from fa::@20 to fa::@return [phi:fa::@20->fa::@return] + //SEG331 [108] phi (byte) be#24 = (byte) be#35 [phi:fa::@20->fa::@return#0] -- register_copy + //SEG332 [108] phi (byte) bd#24 = (byte) bd#35 [phi:fa::@20->fa::@return#1] -- register_copy + //SEG333 [108] phi (byte) bc#24 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fa::@20->fa::@return#2] -- vbuxx=vbuc1 ldx #0 - //SEG333 [108] phi from fa::@9 to fa::@return [phi:fa::@9->fa::@return] - //SEG334 [108] phi (byte) be#24 = (byte) be#116 [phi:fa::@9->fa::@return#0] -- register_copy - //SEG335 [108] phi (byte) bd#24 = (byte) bd#104 [phi:fa::@9->fa::@return#1] -- register_copy - //SEG336 [108] phi (byte) bc#24 = (byte) bc#113 [phi:fa::@9->fa::@return#2] -- register_copy - //SEG337 fa::@return + //SEG334 [108] phi from fa::@9 to fa::@return [phi:fa::@9->fa::@return] + //SEG335 [108] phi (byte) be#24 = (byte) be#116 [phi:fa::@9->fa::@return#0] -- register_copy + //SEG336 [108] phi (byte) bd#24 = (byte) bd#104 [phi:fa::@9->fa::@return#1] -- register_copy + //SEG337 [108] phi (byte) bc#24 = (byte) bc#113 [phi:fa::@9->fa::@return#2] -- register_copy + //SEG338 fa::@return breturn: - //SEG338 [109] return + //SEG339 [109] return rts } -//SEG339 fb +//SEG340 fb fb: { - //SEG340 [111] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fb::@1 -- vbuz1_neq_0_then_la1 + //SEG341 [111] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fb::@1 -- vbuz1_neq_0_then_la1 lda bc cmp #0 bne b1 - //SEG341 fb::@11 - //SEG342 [112] (byte) bd#148 ← ++ (byte) bd#106 -- vbuyy=_inc_vbuyy + //SEG342 fb::@11 + //SEG343 [112] (byte) bd#148 ← ++ (byte) bd#106 -- vbuyy=_inc_vbuyy iny - //SEG343 [113] (byte~) bd#238 ← (byte) bd#148 -- vbuaa=vbuyy + //SEG344 [113] (byte~) bd#238 ← (byte) bd#148 -- vbuaa=vbuyy tya - //SEG344 [114] call fc - //SEG345 [161] phi from fb::@11 to fc [phi:fb::@11->fc] - //SEG346 [161] phi (byte) be#129 = (byte) be#118 [phi:fb::@11->fc#0] -- register_copy - //SEG347 [161] phi (byte) bd#117 = (byte~) bd#238 [phi:fb::@11->fc#1] -- register_copy + //SEG345 [114] call fc + //SEG346 [161] phi from fb::@11 to fc [phi:fb::@11->fc] + //SEG347 [161] phi (byte) be#129 = (byte) be#118 [phi:fb::@11->fc#0] -- register_copy + //SEG348 [161] phi (byte) bd#117 = (byte~) bd#238 [phi:fb::@11->fc#1] -- register_copy jsr fc - //SEG348 [115] phi from fb fb::@11 to fb::@1 [phi:fb/fb::@11->fb::@1] - //SEG349 [115] phi (byte) be#119 = (byte) be#118 [phi:fb/fb::@11->fb::@1#0] -- register_copy - //SEG350 [115] phi (byte) bd#107 = (byte) bd#106 [phi:fb/fb::@11->fb::@1#1] -- register_copy - //SEG351 fb::@1 + //SEG349 [115] phi from fb fb::@11 to fb::@1 [phi:fb/fb::@11->fb::@1] + //SEG350 [115] phi (byte) be#119 = (byte) be#118 [phi:fb/fb::@11->fb::@1#0] -- register_copy + //SEG351 [115] phi (byte) bd#107 = (byte) bd#106 [phi:fb/fb::@11->fb::@1#1] -- register_copy + //SEG352 fb::@1 b1: - //SEG352 [116] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fb::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG353 [116] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fb::@2 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #1 bne b2 - //SEG353 fb::@12 - //SEG354 [117] (byte) bd#149 ← ++ (byte) bd#107 -- vbuyy=_inc_vbuyy + //SEG354 fb::@12 + //SEG355 [117] (byte) bd#149 ← ++ (byte) bd#107 -- vbuyy=_inc_vbuyy iny - //SEG355 [118] (byte~) bd#239 ← (byte) bd#149 -- vbuaa=vbuyy + //SEG356 [118] (byte~) bd#239 ← (byte) bd#149 -- vbuaa=vbuyy tya - //SEG356 [119] call fc - //SEG357 [161] phi from fb::@12 to fc [phi:fb::@12->fc] - //SEG358 [161] phi (byte) be#129 = (byte) be#119 [phi:fb::@12->fc#0] -- register_copy - //SEG359 [161] phi (byte) bd#117 = (byte~) bd#239 [phi:fb::@12->fc#1] -- register_copy + //SEG357 [119] call fc + //SEG358 [161] phi from fb::@12 to fc [phi:fb::@12->fc] + //SEG359 [161] phi (byte) be#129 = (byte) be#119 [phi:fb::@12->fc#0] -- register_copy + //SEG360 [161] phi (byte) bd#117 = (byte~) bd#239 [phi:fb::@12->fc#1] -- register_copy jsr fc - //SEG360 [120] phi from fb::@1 fb::@12 to fb::@2 [phi:fb::@1/fb::@12->fb::@2] - //SEG361 [120] phi (byte) be#120 = (byte) be#119 [phi:fb::@1/fb::@12->fb::@2#0] -- register_copy - //SEG362 [120] phi (byte) bd#108 = (byte) bd#107 [phi:fb::@1/fb::@12->fb::@2#1] -- register_copy - //SEG363 fb::@2 + //SEG361 [120] phi from fb::@1 fb::@12 to fb::@2 [phi:fb::@1/fb::@12->fb::@2] + //SEG362 [120] phi (byte) be#120 = (byte) be#119 [phi:fb::@1/fb::@12->fb::@2#0] -- register_copy + //SEG363 [120] phi (byte) bd#108 = (byte) bd#107 [phi:fb::@1/fb::@12->fb::@2#1] -- register_copy + //SEG364 fb::@2 b2: - //SEG364 [121] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fb::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG365 [121] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fb::@3 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #2 bne b3 - //SEG365 fb::@13 - //SEG366 [122] (byte) bd#150 ← ++ (byte) bd#108 -- vbuyy=_inc_vbuyy + //SEG366 fb::@13 + //SEG367 [122] (byte) bd#150 ← ++ (byte) bd#108 -- vbuyy=_inc_vbuyy iny - //SEG367 [123] (byte~) bd#240 ← (byte) bd#150 -- vbuaa=vbuyy + //SEG368 [123] (byte~) bd#240 ← (byte) bd#150 -- vbuaa=vbuyy tya - //SEG368 [124] call fc - //SEG369 [161] phi from fb::@13 to fc [phi:fb::@13->fc] - //SEG370 [161] phi (byte) be#129 = (byte) be#120 [phi:fb::@13->fc#0] -- register_copy - //SEG371 [161] phi (byte) bd#117 = (byte~) bd#240 [phi:fb::@13->fc#1] -- register_copy + //SEG369 [124] call fc + //SEG370 [161] phi from fb::@13 to fc [phi:fb::@13->fc] + //SEG371 [161] phi (byte) be#129 = (byte) be#120 [phi:fb::@13->fc#0] -- register_copy + //SEG372 [161] phi (byte) bd#117 = (byte~) bd#240 [phi:fb::@13->fc#1] -- register_copy jsr fc - //SEG372 [125] phi from fb::@13 fb::@2 to fb::@3 [phi:fb::@13/fb::@2->fb::@3] - //SEG373 [125] phi (byte) be#121 = (byte) be#46 [phi:fb::@13/fb::@2->fb::@3#0] -- register_copy - //SEG374 [125] phi (byte) bd#109 = (byte) bd#150 [phi:fb::@13/fb::@2->fb::@3#1] -- register_copy - //SEG375 fb::@3 + //SEG373 [125] phi from fb::@13 fb::@2 to fb::@3 [phi:fb::@13/fb::@2->fb::@3] + //SEG374 [125] phi (byte) be#121 = (byte) be#46 [phi:fb::@13/fb::@2->fb::@3#0] -- register_copy + //SEG375 [125] phi (byte) bd#109 = (byte) bd#150 [phi:fb::@13/fb::@2->fb::@3#1] -- register_copy + //SEG376 fb::@3 b3: - //SEG376 [126] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fb::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG377 [126] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fb::@4 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #3 bne b4 - //SEG377 fb::@14 - //SEG378 [127] (byte) bd#151 ← ++ (byte) bd#109 -- vbuyy=_inc_vbuyy + //SEG378 fb::@14 + //SEG379 [127] (byte) bd#151 ← ++ (byte) bd#109 -- vbuyy=_inc_vbuyy iny - //SEG379 [128] (byte~) bd#241 ← (byte) bd#151 -- vbuaa=vbuyy + //SEG380 [128] (byte~) bd#241 ← (byte) bd#151 -- vbuaa=vbuyy tya - //SEG380 [129] call fc - //SEG381 [161] phi from fb::@14 to fc [phi:fb::@14->fc] - //SEG382 [161] phi (byte) be#129 = (byte) be#121 [phi:fb::@14->fc#0] -- register_copy - //SEG383 [161] phi (byte) bd#117 = (byte~) bd#241 [phi:fb::@14->fc#1] -- register_copy + //SEG381 [129] call fc + //SEG382 [161] phi from fb::@14 to fc [phi:fb::@14->fc] + //SEG383 [161] phi (byte) be#129 = (byte) be#121 [phi:fb::@14->fc#0] -- register_copy + //SEG384 [161] phi (byte) bd#117 = (byte~) bd#241 [phi:fb::@14->fc#1] -- register_copy jsr fc - //SEG384 [130] phi from fb::@14 fb::@3 to fb::@4 [phi:fb::@14/fb::@3->fb::@4] - //SEG385 [130] phi (byte) be#122 = (byte) be#46 [phi:fb::@14/fb::@3->fb::@4#0] -- register_copy - //SEG386 [130] phi (byte) bd#110 = (byte) bd#151 [phi:fb::@14/fb::@3->fb::@4#1] -- register_copy - //SEG387 fb::@4 + //SEG385 [130] phi from fb::@14 fb::@3 to fb::@4 [phi:fb::@14/fb::@3->fb::@4] + //SEG386 [130] phi (byte) be#122 = (byte) be#46 [phi:fb::@14/fb::@3->fb::@4#0] -- register_copy + //SEG387 [130] phi (byte) bd#110 = (byte) bd#151 [phi:fb::@14/fb::@3->fb::@4#1] -- register_copy + //SEG388 fb::@4 b4: - //SEG388 [131] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fb::@5 -- vbuz1_neq_vbuc1_then_la1 + //SEG389 [131] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fb::@5 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #4 bne b5 - //SEG389 fb::@15 - //SEG390 [132] (byte) bd#152 ← ++ (byte) bd#110 -- vbuyy=_inc_vbuyy + //SEG390 fb::@15 + //SEG391 [132] (byte) bd#152 ← ++ (byte) bd#110 -- vbuyy=_inc_vbuyy iny - //SEG391 [133] (byte~) bd#242 ← (byte) bd#152 -- vbuaa=vbuyy + //SEG392 [133] (byte~) bd#242 ← (byte) bd#152 -- vbuaa=vbuyy tya - //SEG392 [134] call fc - //SEG393 [161] phi from fb::@15 to fc [phi:fb::@15->fc] - //SEG394 [161] phi (byte) be#129 = (byte) be#122 [phi:fb::@15->fc#0] -- register_copy - //SEG395 [161] phi (byte) bd#117 = (byte~) bd#242 [phi:fb::@15->fc#1] -- register_copy + //SEG393 [134] call fc + //SEG394 [161] phi from fb::@15 to fc [phi:fb::@15->fc] + //SEG395 [161] phi (byte) be#129 = (byte) be#122 [phi:fb::@15->fc#0] -- register_copy + //SEG396 [161] phi (byte) bd#117 = (byte~) bd#242 [phi:fb::@15->fc#1] -- register_copy jsr fc - //SEG396 [135] phi from fb::@15 fb::@4 to fb::@5 [phi:fb::@15/fb::@4->fb::@5] - //SEG397 [135] phi (byte) be#123 = (byte) be#46 [phi:fb::@15/fb::@4->fb::@5#0] -- register_copy - //SEG398 [135] phi (byte) bd#111 = (byte) bd#152 [phi:fb::@15/fb::@4->fb::@5#1] -- register_copy - //SEG399 fb::@5 + //SEG397 [135] phi from fb::@15 fb::@4 to fb::@5 [phi:fb::@15/fb::@4->fb::@5] + //SEG398 [135] phi (byte) be#123 = (byte) be#46 [phi:fb::@15/fb::@4->fb::@5#0] -- register_copy + //SEG399 [135] phi (byte) bd#111 = (byte) bd#152 [phi:fb::@15/fb::@4->fb::@5#1] -- register_copy + //SEG400 fb::@5 b5: - //SEG400 [136] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fb::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG401 [136] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fb::@6 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #5 bne b6 - //SEG401 fb::@16 - //SEG402 [137] (byte) bd#153 ← ++ (byte) bd#111 -- vbuyy=_inc_vbuyy + //SEG402 fb::@16 + //SEG403 [137] (byte) bd#153 ← ++ (byte) bd#111 -- vbuyy=_inc_vbuyy iny - //SEG403 [138] (byte~) bd#243 ← (byte) bd#153 -- vbuaa=vbuyy + //SEG404 [138] (byte~) bd#243 ← (byte) bd#153 -- vbuaa=vbuyy tya - //SEG404 [139] call fc - //SEG405 [161] phi from fb::@16 to fc [phi:fb::@16->fc] - //SEG406 [161] phi (byte) be#129 = (byte) be#123 [phi:fb::@16->fc#0] -- register_copy - //SEG407 [161] phi (byte) bd#117 = (byte~) bd#243 [phi:fb::@16->fc#1] -- register_copy + //SEG405 [139] call fc + //SEG406 [161] phi from fb::@16 to fc [phi:fb::@16->fc] + //SEG407 [161] phi (byte) be#129 = (byte) be#123 [phi:fb::@16->fc#0] -- register_copy + //SEG408 [161] phi (byte) bd#117 = (byte~) bd#243 [phi:fb::@16->fc#1] -- register_copy jsr fc - //SEG408 [140] phi from fb::@16 fb::@5 to fb::@6 [phi:fb::@16/fb::@5->fb::@6] - //SEG409 [140] phi (byte) be#124 = (byte) be#46 [phi:fb::@16/fb::@5->fb::@6#0] -- register_copy - //SEG410 [140] phi (byte) bd#112 = (byte) bd#153 [phi:fb::@16/fb::@5->fb::@6#1] -- register_copy - //SEG411 fb::@6 + //SEG409 [140] phi from fb::@16 fb::@5 to fb::@6 [phi:fb::@16/fb::@5->fb::@6] + //SEG410 [140] phi (byte) be#124 = (byte) be#46 [phi:fb::@16/fb::@5->fb::@6#0] -- register_copy + //SEG411 [140] phi (byte) bd#112 = (byte) bd#153 [phi:fb::@16/fb::@5->fb::@6#1] -- register_copy + //SEG412 fb::@6 b6: - //SEG412 [141] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fb::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG413 [141] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fb::@7 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #6 bne b7 - //SEG413 fb::@17 - //SEG414 [142] (byte) bd#154 ← ++ (byte) bd#112 -- vbuyy=_inc_vbuyy + //SEG414 fb::@17 + //SEG415 [142] (byte) bd#154 ← ++ (byte) bd#112 -- vbuyy=_inc_vbuyy iny - //SEG415 [143] (byte~) bd#244 ← (byte) bd#154 -- vbuaa=vbuyy + //SEG416 [143] (byte~) bd#244 ← (byte) bd#154 -- vbuaa=vbuyy tya - //SEG416 [144] call fc - //SEG417 [161] phi from fb::@17 to fc [phi:fb::@17->fc] - //SEG418 [161] phi (byte) be#129 = (byte) be#124 [phi:fb::@17->fc#0] -- register_copy - //SEG419 [161] phi (byte) bd#117 = (byte~) bd#244 [phi:fb::@17->fc#1] -- register_copy + //SEG417 [144] call fc + //SEG418 [161] phi from fb::@17 to fc [phi:fb::@17->fc] + //SEG419 [161] phi (byte) be#129 = (byte) be#124 [phi:fb::@17->fc#0] -- register_copy + //SEG420 [161] phi (byte) bd#117 = (byte~) bd#244 [phi:fb::@17->fc#1] -- register_copy jsr fc - //SEG420 [145] phi from fb::@17 fb::@6 to fb::@7 [phi:fb::@17/fb::@6->fb::@7] - //SEG421 [145] phi (byte) be#125 = (byte) be#46 [phi:fb::@17/fb::@6->fb::@7#0] -- register_copy - //SEG422 [145] phi (byte) bd#113 = (byte) bd#154 [phi:fb::@17/fb::@6->fb::@7#1] -- register_copy - //SEG423 fb::@7 + //SEG421 [145] phi from fb::@17 fb::@6 to fb::@7 [phi:fb::@17/fb::@6->fb::@7] + //SEG422 [145] phi (byte) be#125 = (byte) be#46 [phi:fb::@17/fb::@6->fb::@7#0] -- register_copy + //SEG423 [145] phi (byte) bd#113 = (byte) bd#154 [phi:fb::@17/fb::@6->fb::@7#1] -- register_copy + //SEG424 fb::@7 b7: - //SEG424 [146] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fb::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG425 [146] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fb::@8 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #7 bne b8 - //SEG425 fb::@18 - //SEG426 [147] (byte) bd#155 ← ++ (byte) bd#113 -- vbuyy=_inc_vbuyy + //SEG426 fb::@18 + //SEG427 [147] (byte) bd#155 ← ++ (byte) bd#113 -- vbuyy=_inc_vbuyy iny - //SEG427 [148] (byte~) bd#245 ← (byte) bd#155 -- vbuaa=vbuyy + //SEG428 [148] (byte~) bd#245 ← (byte) bd#155 -- vbuaa=vbuyy tya - //SEG428 [149] call fc - //SEG429 [161] phi from fb::@18 to fc [phi:fb::@18->fc] - //SEG430 [161] phi (byte) be#129 = (byte) be#125 [phi:fb::@18->fc#0] -- register_copy - //SEG431 [161] phi (byte) bd#117 = (byte~) bd#245 [phi:fb::@18->fc#1] -- register_copy + //SEG429 [149] call fc + //SEG430 [161] phi from fb::@18 to fc [phi:fb::@18->fc] + //SEG431 [161] phi (byte) be#129 = (byte) be#125 [phi:fb::@18->fc#0] -- register_copy + //SEG432 [161] phi (byte) bd#117 = (byte~) bd#245 [phi:fb::@18->fc#1] -- register_copy jsr fc - //SEG432 [150] phi from fb::@18 fb::@7 to fb::@8 [phi:fb::@18/fb::@7->fb::@8] - //SEG433 [150] phi (byte) be#126 = (byte) be#46 [phi:fb::@18/fb::@7->fb::@8#0] -- register_copy - //SEG434 [150] phi (byte) bd#114 = (byte) bd#155 [phi:fb::@18/fb::@7->fb::@8#1] -- register_copy - //SEG435 fb::@8 + //SEG433 [150] phi from fb::@18 fb::@7 to fb::@8 [phi:fb::@18/fb::@7->fb::@8] + //SEG434 [150] phi (byte) be#126 = (byte) be#46 [phi:fb::@18/fb::@7->fb::@8#0] -- register_copy + //SEG435 [150] phi (byte) bd#114 = (byte) bd#155 [phi:fb::@18/fb::@7->fb::@8#1] -- register_copy + //SEG436 fb::@8 b8: - //SEG436 [151] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fb::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG437 [151] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fb::@9 -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #8 bne b9 - //SEG437 fb::@19 - //SEG438 [152] (byte) bd#157 ← ++ (byte) bd#114 -- vbuyy=_inc_vbuyy + //SEG438 fb::@19 + //SEG439 [152] (byte) bd#157 ← ++ (byte) bd#114 -- vbuyy=_inc_vbuyy iny - //SEG439 [153] (byte~) bd#246 ← (byte) bd#157 -- vbuaa=vbuyy + //SEG440 [153] (byte~) bd#246 ← (byte) bd#157 -- vbuaa=vbuyy tya - //SEG440 [154] call fc - //SEG441 [161] phi from fb::@19 to fc [phi:fb::@19->fc] - //SEG442 [161] phi (byte) be#129 = (byte) be#126 [phi:fb::@19->fc#0] -- register_copy - //SEG443 [161] phi (byte) bd#117 = (byte~) bd#246 [phi:fb::@19->fc#1] -- register_copy + //SEG441 [154] call fc + //SEG442 [161] phi from fb::@19 to fc [phi:fb::@19->fc] + //SEG443 [161] phi (byte) be#129 = (byte) be#126 [phi:fb::@19->fc#0] -- register_copy + //SEG444 [161] phi (byte) bd#117 = (byte~) bd#246 [phi:fb::@19->fc#1] -- register_copy jsr fc - //SEG444 [155] phi from fb::@19 fb::@8 to fb::@9 [phi:fb::@19/fb::@8->fb::@9] - //SEG445 [155] phi (byte) be#127 = (byte) be#46 [phi:fb::@19/fb::@8->fb::@9#0] -- register_copy - //SEG446 [155] phi (byte) bd#115 = (byte) bd#157 [phi:fb::@19/fb::@8->fb::@9#1] -- register_copy - //SEG447 fb::@9 + //SEG445 [155] phi from fb::@19 fb::@8 to fb::@9 [phi:fb::@19/fb::@8->fb::@9] + //SEG446 [155] phi (byte) be#127 = (byte) be#46 [phi:fb::@19/fb::@8->fb::@9#0] -- register_copy + //SEG447 [155] phi (byte) bd#115 = (byte) bd#157 [phi:fb::@19/fb::@8->fb::@9#1] -- register_copy + //SEG448 fb::@9 b9: - //SEG448 [156] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fb::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG449 [156] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fb::@return -- vbuz1_neq_vbuc1_then_la1 lda bc cmp #9 bne breturn - //SEG449 [157] phi from fb::@9 to fb::@20 [phi:fb::@9->fb::@20] - //SEG450 fb::@20 - //SEG451 [158] call fc - //SEG452 [161] phi from fb::@20 to fc [phi:fb::@20->fc] - //SEG453 [161] phi (byte) be#129 = (byte) be#127 [phi:fb::@20->fc#0] -- register_copy - //SEG454 [161] phi (byte) bd#117 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fc#1] -- vbuaa=vbuc1 + //SEG450 [157] phi from fb::@9 to fb::@20 [phi:fb::@9->fb::@20] + //SEG451 fb::@20 + //SEG452 [158] call fc + //SEG453 [161] phi from fb::@20 to fc [phi:fb::@20->fc] + //SEG454 [161] phi (byte) be#129 = (byte) be#127 [phi:fb::@20->fc#0] -- register_copy + //SEG455 [161] phi (byte) bd#117 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fc#1] -- vbuaa=vbuc1 lda #0 jsr fc - //SEG455 [159] phi from fb::@20 to fb::@return [phi:fb::@20->fb::@return] - //SEG456 [159] phi (byte) be#35 = (byte) be#46 [phi:fb::@20->fb::@return#0] -- register_copy - //SEG457 [159] phi (byte) bd#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fb::@return#1] -- vbuyy=vbuc1 + //SEG456 [159] phi from fb::@20 to fb::@return [phi:fb::@20->fb::@return] + //SEG457 [159] phi (byte) be#35 = (byte) be#46 [phi:fb::@20->fb::@return#0] -- register_copy + //SEG458 [159] phi (byte) bd#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fb::@20->fb::@return#1] -- vbuyy=vbuc1 ldy #0 - //SEG458 [159] phi from fb::@9 to fb::@return [phi:fb::@9->fb::@return] - //SEG459 [159] phi (byte) be#35 = (byte) be#127 [phi:fb::@9->fb::@return#0] -- register_copy - //SEG460 [159] phi (byte) bd#35 = (byte) bd#115 [phi:fb::@9->fb::@return#1] -- register_copy - //SEG461 fb::@return + //SEG459 [159] phi from fb::@9 to fb::@return [phi:fb::@9->fb::@return] + //SEG460 [159] phi (byte) be#35 = (byte) be#127 [phi:fb::@9->fb::@return#0] -- register_copy + //SEG461 [159] phi (byte) bd#35 = (byte) bd#115 [phi:fb::@9->fb::@return#1] -- register_copy + //SEG462 fb::@return breturn: - //SEG462 [160] return + //SEG463 [160] return rts } -//SEG463 fc +//SEG464 fc fc: { - //SEG464 [162] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fc::@1 -- vbuaa_neq_0_then_la1 + //SEG465 [162] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fc::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 - //SEG465 fc::@11 - //SEG466 [163] (byte) be#36 ← ++ (byte) be#129 -- vbuz1=_inc_vbuz1 + //SEG466 fc::@11 + //SEG467 [163] (byte) be#36 ← ++ (byte) be#129 -- vbuz1=_inc_vbuz1 inc be - //SEG467 [164] phi from fc fc::@11 to fc::@1 [phi:fc/fc::@11->fc::@1] - //SEG468 [164] phi (byte) be#130 = (byte) be#129 [phi:fc/fc::@11->fc::@1#0] -- register_copy - //SEG469 fc::@1 + //SEG468 [164] phi from fc fc::@11 to fc::@1 [phi:fc/fc::@11->fc::@1] + //SEG469 [164] phi (byte) be#130 = (byte) be#129 [phi:fc/fc::@11->fc::@1#0] -- register_copy + //SEG470 fc::@1 b1: - //SEG470 [165] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fc::@2 -- vbuaa_neq_vbuc1_then_la1 + //SEG471 [165] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fc::@2 -- vbuaa_neq_vbuc1_then_la1 cmp #1 bne b2 - //SEG471 fc::@12 - //SEG472 [166] (byte) be#37 ← ++ (byte) be#130 -- vbuz1=_inc_vbuz1 + //SEG472 fc::@12 + //SEG473 [166] (byte) be#37 ← ++ (byte) be#130 -- vbuz1=_inc_vbuz1 inc be - //SEG473 [167] phi from fc::@1 fc::@12 to fc::@2 [phi:fc::@1/fc::@12->fc::@2] - //SEG474 [167] phi (byte) be#131 = (byte) be#130 [phi:fc::@1/fc::@12->fc::@2#0] -- register_copy - //SEG475 fc::@2 + //SEG474 [167] phi from fc::@1 fc::@12 to fc::@2 [phi:fc::@1/fc::@12->fc::@2] + //SEG475 [167] phi (byte) be#131 = (byte) be#130 [phi:fc::@1/fc::@12->fc::@2#0] -- register_copy + //SEG476 fc::@2 b2: - //SEG476 [168] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fc::@3 -- vbuaa_neq_vbuc1_then_la1 + //SEG477 [168] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fc::@3 -- vbuaa_neq_vbuc1_then_la1 cmp #2 bne b3 - //SEG477 fc::@13 - //SEG478 [169] (byte) be#38 ← ++ (byte) be#131 -- vbuz1=_inc_vbuz1 + //SEG478 fc::@13 + //SEG479 [169] (byte) be#38 ← ++ (byte) be#131 -- vbuz1=_inc_vbuz1 inc be - //SEG479 [170] phi from fc::@13 fc::@2 to fc::@3 [phi:fc::@13/fc::@2->fc::@3] - //SEG480 [170] phi (byte) be#132 = (byte) be#38 [phi:fc::@13/fc::@2->fc::@3#0] -- register_copy - //SEG481 fc::@3 + //SEG480 [170] phi from fc::@13 fc::@2 to fc::@3 [phi:fc::@13/fc::@2->fc::@3] + //SEG481 [170] phi (byte) be#132 = (byte) be#38 [phi:fc::@13/fc::@2->fc::@3#0] -- register_copy + //SEG482 fc::@3 b3: - //SEG482 [171] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fc::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG483 [171] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fc::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #3 bne b4 - //SEG483 fc::@14 - //SEG484 [172] (byte) be#39 ← ++ (byte) be#132 -- vbuz1=_inc_vbuz1 + //SEG484 fc::@14 + //SEG485 [172] (byte) be#39 ← ++ (byte) be#132 -- vbuz1=_inc_vbuz1 inc be - //SEG485 [173] phi from fc::@14 fc::@3 to fc::@4 [phi:fc::@14/fc::@3->fc::@4] - //SEG486 [173] phi (byte) be#133 = (byte) be#39 [phi:fc::@14/fc::@3->fc::@4#0] -- register_copy - //SEG487 fc::@4 + //SEG486 [173] phi from fc::@14 fc::@3 to fc::@4 [phi:fc::@14/fc::@3->fc::@4] + //SEG487 [173] phi (byte) be#133 = (byte) be#39 [phi:fc::@14/fc::@3->fc::@4#0] -- register_copy + //SEG488 fc::@4 b4: - //SEG488 [174] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fc::@5 -- vbuaa_neq_vbuc1_then_la1 + //SEG489 [174] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fc::@5 -- vbuaa_neq_vbuc1_then_la1 cmp #4 bne b5 - //SEG489 fc::@15 - //SEG490 [175] (byte) be#40 ← ++ (byte) be#133 -- vbuz1=_inc_vbuz1 + //SEG490 fc::@15 + //SEG491 [175] (byte) be#40 ← ++ (byte) be#133 -- vbuz1=_inc_vbuz1 inc be - //SEG491 [176] phi from fc::@15 fc::@4 to fc::@5 [phi:fc::@15/fc::@4->fc::@5] - //SEG492 [176] phi (byte) be#134 = (byte) be#40 [phi:fc::@15/fc::@4->fc::@5#0] -- register_copy - //SEG493 fc::@5 + //SEG492 [176] phi from fc::@15 fc::@4 to fc::@5 [phi:fc::@15/fc::@4->fc::@5] + //SEG493 [176] phi (byte) be#134 = (byte) be#40 [phi:fc::@15/fc::@4->fc::@5#0] -- register_copy + //SEG494 fc::@5 b5: - //SEG494 [177] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fc::@6 -- vbuaa_neq_vbuc1_then_la1 + //SEG495 [177] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fc::@6 -- vbuaa_neq_vbuc1_then_la1 cmp #5 bne b6 - //SEG495 fc::@16 - //SEG496 [178] (byte) be#41 ← ++ (byte) be#134 -- vbuz1=_inc_vbuz1 + //SEG496 fc::@16 + //SEG497 [178] (byte) be#41 ← ++ (byte) be#134 -- vbuz1=_inc_vbuz1 inc be - //SEG497 [179] phi from fc::@16 fc::@5 to fc::@6 [phi:fc::@16/fc::@5->fc::@6] - //SEG498 [179] phi (byte) be#135 = (byte) be#41 [phi:fc::@16/fc::@5->fc::@6#0] -- register_copy - //SEG499 fc::@6 + //SEG498 [179] phi from fc::@16 fc::@5 to fc::@6 [phi:fc::@16/fc::@5->fc::@6] + //SEG499 [179] phi (byte) be#135 = (byte) be#41 [phi:fc::@16/fc::@5->fc::@6#0] -- register_copy + //SEG500 fc::@6 b6: - //SEG500 [180] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fc::@7 -- vbuaa_neq_vbuc1_then_la1 + //SEG501 [180] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fc::@7 -- vbuaa_neq_vbuc1_then_la1 cmp #6 bne b7 - //SEG501 fc::@17 - //SEG502 [181] (byte) be#42 ← ++ (byte) be#135 -- vbuz1=_inc_vbuz1 + //SEG502 fc::@17 + //SEG503 [181] (byte) be#42 ← ++ (byte) be#135 -- vbuz1=_inc_vbuz1 inc be - //SEG503 [182] phi from fc::@17 fc::@6 to fc::@7 [phi:fc::@17/fc::@6->fc::@7] - //SEG504 [182] phi (byte) be#136 = (byte) be#42 [phi:fc::@17/fc::@6->fc::@7#0] -- register_copy - //SEG505 fc::@7 + //SEG504 [182] phi from fc::@17 fc::@6 to fc::@7 [phi:fc::@17/fc::@6->fc::@7] + //SEG505 [182] phi (byte) be#136 = (byte) be#42 [phi:fc::@17/fc::@6->fc::@7#0] -- register_copy + //SEG506 fc::@7 b7: - //SEG506 [183] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fc::@8 -- vbuaa_neq_vbuc1_then_la1 + //SEG507 [183] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fc::@8 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b8 - //SEG507 fc::@18 - //SEG508 [184] (byte) be#43 ← ++ (byte) be#136 -- vbuz1=_inc_vbuz1 + //SEG508 fc::@18 + //SEG509 [184] (byte) be#43 ← ++ (byte) be#136 -- vbuz1=_inc_vbuz1 inc be - //SEG509 [185] phi from fc::@18 fc::@7 to fc::@8 [phi:fc::@18/fc::@7->fc::@8] - //SEG510 [185] phi (byte) be#137 = (byte) be#43 [phi:fc::@18/fc::@7->fc::@8#0] -- register_copy - //SEG511 fc::@8 + //SEG510 [185] phi from fc::@18 fc::@7 to fc::@8 [phi:fc::@18/fc::@7->fc::@8] + //SEG511 [185] phi (byte) be#137 = (byte) be#43 [phi:fc::@18/fc::@7->fc::@8#0] -- register_copy + //SEG512 fc::@8 b8: - //SEG512 [186] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fc::@9 -- vbuaa_neq_vbuc1_then_la1 + //SEG513 [186] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fc::@9 -- vbuaa_neq_vbuc1_then_la1 cmp #8 bne b9 - //SEG513 fc::@19 - //SEG514 [187] (byte) be#44 ← ++ (byte) be#137 -- vbuz1=_inc_vbuz1 + //SEG514 fc::@19 + //SEG515 [187] (byte) be#44 ← ++ (byte) be#137 -- vbuz1=_inc_vbuz1 inc be - //SEG515 [188] phi from fc::@19 fc::@8 to fc::@9 [phi:fc::@19/fc::@8->fc::@9] - //SEG516 [188] phi (byte) be#138 = (byte) be#44 [phi:fc::@19/fc::@8->fc::@9#0] -- register_copy - //SEG517 fc::@9 + //SEG516 [188] phi from fc::@19 fc::@8 to fc::@9 [phi:fc::@19/fc::@8->fc::@9] + //SEG517 [188] phi (byte) be#138 = (byte) be#44 [phi:fc::@19/fc::@8->fc::@9#0] -- register_copy + //SEG518 fc::@9 b9: - //SEG518 [189] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fc::@30 -- vbuaa_neq_vbuc1_then_la1 + //SEG519 [189] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fc::@30 -- vbuaa_neq_vbuc1_then_la1 cmp #9 bne breturn - //SEG519 [190] phi from fc::@9 to fc::@return [phi:fc::@9->fc::@return] - //SEG520 [190] phi (byte) be#46 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fc::@9->fc::@return#0] -- vbuz1=vbuc1 + //SEG520 [190] phi from fc::@9 to fc::@return [phi:fc::@9->fc::@return] + //SEG521 [190] phi (byte) be#46 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:fc::@9->fc::@return#0] -- vbuz1=vbuc1 lda #0 sta be - //SEG521 fc::@return + //SEG522 fc::@return breturn: - //SEG522 [191] return + //SEG523 [191] return rts - //SEG523 [192] phi from fc::@9 to fc::@30 [phi:fc::@9->fc::@30] - //SEG524 fc::@30 - //SEG525 [190] phi from fc::@30 to fc::@return [phi:fc::@30->fc::@return] - //SEG526 [190] phi (byte) be#46 = (byte) be#138 [phi:fc::@30->fc::@return#0] -- register_copy + //SEG524 [192] phi from fc::@9 to fc::@30 [phi:fc::@9->fc::@30] + //SEG525 fc::@30 + //SEG526 [190] phi from fc::@30 to fc::@return [phi:fc::@30->fc::@return] + //SEG527 [190] phi (byte) be#46 = (byte) be#138 [phi:fc::@30->fc::@return#0] -- register_copy } diff --git a/src/test/ref/norom-charset.asm b/src/test/ref/norom-charset.asm index d41436b27..9a36e4638 100644 --- a/src/test/ref/norom-charset.asm +++ b/src/test/ref/norom-charset.asm @@ -1,3 +1,4 @@ +// Generate a charset based on a 5x3 pattern stored in 2 bytes .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/norom-charset.log b/src/test/ref/norom-charset.log index 16acfb989..2228a58a8 100644 --- a/src/test/ref/norom-charset.log +++ b/src/test/ref/norom-charset.log @@ -495,71 +495,73 @@ Allocated zp ZP_BYTE:12 [ gen_char3::$0 ] Allocated zp ZP_BYTE:13 [ gen_char3::$1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Generate a charset based on a 5x3 pattern stored in 2 bytes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label VIC_MEMORY = $d018 .label SCREEN = $400 .label CHARSET = $3000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label charset = 2 .label c = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG12 [5] phi (byte*) main::charset#2 = (const byte*) CHARSET#0+(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::charset#2 = (const byte*) CHARSET#0+(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #CHARSET+8 sta charset+1 jmp b1 - //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG14 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte*) main::charset#2 = (byte*) main::charset#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte*) main::charset#2 = (byte*) main::charset#1 [phi:main::@3->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 -- pbuz1=pbuz2 + //SEG18 [6] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 -- pbuz1=pbuz2 lda charset sta gen_char3.dst lda charset+1 sta gen_char3.dst+1 - //SEG18 [7] (word) gen_char3::spec#0 ← *((const word[]) charset_spec_row#0 + (byte) main::c#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG19 [7] (word) gen_char3::spec#0 ← *((const word[]) charset_spec_row#0 + (byte) main::c#2) -- vwuz1=pwuc1_derefidx_vbuz2 ldy c lda charset_spec_row,y sta gen_char3.spec lda charset_spec_row+1,y sta gen_char3.spec+1 - //SEG19 [8] call gen_char3 - //SEG20 [14] phi from main::@1 to gen_char3 [phi:main::@1->gen_char3] + //SEG20 [8] call gen_char3 + //SEG21 [14] phi from main::@1 to gen_char3 [phi:main::@1->gen_char3] gen_char3_from_b1: jsr gen_char3 jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [9] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vbuc1 + //SEG23 [9] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vbuc1 lda charset clc adc #8 @@ -567,28 +569,28 @@ main: { bcc !+ inc charset+1 !: - //SEG23 [10] (byte) main::c#1 ← (byte) main::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG24 [10] (byte) main::c#1 ← (byte) main::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda c clc adc #2 sta c - //SEG24 [11] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG25 [11] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #6 bne b1_from_b3 jmp b2 - //SEG25 main::@2 + //SEG26 main::@2 b2: - //SEG26 [12] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) CHARSET#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG27 [12] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) CHARSET#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #SCREEN/$40|CHARSET/$400 sta VIC_MEMORY jmp breturn - //SEG27 main::@return + //SEG28 main::@return breturn: - //SEG28 [13] return + //SEG29 [13] return rts } -//SEG29 gen_char3 +//SEG30 gen_char3 // Generate one 5x3 character from a 16-bit char spec // The 5x3 char is stored as 5x 3-bit rows followed by a zero. %aaabbbcc cdddeee0 gen_char3: { @@ -599,91 +601,91 @@ gen_char3: { .label b = 9 .label c = 8 .label r = 5 - //SEG30 [15] phi from gen_char3 to gen_char3::@1 [phi:gen_char3->gen_char3::@1] + //SEG31 [15] phi from gen_char3 to gen_char3::@1 [phi:gen_char3->gen_char3::@1] b1_from_gen_char3: - //SEG31 [15] phi (byte) gen_char3::r#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3->gen_char3::@1#0] -- vbuz1=vbuc1 + //SEG32 [15] phi (byte) gen_char3::r#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3->gen_char3::@1#0] -- vbuz1=vbuc1 lda #0 sta r - //SEG32 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#0 [phi:gen_char3->gen_char3::@1#1] -- register_copy + //SEG33 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#0 [phi:gen_char3->gen_char3::@1#1] -- register_copy jmp b1 - //SEG33 [15] phi from gen_char3::@5 to gen_char3::@1 [phi:gen_char3::@5->gen_char3::@1] + //SEG34 [15] phi from gen_char3::@5 to gen_char3::@1 [phi:gen_char3::@5->gen_char3::@1] b1_from_b5: - //SEG34 [15] phi (byte) gen_char3::r#6 = (byte) gen_char3::r#1 [phi:gen_char3::@5->gen_char3::@1#0] -- register_copy - //SEG35 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#1 [phi:gen_char3::@5->gen_char3::@1#1] -- register_copy + //SEG35 [15] phi (byte) gen_char3::r#6 = (byte) gen_char3::r#1 [phi:gen_char3::@5->gen_char3::@1#0] -- register_copy + //SEG36 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#1 [phi:gen_char3::@5->gen_char3::@1#1] -- register_copy jmp b1 - //SEG36 gen_char3::@1 + //SEG37 gen_char3::@1 b1: - //SEG37 [16] phi from gen_char3::@1 to gen_char3::@2 [phi:gen_char3::@1->gen_char3::@2] + //SEG38 [16] phi from gen_char3::@1 to gen_char3::@2 [phi:gen_char3::@1->gen_char3::@2] b2_from_b1: - //SEG38 [16] phi (byte) gen_char3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#0] -- vbuz1=vbuc1 + //SEG39 [16] phi (byte) gen_char3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG39 [16] phi (byte) gen_char3::b#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#1] -- vbuz1=vbuc1 + //SEG40 [16] phi (byte) gen_char3::b#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#1] -- vbuz1=vbuc1 lda #0 sta b - //SEG40 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#4 [phi:gen_char3::@1->gen_char3::@2#2] -- register_copy + //SEG41 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#4 [phi:gen_char3::@1->gen_char3::@2#2] -- register_copy jmp b2 - //SEG41 [16] phi from gen_char3::@3 to gen_char3::@2 [phi:gen_char3::@3->gen_char3::@2] + //SEG42 [16] phi from gen_char3::@3 to gen_char3::@2 [phi:gen_char3::@3->gen_char3::@2] b2_from_b3: - //SEG42 [16] phi (byte) gen_char3::c#2 = (byte) gen_char3::c#1 [phi:gen_char3::@3->gen_char3::@2#0] -- register_copy - //SEG43 [16] phi (byte) gen_char3::b#4 = (byte) gen_char3::b#1 [phi:gen_char3::@3->gen_char3::@2#1] -- register_copy - //SEG44 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#1 [phi:gen_char3::@3->gen_char3::@2#2] -- register_copy + //SEG43 [16] phi (byte) gen_char3::c#2 = (byte) gen_char3::c#1 [phi:gen_char3::@3->gen_char3::@2#0] -- register_copy + //SEG44 [16] phi (byte) gen_char3::b#4 = (byte) gen_char3::b#1 [phi:gen_char3::@3->gen_char3::@2#1] -- register_copy + //SEG45 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#1 [phi:gen_char3::@3->gen_char3::@2#2] -- register_copy jmp b2 - //SEG45 gen_char3::@2 + //SEG46 gen_char3::@2 b2: - //SEG46 [17] (byte~) gen_char3::$0 ← > (word) gen_char3::spec#2 -- vbuz1=_hi_vwuz2 + //SEG47 [17] (byte~) gen_char3::$0 ← > (word) gen_char3::spec#2 -- vbuz1=_hi_vwuz2 lda spec+1 sta _0 - //SEG47 [18] (byte~) gen_char3::$1 ← (byte~) gen_char3::$0 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG48 [18] (byte~) gen_char3::$1 ← (byte~) gen_char3::$0 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _0 sta _1 - //SEG48 [19] if((byte~) gen_char3::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_char3::@3 -- vbuz1_eq_0_then_la1 + //SEG49 [19] if((byte~) gen_char3::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_char3::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG49 gen_char3::@4 + //SEG50 gen_char3::@4 b4: - //SEG50 [20] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bor_vbuc1 + //SEG51 [20] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bor_vbuc1 lda #1 ora b sta b - //SEG51 [21] phi from gen_char3::@2 gen_char3::@4 to gen_char3::@3 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3] + //SEG52 [21] phi from gen_char3::@2 gen_char3::@4 to gen_char3::@3 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3] b3_from_b2: b3_from_b4: - //SEG52 [21] phi (byte) gen_char3::b#3 = (byte) gen_char3::b#4 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3#0] -- register_copy + //SEG53 [21] phi (byte) gen_char3::b#3 = (byte) gen_char3::b#4 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3#0] -- register_copy jmp b3 - //SEG53 gen_char3::@3 + //SEG54 gen_char3::@3 b3: - //SEG54 [22] (byte) gen_char3::b#1 ← (byte) gen_char3::b#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG55 [22] (byte) gen_char3::b#1 ← (byte) gen_char3::b#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl b - //SEG55 [23] (word) gen_char3::spec#1 ← (word) gen_char3::spec#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG56 [23] (word) gen_char3::spec#1 ← (word) gen_char3::spec#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl spec rol spec+1 - //SEG56 [24] (byte) gen_char3::c#1 ← ++ (byte) gen_char3::c#2 -- vbuz1=_inc_vbuz1 + //SEG57 [24] (byte) gen_char3::c#1 ← ++ (byte) gen_char3::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG57 [25] if((byte) gen_char3::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_char3::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG58 [25] if((byte) gen_char3::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_char3::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #3 bne b2_from_b3 jmp b5 - //SEG58 gen_char3::@5 + //SEG59 gen_char3::@5 b5: - //SEG59 [26] *((byte*) gen_char3::dst#0 + (byte) gen_char3::r#6) ← (byte) gen_char3::b#1 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG60 [26] *((byte*) gen_char3::dst#0 + (byte) gen_char3::r#6) ← (byte) gen_char3::b#1 -- pbuz1_derefidx_vbuz2=vbuz3 lda b ldy r sta (dst),y - //SEG60 [27] (byte) gen_char3::r#1 ← ++ (byte) gen_char3::r#6 -- vbuz1=_inc_vbuz1 + //SEG61 [27] (byte) gen_char3::r#1 ← ++ (byte) gen_char3::r#6 -- vbuz1=_inc_vbuz1 inc r - //SEG61 [28] if((byte) gen_char3::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto gen_char3::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG62 [28] if((byte) gen_char3::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto gen_char3::@1 -- vbuz1_neq_vbuc1_then_la1 lda r cmp #5 bne b1_from_b5 jmp breturn - //SEG62 gen_char3::@return + //SEG63 gen_char3::@return breturn: - //SEG63 [29] return + //SEG64 [29] return rts } // Stores chars as 15 bits (in 2 bytes) specifying the 3x5 @@ -737,67 +739,69 @@ Uplifting [main] best 61682 combination zp ZP_BYTE:4 [ main::c#2 main::c#1 ] Coalescing zero page register with common assignment [ zp ZP_WORD:2 [ main::charset#2 main::charset#1 ] ] with [ zp ZP_WORD:10 [ gen_char3::dst#0 ] ] - score: 1 ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Generate a charset based on a 5x3 pattern stored in 2 bytes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label VIC_MEMORY = $d018 .label SCREEN = $400 .label CHARSET = $3000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label charset = 2 .label c = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG12 [5] phi (byte*) main::charset#2 = (const byte*) CHARSET#0+(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::charset#2 = (const byte*) CHARSET#0+(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #CHARSET+8 sta charset+1 jmp b1 - //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG14 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte*) main::charset#2 = (byte*) main::charset#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte*) main::charset#2 = (byte*) main::charset#1 [phi:main::@3->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 - //SEG18 [7] (word) gen_char3::spec#0 ← *((const word[]) charset_spec_row#0 + (byte) main::c#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG18 [6] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 + //SEG19 [7] (word) gen_char3::spec#0 ← *((const word[]) charset_spec_row#0 + (byte) main::c#2) -- vwuz1=pwuc1_derefidx_vbuz2 ldy c lda charset_spec_row,y sta gen_char3.spec lda charset_spec_row+1,y sta gen_char3.spec+1 - //SEG19 [8] call gen_char3 - //SEG20 [14] phi from main::@1 to gen_char3 [phi:main::@1->gen_char3] + //SEG20 [8] call gen_char3 + //SEG21 [14] phi from main::@1 to gen_char3 [phi:main::@1->gen_char3] gen_char3_from_b1: jsr gen_char3 jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [9] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vbuc1 + //SEG23 [9] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vbuc1 lda charset clc adc #8 @@ -805,114 +809,114 @@ main: { bcc !+ inc charset+1 !: - //SEG23 [10] (byte) main::c#1 ← (byte) main::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG24 [10] (byte) main::c#1 ← (byte) main::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda c clc adc #2 sta c - //SEG24 [11] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG25 [11] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #6 bne b1_from_b3 jmp b2 - //SEG25 main::@2 + //SEG26 main::@2 b2: - //SEG26 [12] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) CHARSET#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG27 [12] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) CHARSET#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #SCREEN/$40|CHARSET/$400 sta VIC_MEMORY jmp breturn - //SEG27 main::@return + //SEG28 main::@return breturn: - //SEG28 [13] return + //SEG29 [13] return rts } -//SEG29 gen_char3 +//SEG30 gen_char3 // Generate one 5x3 character from a 16-bit char spec // The 5x3 char is stored as 5x 3-bit rows followed by a zero. %aaabbbcc cdddeee0 gen_char3: { .label dst = 2 .label spec = 6 .label r = 5 - //SEG30 [15] phi from gen_char3 to gen_char3::@1 [phi:gen_char3->gen_char3::@1] + //SEG31 [15] phi from gen_char3 to gen_char3::@1 [phi:gen_char3->gen_char3::@1] b1_from_gen_char3: - //SEG31 [15] phi (byte) gen_char3::r#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3->gen_char3::@1#0] -- vbuz1=vbuc1 + //SEG32 [15] phi (byte) gen_char3::r#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3->gen_char3::@1#0] -- vbuz1=vbuc1 lda #0 sta r - //SEG32 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#0 [phi:gen_char3->gen_char3::@1#1] -- register_copy + //SEG33 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#0 [phi:gen_char3->gen_char3::@1#1] -- register_copy jmp b1 - //SEG33 [15] phi from gen_char3::@5 to gen_char3::@1 [phi:gen_char3::@5->gen_char3::@1] + //SEG34 [15] phi from gen_char3::@5 to gen_char3::@1 [phi:gen_char3::@5->gen_char3::@1] b1_from_b5: - //SEG34 [15] phi (byte) gen_char3::r#6 = (byte) gen_char3::r#1 [phi:gen_char3::@5->gen_char3::@1#0] -- register_copy - //SEG35 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#1 [phi:gen_char3::@5->gen_char3::@1#1] -- register_copy + //SEG35 [15] phi (byte) gen_char3::r#6 = (byte) gen_char3::r#1 [phi:gen_char3::@5->gen_char3::@1#0] -- register_copy + //SEG36 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#1 [phi:gen_char3::@5->gen_char3::@1#1] -- register_copy jmp b1 - //SEG36 gen_char3::@1 + //SEG37 gen_char3::@1 b1: - //SEG37 [16] phi from gen_char3::@1 to gen_char3::@2 [phi:gen_char3::@1->gen_char3::@2] + //SEG38 [16] phi from gen_char3::@1 to gen_char3::@2 [phi:gen_char3::@1->gen_char3::@2] b2_from_b1: - //SEG38 [16] phi (byte) gen_char3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#0] -- vbuxx=vbuc1 + //SEG39 [16] phi (byte) gen_char3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG39 [16] phi (byte) gen_char3::b#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#1] -- vbuyy=vbuc1 + //SEG40 [16] phi (byte) gen_char3::b#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#1] -- vbuyy=vbuc1 ldy #0 - //SEG40 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#4 [phi:gen_char3::@1->gen_char3::@2#2] -- register_copy + //SEG41 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#4 [phi:gen_char3::@1->gen_char3::@2#2] -- register_copy jmp b2 - //SEG41 [16] phi from gen_char3::@3 to gen_char3::@2 [phi:gen_char3::@3->gen_char3::@2] + //SEG42 [16] phi from gen_char3::@3 to gen_char3::@2 [phi:gen_char3::@3->gen_char3::@2] b2_from_b3: - //SEG42 [16] phi (byte) gen_char3::c#2 = (byte) gen_char3::c#1 [phi:gen_char3::@3->gen_char3::@2#0] -- register_copy - //SEG43 [16] phi (byte) gen_char3::b#4 = (byte) gen_char3::b#1 [phi:gen_char3::@3->gen_char3::@2#1] -- register_copy - //SEG44 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#1 [phi:gen_char3::@3->gen_char3::@2#2] -- register_copy + //SEG43 [16] phi (byte) gen_char3::c#2 = (byte) gen_char3::c#1 [phi:gen_char3::@3->gen_char3::@2#0] -- register_copy + //SEG44 [16] phi (byte) gen_char3::b#4 = (byte) gen_char3::b#1 [phi:gen_char3::@3->gen_char3::@2#1] -- register_copy + //SEG45 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#1 [phi:gen_char3::@3->gen_char3::@2#2] -- register_copy jmp b2 - //SEG45 gen_char3::@2 + //SEG46 gen_char3::@2 b2: - //SEG46 [17] (byte~) gen_char3::$0 ← > (word) gen_char3::spec#2 -- vbuaa=_hi_vwuz1 + //SEG47 [17] (byte~) gen_char3::$0 ← > (word) gen_char3::spec#2 -- vbuaa=_hi_vwuz1 lda spec+1 - //SEG47 [18] (byte~) gen_char3::$1 ← (byte~) gen_char3::$0 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG48 [18] (byte~) gen_char3::$1 ← (byte~) gen_char3::$0 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG48 [19] if((byte~) gen_char3::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_char3::@3 -- vbuaa_eq_0_then_la1 + //SEG49 [19] if((byte~) gen_char3::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_char3::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG49 gen_char3::@4 + //SEG50 gen_char3::@4 b4: - //SEG50 [20] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 + //SEG51 [20] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 tya ora #1 tay - //SEG51 [21] phi from gen_char3::@2 gen_char3::@4 to gen_char3::@3 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3] + //SEG52 [21] phi from gen_char3::@2 gen_char3::@4 to gen_char3::@3 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3] b3_from_b2: b3_from_b4: - //SEG52 [21] phi (byte) gen_char3::b#3 = (byte) gen_char3::b#4 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3#0] -- register_copy + //SEG53 [21] phi (byte) gen_char3::b#3 = (byte) gen_char3::b#4 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3#0] -- register_copy jmp b3 - //SEG53 gen_char3::@3 + //SEG54 gen_char3::@3 b3: - //SEG54 [22] (byte) gen_char3::b#1 ← (byte) gen_char3::b#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 + //SEG55 [22] (byte) gen_char3::b#1 ← (byte) gen_char3::b#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG55 [23] (word) gen_char3::spec#1 ← (word) gen_char3::spec#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG56 [23] (word) gen_char3::spec#1 ← (word) gen_char3::spec#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl spec rol spec+1 - //SEG56 [24] (byte) gen_char3::c#1 ← ++ (byte) gen_char3::c#2 -- vbuxx=_inc_vbuxx + //SEG57 [24] (byte) gen_char3::c#1 ← ++ (byte) gen_char3::c#2 -- vbuxx=_inc_vbuxx inx - //SEG57 [25] if((byte) gen_char3::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_char3::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG58 [25] if((byte) gen_char3::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_char3::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne b2_from_b3 jmp b5 - //SEG58 gen_char3::@5 + //SEG59 gen_char3::@5 b5: - //SEG59 [26] *((byte*) gen_char3::dst#0 + (byte) gen_char3::r#6) ← (byte) gen_char3::b#1 -- pbuz1_derefidx_vbuz2=vbuyy + //SEG60 [26] *((byte*) gen_char3::dst#0 + (byte) gen_char3::r#6) ← (byte) gen_char3::b#1 -- pbuz1_derefidx_vbuz2=vbuyy tya ldy r sta (dst),y - //SEG60 [27] (byte) gen_char3::r#1 ← ++ (byte) gen_char3::r#6 -- vbuz1=_inc_vbuz1 + //SEG61 [27] (byte) gen_char3::r#1 ← ++ (byte) gen_char3::r#6 -- vbuz1=_inc_vbuz1 inc r - //SEG61 [28] if((byte) gen_char3::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto gen_char3::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG62 [28] if((byte) gen_char3::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto gen_char3::@1 -- vbuz1_neq_vbuc1_then_la1 lda r cmp #5 bne b1_from_b5 jmp breturn - //SEG62 gen_char3::@return + //SEG63 gen_char3::@return breturn: - //SEG63 [29] return + //SEG64 [29] return rts } // Stores chars as 15 bits (in 2 bytes) specifying the 3x5 @@ -1035,51 +1039,53 @@ reg byte a [ gen_char3::$1 ] FINAL ASSEMBLER Score: 45524 -//SEG0 Basic Upstart +//SEG0 File Comments +// Generate a charset based on a 5x3 pattern stored in 2 bytes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label VIC_MEMORY = $d018 .label SCREEN = $400 .label CHARSET = $3000 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label charset = 2 .label c = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG12 [5] phi (byte*) main::charset#2 = (const byte*) CHARSET#0+(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::charset#2 = (const byte*) CHARSET#0+(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #CHARSET+8 sta charset+1 - //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG14 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte*) main::charset#2 = (byte*) main::charset#1 [phi:main::@3->main::@1#1] -- register_copy - //SEG16 main::@1 + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG15 [5] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte*) main::charset#2 = (byte*) main::charset#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 - //SEG18 [7] (word) gen_char3::spec#0 ← *((const word[]) charset_spec_row#0 + (byte) main::c#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG18 [6] (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 + //SEG19 [7] (word) gen_char3::spec#0 ← *((const word[]) charset_spec_row#0 + (byte) main::c#2) -- vwuz1=pwuc1_derefidx_vbuz2 ldy c lda charset_spec_row,y sta gen_char3.spec lda charset_spec_row+1,y sta gen_char3.spec+1 - //SEG19 [8] call gen_char3 - //SEG20 [14] phi from main::@1 to gen_char3 [phi:main::@1->gen_char3] + //SEG20 [8] call gen_char3 + //SEG21 [14] phi from main::@1 to gen_char3 [phi:main::@1->gen_char3] jsr gen_char3 - //SEG21 main::@3 - //SEG22 [9] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vbuc1 + //SEG22 main::@3 + //SEG23 [9] (byte*) main::charset#1 ← (byte*) main::charset#2 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vbuc1 lda charset clc adc #8 @@ -1087,92 +1093,92 @@ main: { bcc !+ inc charset+1 !: - //SEG23 [10] (byte) main::c#1 ← (byte) main::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG24 [10] (byte) main::c#1 ← (byte) main::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda c clc adc #2 sta c - //SEG24 [11] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG25 [11] if((byte) main::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 cmp #6 bne b1 - //SEG25 main::@2 - //SEG26 [12] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) CHARSET#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG26 main::@2 + //SEG27 [12] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) CHARSET#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #SCREEN/$40|CHARSET/$400 sta VIC_MEMORY - //SEG27 main::@return - //SEG28 [13] return + //SEG28 main::@return + //SEG29 [13] return rts } -//SEG29 gen_char3 +//SEG30 gen_char3 // Generate one 5x3 character from a 16-bit char spec // The 5x3 char is stored as 5x 3-bit rows followed by a zero. %aaabbbcc cdddeee0 gen_char3: { .label dst = 2 .label spec = 6 .label r = 5 - //SEG30 [15] phi from gen_char3 to gen_char3::@1 [phi:gen_char3->gen_char3::@1] - //SEG31 [15] phi (byte) gen_char3::r#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3->gen_char3::@1#0] -- vbuz1=vbuc1 + //SEG31 [15] phi from gen_char3 to gen_char3::@1 [phi:gen_char3->gen_char3::@1] + //SEG32 [15] phi (byte) gen_char3::r#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3->gen_char3::@1#0] -- vbuz1=vbuc1 lda #0 sta r - //SEG32 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#0 [phi:gen_char3->gen_char3::@1#1] -- register_copy - //SEG33 [15] phi from gen_char3::@5 to gen_char3::@1 [phi:gen_char3::@5->gen_char3::@1] - //SEG34 [15] phi (byte) gen_char3::r#6 = (byte) gen_char3::r#1 [phi:gen_char3::@5->gen_char3::@1#0] -- register_copy - //SEG35 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#1 [phi:gen_char3::@5->gen_char3::@1#1] -- register_copy - //SEG36 gen_char3::@1 + //SEG33 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#0 [phi:gen_char3->gen_char3::@1#1] -- register_copy + //SEG34 [15] phi from gen_char3::@5 to gen_char3::@1 [phi:gen_char3::@5->gen_char3::@1] + //SEG35 [15] phi (byte) gen_char3::r#6 = (byte) gen_char3::r#1 [phi:gen_char3::@5->gen_char3::@1#0] -- register_copy + //SEG36 [15] phi (word) gen_char3::spec#4 = (word) gen_char3::spec#1 [phi:gen_char3::@5->gen_char3::@1#1] -- register_copy + //SEG37 gen_char3::@1 b1: - //SEG37 [16] phi from gen_char3::@1 to gen_char3::@2 [phi:gen_char3::@1->gen_char3::@2] - //SEG38 [16] phi (byte) gen_char3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#0] -- vbuxx=vbuc1 + //SEG38 [16] phi from gen_char3::@1 to gen_char3::@2 [phi:gen_char3::@1->gen_char3::@2] + //SEG39 [16] phi (byte) gen_char3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG39 [16] phi (byte) gen_char3::b#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#1] -- vbuyy=vbuc1 + //SEG40 [16] phi (byte) gen_char3::b#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gen_char3::@1->gen_char3::@2#1] -- vbuyy=vbuc1 ldy #0 - //SEG40 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#4 [phi:gen_char3::@1->gen_char3::@2#2] -- register_copy - //SEG41 [16] phi from gen_char3::@3 to gen_char3::@2 [phi:gen_char3::@3->gen_char3::@2] - //SEG42 [16] phi (byte) gen_char3::c#2 = (byte) gen_char3::c#1 [phi:gen_char3::@3->gen_char3::@2#0] -- register_copy - //SEG43 [16] phi (byte) gen_char3::b#4 = (byte) gen_char3::b#1 [phi:gen_char3::@3->gen_char3::@2#1] -- register_copy - //SEG44 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#1 [phi:gen_char3::@3->gen_char3::@2#2] -- register_copy - //SEG45 gen_char3::@2 + //SEG41 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#4 [phi:gen_char3::@1->gen_char3::@2#2] -- register_copy + //SEG42 [16] phi from gen_char3::@3 to gen_char3::@2 [phi:gen_char3::@3->gen_char3::@2] + //SEG43 [16] phi (byte) gen_char3::c#2 = (byte) gen_char3::c#1 [phi:gen_char3::@3->gen_char3::@2#0] -- register_copy + //SEG44 [16] phi (byte) gen_char3::b#4 = (byte) gen_char3::b#1 [phi:gen_char3::@3->gen_char3::@2#1] -- register_copy + //SEG45 [16] phi (word) gen_char3::spec#2 = (word) gen_char3::spec#1 [phi:gen_char3::@3->gen_char3::@2#2] -- register_copy + //SEG46 gen_char3::@2 b2: - //SEG46 [17] (byte~) gen_char3::$0 ← > (word) gen_char3::spec#2 -- vbuaa=_hi_vwuz1 + //SEG47 [17] (byte~) gen_char3::$0 ← > (word) gen_char3::spec#2 -- vbuaa=_hi_vwuz1 lda spec+1 - //SEG47 [18] (byte~) gen_char3::$1 ← (byte~) gen_char3::$0 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG48 [18] (byte~) gen_char3::$1 ← (byte~) gen_char3::$0 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG48 [19] if((byte~) gen_char3::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_char3::@3 -- vbuaa_eq_0_then_la1 + //SEG49 [19] if((byte~) gen_char3::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gen_char3::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG49 gen_char3::@4 - //SEG50 [20] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 + //SEG50 gen_char3::@4 + //SEG51 [20] (byte) gen_char3::b#2 ← (byte) gen_char3::b#4 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 tya ora #1 tay - //SEG51 [21] phi from gen_char3::@2 gen_char3::@4 to gen_char3::@3 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3] - //SEG52 [21] phi (byte) gen_char3::b#3 = (byte) gen_char3::b#4 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3#0] -- register_copy - //SEG53 gen_char3::@3 + //SEG52 [21] phi from gen_char3::@2 gen_char3::@4 to gen_char3::@3 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3] + //SEG53 [21] phi (byte) gen_char3::b#3 = (byte) gen_char3::b#4 [phi:gen_char3::@2/gen_char3::@4->gen_char3::@3#0] -- register_copy + //SEG54 gen_char3::@3 b3: - //SEG54 [22] (byte) gen_char3::b#1 ← (byte) gen_char3::b#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 + //SEG55 [22] (byte) gen_char3::b#1 ← (byte) gen_char3::b#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG55 [23] (word) gen_char3::spec#1 ← (word) gen_char3::spec#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG56 [23] (word) gen_char3::spec#1 ← (word) gen_char3::spec#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl spec rol spec+1 - //SEG56 [24] (byte) gen_char3::c#1 ← ++ (byte) gen_char3::c#2 -- vbuxx=_inc_vbuxx + //SEG57 [24] (byte) gen_char3::c#1 ← ++ (byte) gen_char3::c#2 -- vbuxx=_inc_vbuxx inx - //SEG57 [25] if((byte) gen_char3::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_char3::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG58 [25] if((byte) gen_char3::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto gen_char3::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne b2 - //SEG58 gen_char3::@5 - //SEG59 [26] *((byte*) gen_char3::dst#0 + (byte) gen_char3::r#6) ← (byte) gen_char3::b#1 -- pbuz1_derefidx_vbuz2=vbuyy + //SEG59 gen_char3::@5 + //SEG60 [26] *((byte*) gen_char3::dst#0 + (byte) gen_char3::r#6) ← (byte) gen_char3::b#1 -- pbuz1_derefidx_vbuz2=vbuyy tya ldy r sta (dst),y - //SEG60 [27] (byte) gen_char3::r#1 ← ++ (byte) gen_char3::r#6 -- vbuz1=_inc_vbuz1 + //SEG61 [27] (byte) gen_char3::r#1 ← ++ (byte) gen_char3::r#6 -- vbuz1=_inc_vbuz1 inc r - //SEG61 [28] if((byte) gen_char3::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto gen_char3::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG62 [28] if((byte) gen_char3::r#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto gen_char3::@1 -- vbuz1_neq_vbuc1_then_la1 lda r cmp #5 bne b1 - //SEG62 gen_char3::@return - //SEG63 [29] return + //SEG63 gen_char3::@return + //SEG64 [29] return rts } // Stores chars as 15 bits (in 2 bytes) specifying the 3x5 diff --git a/src/test/ref/operator-lohi-problem.asm b/src/test/ref/operator-lohi-problem.asm index b6eea3008..17f8ba6b4 100644 --- a/src/test/ref/operator-lohi-problem.asm +++ b/src/test/ref/operator-lohi-problem.asm @@ -1,11 +1,11 @@ +// Illustrates problem with constant evaluation of lo/hi-operator +// $20000 /$400 results in a byte value - confusing the lo/hi-evaluation +// which currently relies on getting the type from the literal value. +// A fix could be adding support for "declared" types for constant literal values +// - enabling the lo/hi to know that their operand is a word (from the cast). .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Illustrates problem with constant evaluation of lo/hi-operator - // $20000 /$400 results in a byte value - confusing the lo/hi-evaluation - // which currently relies on getting the type from the literal value. - // A fix could be adding support for "declared" types for constant literal values - // - enabling the lo/hi to know that their operand is a word (from the cast). .const DVAL = $20000 .label SCREEN = $400 main: { diff --git a/src/test/ref/operator-lohi-problem.log b/src/test/ref/operator-lohi-problem.log index c5bc32acd..053ec1fbc 100644 --- a/src/test/ref/operator-lohi-problem.log +++ b/src/test/ref/operator-lohi-problem.log @@ -107,44 +107,45 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem with constant evaluation of lo/hi-operator +// $20000 /$400 results in a byte value - confusing the lo/hi-evaluation +// which currently relies on getting the type from the literal value. +// A fix could be adding support for "declared" types for constant literal values +// - enabling the lo/hi to know that their operand is a word (from the cast). +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem with constant evaluation of lo/hi-operator - // $20000 /$400 results in a byte value - confusing the lo/hi-evaluation - // which currently relies on getting the type from the literal value. - // A fix could be adding support for "declared" types for constant literal values - // - enabling the lo/hi to know that their operand is a word (from the cast). +//SEG2 Global Constants & labels .const DVAL = $20000 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← <((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← <((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DVAL/$400 sta SCREEN - //SEG10 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+1 jmp breturn - //SEG11 main::@return + //SEG12 main::@return breturn: - //SEG12 [6] return + //SEG13 [6] return rts } @@ -160,44 +161,45 @@ Uplifting [main] best 33 combination Uplifting [] best 33 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem with constant evaluation of lo/hi-operator +// $20000 /$400 results in a byte value - confusing the lo/hi-evaluation +// which currently relies on getting the type from the literal value. +// A fix could be adding support for "declared" types for constant literal values +// - enabling the lo/hi to know that their operand is a word (from the cast). +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem with constant evaluation of lo/hi-operator - // $20000 /$400 results in a byte value - confusing the lo/hi-evaluation - // which currently relies on getting the type from the literal value. - // A fix could be adding support for "declared" types for constant literal values - // - enabling the lo/hi to know that their operand is a word (from the cast). +//SEG2 Global Constants & labels .const DVAL = $20000 .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← <((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← <((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DVAL/$400 sta SCREEN - //SEG10 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+1 jmp breturn - //SEG11 main::@return + //SEG12 main::@return breturn: - //SEG12 [6] return + //SEG13 [6] return rts } @@ -235,34 +237,35 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 18 -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates problem with constant evaluation of lo/hi-operator +// $20000 /$400 results in a byte value - confusing the lo/hi-evaluation +// which currently relies on getting the type from the literal value. +// A fix could be adding support for "declared" types for constant literal values +// - enabling the lo/hi to know that their operand is a word (from the cast). +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Illustrates problem with constant evaluation of lo/hi-operator - // $20000 /$400 results in a byte value - confusing the lo/hi-evaluation - // which currently relies on getting the type from the literal value. - // A fix could be adding support for "declared" types for constant literal values - // - enabling the lo/hi to know that their operand is a word (from the cast). +//SEG2 Global Constants & labels .const DVAL = $20000 .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← <((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← <((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #DVAL/$400 sta SCREEN - //SEG10 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >((word))(const dword) DVAL#0/(word/signed word/dword/signed dword) 1024 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+1 - //SEG11 main::@return - //SEG12 [6] return + //SEG12 main::@return + //SEG13 [6] return rts } diff --git a/src/test/ref/overlap-allocation-2.asm b/src/test/ref/overlap-allocation-2.asm index e67adbee0..89b8db2da 100644 --- a/src/test/ref/overlap-allocation-2.asm +++ b/src/test/ref/overlap-allocation-2.asm @@ -1,3 +1,4 @@ +// Two levels of functions to test that register allocation handles live ranges and call-ranges optimally to allocate the fewest possible ZP-variables .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/overlap-allocation-2.log b/src/test/ref/overlap-allocation-2.log index 73e6a7b51..1c710393c 100644 --- a/src/test/ref/overlap-allocation-2.log +++ b/src/test/ref/overlap-allocation-2.log @@ -284,137 +284,139 @@ Allocated zp ZP_BYTE:4 [ line::l#2 line::l#0 line::l#1 ] Allocated zp ZP_BYTE:5 [ plot::x#2 plot::x#0 plot::x#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Two levels of functions to test that register allocation handles live ranges and call-ranges optimally to allocate the fewest possible ZP-variables +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 .label j = 3 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) line::l#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG16 [6] (byte) line::l#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta line.l - //SEG16 [7] call line - //SEG17 [16] phi from main::@1 to line [phi:main::@1->line] + //SEG17 [7] call line + //SEG18 [16] phi from main::@1 to line [phi:main::@1->line] line_from_b1: - //SEG18 [16] phi (byte) line::l#2 = (byte) line::l#0 [phi:main::@1->line#0] -- register_copy + //SEG19 [16] phi (byte) line::l#2 = (byte) line::l#0 [phi:main::@1->line#0] -- register_copy jsr line jmp b5 - //SEG19 main::@5 + //SEG20 main::@5 b5: - //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG21 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG21 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG22 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #9 bne b1_from_b5 - //SEG22 [10] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG23 [10] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG23 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 + //SEG24 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 lda #$a sta j jmp b2 - //SEG24 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG25 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG25 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG26 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [11] (byte) line::l#1 ← (byte) main::j#2 -- vbuz1=vbuz2 + //SEG28 [11] (byte) line::l#1 ← (byte) main::j#2 -- vbuz1=vbuz2 lda j sta line.l - //SEG28 [12] call line - //SEG29 [16] phi from main::@2 to line [phi:main::@2->line] + //SEG29 [12] call line + //SEG30 [16] phi from main::@2 to line [phi:main::@2->line] line_from_b2: - //SEG30 [16] phi (byte) line::l#2 = (byte) line::l#1 [phi:main::@2->line#0] -- register_copy + //SEG31 [16] phi (byte) line::l#2 = (byte) line::l#1 [phi:main::@2->line#0] -- register_copy jsr line jmp b6 - //SEG31 main::@6 + //SEG32 main::@6 b6: - //SEG32 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG33 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 19) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 19) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$13 bne b2_from_b6 jmp breturn - //SEG34 main::@return + //SEG35 main::@return breturn: - //SEG35 [15] return + //SEG36 [15] return rts } -//SEG36 line +//SEG37 line line: { .label l = 4 - //SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 -- vbuz1=vbuz2 + //SEG38 [17] (byte) plot::x#0 ← (byte) line::l#2 -- vbuz1=vbuz2 lda l sta plot.x - //SEG38 [18] call plot - //SEG39 [22] phi from line to plot [phi:line->plot] + //SEG39 [18] call plot + //SEG40 [22] phi from line to plot [phi:line->plot] plot_from_line: - //SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy + //SEG41 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy jsr plot jmp b1 - //SEG41 line::@1 + //SEG42 line::@1 b1: - //SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz2_plus_vbuc1 + //SEG43 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuz1=vbuz2_plus_vbuc1 lda #$14 clc adc l sta plot.x - //SEG43 [20] call plot - //SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot] + //SEG44 [20] call plot + //SEG45 [22] phi from line::@1 to plot [phi:line::@1->plot] plot_from_b1: - //SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy + //SEG46 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy jsr plot jmp breturn - //SEG46 line::@return + //SEG47 line::@return breturn: - //SEG47 [21] return + //SEG48 [21] return rts } -//SEG48 plot +//SEG49 plot plot: { .label x = 5 - //SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG50 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy x lda #'*' sta SCREEN,y jmp breturn - //SEG50 plot::@return + //SEG51 plot::@return breturn: - //SEG51 [24] return + //SEG52 [24] return rts } @@ -443,123 +445,125 @@ Uplifting [plot] best 406 combination reg byte a [ plot::x#2 plot::x#0 plot::x#1 Uplifting [] best 406 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Two levels of functions to test that register allocation handles live ranges and call-ranges optimally to allocate the fewest possible ZP-variables +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) line::l#0 ← (byte) main::i#2 - //SEG16 [7] call line - //SEG17 [16] phi from main::@1 to line [phi:main::@1->line] + //SEG16 [6] (byte) line::l#0 ← (byte) main::i#2 + //SEG17 [7] call line + //SEG18 [16] phi from main::@1 to line [phi:main::@1->line] line_from_b1: - //SEG18 [16] phi (byte) line::l#2 = (byte) line::l#0 [phi:main::@1->line#0] -- register_copy + //SEG19 [16] phi (byte) line::l#2 = (byte) line::l#0 [phi:main::@1->line#0] -- register_copy jsr line jmp b5 - //SEG19 main::@5 + //SEG20 main::@5 b5: - //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG21 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG21 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG22 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #9 bne b1_from_b5 - //SEG22 [10] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG23 [10] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG23 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@5->main::@2#0] -- vbuxx=vbuc1 + //SEG24 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@5->main::@2#0] -- vbuxx=vbuc1 ldx #$a jmp b2 - //SEG24 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG25 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG25 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG26 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [11] (byte) line::l#1 ← (byte) main::j#2 - //SEG28 [12] call line - //SEG29 [16] phi from main::@2 to line [phi:main::@2->line] + //SEG28 [11] (byte) line::l#1 ← (byte) main::j#2 + //SEG29 [12] call line + //SEG30 [16] phi from main::@2 to line [phi:main::@2->line] line_from_b2: - //SEG30 [16] phi (byte) line::l#2 = (byte) line::l#1 [phi:main::@2->line#0] -- register_copy + //SEG31 [16] phi (byte) line::l#2 = (byte) line::l#1 [phi:main::@2->line#0] -- register_copy jsr line jmp b6 - //SEG31 main::@6 + //SEG32 main::@6 b6: - //SEG32 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 19) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 19) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$13 bne b2_from_b6 jmp breturn - //SEG34 main::@return + //SEG35 main::@return breturn: - //SEG35 [15] return + //SEG36 [15] return rts } -//SEG36 line +//SEG37 line line: { - //SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 -- vbuaa=vbuxx + //SEG38 [17] (byte) plot::x#0 ← (byte) line::l#2 -- vbuaa=vbuxx txa - //SEG38 [18] call plot - //SEG39 [22] phi from line to plot [phi:line->plot] + //SEG39 [18] call plot + //SEG40 [22] phi from line to plot [phi:line->plot] plot_from_line: - //SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy + //SEG41 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy jsr plot jmp b1 - //SEG41 line::@1 + //SEG42 line::@1 b1: - //SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuaa=vbuxx_plus_vbuc1 + //SEG43 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #$14 - //SEG43 [20] call plot - //SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot] + //SEG44 [20] call plot + //SEG45 [22] phi from line::@1 to plot [phi:line::@1->plot] plot_from_b1: - //SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy + //SEG46 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy jsr plot jmp breturn - //SEG46 line::@return + //SEG47 line::@return breturn: - //SEG47 [21] return + //SEG48 [21] return rts } -//SEG48 plot +//SEG49 plot plot: { - //SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' -- pbuc1_derefidx_vbuaa=vbuc2 + //SEG50 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' -- pbuc1_derefidx_vbuaa=vbuc2 tay lda #'*' sta SCREEN,y jmp breturn - //SEG50 plot::@return + //SEG51 plot::@return breturn: - //SEG51 [24] return + //SEG52 [24] return rts } @@ -648,90 +652,92 @@ reg byte a [ plot::x#2 plot::x#0 plot::x#1 ] FINAL ASSEMBLER Score: 229 -//SEG0 Basic Upstart +//SEG0 File Comments +// Two levels of functions to test that register allocation handles live ranges and call-ranges optimally to allocate the fewest possible ZP-variables +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte) line::l#0 ← (byte) main::i#2 - //SEG16 [7] call line - //SEG17 [16] phi from main::@1 to line [phi:main::@1->line] - //SEG18 [16] phi (byte) line::l#2 = (byte) line::l#0 [phi:main::@1->line#0] -- register_copy + //SEG16 [6] (byte) line::l#0 ← (byte) main::i#2 + //SEG17 [7] call line + //SEG18 [16] phi from main::@1 to line [phi:main::@1->line] + //SEG19 [16] phi (byte) line::l#2 = (byte) line::l#0 [phi:main::@1->line#0] -- register_copy jsr line - //SEG19 main::@5 - //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG20 main::@5 + //SEG21 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG21 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG22 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #9 bne b1 - //SEG22 [10] phi from main::@5 to main::@2 [phi:main::@5->main::@2] - //SEG23 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@5->main::@2#0] -- vbuxx=vbuc1 + //SEG23 [10] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG24 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 10 [phi:main::@5->main::@2#0] -- vbuxx=vbuc1 ldx #$a - //SEG24 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - //SEG25 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy - //SEG26 main::@2 + //SEG25 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG27 main::@2 b2: - //SEG27 [11] (byte) line::l#1 ← (byte) main::j#2 - //SEG28 [12] call line - //SEG29 [16] phi from main::@2 to line [phi:main::@2->line] - //SEG30 [16] phi (byte) line::l#2 = (byte) line::l#1 [phi:main::@2->line#0] -- register_copy + //SEG28 [11] (byte) line::l#1 ← (byte) main::j#2 + //SEG29 [12] call line + //SEG30 [16] phi from main::@2 to line [phi:main::@2->line] + //SEG31 [16] phi (byte) line::l#2 = (byte) line::l#1 [phi:main::@2->line#0] -- register_copy jsr line - //SEG31 main::@6 - //SEG32 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG32 main::@6 + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 19) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 19) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$13 bne b2 - //SEG34 main::@return - //SEG35 [15] return + //SEG35 main::@return + //SEG36 [15] return rts } -//SEG36 line +//SEG37 line line: { - //SEG37 [17] (byte) plot::x#0 ← (byte) line::l#2 -- vbuaa=vbuxx + //SEG38 [17] (byte) plot::x#0 ← (byte) line::l#2 -- vbuaa=vbuxx txa - //SEG38 [18] call plot - //SEG39 [22] phi from line to plot [phi:line->plot] - //SEG40 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy + //SEG39 [18] call plot + //SEG40 [22] phi from line to plot [phi:line->plot] + //SEG41 [22] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy jsr plot - //SEG41 line::@1 - //SEG42 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuaa=vbuxx_plus_vbuc1 + //SEG42 line::@1 + //SEG43 [19] (byte) plot::x#1 ← (byte) line::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 20 -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #$14 - //SEG43 [20] call plot - //SEG44 [22] phi from line::@1 to plot [phi:line::@1->plot] - //SEG45 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy + //SEG44 [20] call plot + //SEG45 [22] phi from line::@1 to plot [phi:line::@1->plot] + //SEG46 [22] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@1->plot#0] -- register_copy jsr plot - //SEG46 line::@return - //SEG47 [21] return + //SEG47 line::@return + //SEG48 [21] return rts } -//SEG48 plot +//SEG49 plot plot: { - //SEG49 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' -- pbuc1_derefidx_vbuaa=vbuc2 + //SEG50 [23] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' -- pbuc1_derefidx_vbuaa=vbuc2 tay lda #'*' sta SCREEN,y - //SEG50 plot::@return - //SEG51 [24] return + //SEG51 plot::@return + //SEG52 [24] return rts } diff --git a/src/test/ref/overlap-allocation.asm b/src/test/ref/overlap-allocation.asm index c3b0ca9ce..388d7e32d 100644 --- a/src/test/ref/overlap-allocation.asm +++ b/src/test/ref/overlap-allocation.asm @@ -1,3 +1,5 @@ +// Allocates ZP to j/k-variables even though all of i, j, k could be allocates to x and be more efficient. +// Reason: Pass4RegisterUpliftCombinations.isAllocationOverlapping() believes i/j/k variables overlaps insode plot() .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/overlap-allocation.log b/src/test/ref/overlap-allocation.log index 79f901a51..7020f32b1 100644 --- a/src/test/ref/overlap-allocation.log +++ b/src/test/ref/overlap-allocation.log @@ -287,137 +287,140 @@ Allocated zp ZP_BYTE:4 [ main::k#2 main::k#1 ] Allocated zp ZP_BYTE:5 [ plot::x#3 plot::x#0 plot::x#1 plot::x#2 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Allocates ZP to j/k-variables even though all of i, j, k could be allocates to x and be more efficient. +// Reason: Pass4RegisterUpliftCombinations.isAllocationOverlapping() believes i/j/k variables overlaps insode plot() +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 .label j = 3 .label k = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG13 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) plot::x#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG16 [6] (byte) plot::x#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta plot.x - //SEG16 [7] call plot - //SEG17 [21] phi from main::@1 to plot [phi:main::@1->plot] + //SEG17 [7] call plot + //SEG18 [21] phi from main::@1 to plot [phi:main::@1->plot] plot_from_b1: - //SEG18 [21] phi (byte) plot::x#3 = (byte) plot::x#0 [phi:main::@1->plot#0] -- register_copy + //SEG19 [21] phi (byte) plot::x#3 = (byte) plot::x#0 [phi:main::@1->plot#0] -- register_copy jsr plot jmp b7 - //SEG19 main::@7 + //SEG20 main::@7 b7: - //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG21 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG21 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG22 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b7 - //SEG22 [10] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG23 [10] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG23 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@2#0] -- vbuz1=vbuc1 + //SEG24 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG24 [10] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG25 [10] phi from main::@8 to main::@2 [phi:main::@8->main::@2] b2_from_b8: - //SEG25 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@2#0] -- register_copy + //SEG26 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@2#0] -- register_copy jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [11] (byte) plot::x#1 ← (byte) main::j#2 -- vbuz1=vbuz2 + //SEG28 [11] (byte) plot::x#1 ← (byte) main::j#2 -- vbuz1=vbuz2 lda j sta plot.x - //SEG28 [12] call plot - //SEG29 [21] phi from main::@2 to plot [phi:main::@2->plot] + //SEG29 [12] call plot + //SEG30 [21] phi from main::@2 to plot [phi:main::@2->plot] plot_from_b2: - //SEG30 [21] phi (byte) plot::x#3 = (byte) plot::x#1 [phi:main::@2->plot#0] -- register_copy + //SEG31 [21] phi (byte) plot::x#3 = (byte) plot::x#1 [phi:main::@2->plot#0] -- register_copy jsr plot jmp b8 - //SEG31 main::@8 + //SEG32 main::@8 b8: - //SEG32 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG33 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$b bne b2_from_b8 - //SEG34 [15] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG35 [15] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG35 [15] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@3#0] -- vbuz1=vbuc1 + //SEG36 [15] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@3#0] -- vbuz1=vbuc1 lda #0 sta k jmp b3 - //SEG36 [15] phi from main::@9 to main::@3 [phi:main::@9->main::@3] + //SEG37 [15] phi from main::@9 to main::@3 [phi:main::@9->main::@3] b3_from_b9: - //SEG37 [15] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@9->main::@3#0] -- register_copy + //SEG38 [15] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@9->main::@3#0] -- register_copy jmp b3 - //SEG38 main::@3 + //SEG39 main::@3 b3: - //SEG39 [16] (byte) plot::x#2 ← (byte) main::k#2 -- vbuz1=vbuz2 + //SEG40 [16] (byte) plot::x#2 ← (byte) main::k#2 -- vbuz1=vbuz2 lda k sta plot.x - //SEG40 [17] call plot - //SEG41 [21] phi from main::@3 to plot [phi:main::@3->plot] + //SEG41 [17] call plot + //SEG42 [21] phi from main::@3 to plot [phi:main::@3->plot] plot_from_b3: - //SEG42 [21] phi (byte) plot::x#3 = (byte) plot::x#2 [phi:main::@3->plot#0] -- register_copy + //SEG43 [21] phi (byte) plot::x#3 = (byte) plot::x#2 [phi:main::@3->plot#0] -- register_copy jsr plot jmp b9 - //SEG43 main::@9 + //SEG44 main::@9 b9: - //SEG44 [18] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 + //SEG45 [18] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 inc k - //SEG45 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG46 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda k cmp #$b bne b3_from_b9 jmp breturn - //SEG46 main::@return + //SEG47 main::@return breturn: - //SEG47 [20] return + //SEG48 [20] return rts } -//SEG48 plot +//SEG49 plot plot: { .label x = 5 - //SEG49 [22] *((const byte*) SCREEN#0 + (byte) plot::x#3) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG50 [22] *((const byte*) SCREEN#0 + (byte) plot::x#3) ← (byte) '*' -- pbuc1_derefidx_vbuz1=vbuc2 ldy x lda #'*' sta SCREEN,y jmp breturn - //SEG50 plot::@return + //SEG51 plot::@return breturn: - //SEG51 [23] return + //SEG52 [23] return rts } @@ -442,120 +445,123 @@ Uplifting [main] best 526 combination reg byte x [ main::i#2 main::i#1 ] reg byt Uplifting [] best 526 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Allocates ZP to j/k-variables even though all of i, j, k could be allocates to x and be more efficient. +// Reason: Pass4RegisterUpliftCombinations.isAllocationOverlapping() believes i/j/k variables overlaps insode plot() +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG13 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) plot::x#0 ← (byte) main::i#2 - //SEG16 [7] call plot - //SEG17 [21] phi from main::@1 to plot [phi:main::@1->plot] + //SEG16 [6] (byte) plot::x#0 ← (byte) main::i#2 + //SEG17 [7] call plot + //SEG18 [21] phi from main::@1 to plot [phi:main::@1->plot] plot_from_b1: - //SEG18 [21] phi (byte) plot::x#3 = (byte) plot::x#0 [phi:main::@1->plot#0] -- register_copy + //SEG19 [21] phi (byte) plot::x#3 = (byte) plot::x#0 [phi:main::@1->plot#0] -- register_copy jsr plot jmp b7 - //SEG19 main::@7 + //SEG20 main::@7 b7: - //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG21 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG21 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG22 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1_from_b7 - //SEG22 [10] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG23 [10] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG23 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@2#0] -- vbuxx=vbuc1 + //SEG24 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG24 [10] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG25 [10] phi from main::@8 to main::@2 [phi:main::@8->main::@2] b2_from_b8: - //SEG25 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@2#0] -- register_copy + //SEG26 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@2#0] -- register_copy jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [11] (byte) plot::x#1 ← (byte) main::j#2 - //SEG28 [12] call plot - //SEG29 [21] phi from main::@2 to plot [phi:main::@2->plot] + //SEG28 [11] (byte) plot::x#1 ← (byte) main::j#2 + //SEG29 [12] call plot + //SEG30 [21] phi from main::@2 to plot [phi:main::@2->plot] plot_from_b2: - //SEG30 [21] phi (byte) plot::x#3 = (byte) plot::x#1 [phi:main::@2->plot#0] -- register_copy + //SEG31 [21] phi (byte) plot::x#3 = (byte) plot::x#1 [phi:main::@2->plot#0] -- register_copy jsr plot jmp b8 - //SEG31 main::@8 + //SEG32 main::@8 b8: - //SEG32 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b2_from_b8 - //SEG34 [15] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG35 [15] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG35 [15] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@3#0] -- vbuxx=vbuc1 + //SEG36 [15] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG36 [15] phi from main::@9 to main::@3 [phi:main::@9->main::@3] + //SEG37 [15] phi from main::@9 to main::@3 [phi:main::@9->main::@3] b3_from_b9: - //SEG37 [15] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@9->main::@3#0] -- register_copy + //SEG38 [15] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@9->main::@3#0] -- register_copy jmp b3 - //SEG38 main::@3 + //SEG39 main::@3 b3: - //SEG39 [16] (byte) plot::x#2 ← (byte) main::k#2 - //SEG40 [17] call plot - //SEG41 [21] phi from main::@3 to plot [phi:main::@3->plot] + //SEG40 [16] (byte) plot::x#2 ← (byte) main::k#2 + //SEG41 [17] call plot + //SEG42 [21] phi from main::@3 to plot [phi:main::@3->plot] plot_from_b3: - //SEG42 [21] phi (byte) plot::x#3 = (byte) plot::x#2 [phi:main::@3->plot#0] -- register_copy + //SEG43 [21] phi (byte) plot::x#3 = (byte) plot::x#2 [phi:main::@3->plot#0] -- register_copy jsr plot jmp b9 - //SEG43 main::@9 + //SEG44 main::@9 b9: - //SEG44 [18] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx + //SEG45 [18] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx inx - //SEG45 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG46 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b3_from_b9 jmp breturn - //SEG46 main::@return + //SEG47 main::@return breturn: - //SEG47 [20] return + //SEG48 [20] return rts } -//SEG48 plot +//SEG49 plot plot: { - //SEG49 [22] *((const byte*) SCREEN#0 + (byte) plot::x#3) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG50 [22] *((const byte*) SCREEN#0 + (byte) plot::x#3) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta SCREEN,x jmp breturn - //SEG50 plot::@return + //SEG51 plot::@return breturn: - //SEG51 [23] return + //SEG52 [23] return rts } @@ -645,86 +651,89 @@ reg byte x [ plot::x#3 plot::x#0 plot::x#1 plot::x#2 ] FINAL ASSEMBLER Score: 292 -//SEG0 Basic Upstart +//SEG0 File Comments +// Allocates ZP to j/k-variables even though all of i, j, k could be allocates to x and be more efficient. +// Reason: Pass4RegisterUpliftCombinations.isAllocationOverlapping() believes i/j/k variables overlaps insode plot() +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@7 to main::@1 [phi:main::@7->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte) plot::x#0 ← (byte) main::i#2 - //SEG16 [7] call plot - //SEG17 [21] phi from main::@1 to plot [phi:main::@1->plot] - //SEG18 [21] phi (byte) plot::x#3 = (byte) plot::x#0 [phi:main::@1->plot#0] -- register_copy + //SEG16 [6] (byte) plot::x#0 ← (byte) main::i#2 + //SEG17 [7] call plot + //SEG18 [21] phi from main::@1 to plot [phi:main::@1->plot] + //SEG19 [21] phi (byte) plot::x#3 = (byte) plot::x#0 [phi:main::@1->plot#0] -- register_copy jsr plot - //SEG19 main::@7 - //SEG20 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG20 main::@7 + //SEG21 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG21 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG22 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1 - //SEG22 [10] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG23 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@2#0] -- vbuxx=vbuc1 + //SEG23 [10] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG24 [10] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG24 [10] phi from main::@8 to main::@2 [phi:main::@8->main::@2] - //SEG25 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@2#0] -- register_copy - //SEG26 main::@2 + //SEG25 [10] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG26 [10] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@2#0] -- register_copy + //SEG27 main::@2 b2: - //SEG27 [11] (byte) plot::x#1 ← (byte) main::j#2 - //SEG28 [12] call plot - //SEG29 [21] phi from main::@2 to plot [phi:main::@2->plot] - //SEG30 [21] phi (byte) plot::x#3 = (byte) plot::x#1 [phi:main::@2->plot#0] -- register_copy + //SEG28 [11] (byte) plot::x#1 ← (byte) main::j#2 + //SEG29 [12] call plot + //SEG30 [21] phi from main::@2 to plot [phi:main::@2->plot] + //SEG31 [21] phi (byte) plot::x#3 = (byte) plot::x#1 [phi:main::@2->plot#0] -- register_copy jsr plot - //SEG31 main::@8 - //SEG32 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG32 main::@8 + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG33 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b2 - //SEG34 [15] phi from main::@8 to main::@3 [phi:main::@8->main::@3] - //SEG35 [15] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@3#0] -- vbuxx=vbuc1 + //SEG35 [15] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG36 [15] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@8->main::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG36 [15] phi from main::@9 to main::@3 [phi:main::@9->main::@3] - //SEG37 [15] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@9->main::@3#0] -- register_copy - //SEG38 main::@3 + //SEG37 [15] phi from main::@9 to main::@3 [phi:main::@9->main::@3] + //SEG38 [15] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@9->main::@3#0] -- register_copy + //SEG39 main::@3 b3: - //SEG39 [16] (byte) plot::x#2 ← (byte) main::k#2 - //SEG40 [17] call plot - //SEG41 [21] phi from main::@3 to plot [phi:main::@3->plot] - //SEG42 [21] phi (byte) plot::x#3 = (byte) plot::x#2 [phi:main::@3->plot#0] -- register_copy + //SEG40 [16] (byte) plot::x#2 ← (byte) main::k#2 + //SEG41 [17] call plot + //SEG42 [21] phi from main::@3 to plot [phi:main::@3->plot] + //SEG43 [21] phi (byte) plot::x#3 = (byte) plot::x#2 [phi:main::@3->plot#0] -- register_copy jsr plot - //SEG43 main::@9 - //SEG44 [18] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx + //SEG44 main::@9 + //SEG45 [18] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx inx - //SEG45 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG46 [19] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b3 - //SEG46 main::@return - //SEG47 [20] return + //SEG47 main::@return + //SEG48 [20] return rts } -//SEG48 plot +//SEG49 plot plot: { - //SEG49 [22] *((const byte*) SCREEN#0 + (byte) plot::x#3) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG50 [22] *((const byte*) SCREEN#0 + (byte) plot::x#3) ← (byte) '*' -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta SCREEN,x - //SEG50 plot::@return - //SEG51 [23] return + //SEG51 plot::@return + //SEG52 [23] return rts } diff --git a/src/test/ref/print-problem.log b/src/test/ref/print-problem.log index aabbf0fe8..0763b5e1b 100644 --- a/src/test/ref/print-problem.log +++ b/src/test/ref/print-problem.log @@ -240,87 +240,88 @@ Allocated zp ZP_BYTE:3 [ char#2 ] Allocated zp ZP_BYTE:4 [ char#4 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label char = 3 .label char_4 = 4 .label line = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call ln - //SEG11 [12] phi from main to ln [phi:main->ln] + //SEG11 [5] call ln + //SEG12 [12] phi from main to ln [phi:main->ln] ln_from_main: - //SEG12 [12] phi (byte) line#12 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main->ln#0] -- vbuz1=vbuc1 + //SEG13 [12] phi (byte) line#12 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main->ln#0] -- vbuz1=vbuc1 lda #$40 sta line jsr ln jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) char#2 ← ++ (byte) line#13 -- vbuz1=_inc_vbuz2 + //SEG15 [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] + //SEG16 [7] call ln + //SEG17 [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 + //SEG18 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy jsr ln jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [8] (byte) char#4 ← ++ (byte) line#13 -- vbuz1=_inc_vbuz2 + //SEG20 [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] + //SEG21 [9] call ln + //SEG22 [12] phi from main::@2 to ln [phi:main::@2->ln] ln_from_b2: - //SEG22 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy + //SEG23 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy jsr ln jmp b3 - //SEG23 main::@3 + //SEG24 main::@3 b3: - //SEG24 [10] *((const byte*) SCREEN#0) ← (byte) line#13 -- _deref_pbuc1=vbuz1 + //SEG25 [10] *((const byte*) SCREEN#0) ← (byte) line#13 -- _deref_pbuc1=vbuz1 lda line sta SCREEN jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [11] return + //SEG27 [11] return rts } -//SEG27 ln +//SEG28 ln ln: { - //SEG28 [13] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG29 [13] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda line clc adc #2 sta line jmp breturn - //SEG29 ln::@return + //SEG30 ln::@return breturn: - //SEG30 [14] return + //SEG31 [14] return rts } @@ -339,78 +340,79 @@ Uplifting [main] best 75 combination Uplifting [ln] best 75 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call ln - //SEG11 [12] phi from main to ln [phi:main->ln] + //SEG11 [5] call ln + //SEG12 [12] phi from main to ln [phi:main->ln] ln_from_main: - //SEG12 [12] phi (byte) line#12 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main->ln#0] -- vbuaa=vbuc1 + //SEG13 [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 jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) char#2 ← ++ (byte) line#13 -- vbuxx=_inc_vbuaa + //SEG15 [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] + //SEG16 [7] call ln + //SEG17 [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 + //SEG18 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy jsr ln jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [8] (byte) char#4 ← ++ (byte) line#13 -- vbuxx=_inc_vbuaa + //SEG20 [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] + //SEG21 [9] call ln + //SEG22 [12] phi from main::@2 to ln [phi:main::@2->ln] ln_from_b2: - //SEG22 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy + //SEG23 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy jsr ln jmp b3 - //SEG23 main::@3 + //SEG24 main::@3 b3: - //SEG24 [10] *((const byte*) SCREEN#0) ← (byte) line#13 -- _deref_pbuc1=vbuaa + //SEG25 [10] *((const byte*) SCREEN#0) ← (byte) line#13 -- _deref_pbuc1=vbuaa sta SCREEN jmp breturn - //SEG25 main::@return + //SEG26 main::@return breturn: - //SEG26 [11] return + //SEG27 [11] return rts } -//SEG27 ln +//SEG28 ln ln: { - //SEG28 [13] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_plus_2 + //SEG29 [13] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_plus_2 clc adc #2 jmp breturn - //SEG29 ln::@return + //SEG30 ln::@return breturn: - //SEG30 [14] return + //SEG31 [14] return rts } @@ -472,56 +474,57 @@ reg byte x [ char#4 ] FINAL ASSEMBLER Score: 48 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call ln - //SEG11 [12] phi from main to ln [phi:main->ln] - //SEG12 [12] phi (byte) line#12 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main->ln#0] -- vbuaa=vbuc1 + //SEG11 [5] call ln + //SEG12 [12] phi from main to ln [phi:main->ln] + //SEG13 [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 main::@1 - //SEG14 [6] (byte) char#2 ← ++ (byte) line#13 -- vbuxx=_inc_vbuaa + //SEG14 main::@1 + //SEG15 [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 + //SEG16 [7] call ln + //SEG17 [12] phi from main::@1 to ln [phi:main::@1->ln] + //SEG18 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy jsr ln - //SEG18 main::@2 - //SEG19 [8] (byte) char#4 ← ++ (byte) line#13 -- vbuxx=_inc_vbuaa + //SEG19 main::@2 + //SEG20 [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 + //SEG21 [9] call ln + //SEG22 [12] phi from main::@2 to ln [phi:main::@2->ln] + //SEG23 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy jsr ln - //SEG23 main::@3 - //SEG24 [10] *((const byte*) SCREEN#0) ← (byte) line#13 -- _deref_pbuc1=vbuaa + //SEG24 main::@3 + //SEG25 [10] *((const byte*) SCREEN#0) ← (byte) line#13 -- _deref_pbuc1=vbuaa sta SCREEN - //SEG25 main::@return - //SEG26 [11] return + //SEG26 main::@return + //SEG27 [11] return rts } -//SEG27 ln +//SEG28 ln ln: { - //SEG28 [13] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_plus_2 + //SEG29 [13] (byte) line#13 ← (byte) line#12 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuaa_plus_2 clc adc #2 - //SEG29 ln::@return - //SEG30 [14] return + //SEG30 ln::@return + //SEG31 [14] return rts } diff --git a/src/test/ref/printmsg.log b/src/test/ref/printmsg.log index 26694e8d7..b686c3a65 100644 --- a/src/test/ref/printmsg.log +++ b/src/test/ref/printmsg.log @@ -439,132 +439,133 @@ 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#32 print_char_cursor#33 print_char_cursor#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 6 .label print_line_cursor = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] b20_from_bbegin: jmp b20 -//SEG4 @20 +//SEG5 @20 b20: -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] main_from_b20: jsr main -//SEG7 [3] phi from @20 to @end [phi:@20->@end] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] bend_from_b20: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_str - //SEG11 [22] phi from main to print_str [phi:main->print_str] + //SEG11 [5] call print_str + //SEG12 [22] phi from main to print_str [phi:main->print_str] print_str_from_main: - //SEG12 [22] phi (byte*) print_char_cursor#29 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_str#0] -- pbuz1=pbuc1 + //SEG13 [22] phi (byte*) print_char_cursor#29 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG13 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 + //SEG14 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 lda #msg sta print_str.str+1 jsr print_str - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] call print_ln - //SEG17 [17] phi from main::@1 to print_ln [phi:main::@1->print_ln] + //SEG17 [7] call print_ln + //SEG18 [17] phi from main::@1 to print_ln [phi:main::@1->print_ln] print_ln_from_b1: - //SEG18 [17] phi (byte*) print_line_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@1->print_ln#0] -- pbuz1=pbuc1 + //SEG19 [17] phi (byte*) print_line_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@1->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [8] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG21 [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 sta print_char_cursor+1 - //SEG21 [9] call print_str - //SEG22 [22] phi from main::@2 to print_str [phi:main::@2->print_str] + //SEG22 [9] call print_str + //SEG23 [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#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 + //SEG24 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@2->print_str#0] -- register_copy + //SEG25 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #msg2 sta print_str.str+1 jsr print_str - //SEG25 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG26 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [11] call print_ln - //SEG28 [17] phi from main::@3 to print_ln [phi:main::@3->print_ln] + //SEG28 [11] call print_ln + //SEG29 [17] phi from main::@3 to print_ln [phi:main::@3->print_ln] print_ln_from_b3: - //SEG29 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@3->print_ln#0] -- register_copy + //SEG30 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@3->print_ln#0] -- register_copy jsr print_ln jmp b4 - //SEG30 main::@4 + //SEG31 main::@4 b4: - //SEG31 [12] (byte*~) print_char_cursor#33 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG32 [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] + //SEG33 [13] call print_str + //SEG34 [22] phi from main::@4 to print_str [phi:main::@4->print_str] print_str_from_b4: - //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 + //SEG35 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#33 [phi:main::@4->print_str#0] -- register_copy + //SEG36 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #msg3 sta print_str.str+1 jsr print_str - //SEG36 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG37 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG37 main::@5 + //SEG38 main::@5 b5: - //SEG38 [15] call print_ln - //SEG39 [17] phi from main::@5 to print_ln [phi:main::@5->print_ln] + //SEG39 [15] call print_ln + //SEG40 [17] phi from main::@5 to print_ln [phi:main::@5->print_ln] print_ln_from_b5: - //SEG40 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@5->print_ln#0] -- register_copy + //SEG41 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@5->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG41 main::@return + //SEG42 main::@return breturn: - //SEG42 [16] return + //SEG43 [16] return rts } -//SEG43 print_ln +//SEG44 print_ln // Print a newline print_ln: { - //SEG44 [18] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG45 [18] 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: - //SEG45 [18] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#16 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG46 [18] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#16 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG46 print_ln::@1 + //SEG47 print_ln::@1 b1: - //SEG47 [19] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG48 [19] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -572,7 +573,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG48 [20] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG49 [20] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -582,46 +583,46 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG49 print_ln::@return + //SEG50 print_ln::@return breturn: - //SEG50 [21] return + //SEG51 [21] return rts } -//SEG51 print_str +//SEG52 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG52 [23] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG53 [23] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG53 [23] phi (byte*) print_char_cursor#13 = (byte*) print_char_cursor#29 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG54 [23] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG54 [23] phi (byte*) print_char_cursor#13 = (byte*) print_char_cursor#29 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG55 [23] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG55 print_str::@1 + //SEG56 print_str::@1 b1: - //SEG56 [24] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG57 [24] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG57 print_str::@return + //SEG58 print_str::@return breturn: - //SEG58 [25] return + //SEG59 [25] return rts - //SEG59 print_str::@2 + //SEG60 print_str::@2 b2: - //SEG60 [26] *((byte*) print_char_cursor#13) ← *((byte*) print_str::str#4) -- _deref_pbuz1=_deref_pbuz2 + //SEG61 [26] *((byte*) print_char_cursor#13) ← *((byte*) print_str::str#4) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG61 [27] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#13 -- pbuz1=_inc_pbuz1 + //SEG62 [27] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#13 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG62 [28] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 -- pbuz1=_inc_pbuz1 + //SEG63 [28] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 @@ -655,132 +656,133 @@ Uplifting [print_ln] best 1203 combination Uplifting [main] best 1203 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 6 .label print_line_cursor = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] b20_from_bbegin: jmp b20 -//SEG4 @20 +//SEG5 @20 b20: -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] main_from_b20: jsr main -//SEG7 [3] phi from @20 to @end [phi:@20->@end] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] bend_from_b20: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_str - //SEG11 [22] phi from main to print_str [phi:main->print_str] + //SEG11 [5] call print_str + //SEG12 [22] phi from main to print_str [phi:main->print_str] print_str_from_main: - //SEG12 [22] phi (byte*) print_char_cursor#29 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_str#0] -- pbuz1=pbuc1 + //SEG13 [22] phi (byte*) print_char_cursor#29 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG13 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 + //SEG14 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 lda #msg sta print_str.str+1 jsr print_str - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] call print_ln - //SEG17 [17] phi from main::@1 to print_ln [phi:main::@1->print_ln] + //SEG17 [7] call print_ln + //SEG18 [17] phi from main::@1 to print_ln [phi:main::@1->print_ln] print_ln_from_b1: - //SEG18 [17] phi (byte*) print_line_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@1->print_ln#0] -- pbuz1=pbuc1 + //SEG19 [17] phi (byte*) print_line_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@1->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [8] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG21 [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 sta print_char_cursor+1 - //SEG21 [9] call print_str - //SEG22 [22] phi from main::@2 to print_str [phi:main::@2->print_str] + //SEG22 [9] call print_str + //SEG23 [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#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 + //SEG24 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@2->print_str#0] -- register_copy + //SEG25 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #msg2 sta print_str.str+1 jsr print_str - //SEG25 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG26 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [11] call print_ln - //SEG28 [17] phi from main::@3 to print_ln [phi:main::@3->print_ln] + //SEG28 [11] call print_ln + //SEG29 [17] phi from main::@3 to print_ln [phi:main::@3->print_ln] print_ln_from_b3: - //SEG29 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@3->print_ln#0] -- register_copy + //SEG30 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@3->print_ln#0] -- register_copy jsr print_ln jmp b4 - //SEG30 main::@4 + //SEG31 main::@4 b4: - //SEG31 [12] (byte*~) print_char_cursor#33 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG32 [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] + //SEG33 [13] call print_str + //SEG34 [22] phi from main::@4 to print_str [phi:main::@4->print_str] print_str_from_b4: - //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 + //SEG35 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#33 [phi:main::@4->print_str#0] -- register_copy + //SEG36 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #msg3 sta print_str.str+1 jsr print_str - //SEG36 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG37 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG37 main::@5 + //SEG38 main::@5 b5: - //SEG38 [15] call print_ln - //SEG39 [17] phi from main::@5 to print_ln [phi:main::@5->print_ln] + //SEG39 [15] call print_ln + //SEG40 [17] phi from main::@5 to print_ln [phi:main::@5->print_ln] print_ln_from_b5: - //SEG40 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@5->print_ln#0] -- register_copy + //SEG41 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@5->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG41 main::@return + //SEG42 main::@return breturn: - //SEG42 [16] return + //SEG43 [16] return rts } -//SEG43 print_ln +//SEG44 print_ln // Print a newline print_ln: { - //SEG44 [18] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG45 [18] 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: - //SEG45 [18] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#16 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG46 [18] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#16 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG46 print_ln::@1 + //SEG47 print_ln::@1 b1: - //SEG47 [19] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG48 [19] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -788,7 +790,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG48 [20] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG49 [20] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -798,46 +800,46 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG49 print_ln::@return + //SEG50 print_ln::@return breturn: - //SEG50 [21] return + //SEG51 [21] return rts } -//SEG51 print_str +//SEG52 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG52 [23] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG53 [23] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG53 [23] phi (byte*) print_char_cursor#13 = (byte*) print_char_cursor#29 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG54 [23] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG54 [23] phi (byte*) print_char_cursor#13 = (byte*) print_char_cursor#29 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG55 [23] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG55 print_str::@1 + //SEG56 print_str::@1 b1: - //SEG56 [24] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG57 [24] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG57 print_str::@return + //SEG58 print_str::@return breturn: - //SEG58 [25] return + //SEG59 [25] return rts - //SEG59 print_str::@2 + //SEG60 print_str::@2 b2: - //SEG60 [26] *((byte*) print_char_cursor#13) ← *((byte*) print_str::str#4) -- _deref_pbuz1=_deref_pbuz2 + //SEG61 [26] *((byte*) print_char_cursor#13) ← *((byte*) print_str::str#4) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG61 [27] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#13 -- pbuz1=_inc_pbuz1 + //SEG62 [27] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#13 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG62 [28] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 -- pbuz1=_inc_pbuz1 + //SEG63 [28] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 @@ -950,99 +952,100 @@ zp ZP_WORD:6 [ print_char_cursor#13 print_char_cursor#29 print_char_cursor#32 pr FINAL ASSEMBLER Score: 1033 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 6 .label print_line_cursor = 2 -//SEG2 @begin -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] -//SEG4 @20 -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] -//SEG7 [3] phi from @20 to @end [phi:@20->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG5 @20 +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print_str - //SEG11 [22] phi from main to print_str [phi:main->print_str] - //SEG12 [22] phi (byte*) print_char_cursor#29 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_str#0] -- pbuz1=pbuc1 + //SEG11 [5] call print_str + //SEG12 [22] phi from main to print_str [phi:main->print_str] + //SEG13 [22] phi (byte*) print_char_cursor#29 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG13 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 + //SEG14 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 lda #msg sta print_str.str+1 jsr print_str - //SEG14 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG15 main::@1 - //SEG16 [7] call print_ln - //SEG17 [17] phi from main::@1 to print_ln [phi:main::@1->print_ln] - //SEG18 [17] phi (byte*) print_line_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@1->print_ln#0] -- pbuz1=pbuc1 + //SEG15 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG16 main::@1 + //SEG17 [7] call print_ln + //SEG18 [17] phi from main::@1 to print_ln [phi:main::@1->print_ln] + //SEG19 [17] phi (byte*) print_line_cursor#16 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@1->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG19 main::@2 - //SEG20 [8] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG20 main::@2 + //SEG21 [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 sta print_char_cursor+1 - //SEG21 [9] call print_str - //SEG22 [22] phi from main::@2 to print_str [phi:main::@2->print_str] - //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 + //SEG22 [9] call print_str + //SEG23 [22] phi from main::@2 to print_str [phi:main::@2->print_str] + //SEG24 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@2->print_str#0] -- register_copy + //SEG25 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #msg2 sta print_str.str+1 jsr print_str - //SEG25 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG26 main::@3 - //SEG27 [11] call print_ln - //SEG28 [17] phi from main::@3 to print_ln [phi:main::@3->print_ln] - //SEG29 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@3->print_ln#0] -- register_copy + //SEG26 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG27 main::@3 + //SEG28 [11] call print_ln + //SEG29 [17] phi from main::@3 to print_ln [phi:main::@3->print_ln] + //SEG30 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@3->print_ln#0] -- register_copy jsr print_ln - //SEG30 main::@4 - //SEG31 [12] (byte*~) print_char_cursor#33 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG31 main::@4 + //SEG32 [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#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 + //SEG33 [13] call print_str + //SEG34 [22] phi from main::@4 to print_str [phi:main::@4->print_str] + //SEG35 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#33 [phi:main::@4->print_str#0] -- register_copy + //SEG36 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #msg3 sta print_str.str+1 jsr print_str - //SEG36 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - //SEG37 main::@5 - //SEG38 [15] call print_ln - //SEG39 [17] phi from main::@5 to print_ln [phi:main::@5->print_ln] - //SEG40 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@5->print_ln#0] -- register_copy + //SEG37 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG38 main::@5 + //SEG39 [15] call print_ln + //SEG40 [17] phi from main::@5 to print_ln [phi:main::@5->print_ln] + //SEG41 [17] phi (byte*) print_line_cursor#16 = (byte*) print_line_cursor#1 [phi:main::@5->print_ln#0] -- register_copy jsr print_ln - //SEG41 main::@return - //SEG42 [16] return + //SEG42 main::@return + //SEG43 [16] return rts } -//SEG43 print_ln +//SEG44 print_ln // Print a newline print_ln: { - //SEG44 [18] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG45 [18] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#16 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG46 print_ln::@1 + //SEG45 [18] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG46 [18] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#16 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG47 print_ln::@1 b1: - //SEG47 [19] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG48 [19] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -1050,7 +1053,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG48 [20] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG49 [20] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -1059,39 +1062,39 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG49 print_ln::@return - //SEG50 [21] return + //SEG50 print_ln::@return + //SEG51 [21] return rts } -//SEG51 print_str +//SEG52 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG52 [23] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG53 [23] phi (byte*) print_char_cursor#13 = (byte*) print_char_cursor#29 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG54 [23] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG55 print_str::@1 + //SEG53 [23] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG54 [23] phi (byte*) print_char_cursor#13 = (byte*) print_char_cursor#29 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG55 [23] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG56 print_str::@1 b1: - //SEG56 [24] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG57 [24] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG57 print_str::@return - //SEG58 [25] return + //SEG58 print_str::@return + //SEG59 [25] return rts - //SEG59 print_str::@2 + //SEG60 print_str::@2 b2: - //SEG60 [26] *((byte*) print_char_cursor#13) ← *((byte*) print_str::str#4) -- _deref_pbuz1=_deref_pbuz2 + //SEG61 [26] *((byte*) print_char_cursor#13) ← *((byte*) print_str::str#4) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG61 [27] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#13 -- pbuz1=_inc_pbuz1 + //SEG62 [27] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#13 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG62 [28] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 -- pbuz1=_inc_pbuz1 + //SEG63 [28] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 diff --git a/src/test/ref/ptr-complex.asm b/src/test/ref/ptr-complex.asm index 6a8c62ccc..b0a59d434 100644 --- a/src/test/ref/ptr-complex.asm +++ b/src/test/ref/ptr-complex.asm @@ -1,7 +1,7 @@ +// Test some complex pointers .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test some complex pointers main: { .label screen = $400 .label BGCOL = $d020 diff --git a/src/test/ref/ptr-complex.log b/src/test/ref/ptr-complex.log index ed386e13b..738acefa5 100644 --- a/src/test/ref/ptr-complex.log +++ b/src/test/ref/ptr-complex.log @@ -276,27 +276,28 @@ Allocated zp ZP_WORD:7 [ main::$9 ] Allocated zp ZP_WORD:9 [ main::$11 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test some complex pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Test some complex pointers +//SEG9 main main: { .label screen = $400 .label BGCOL = $d020 @@ -307,22 +308,22 @@ main: { .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 + //SEG10 [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] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::i#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG16 [6] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::i#2 -- pbuz1=pbuc1_plus_vbuz2 lda i clc adc #screen+$28 adc #0 sta _2+1 - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) -- pbuc1_derefidx_vbuz1=_deref_pbuz2 + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) -- pbuc1_derefidx_vbuz1=_deref_pbuz2 ldx i ldy #0 lda (_2),y sta screen,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b1 jmp b3 - //SEG19 main::@3 + //SEG20 main::@3 b3: - //SEG20 [10] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 121) -- _deref_pbuc1=_deref_pbuc2 + //SEG21 [10] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 121) -- _deref_pbuc1=_deref_pbuc2 lda screen+$79 sta sc2 - //SEG21 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 122) -- _deref_pbuc1=_deref_pbuc2 + //SEG22 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 122) -- _deref_pbuc1=_deref_pbuc2 lda screen+$7a sta screen+$52 - //SEG22 [12] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG23 [12] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG23 [12] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@2#0] -- vbuz1=vbuc1 + //SEG24 [12] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG24 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG25 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG25 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG26 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [13] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 160 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG28 [13] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 160 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuz2 lda j clc adc #screen+$a0 adc #0 sta _9+1 - //SEG28 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 200 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG29 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 200 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuz2 lda j clc adc #screen+$c8 adc #0 sta _11+1 - //SEG29 [15] *((byte*~) main::$9) ← *((byte*~) main::$11) -- _deref_pbuz1=_deref_pbuz2 + //SEG30 [15] *((byte*~) main::$9) ← *((byte*~) main::$11) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (_11),y ldy #0 sta (_9),y - //SEG30 [16] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG31 [16] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG31 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG32 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$b bne b2_from_b2 jmp b4 - //SEG32 main::@4 + //SEG33 main::@4 b4: - //SEG33 [18] *(((byte*))(word/dword/signed dword) 53280) ← ++ *(((byte*))(word/dword/signed dword) 53280) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG34 [18] *(((byte*))(word/dword/signed dword) 53280) ← ++ *(((byte*))(word/dword/signed dword) 53280) -- _deref_pbuc1=_inc__deref_pbuc1 inc $d020 - //SEG34 [19] *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) ← -- *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG35 [19] *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) ← -- *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) -- _deref_pbuc1=_dec__deref_pbuc1 dec $d000+$21 - //SEG35 [20] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG36 [20] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [21] return + //SEG38 [21] return rts } @@ -442,27 +443,28 @@ 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 +//SEG0 File Comments +// Test some complex pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Test some complex pointers +//SEG9 main main: { .label screen = $400 .label BGCOL = $d020 @@ -470,20 +472,20 @@ 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 + //SEG10 [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 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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::i#2 -- pbuz1=pbuc1_plus_vbuxx + //SEG16 [6] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::i#2 -- pbuz1=pbuc1_plus_vbuxx txa clc adc #screen+$28 adc #0 sta _2+1 - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) -- pbuc1_derefidx_vbuxx=_deref_pbuz1 + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) -- pbuc1_derefidx_vbuxx=_deref_pbuz1 ldy #0 lda (_2),y sta screen,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1_from_b1 jmp b3 - //SEG19 main::@3 + //SEG20 main::@3 b3: - //SEG20 [10] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 121) -- _deref_pbuc1=_deref_pbuc2 + //SEG21 [10] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 121) -- _deref_pbuc1=_deref_pbuc2 lda screen+$79 sta sc2 - //SEG21 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 122) -- _deref_pbuc1=_deref_pbuc2 + //SEG22 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 122) -- _deref_pbuc1=_deref_pbuc2 lda screen+$7a sta screen+$52 - //SEG22 [12] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG23 [12] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG23 [12] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@2#0] -- vbuxx=vbuc1 + //SEG24 [12] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG24 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG25 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG25 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG26 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [13] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 160 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuxx + //SEG28 [13] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 160 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuxx txa clc adc #screen+$a0 adc #0 sta _9+1 - //SEG28 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 200 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuxx + //SEG29 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 200 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuxx txa clc adc #screen+$c8 adc #0 sta _11+1 - //SEG29 [15] *((byte*~) main::$9) ← *((byte*~) main::$11) -- _deref_pbuz1=_deref_pbuz2 + //SEG30 [15] *((byte*~) main::$9) ← *((byte*~) main::$11) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (_11),y ldy #0 sta (_9),y - //SEG30 [16] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG31 [16] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG31 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG32 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b2_from_b2 jmp b4 - //SEG32 main::@4 + //SEG33 main::@4 b4: - //SEG33 [18] *(((byte*))(word/dword/signed dword) 53280) ← ++ *(((byte*))(word/dword/signed dword) 53280) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG34 [18] *(((byte*))(word/dword/signed dword) 53280) ← ++ *(((byte*))(word/dword/signed dword) 53280) -- _deref_pbuc1=_inc__deref_pbuc1 inc $d020 - //SEG34 [19] *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) ← -- *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG35 [19] *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) ← -- *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) -- _deref_pbuc1=_dec__deref_pbuc1 dec $d000+$21 - //SEG35 [20] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG36 [20] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL jmp breturn - //SEG36 main::@return + //SEG37 main::@return breturn: - //SEG37 [21] return + //SEG38 [21] return rts } @@ -635,19 +637,20 @@ zp ZP_WORD:4 [ main::$11 ] FINAL ASSEMBLER Score: 954 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test some complex pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main -// Test some complex pointers +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label screen = $400 .label BGCOL = $d020 @@ -655,16 +658,16 @@ 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 + //SEG10 [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 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::i#2 -- pbuz1=pbuc1_plus_vbuxx + //SEG16 [6] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::i#2 -- pbuz1=pbuc1_plus_vbuxx txa clc adc #screen+$28 adc #0 sta _2+1 - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) -- pbuc1_derefidx_vbuxx=_deref_pbuz1 + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) -- pbuc1_derefidx_vbuxx=_deref_pbuz1 ldy #0 lda (_2),y sta screen,x - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1 - //SEG19 main::@3 - //SEG20 [10] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 121) -- _deref_pbuc1=_deref_pbuc2 + //SEG20 main::@3 + //SEG21 [10] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 121) -- _deref_pbuc1=_deref_pbuc2 lda screen+$79 sta sc2 - //SEG21 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 122) -- _deref_pbuc1=_deref_pbuc2 + //SEG22 [11] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 122) -- _deref_pbuc1=_deref_pbuc2 lda screen+$7a sta screen+$52 - //SEG22 [12] phi from main::@3 to main::@2 [phi:main::@3->main::@2] - //SEG23 [12] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@2#0] -- vbuxx=vbuc1 + //SEG23 [12] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG24 [12] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG24 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG25 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG26 main::@2 + //SEG25 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG26 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG27 main::@2 b2: - //SEG27 [13] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 160 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuxx + //SEG28 [13] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 160 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuxx txa clc adc #screen+$a0 adc #0 sta _9+1 - //SEG28 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 200 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuxx + //SEG29 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word/dword/signed dword) 200 + (byte) main::j#2 -- pbuz1=pbuc1_plus_vbuxx txa clc adc #screen+$c8 adc #0 sta _11+1 - //SEG29 [15] *((byte*~) main::$9) ← *((byte*~) main::$11) -- _deref_pbuz1=_deref_pbuz2 + //SEG30 [15] *((byte*~) main::$9) ← *((byte*~) main::$11) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (_11),y sta (_9),y - //SEG30 [16] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG31 [16] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx inx - //SEG31 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG32 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b2 - //SEG32 main::@4 - //SEG33 [18] *(((byte*))(word/dword/signed dword) 53280) ← ++ *(((byte*))(word/dword/signed dword) 53280) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG33 main::@4 + //SEG34 [18] *(((byte*))(word/dword/signed dword) 53280) ← ++ *(((byte*))(word/dword/signed dword) 53280) -- _deref_pbuc1=_inc__deref_pbuc1 inc $d020 - //SEG34 [19] *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) ← -- *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG35 [19] *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) ← -- *(((byte*))(word/dword/signed dword) 53248+(byte/signed byte/word/signed word/dword/signed dword) 33) -- _deref_pbuc1=_dec__deref_pbuc1 dec $d000+$21 - //SEG35 [20] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG36 [20] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG36 main::@return - //SEG37 [21] return + //SEG37 main::@return + //SEG38 [21] return rts } diff --git a/src/test/ref/ptrtest.asm b/src/test/ref/ptrtest.asm index cd93d77a6..6903b8e42 100644 --- a/src/test/ref/ptrtest.asm +++ b/src/test/ref/ptrtest.asm @@ -1,7 +1,7 @@ +// Test all types of pointers .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test all types of pointers main: { jsr lvalue jsr rvalue diff --git a/src/test/ref/ptrtest.log b/src/test/ref/ptrtest.log index 2d3431f26..fcd467337 100644 --- a/src/test/ref/ptrtest.log +++ b/src/test/ref/ptrtest.log @@ -421,156 +421,157 @@ Allocated zp ZP_BYTE:12 [ rvalue::b#1 ] Allocated zp ZP_BYTE:13 [ rvalue::b#2 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test all types of pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test all types of pointers +//SEG10 main main: { - //SEG10 [5] call lvalue + //SEG11 [5] call lvalue jsr lvalue - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [7] call rvalue + //SEG14 [7] call rvalue jsr rvalue - //SEG14 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG15 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [9] call rvaluevar - //SEG17 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] + //SEG17 [9] call rvaluevar + //SEG18 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] rvaluevar_from_b2: jsr rvaluevar - //SEG18 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG19 main::@3 + //SEG20 main::@3 b3: - //SEG20 [11] call lvaluevar - //SEG21 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] + //SEG21 [11] call lvaluevar + //SEG22 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] lvaluevar_from_b3: jsr lvaluevar jmp breturn - //SEG22 main::@return + //SEG23 main::@return breturn: - //SEG23 [12] return + //SEG24 [12] return rts } -//SEG24 lvaluevar +//SEG25 lvaluevar lvaluevar: { .const b = 4 .label screen = 3 .label i = 2 - //SEG25 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] + //SEG26 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG26 [14] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- pbuz1=pbuc1 + //SEG27 [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 - //SEG27 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuz1=vbuc1 + //SEG28 [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 - //SEG28 lvaluevar::@1 + //SEG29 lvaluevar::@1 b1: - //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 + //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 lda i cmp #$a bcc b2 jmp breturn - //SEG30 lvaluevar::@return + //SEG31 lvaluevar::@return breturn: - //SEG31 [16] return + //SEG32 [16] return rts - //SEG32 lvaluevar::@2 + //SEG33 lvaluevar::@2 b2: - //SEG33 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 + //SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 lda #b ldy #0 sta (screen),y - //SEG34 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + //SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG35 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuz1=_inc_vbuz1 + //SEG36 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG36 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] + //SEG37 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] b1_from_b2: - //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 + //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 jmp b1 } -//SEG39 rvaluevar +//SEG40 rvaluevar rvaluevar: { .label b = $a .label screen = 6 .label i = 5 - //SEG40 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] + //SEG41 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG41 [21] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- pbuz1=pbuc1 + //SEG42 [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 + //SEG43 [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 - //SEG43 rvaluevar::@1 + //SEG44 rvaluevar::@1 b1: - //SEG44 [22] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG45 [22] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b2 jmp breturn - //SEG45 rvaluevar::@return + //SEG46 rvaluevar::@return breturn: - //SEG46 [23] return + //SEG47 [23] return rts - //SEG47 rvaluevar::@2 + //SEG48 rvaluevar::@2 b2: - //SEG48 [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) -- vbuz1=_deref_pbuz2 + //SEG49 [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 + //SEG50 [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 + //SEG51 [26] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG51 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] + //SEG52 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] b1_from_b2: - //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 + //SEG53 [21] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG54 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } -//SEG54 rvalue +//SEG55 rvalue rvalue: { // A constant pointer .label SCREEN = $400 @@ -578,81 +579,81 @@ rvalue: { .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 + //SEG56 [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 + //SEG57 [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] + //SEG58 [29] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG58 [29] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvalue->rvalue::@1#0] -- vbuz1=vbuc1 + //SEG59 [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 - //SEG59 rvalue::@1 + //SEG60 rvalue::@1 b1: - //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 + //SEG61 [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 - //SEG61 rvalue::@return + //SEG62 rvalue::@return breturn: - //SEG62 [31] return + //SEG63 [31] return rts - //SEG63 rvalue::@2 + //SEG64 rvalue::@2 b2: - //SEG64 [32] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG65 [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 + //SEG66 [33] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG66 [29] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] + //SEG67 [29] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] b1_from_b2: - //SEG67 [29] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy + //SEG68 [29] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } -//SEG68 lvalue +//SEG69 lvalue lvalue: { // A constant pointer .label SCREEN = $400 .label i = 9 - //SEG69 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG70 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //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 + //SEG71 [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 - //SEG71 [36] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] + //SEG72 [36] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG72 [36] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuz1=vbuc1 + //SEG73 [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 - //SEG73 lvalue::@1 + //SEG74 lvalue::@1 b1: - //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 + //SEG75 [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 - //SEG75 lvalue::@return + //SEG76 lvalue::@return breturn: - //SEG76 [38] return + //SEG77 [38] return rts - //SEG77 lvalue::@2 + //SEG78 lvalue::@2 b2: - //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 + //SEG79 [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 - //SEG79 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuz1=_inc_vbuz1 + //SEG80 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG80 [36] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] + //SEG81 [36] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] b1_from_b2: - //SEG81 [36] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy + //SEG82 [36] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } @@ -702,216 +703,217 @@ Coalescing zero page register [ zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::sc 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 +//SEG0 File Comments +// Test all types of pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test all types of pointers +//SEG10 main main: { - //SEG10 [5] call lvalue + //SEG11 [5] call lvalue jsr lvalue - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [7] call rvalue + //SEG14 [7] call rvalue jsr rvalue - //SEG14 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG15 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [9] call rvaluevar - //SEG17 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] + //SEG17 [9] call rvaluevar + //SEG18 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] rvaluevar_from_b2: jsr rvaluevar - //SEG18 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG19 main::@3 + //SEG20 main::@3 b3: - //SEG20 [11] call lvaluevar - //SEG21 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] + //SEG21 [11] call lvaluevar + //SEG22 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] lvaluevar_from_b3: jsr lvaluevar jmp breturn - //SEG22 main::@return + //SEG23 main::@return breturn: - //SEG23 [12] return + //SEG24 [12] return rts } -//SEG24 lvaluevar +//SEG25 lvaluevar lvaluevar: { .const b = 4 .label screen = 2 - //SEG25 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] + //SEG26 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG26 [14] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- pbuz1=pbuc1 + //SEG27 [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 - //SEG27 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuxx=vbuc1 + //SEG28 [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 - //SEG28 lvaluevar::@1 + //SEG29 lvaluevar::@1 b1: - //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 + //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 cpx #$a bcc b2 jmp breturn - //SEG30 lvaluevar::@return + //SEG31 lvaluevar::@return breturn: - //SEG31 [16] return + //SEG32 [16] return rts - //SEG32 lvaluevar::@2 + //SEG33 lvaluevar::@2 b2: - //SEG33 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 + //SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 lda #b ldy #0 sta (screen),y - //SEG34 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + //SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG35 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuxx=_inc_vbuxx + //SEG36 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG36 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] + //SEG37 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] b1_from_b2: - //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 + //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 jmp b1 } -//SEG39 rvaluevar +//SEG40 rvaluevar rvaluevar: { .label screen = 2 - //SEG40 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] + //SEG41 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG41 [21] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- pbuz1=pbuc1 + //SEG42 [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 + //SEG43 [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 + //SEG44 rvaluevar::@1 b1: - //SEG44 [22] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG45 [22] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 jmp breturn - //SEG45 rvaluevar::@return + //SEG46 rvaluevar::@return breturn: - //SEG46 [23] return + //SEG47 [23] return rts - //SEG47 rvaluevar::@2 + //SEG48 rvaluevar::@2 b2: - //SEG48 [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) -- vbuaa=_deref_pbuz1 + //SEG49 [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 + //SEG50 [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 + //SEG51 [26] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG51 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] + //SEG52 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] b1_from_b2: - //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 + //SEG53 [21] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG54 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } -//SEG54 rvalue +//SEG55 rvalue rvalue: { // A constant pointer .label SCREEN = $400 - //SEG55 [27] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) -- vbuaa=_deref_pbuc1 + //SEG56 [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 + //SEG57 [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 from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG58 [29] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvalue->rvalue::@1#0] -- vbuxx=vbuc1 + //SEG59 [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 - //SEG59 rvalue::@1 + //SEG60 rvalue::@1 b1: - //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 + //SEG61 [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 - //SEG61 rvalue::@return + //SEG62 rvalue::@return breturn: - //SEG62 [31] return + //SEG63 [31] return rts - //SEG63 rvalue::@2 + //SEG64 rvalue::@2 b2: - //SEG64 [32] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG65 [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 + //SEG66 [33] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuxx=_inc_vbuxx inx - //SEG66 [29] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] + //SEG67 [29] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] b1_from_b2: - //SEG67 [29] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy + //SEG68 [29] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } -//SEG68 lvalue +//SEG69 lvalue lvalue: { // A constant pointer .label SCREEN = $400 - //SEG69 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG70 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //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 + //SEG71 [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 - //SEG71 [36] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] + //SEG72 [36] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG72 [36] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuxx=vbuc1 + //SEG73 [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 - //SEG73 lvalue::@1 + //SEG74 lvalue::@1 b1: - //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 + //SEG75 [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 - //SEG75 lvalue::@return + //SEG76 lvalue::@return breturn: - //SEG76 [38] return + //SEG77 [38] return rts - //SEG77 lvalue::@2 + //SEG78 lvalue::@2 b2: - //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 + //SEG79 [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 - //SEG79 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuxx=_inc_vbuxx + //SEG80 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuxx=_inc_vbuxx inx - //SEG80 [36] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] + //SEG81 [36] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] b1_from_b2: - //SEG81 [36] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy + //SEG82 [36] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } @@ -1036,174 +1038,175 @@ reg byte a [ rvalue::b#2 ] FINAL ASSEMBLER Score: 1274 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test all types of pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] -//SEG7 [3] phi from @5 to @end [phi:@5->@end] -//SEG8 @end -//SEG9 main -// Test all types of pointers +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG5 @5 +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call lvalue + //SEG11 [5] call lvalue jsr lvalue - //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG12 main::@1 - //SEG13 [7] call rvalue + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 main::@1 + //SEG14 [7] call rvalue jsr rvalue - //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] + //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] jsr rvaluevar - //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] + //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] jsr lvaluevar - //SEG22 main::@return - //SEG23 [12] return + //SEG23 main::@return + //SEG24 [12] return rts } -//SEG24 lvaluevar +//SEG25 lvaluevar lvaluevar: { .const b = 4 .label screen = 2 - //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 + //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 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG27 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuxx=vbuc1 + //SEG28 [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 - //SEG28 lvaluevar::@1 + //SEG29 lvaluevar::@1 b1: - //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 + //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 cpx #$a bcc b2 - //SEG30 lvaluevar::@return - //SEG31 [16] return + //SEG31 lvaluevar::@return + //SEG32 [16] return rts - //SEG32 lvaluevar::@2 + //SEG33 lvaluevar::@2 b2: - //SEG33 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 + //SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 lda #b ldy #0 sta (screen),y - //SEG34 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + //SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG35 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuxx=_inc_vbuxx + //SEG36 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //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 jmp b1 } -//SEG39 rvaluevar +//SEG40 rvaluevar rvaluevar: { .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 + //SEG41 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] + //SEG42 [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 + //SEG43 [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 + //SEG44 rvaluevar::@1 b1: - //SEG44 [22] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG45 [22] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 - //SEG45 rvaluevar::@return - //SEG46 [23] return + //SEG46 rvaluevar::@return + //SEG47 [23] return rts - //SEG47 rvaluevar::@2 + //SEG48 rvaluevar::@2 b2: - //SEG48 [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) -- vbuaa=_deref_pbuz1 + //SEG49 [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 + //SEG50 [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 + //SEG51 [26] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG52 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] + //SEG53 [21] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG54 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } -//SEG54 rvalue +//SEG55 rvalue rvalue: { // A constant pointer .label SCREEN = $400 - //SEG55 [27] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) -- vbuaa=_deref_pbuc1 + //SEG56 [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 + //SEG57 [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 + //SEG58 [29] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] + //SEG59 [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 - //SEG59 rvalue::@1 + //SEG60 rvalue::@1 b1: - //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 + //SEG61 [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 - //SEG61 rvalue::@return - //SEG62 [31] return + //SEG62 rvalue::@return + //SEG63 [31] return rts - //SEG63 rvalue::@2 + //SEG64 rvalue::@2 b2: - //SEG64 [32] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG65 [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 + //SEG66 [33] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG67 [29] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] + //SEG68 [29] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } -//SEG68 lvalue +//SEG69 lvalue lvalue: { // A constant pointer .label SCREEN = $400 - //SEG69 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG70 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //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 + //SEG71 [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 - //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 + //SEG72 [36] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] + //SEG73 [36] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuxx=vbuc1 tax - //SEG73 lvalue::@1 + //SEG74 lvalue::@1 b1: - //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 + //SEG75 [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 - //SEG75 lvalue::@return - //SEG76 [38] return + //SEG76 lvalue::@return + //SEG77 [38] return rts - //SEG77 lvalue::@2 + //SEG78 lvalue::@2 b2: - //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 + //SEG79 [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 - //SEG79 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuxx=_inc_vbuxx + //SEG80 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG81 [36] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] + //SEG82 [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/ptrtestmin.asm b/src/test/ref/ptrtestmin.asm index 0c130f4aa..d518384ad 100644 --- a/src/test/ref/ptrtestmin.asm +++ b/src/test/ref/ptrtestmin.asm @@ -1,7 +1,7 @@ +// Test all types of pointers .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Test all types of pointers main: { // A constant pointer .label SCREEN = $400 diff --git a/src/test/ref/ptrtestmin.log b/src/test/ref/ptrtestmin.log index 058772e40..566a2141a 100644 --- a/src/test/ref/ptrtestmin.log +++ b/src/test/ref/ptrtestmin.log @@ -118,62 +118,63 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::b#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test all types of pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test all types of pointers +//SEG10 main main: { // A constant pointer .label SCREEN = $400 .label b = 3 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #2 sta i jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG14 [6] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b2 jmp breturn - //SEG14 main::@return + //SEG15 main::@return breturn: - //SEG15 [7] return + //SEG16 [7] return rts - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] (byte) main::b#0 ← *((const byte[1024]) main::SCREEN#0 + (byte) main::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG18 [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 + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG21 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } @@ -189,56 +190,57 @@ Uplifting [main] best 238 combination reg byte a [ main::b#0 ] reg byte x [ main Uplifting [] best 238 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test all types of pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test all types of pointers +//SEG10 main main: { // A constant pointer .label SCREEN = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG14 [6] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 jmp breturn - //SEG14 main::@return + //SEG15 main::@return breturn: - //SEG15 [7] return + //SEG16 [7] return rts - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] (byte) main::b#0 ← *((const byte[1024]) main::SCREEN#0 + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG18 [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 + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG21 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } @@ -287,42 +289,43 @@ reg byte a [ main::b#0 ] FINAL ASSEMBLER Score: 166 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test all types of pointers +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Test all types of pointers +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { // A constant pointer .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 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG14 [6] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 - //SEG14 main::@return - //SEG15 [7] return + //SEG15 main::@return + //SEG16 [7] return rts - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [8] (byte) main::b#0 ← *((const byte[1024]) main::SCREEN#0 + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG18 [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 + //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG20 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG21 [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/roll-sprite-msb.asm b/src/test/ref/roll-sprite-msb.asm index 3d7c26828..9fa4f4ce8 100644 --- a/src/test/ref/roll-sprite-msb.asm +++ b/src/test/ref/roll-sprite-msb.asm @@ -1,3 +1,4 @@ +// Tests rolling sprite MSB by variable amount .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/roll-sprite-msb.log b/src/test/ref/roll-sprite-msb.log index b4b337be2..74a9d86ce 100644 --- a/src/test/ref/roll-sprite-msb.log +++ b/src/test/ref/roll-sprite-msb.log @@ -646,66 +646,68 @@ Allocated zp ZP_BYTE:12 [ position_sprite::$5 ] Allocated zp ZP_BYTE:13 [ position_sprite::$6 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests rolling sprite MSB by variable amount +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] +//SEG6 [2] call main +//SEG7 [4] phi from @6 to main [phi:@6->main] main_from_b6: jsr main -//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG8 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label xpos = 3 .label s = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (word) main::xpos#2 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG12 [5] phi (word) main::xpos#2 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@1#0] -- vwuz1=vbuc1 lda #<$c8 sta xpos lda #>$c8 sta xpos+1 - //SEG12 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG13 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta s jmp b1 - //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG14 [5] phi (word) main::xpos#2 = (word) main::xpos#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG15 [5] phi (word) main::xpos#2 = (word) main::xpos#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@3->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] (byte) position_sprite::spriteno#0 ← (byte) main::s#2 -- vbuz1=vbuz2 + //SEG18 [6] (byte) position_sprite::spriteno#0 ← (byte) main::s#2 -- vbuz1=vbuz2 lda s sta position_sprite.spriteno - //SEG18 [7] (word) position_sprite::x#0 ← (word) main::xpos#2 -- vwuz1=vwuz2 + //SEG19 [7] (word) position_sprite::x#0 ← (word) main::xpos#2 -- vwuz1=vwuz2 lda xpos sta position_sprite.x lda xpos+1 sta position_sprite.x+1 - //SEG19 [8] call position_sprite + //SEG20 [8] call position_sprite jsr position_sprite jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwuz1=vwuz1_plus_vbuc1 + //SEG22 [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwuz1=vwuz1_plus_vbuc1 clc lda xpos adc #<$a @@ -713,19 +715,19 @@ main: { lda xpos+1 adc #>$a sta xpos+1 - //SEG22 [10] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1 + //SEG23 [10] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG23 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda s cmp #8 bne b1_from_b3 jmp breturn - //SEG24 main::@return + //SEG25 main::@return breturn: - //SEG25 [12] return + //SEG26 [12] return rts } -//SEG26 position_sprite +//SEG27 position_sprite position_sprite: { .const y = $32 .label _0 = 8 @@ -736,26 +738,26 @@ position_sprite: { .label _6 = $d .label spriteno = 5 .label x = 6 - //SEG27 [13] (byte~) position_sprite::$0 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG28 [13] (byte~) position_sprite::$0 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda spriteno asl sta _0 - //SEG28 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ← (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ← (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy _0 lda #y sta SPRITES_YPOS,y - //SEG29 [15] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG30 [15] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda spriteno asl sta _1 - //SEG30 [16] (byte~) position_sprite::$2 ← < (word) position_sprite::x#0 -- vbuz1=_lo_vwuz2 + //SEG31 [16] (byte~) position_sprite::$2 ← < (word) position_sprite::x#0 -- vbuz1=_lo_vwuz2 lda x sta _2 - //SEG31 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ← (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ← (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuz1=vbuz2 lda _2 ldy _1 sta SPRITES_XPOS,y - //SEG32 [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) 255) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1 + //SEG33 [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) 255) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1 lda x+1 bne b1 lda x @@ -764,9 +766,9 @@ position_sprite: { bcs b1 !: jmp b3 - //SEG33 position_sprite::@3 + //SEG34 position_sprite::@3 b3: - //SEG34 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuz1=vbuc1_rol_vbuz2 + //SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuz1=vbuc1_rol_vbuz2 lda #1 ldy spriteno cpy #0 @@ -777,22 +779,22 @@ position_sprite: { bne !- !e: sta _4 - //SEG35 [20] (byte/word/dword~) position_sprite::$5 ← (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) 255 -- vbuz1=vbuz2_bxor_vbuc1 + //SEG36 [20] (byte/word/dword~) position_sprite::$5 ← (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) 255 -- vbuz1=vbuz2_bxor_vbuc1 lda _4 eor #$ff sta _5 - //SEG36 [21] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + //SEG37 [21] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 lda SPRITES_XMSB and _5 sta SPRITES_XMSB jmp breturn - //SEG37 position_sprite::@return + //SEG38 position_sprite::@return breturn: - //SEG38 [22] return + //SEG39 [22] return rts - //SEG39 position_sprite::@1 + //SEG40 position_sprite::@1 b1: - //SEG40 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuz1=vbuc1_rol_vbuz2 + //SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuz1=vbuc1_rol_vbuz2 lda #1 ldy spriteno cpy #0 @@ -803,7 +805,7 @@ position_sprite: { bne !- !e: sta _6 - //SEG41 [24] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + //SEG42 [24] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora _6 sta SPRITES_XMSB @@ -869,59 +871,61 @@ Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::xpos#2 main::xpos#1 position_s Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ position_sprite::spriteno#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests rolling sprite MSB by variable amount +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] b6_from_bbegin: jmp b6 -//SEG4 @6 +//SEG5 @6 b6: -//SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] +//SEG6 [2] call main +//SEG7 [4] phi from @6 to main [phi:@6->main] main_from_b6: jsr main -//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG8 [3] phi from @6 to @end [phi:@6->@end] bend_from_b6: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label xpos = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (word) main::xpos#2 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG12 [5] phi (word) main::xpos#2 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@1#0] -- vwuz1=vbuc1 lda #<$c8 sta xpos lda #>$c8 sta xpos+1 - //SEG12 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::s#2 = (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::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG14 [5] phi (word) main::xpos#2 = (word) main::xpos#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG15 [5] phi (word) main::xpos#2 = (word) main::xpos#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@3->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] (byte) position_sprite::spriteno#0 ← (byte) main::s#2 -- vbuz1=vbuxx + //SEG18 [6] (byte) position_sprite::spriteno#0 ← (byte) main::s#2 -- vbuz1=vbuxx stx position_sprite.spriteno - //SEG18 [7] (word) position_sprite::x#0 ← (word) main::xpos#2 - //SEG19 [8] call position_sprite + //SEG19 [7] (word) position_sprite::x#0 ← (word) main::xpos#2 + //SEG20 [8] call position_sprite jsr position_sprite jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwuz1=vwuz1_plus_vbuc1 + //SEG22 [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwuz1=vwuz1_plus_vbuc1 clc lda xpos adc #<$a @@ -929,38 +933,38 @@ main: { lda xpos+1 adc #>$a sta xpos+1 - //SEG22 [10] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuxx=_inc_vbuxx + //SEG23 [10] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuxx=_inc_vbuxx inx - //SEG23 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b3 jmp breturn - //SEG24 main::@return + //SEG25 main::@return breturn: - //SEG25 [12] return + //SEG26 [12] return rts } -//SEG26 position_sprite +//SEG27 position_sprite position_sprite: { .const y = $32 .label spriteno = 4 .label x = 2 - //SEG27 [13] (byte~) position_sprite::$0 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG28 [13] (byte~) position_sprite::$0 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda spriteno asl - //SEG28 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ← (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuaa=vbuc2 + //SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ← (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuaa=vbuc2 tay lda #y sta SPRITES_YPOS,y - //SEG29 [15] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_rol_1 + //SEG30 [15] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_rol_1 lda spriteno asl tay - //SEG30 [16] (byte~) position_sprite::$2 ← < (word) position_sprite::x#0 -- vbuaa=_lo_vwuz1 + //SEG31 [16] (byte~) position_sprite::$2 ← < (word) position_sprite::x#0 -- vbuaa=_lo_vwuz1 lda x - //SEG31 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ← (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ← (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuyy=vbuaa sta SPRITES_XPOS,y - //SEG32 [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) 255) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1 + //SEG33 [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) 255) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1 lda x+1 bne b1 lda x @@ -969,9 +973,9 @@ position_sprite: { bcs b1 !: jmp b3 - //SEG33 position_sprite::@3 + //SEG34 position_sprite::@3 b3: - //SEG34 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1 + //SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1 lda #1 ldy spriteno cpy #0 @@ -981,19 +985,19 @@ position_sprite: { dey bne !- !e: - //SEG35 [20] (byte/word/dword~) position_sprite::$5 ← (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) 255 -- vbuaa=vbuaa_bxor_vbuc1 + //SEG36 [20] (byte/word/dword~) position_sprite::$5 ← (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) 255 -- vbuaa=vbuaa_bxor_vbuc1 eor #$ff - //SEG36 [21] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG37 [21] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB jmp breturn - //SEG37 position_sprite::@return + //SEG38 position_sprite::@return breturn: - //SEG38 [22] return + //SEG39 [22] return rts - //SEG39 position_sprite::@1 + //SEG40 position_sprite::@1 b1: - //SEG40 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1 + //SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1 lda #1 ldy spriteno cpy #0 @@ -1003,7 +1007,7 @@ position_sprite: { dey bne !- !e: - //SEG41 [24] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa + //SEG42 [24] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa ora SPRITES_XMSB sta SPRITES_XMSB jmp breturn @@ -1166,44 +1170,46 @@ reg byte a [ position_sprite::$6 ] FINAL ASSEMBLER Score: 564 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests rolling sprite MSB by variable amount +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 -//SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 -//SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] -//SEG7 [3] phi from @6 to @end [phi:@6->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG5 @6 +//SEG6 [2] call main +//SEG7 [4] phi from @6 to main [phi:@6->main] +//SEG8 [3] phi from @6 to @end [phi:@6->@end] +//SEG9 @end +//SEG10 main main: { .label xpos = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (word) main::xpos#2 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (word) main::xpos#2 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@1#0] -- vwuz1=vbuc1 lda #<$c8 sta xpos lda #>$c8 sta xpos+1 - //SEG12 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG13 [5] phi (byte) main::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG14 [5] phi (word) main::xpos#2 = (word) main::xpos#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG15 [5] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@3->main::@1#1] -- register_copy - //SEG16 main::@1 + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG15 [5] phi (word) main::xpos#2 = (word) main::xpos#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] (byte) position_sprite::spriteno#0 ← (byte) main::s#2 -- vbuz1=vbuxx + //SEG18 [6] (byte) position_sprite::spriteno#0 ← (byte) main::s#2 -- vbuz1=vbuxx stx position_sprite.spriteno - //SEG18 [7] (word) position_sprite::x#0 ← (word) main::xpos#2 - //SEG19 [8] call position_sprite + //SEG19 [7] (word) position_sprite::x#0 ← (word) main::xpos#2 + //SEG20 [8] call position_sprite jsr position_sprite - //SEG20 main::@3 - //SEG21 [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwuz1=vwuz1_plus_vbuc1 + //SEG21 main::@3 + //SEG22 [9] (word) main::xpos#1 ← (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwuz1=vwuz1_plus_vbuc1 clc lda xpos adc #<$a @@ -1211,36 +1217,36 @@ main: { lda xpos+1 adc #>$a sta xpos+1 - //SEG22 [10] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuxx=_inc_vbuxx + //SEG23 [10] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuxx=_inc_vbuxx inx - //SEG23 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG24 main::@return - //SEG25 [12] return + //SEG25 main::@return + //SEG26 [12] return rts } -//SEG26 position_sprite +//SEG27 position_sprite position_sprite: { .const y = $32 .label spriteno = 4 .label x = 2 - //SEG27 [13] (byte~) position_sprite::$0 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG28 [13] (byte~) position_sprite::$0 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda spriteno asl - //SEG28 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ← (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuaa=vbuc2 + //SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ← (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuaa=vbuc2 tay lda #y sta SPRITES_YPOS,y - //SEG29 [15] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_rol_1 + //SEG30 [15] (byte~) position_sprite::$1 ← (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_rol_1 lda spriteno asl tay - //SEG30 [16] (byte~) position_sprite::$2 ← < (word) position_sprite::x#0 -- vbuaa=_lo_vwuz1 + //SEG31 [16] (byte~) position_sprite::$2 ← < (word) position_sprite::x#0 -- vbuaa=_lo_vwuz1 lda x - //SEG31 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ← (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ← (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuyy=vbuaa sta SPRITES_XPOS,y - //SEG32 [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) 255) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1 + //SEG33 [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) 255) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1 lda x+1 bne b1 lda x @@ -1248,8 +1254,8 @@ position_sprite: { beq !+ bcs b1 !: - //SEG33 position_sprite::@3 - //SEG34 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1 + //SEG34 position_sprite::@3 + //SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1 lda #1 ldy spriteno cpy #0 @@ -1259,18 +1265,18 @@ position_sprite: { dey bne !- !e: - //SEG35 [20] (byte/word/dword~) position_sprite::$5 ← (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) 255 -- vbuaa=vbuaa_bxor_vbuc1 + //SEG36 [20] (byte/word/dword~) position_sprite::$5 ← (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) 255 -- vbuaa=vbuaa_bxor_vbuc1 eor #$ff - //SEG36 [21] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + //SEG37 [21] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa and SPRITES_XMSB sta SPRITES_XMSB - //SEG37 position_sprite::@return + //SEG38 position_sprite::@return breturn: - //SEG38 [22] return + //SEG39 [22] return rts - //SEG39 position_sprite::@1 + //SEG40 position_sprite::@1 b1: - //SEG40 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1 + //SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1 lda #1 ldy spriteno cpy #0 @@ -1280,7 +1286,7 @@ position_sprite: { dey bne !- !e: - //SEG41 [24] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa + //SEG42 [24] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa ora SPRITES_XMSB sta SPRITES_XMSB jmp breturn diff --git a/src/test/ref/roll-variable.asm b/src/test/ref/roll-variable.asm index 0a3ed83b9..2a01c3a18 100644 --- a/src/test/ref/roll-variable.asm +++ b/src/test/ref/roll-variable.asm @@ -1,7 +1,7 @@ +// Rolling constants by a variable amount .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Rolling constants by a variable amount main: { .label screen = $400 .label b = 2 diff --git a/src/test/ref/roll-variable.log b/src/test/ref/roll-variable.log index 08ff18667..97ca4a4cd 100644 --- a/src/test/ref/roll-variable.log +++ b/src/test/ref/roll-variable.log @@ -119,46 +119,47 @@ Allocated zp ZP_BYTE:2 [ main::b#2 main::b#1 ] Allocated zp ZP_BYTE:3 [ main::$0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Rolling constants by a variable amount +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Rolling constants by a variable amount +//SEG10 main main: { .label screen = $400 .label _0 = 3 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta b jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte/signed byte/word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 85 << (byte) main::b#2 -- vbuz1=vbuc1_rol_vbuz2 + //SEG16 [6] (byte/signed byte/word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 85 << (byte) main::b#2 -- vbuz1=vbuc1_rol_vbuz2 lda #$55 ldy b cpy #0 @@ -169,20 +170,20 @@ main: { bne !- !e: sta _0 - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword~) main::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword~) main::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldy b sta screen,y - //SEG17 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG18 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #8 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -203,45 +204,46 @@ Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::b#2 main::b#1 ] Uplifting [main] best 523 combination zp ZP_BYTE:2 [ main::b#2 main::b#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Rolling constants by a variable amount +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Rolling constants by a variable amount +//SEG10 main main: { .label screen = $400 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta b jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte/signed byte/word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 85 << (byte) main::b#2 -- vbuaa=vbuc1_rol_vbuz1 + //SEG16 [6] (byte/signed byte/word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 85 << (byte) main::b#2 -- vbuaa=vbuc1_rol_vbuz1 lda #$55 ldy b cpy #0 @@ -251,19 +253,19 @@ main: { dey bne !- !e: - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword~) main::$0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword~) main::$0 -- pbuc1_derefidx_vbuz1=vbuaa ldy b sta screen,y - //SEG17 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG18 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #8 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -313,32 +315,33 @@ reg byte a [ main::$0 ] FINAL ASSEMBLER Score: 421 -//SEG0 Basic Upstart +//SEG0 File Comments +// Rolling constants by a variable amount +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Rolling constants by a variable amount +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label screen = $400 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta b - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte/signed byte/word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 85 << (byte) main::b#2 -- vbuaa=vbuc1_rol_vbuz1 + //SEG16 [6] (byte/signed byte/word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 85 << (byte) main::b#2 -- vbuaa=vbuc1_rol_vbuz1 lda #$55 ldy b cpy #0 @@ -348,17 +351,17 @@ main: { dey bne !- !e: - //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword~) main::$0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG17 [7] *((const byte*) main::screen#0 + (byte) main::b#2) ← (byte/signed byte/word/signed word/dword/signed dword~) main::$0 -- pbuc1_derefidx_vbuz1=vbuaa ldy b sta screen,y - //SEG17 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG18 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #8 bne b1 - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts } diff --git a/src/test/ref/runtime-unused-procedure.asm b/src/test/ref/runtime-unused-procedure.asm index 50225daec..00553c934 100644 --- a/src/test/ref/runtime-unused-procedure.asm +++ b/src/test/ref/runtime-unused-procedure.asm @@ -1,3 +1,4 @@ +// Tests that a procedure that is never called, but requires static analysis is correctly eliminated .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/runtime-unused-procedure.log b/src/test/ref/runtime-unused-procedure.log index f95b05ebe..014ea1f3c 100644 --- a/src/test/ref/runtime-unused-procedure.log +++ b/src/test/ref/runtime-unused-procedure.log @@ -155,35 +155,37 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that a procedure that is never called, but requires static analysis is correctly eliminated +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 lda #'a' sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -198,35 +200,37 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that a procedure that is never called, but requires static analysis is correctly eliminated +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 lda #'a' sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -263,25 +267,27 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that a procedure that is never called, but requires static analysis is correctly eliminated +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 lda #'a' sta screen - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/scan-desire-problem.asm b/src/test/ref/scan-desire-problem.asm index fe80f7c55..787aa8bbb 100644 --- a/src/test/ref/scan-desire-problem.asm +++ b/src/test/ref/scan-desire-problem.asm @@ -1,3 +1,4 @@ +// Illustrates a problem with a missing fragment - pbuc1_derefidx_vwuz1=vbuz2 .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" @@ -164,7 +165,6 @@ draw_block: { sta colors+$29 rts } -// Simple binary multiplication implementation // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .const b = $28 @@ -232,7 +232,6 @@ init: { sta BGCOL4 rts } -// Simple routines for working with memory // Fill some memory with a value fill: { .label end = 6 diff --git a/src/test/ref/scan-desire-problem.log b/src/test/ref/scan-desire-problem.log index 057809467..d8e0449e2 100644 --- a/src/test/ref/scan-desire-problem.log +++ b/src/test/ref/scan-desire-problem.log @@ -1680,11 +1680,13 @@ Allocated zp ZP_BYTE:29 [ mul8u::$1 ] Allocated zp ZP_WORD:30 [ fill::end#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates a problem with a missing fragment - pbuc1_derefidx_vwuz1=vbuz2 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XMSB = $d010 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 @@ -1709,103 +1711,103 @@ INITIAL ASM .label tileset = $2800 .label colors = $d800 .label level_address = $3000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] +//SEG4 [1] phi from @begin to @21 [phi:@begin->@21] b21_from_bbegin: jmp b21 -//SEG4 @21 +//SEG5 @21 b21: -//SEG5 [2] call main -//SEG6 [4] phi from @21 to main [phi:@21->main] +//SEG6 [2] call main +//SEG7 [4] phi from @21 to main [phi:@21->main] main_from_b21: jsr main -//SEG7 [3] phi from @21 to @end [phi:@21->@end] +//SEG8 [3] phi from @21 to @end [phi:@21->@end] bend_from_b21: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label z = $c .label tile = $d .label y = 3 .label x = 2 - //SEG10 [5] call init - //SEG11 [48] phi from main to init [phi:main->init] + //SEG11 [5] call init + //SEG12 [48] phi from main to init [phi:main->init] init_from_main: jsr init - //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: - //SEG13 [6] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG14 [6] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG15 [6] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG15 [6] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG16 [6] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [7] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG19 [7] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta y jmp b2 - //SEG19 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG20 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] b2_from_b8: - //SEG20 [7] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@8->main::@2#0] -- register_copy + //SEG21 [7] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@8->main::@2#0] -- register_copy jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [8] (byte) main::z#0 ← (byte) main::x#4 + (byte) main::y#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG23 [8] (byte) main::z#0 ← (byte) main::x#4 + (byte) main::y#2 -- vbuz1=vbuz2_plus_vbuz3 lda x clc adc y sta z - //SEG23 [9] (byte) main::tile#0 ← *((const byte*) level_address#0 + (byte) main::z#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG24 [9] (byte) main::tile#0 ← *((const byte*) level_address#0 + (byte) main::z#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy z lda level_address,y sta tile - //SEG24 [10] (byte) draw_block::tileno#0 ← (byte) main::tile#0 -- vbuz1=vbuz2 + //SEG25 [10] (byte) draw_block::tileno#0 ← (byte) main::tile#0 -- vbuz1=vbuz2 lda tile sta draw_block.tileno - //SEG25 [11] (byte) draw_block::x#0 ← (byte) main::x#4 -- vbuz1=vbuz2 + //SEG26 [11] (byte) draw_block::x#0 ← (byte) main::x#4 -- vbuz1=vbuz2 lda x sta draw_block.x - //SEG26 [12] (byte) draw_block::y#0 ← (byte) main::y#2 -- vbuz1=vbuz2 + //SEG27 [12] (byte) draw_block::y#0 ← (byte) main::y#2 -- vbuz1=vbuz2 lda y sta draw_block.y - //SEG27 [13] call draw_block + //SEG28 [13] call draw_block jsr draw_block jmp b8 - //SEG28 main::@8 + //SEG29 main::@8 b8: - //SEG29 [14] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 + //SEG30 [14] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG30 [15] if((byte) main::y#1<(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG31 [15] if((byte) main::y#1<(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #9 bcc b2_from_b8 jmp b4 - //SEG31 main::@4 + //SEG32 main::@4 b4: - //SEG32 [16] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuz1=_inc_vbuz1 + //SEG33 [16] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG33 [17] if((byte) main::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG34 [17] if((byte) main::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$10 bcc b1_from_b4 - //SEG34 [18] phi from main::@3 main::@4 to main::@3 [phi:main::@3/main::@4->main::@3] + //SEG35 [18] phi from main::@3 main::@4 to main::@3 [phi:main::@3/main::@4->main::@3] b3_from_b3: b3_from_b4: jmp b3 - //SEG35 main::@3 + //SEG36 main::@3 b3: jmp b3_from_b3 } -//SEG36 draw_block +//SEG37 draw_block draw_block: { .label _1 = $12 .label tileno = $e @@ -1817,45 +1819,45 @@ draw_block: { .label z = $18 .label z_1 = $1a .label drawtile = $1c - //SEG37 [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 + //SEG38 [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_rol_2 lda tileno asl asl sta tileno_1 - //SEG38 [20] (byte~) draw_block::$1 ← (byte) draw_block::x#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG39 [20] (byte~) draw_block::$1 ← (byte) draw_block::x#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda x asl sta _1 - //SEG39 [21] (word) draw_block::x1#0 ← ((word)) (byte~) draw_block::$1 -- vwuz1=_word_vbuz2 + //SEG40 [21] (word) draw_block::x1#0 ← ((word)) (byte~) draw_block::$1 -- vwuz1=_word_vbuz2 lda _1 sta x1 lda #0 sta x1+1 - //SEG40 [22] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG41 [22] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda y asl sta y_1 - //SEG41 [23] (byte) mul8u::a#1 ← (byte) draw_block::y#1 -- vbuz1=vbuz2 + //SEG42 [23] (byte) mul8u::a#1 ← (byte) draw_block::y#1 -- vbuz1=vbuz2 lda y_1 sta mul8u.a - //SEG42 [24] call mul8u - //SEG43 [38] phi from draw_block to mul8u [phi:draw_block->mul8u] + //SEG43 [24] call mul8u + //SEG44 [38] phi from draw_block to mul8u [phi:draw_block->mul8u] mul8u_from_draw_block: jsr mul8u - //SEG44 [25] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG45 [25] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b1 - //SEG45 draw_block::@1 + //SEG46 draw_block::@1 b1: - //SEG46 [26] (word) draw_block::z#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG47 [26] (word) draw_block::z#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta z lda mul8u.return+1 sta z+1 - //SEG47 [27] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG48 [27] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 -- vwuz1=vwuz2_plus_vwuz3 lda z clc adc x1 @@ -1863,11 +1865,11 @@ draw_block: { lda z+1 adc x1+1 sta z_1+1 - //SEG48 [28] (byte) draw_block::drawtile#0 ← *((const byte*) tileset#0 + (byte) draw_block::tileno#1) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG49 [28] (byte) draw_block::drawtile#0 ← *((const byte*) tileset#0 + (byte) draw_block::tileno#1) -- vbuz1=pbuc1_derefidx_vbuz2 ldy tileno_1 lda tileset,y sta drawtile - //SEG49 [29] *((const byte*) screen#0 + (word) draw_block::z#1) ← (byte) draw_block::drawtile#0 -- pbuc1_derefidx_vwuz1=vbuz2 + //SEG50 [29] *((const byte*) screen#0 + (word) draw_block::z#1) ← (byte) draw_block::drawtile#0 -- pbuc1_derefidx_vwuz1=vbuz2 lda drawtile sta !v++1 lda #mul8u::@1] + //SEG61 [39] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG61 [39] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 + //SEG62 [39] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 lda #b sta mb+1 - //SEG62 [39] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG63 [39] 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 - //SEG63 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG64 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG64 mul8u::@1 + //SEG65 mul8u::@1 b1: - //SEG65 [40] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG66 [40] if((byte) mul8u::a#2!=(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 - //SEG66 mul8u::@return + //SEG67 mul8u::@return breturn: - //SEG67 [41] return + //SEG68 [41] return rts - //SEG68 mul8u::@2 + //SEG69 mul8u::@2 b2: - //SEG69 [42] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG70 [42] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG70 [43] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG71 [43] 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 - //SEG71 mul8u::@7 + //SEG72 mul8u::@7 b7: - //SEG72 [44] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG73 [44] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -2020,107 +2021,106 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG73 [45] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG74 [45] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG74 [45] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG75 [45] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG75 mul8u::@4 + //SEG76 mul8u::@4 b4: - //SEG76 [46] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG77 [46] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG77 [47] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG78 [47] (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 - //SEG78 [39] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG79 [39] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG79 [39] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG80 [39] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG81 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG80 [39] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG81 [39] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG82 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG82 init +//SEG83 init init: { .const toD0181_return = (>(screen&$3fff)<<2)|(>charset)>>2&$f - //SEG83 [49] call init_sprites + //SEG84 [49] call init_sprites jsr init_sprites - //SEG84 [50] phi from init to init::@2 [phi:init->init::@2] + //SEG85 [50] phi from init to init::@2 [phi:init->init::@2] b2_from_init: jmp b2 - //SEG85 init::@2 + //SEG86 init::@2 b2: - //SEG86 [51] call fill - //SEG87 [63] phi from init::@2 to fill [phi:init::@2->fill] + //SEG87 [51] call fill + //SEG88 [63] phi from init::@2 to fill [phi:init::@2->fill] fill_from_b2: - //SEG88 [63] phi (byte) fill::val#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->fill#0] -- vbuz1=vbuc1 + //SEG89 [63] phi (byte) fill::val#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->fill#0] -- vbuz1=vbuc1 lda #0 sta fill.val - //SEG89 [63] phi (byte*) fill::addr#0 = (const byte*) screen#0 [phi:init::@2->fill#1] -- pbuz1=pbuc1 + //SEG90 [63] phi (byte*) fill::addr#0 = (const byte*) screen#0 [phi:init::@2->fill#1] -- pbuz1=pbuc1 lda #screen sta fill.addr+1 jsr fill - //SEG90 [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG91 [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3] b3_from_b2: jmp b3 - //SEG91 init::@3 + //SEG92 init::@3 b3: - //SEG92 [53] call fill - //SEG93 [63] phi from init::@3 to fill [phi:init::@3->fill] + //SEG93 [53] call fill + //SEG94 [63] phi from init::@3 to fill [phi:init::@3->fill] fill_from_b3: - //SEG94 [63] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@3->fill#0] -- vbuz1=vbuc1 + //SEG95 [63] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@3->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG95 [63] phi (byte*) fill::addr#0 = (const byte*) colors#0 [phi:init::@3->fill#1] -- pbuz1=pbuc1 + //SEG96 [63] phi (byte*) fill::addr#0 = (const byte*) colors#0 [phi:init::@3->fill#1] -- pbuz1=pbuc1 lda #colors sta fill.addr+1 jsr fill - //SEG96 [54] phi from init::@3 to init::toD0181 [phi:init::@3->init::toD0181] + //SEG97 [54] phi from init::@3 to init::toD0181 [phi:init::@3->init::toD0181] toD0181_from_b3: jmp toD0181 - //SEG97 init::toD0181 + //SEG98 init::toD0181 toD0181: jmp b1 - //SEG98 init::@1 + //SEG99 init::@1 b1: - //SEG99 [55] *((const byte*) D018#0) ← (const byte) init::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG100 [55] *((const byte*) D018#0) ← (const byte) init::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG100 asm { lda#$5b sta$d011 } + //SEG101 asm { lda#$5b sta$d011 } lda #$5b sta $d011 - //SEG101 [57] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG102 [57] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG102 [58] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG103 [58] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG103 [59] *((const byte*) BGCOL2#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG104 [59] *((const byte*) BGCOL2#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL2 - //SEG104 [60] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG105 [60] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL3 - //SEG105 [61] *((const byte*) BGCOL4#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG106 [61] *((const byte*) BGCOL4#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL4 jmp breturn - //SEG106 init::@return + //SEG107 init::@return breturn: - //SEG107 [62] return + //SEG108 [62] return rts } -//SEG108 fill -// Simple routines for working with memory +//SEG109 fill // Fill some memory with a value fill: { .label end = $1e .label addr = $a .label val = 9 - //SEG109 [64] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG110 [64] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -2128,23 +2128,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG110 [65] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG111 [65] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG111 [65] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG112 [65] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG112 fill::@1 + //SEG113 fill::@1 b1: - //SEG113 [66] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG114 [66] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG114 [67] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG115 [67] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG115 [68] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG116 [68] 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 @@ -2152,35 +2152,35 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG116 fill::@return + //SEG117 fill::@return breturn: - //SEG117 [69] return + //SEG118 [69] return rts } -//SEG118 init_sprites +//SEG119 init_sprites init_sprites: { - //SEG119 [70] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG120 [70] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SPRITES_ENABLE - //SEG120 [71] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG121 [71] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG121 [72] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG122 [72] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y - //SEG122 [73] *((const byte*) SPRITES_XMSB#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG123 [73] *((const byte*) SPRITES_XMSB#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_XMSB - //SEG123 [74] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG124 [74] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta SPRITES_COLS - //SEG124 [75] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG125 [75] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC jmp breturn - //SEG125 init_sprites::@return + //SEG126 init_sprites::@return breturn: - //SEG126 [76] return + //SEG127 [76] return rts } @@ -2323,11 +2323,13 @@ Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:8 [ draw_block::tileno#1 ] Allocated (was zp ZP_WORD:19) zp ZP_WORD:9 [ draw_block::x1#0 draw_block::z#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates a problem with a missing fragment - pbuc1_derefidx_vwuz1=vbuz2 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XMSB = $d010 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 @@ -2352,126 +2354,126 @@ ASSEMBLER BEFORE OPTIMIZATION .label tileset = $2800 .label colors = $d800 .label level_address = $3000 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] +//SEG4 [1] phi from @begin to @21 [phi:@begin->@21] b21_from_bbegin: jmp b21 -//SEG4 @21 +//SEG5 @21 b21: -//SEG5 [2] call main -//SEG6 [4] phi from @21 to main [phi:@21->main] +//SEG6 [2] call main +//SEG7 [4] phi from @21 to main [phi:@21->main] main_from_b21: jsr main -//SEG7 [3] phi from @21 to @end [phi:@21->@end] +//SEG8 [3] phi from @21 to @end [phi:@21->@end] bend_from_b21: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label y = 3 .label x = 2 - //SEG10 [5] call init - //SEG11 [48] phi from main to init [phi:main->init] + //SEG11 [5] call init + //SEG12 [48] phi from main to init [phi:main->init] init_from_main: jsr init - //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: - //SEG13 [6] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG14 [6] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG15 [6] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG15 [6] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG16 [6] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [7] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG19 [7] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta y jmp b2 - //SEG19 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG20 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] b2_from_b8: - //SEG20 [7] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@8->main::@2#0] -- register_copy + //SEG21 [7] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@8->main::@2#0] -- register_copy jmp b2 - //SEG21 main::@2 + //SEG22 main::@2 b2: - //SEG22 [8] (byte) main::z#0 ← (byte) main::x#4 + (byte) main::y#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG23 [8] (byte) main::z#0 ← (byte) main::x#4 + (byte) main::y#2 -- vbuaa=vbuz1_plus_vbuz2 lda x clc adc y - //SEG23 [9] (byte) main::tile#0 ← *((const byte*) level_address#0 + (byte) main::z#0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG24 [9] (byte) main::tile#0 ← *((const byte*) level_address#0 + (byte) main::z#0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda level_address,y - //SEG24 [10] (byte) draw_block::tileno#0 ← (byte) main::tile#0 - //SEG25 [11] (byte) draw_block::x#0 ← (byte) main::x#4 -- vbuyy=vbuz1 + //SEG25 [10] (byte) draw_block::tileno#0 ← (byte) main::tile#0 + //SEG26 [11] (byte) draw_block::x#0 ← (byte) main::x#4 -- vbuyy=vbuz1 ldy x - //SEG26 [12] (byte) draw_block::y#0 ← (byte) main::y#2 -- vbuxx=vbuz1 + //SEG27 [12] (byte) draw_block::y#0 ← (byte) main::y#2 -- vbuxx=vbuz1 ldx y - //SEG27 [13] call draw_block + //SEG28 [13] call draw_block jsr draw_block jmp b8 - //SEG28 main::@8 + //SEG29 main::@8 b8: - //SEG29 [14] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 + //SEG30 [14] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG30 [15] if((byte) main::y#1<(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG31 [15] if((byte) main::y#1<(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #9 bcc b2_from_b8 jmp b4 - //SEG31 main::@4 + //SEG32 main::@4 b4: - //SEG32 [16] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuz1=_inc_vbuz1 + //SEG33 [16] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG33 [17] if((byte) main::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG34 [17] if((byte) main::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$10 bcc b1_from_b4 - //SEG34 [18] phi from main::@3 main::@4 to main::@3 [phi:main::@3/main::@4->main::@3] + //SEG35 [18] phi from main::@3 main::@4 to main::@3 [phi:main::@3/main::@4->main::@3] b3_from_b3: b3_from_b4: jmp b3 - //SEG35 main::@3 + //SEG36 main::@3 b3: jmp b3_from_b3 } -//SEG36 draw_block +//SEG37 draw_block draw_block: { .label tileno = 8 .label x1 = 9 .label z = 4 .label z_1 = 9 - //SEG37 [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuaa_rol_2 + //SEG38 [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuaa_rol_2 asl asl sta tileno - //SEG38 [20] (byte~) draw_block::$1 ← (byte) draw_block::x#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_rol_1 + //SEG39 [20] (byte~) draw_block::$1 ← (byte) draw_block::x#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_rol_1 tya asl - //SEG39 [21] (word) draw_block::x1#0 ← ((word)) (byte~) draw_block::$1 -- vwuz1=_word_vbuaa + //SEG40 [21] (word) draw_block::x1#0 ← ((word)) (byte~) draw_block::$1 -- vwuz1=_word_vbuaa sta x1 lda #0 sta x1+1 - //SEG40 [22] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG41 [22] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG41 [23] (byte) mul8u::a#1 ← (byte) draw_block::y#1 -- vbuxx=vbuaa + //SEG42 [23] (byte) mul8u::a#1 ← (byte) draw_block::y#1 -- vbuxx=vbuaa tax - //SEG42 [24] call mul8u - //SEG43 [38] phi from draw_block to mul8u [phi:draw_block->mul8u] + //SEG43 [24] call mul8u + //SEG44 [38] phi from draw_block to mul8u [phi:draw_block->mul8u] mul8u_from_draw_block: jsr mul8u - //SEG44 [25] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG45 [25] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b1 - //SEG45 draw_block::@1 + //SEG46 draw_block::@1 b1: - //SEG46 [26] (word) draw_block::z#0 ← (word) mul8u::return#2 - //SEG47 [27] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 -- vwuz1=vwuz2_plus_vwuz1 + //SEG47 [26] (word) draw_block::z#0 ← (word) mul8u::return#2 + //SEG48 [27] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 -- vwuz1=vwuz2_plus_vwuz1 lda z_1 clc adc z @@ -2479,10 +2481,10 @@ draw_block: { lda z_1+1 adc z+1 sta z_1+1 - //SEG48 [28] (byte) draw_block::drawtile#0 ← *((const byte*) tileset#0 + (byte) draw_block::tileno#1) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG49 [28] (byte) draw_block::drawtile#0 ← *((const byte*) tileset#0 + (byte) draw_block::tileno#1) -- vbuaa=pbuc1_derefidx_vbuz1 ldy tileno lda tileset,y - //SEG49 [29] *((const byte*) screen#0 + (word) draw_block::z#1) ← (byte) draw_block::drawtile#0 -- pbuc1_derefidx_vwuz1=vbuaa + //SEG50 [29] *((const byte*) screen#0 + (word) draw_block::z#1) ← (byte) draw_block::drawtile#0 -- pbuc1_derefidx_vwuz1=vbuaa sta !v++1 lda #mul8u::@1] + //SEG61 [39] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG61 [39] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 + //SEG62 [39] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 lda #b sta mb+1 - //SEG62 [39] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG63 [39] 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 - //SEG63 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG64 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG64 mul8u::@1 + //SEG65 mul8u::@1 b1: - //SEG65 [40] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG66 [40] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG66 mul8u::@return + //SEG67 mul8u::@return breturn: - //SEG67 [41] return + //SEG68 [41] return rts - //SEG68 mul8u::@2 + //SEG69 mul8u::@2 b2: - //SEG69 [42] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG70 [42] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG70 [43] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG71 [43] 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 - //SEG71 mul8u::@7 + //SEG72 mul8u::@7 b7: - //SEG72 [44] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG73 [44] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -2629,106 +2630,105 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG73 [45] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG74 [45] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG74 [45] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG75 [45] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG75 mul8u::@4 + //SEG76 mul8u::@4 b4: - //SEG76 [46] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG77 [46] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG77 [47] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG78 [47] (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 - //SEG78 [39] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG79 [39] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG79 [39] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG80 [39] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG81 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG80 [39] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG81 [39] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG82 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG82 init +//SEG83 init init: { .const toD0181_return = (>(screen&$3fff)<<2)|(>charset)>>2&$f - //SEG83 [49] call init_sprites + //SEG84 [49] call init_sprites jsr init_sprites - //SEG84 [50] phi from init to init::@2 [phi:init->init::@2] + //SEG85 [50] phi from init to init::@2 [phi:init->init::@2] b2_from_init: jmp b2 - //SEG85 init::@2 + //SEG86 init::@2 b2: - //SEG86 [51] call fill - //SEG87 [63] phi from init::@2 to fill [phi:init::@2->fill] + //SEG87 [51] call fill + //SEG88 [63] phi from init::@2 to fill [phi:init::@2->fill] fill_from_b2: - //SEG88 [63] phi (byte) fill::val#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->fill#0] -- vbuxx=vbuc1 + //SEG89 [63] phi (byte) fill::val#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->fill#0] -- vbuxx=vbuc1 ldx #0 - //SEG89 [63] phi (byte*) fill::addr#0 = (const byte*) screen#0 [phi:init::@2->fill#1] -- pbuz1=pbuc1 + //SEG90 [63] phi (byte*) fill::addr#0 = (const byte*) screen#0 [phi:init::@2->fill#1] -- pbuz1=pbuc1 lda #screen sta fill.addr+1 jsr fill - //SEG90 [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG91 [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3] b3_from_b2: jmp b3 - //SEG91 init::@3 + //SEG92 init::@3 b3: - //SEG92 [53] call fill - //SEG93 [63] phi from init::@3 to fill [phi:init::@3->fill] + //SEG93 [53] call fill + //SEG94 [63] phi from init::@3 to fill [phi:init::@3->fill] fill_from_b3: - //SEG94 [63] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@3->fill#0] -- vbuxx=vbuc1 + //SEG95 [63] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG95 [63] phi (byte*) fill::addr#0 = (const byte*) colors#0 [phi:init::@3->fill#1] -- pbuz1=pbuc1 + //SEG96 [63] phi (byte*) fill::addr#0 = (const byte*) colors#0 [phi:init::@3->fill#1] -- pbuz1=pbuc1 lda #colors sta fill.addr+1 jsr fill - //SEG96 [54] phi from init::@3 to init::toD0181 [phi:init::@3->init::toD0181] + //SEG97 [54] phi from init::@3 to init::toD0181 [phi:init::@3->init::toD0181] toD0181_from_b3: jmp toD0181 - //SEG97 init::toD0181 + //SEG98 init::toD0181 toD0181: jmp b1 - //SEG98 init::@1 + //SEG99 init::@1 b1: - //SEG99 [55] *((const byte*) D018#0) ← (const byte) init::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG100 [55] *((const byte*) D018#0) ← (const byte) init::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG100 asm { lda#$5b sta$d011 } + //SEG101 asm { lda#$5b sta$d011 } lda #$5b sta $d011 - //SEG101 [57] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG102 [57] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG102 [58] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG103 [58] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL1 - //SEG103 [59] *((const byte*) BGCOL2#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG104 [59] *((const byte*) BGCOL2#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL2 - //SEG104 [60] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG105 [60] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL3 - //SEG105 [61] *((const byte*) BGCOL4#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG106 [61] *((const byte*) BGCOL4#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL4 jmp breturn - //SEG106 init::@return + //SEG107 init::@return breturn: - //SEG107 [62] return + //SEG108 [62] return rts } -//SEG108 fill -// Simple routines for working with memory +//SEG109 fill // Fill some memory with a value fill: { .label end = 6 .label addr = 4 - //SEG109 [64] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG110 [64] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -2736,23 +2736,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG110 [65] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG111 [65] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG111 [65] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG112 [65] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG112 fill::@1 + //SEG113 fill::@1 b1: - //SEG113 [66] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG114 [66] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG114 [67] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG115 [67] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG115 [68] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG116 [68] 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 @@ -2760,35 +2760,35 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG116 fill::@return + //SEG117 fill::@return breturn: - //SEG117 [69] return + //SEG118 [69] return rts } -//SEG118 init_sprites +//SEG119 init_sprites init_sprites: { - //SEG119 [70] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG120 [70] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SPRITES_ENABLE - //SEG120 [71] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG121 [71] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG121 [72] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG122 [72] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y - //SEG122 [73] *((const byte*) SPRITES_XMSB#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG123 [73] *((const byte*) SPRITES_XMSB#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_XMSB - //SEG123 [74] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG124 [74] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta SPRITES_COLS - //SEG124 [75] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG125 [75] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC jmp breturn - //SEG125 init_sprites::@return + //SEG126 init_sprites::@return breturn: - //SEG126 [76] return + //SEG127 [76] return rts } @@ -3176,11 +3176,13 @@ reg byte a [ mul8u::$1 ] FINAL ASSEMBLER Score: 75438 -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates a problem with a missing fragment - pbuc1_derefidx_vwuz1=vbuz2 +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XMSB = $d010 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 @@ -3205,98 +3207,98 @@ Score: 75438 .label tileset = $2800 .label colors = $d800 .label level_address = $3000 -//SEG2 @begin -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] -//SEG4 @21 -//SEG5 [2] call main -//SEG6 [4] phi from @21 to main [phi:@21->main] -//SEG7 [3] phi from @21 to @end [phi:@21->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @21 [phi:@begin->@21] +//SEG5 @21 +//SEG6 [2] call main +//SEG7 [4] phi from @21 to main [phi:@21->main] +//SEG8 [3] phi from @21 to @end [phi:@21->@end] +//SEG9 @end +//SEG10 main main: { .label y = 3 .label x = 2 - //SEG10 [5] call init - //SEG11 [48] phi from main to init [phi:main->init] + //SEG11 [5] call init + //SEG12 [48] phi from main to init [phi:main->init] jsr init - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 [6] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG14 [6] phi from main::@4 to main::@1 [phi:main::@4->main::@1] - //SEG15 [6] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy - //SEG16 main::@1 + //SEG15 [6] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG16 [6] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG18 [7] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG18 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 [7] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG19 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] - //SEG20 [7] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@8->main::@2#0] -- register_copy - //SEG21 main::@2 + //SEG20 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] + //SEG21 [7] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@8->main::@2#0] -- register_copy + //SEG22 main::@2 b2: - //SEG22 [8] (byte) main::z#0 ← (byte) main::x#4 + (byte) main::y#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG23 [8] (byte) main::z#0 ← (byte) main::x#4 + (byte) main::y#2 -- vbuaa=vbuz1_plus_vbuz2 lda x clc adc y - //SEG23 [9] (byte) main::tile#0 ← *((const byte*) level_address#0 + (byte) main::z#0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG24 [9] (byte) main::tile#0 ← *((const byte*) level_address#0 + (byte) main::z#0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda level_address,y - //SEG24 [10] (byte) draw_block::tileno#0 ← (byte) main::tile#0 - //SEG25 [11] (byte) draw_block::x#0 ← (byte) main::x#4 -- vbuyy=vbuz1 + //SEG25 [10] (byte) draw_block::tileno#0 ← (byte) main::tile#0 + //SEG26 [11] (byte) draw_block::x#0 ← (byte) main::x#4 -- vbuyy=vbuz1 ldy x - //SEG26 [12] (byte) draw_block::y#0 ← (byte) main::y#2 -- vbuxx=vbuz1 + //SEG27 [12] (byte) draw_block::y#0 ← (byte) main::y#2 -- vbuxx=vbuz1 ldx y - //SEG27 [13] call draw_block + //SEG28 [13] call draw_block jsr draw_block - //SEG28 main::@8 - //SEG29 [14] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 + //SEG29 main::@8 + //SEG30 [14] (byte) main::y#1 ← ++ (byte) main::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG30 [15] if((byte) main::y#1<(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG31 [15] if((byte) main::y#1<(byte/signed byte/word/signed word/dword/signed dword) 9) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 lda y cmp #9 bcc b2 - //SEG31 main::@4 - //SEG32 [16] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuz1=_inc_vbuz1 + //SEG32 main::@4 + //SEG33 [16] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG33 [17] if((byte) main::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG34 [17] if((byte) main::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$10 bcc b1 - //SEG34 [18] phi from main::@3 main::@4 to main::@3 [phi:main::@3/main::@4->main::@3] - //SEG35 main::@3 + //SEG35 [18] phi from main::@3 main::@4 to main::@3 [phi:main::@3/main::@4->main::@3] + //SEG36 main::@3 b3: jmp b3 } -//SEG36 draw_block +//SEG37 draw_block draw_block: { .label tileno = 8 .label x1 = 9 .label z = 4 .label z_1 = 9 - //SEG37 [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuaa_rol_2 + //SEG38 [19] (byte) draw_block::tileno#1 ← (byte) draw_block::tileno#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuaa_rol_2 asl asl sta tileno - //SEG38 [20] (byte~) draw_block::$1 ← (byte) draw_block::x#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_rol_1 + //SEG39 [20] (byte~) draw_block::$1 ← (byte) draw_block::x#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuyy_rol_1 tya asl - //SEG39 [21] (word) draw_block::x1#0 ← ((word)) (byte~) draw_block::$1 -- vwuz1=_word_vbuaa + //SEG40 [21] (word) draw_block::x1#0 ← ((word)) (byte~) draw_block::$1 -- vwuz1=_word_vbuaa sta x1 lda #0 sta x1+1 - //SEG40 [22] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG41 [22] (byte) draw_block::y#1 ← (byte) draw_block::y#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG41 [23] (byte) mul8u::a#1 ← (byte) draw_block::y#1 -- vbuxx=vbuaa + //SEG42 [23] (byte) mul8u::a#1 ← (byte) draw_block::y#1 -- vbuxx=vbuaa tax - //SEG42 [24] call mul8u - //SEG43 [38] phi from draw_block to mul8u [phi:draw_block->mul8u] + //SEG43 [24] call mul8u + //SEG44 [38] phi from draw_block to mul8u [phi:draw_block->mul8u] jsr mul8u - //SEG44 [25] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG45 draw_block::@1 - //SEG46 [26] (word) draw_block::z#0 ← (word) mul8u::return#2 - //SEG47 [27] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 -- vwuz1=vwuz2_plus_vwuz1 + //SEG45 [25] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG46 draw_block::@1 + //SEG47 [26] (word) draw_block::z#0 ← (word) mul8u::return#2 + //SEG48 [27] (word) draw_block::z#1 ← (word) draw_block::z#0 + (word) draw_block::x1#0 -- vwuz1=vwuz2_plus_vwuz1 lda z_1 clc adc z @@ -3304,10 +3306,10 @@ draw_block: { lda z_1+1 adc z+1 sta z_1+1 - //SEG48 [28] (byte) draw_block::drawtile#0 ← *((const byte*) tileset#0 + (byte) draw_block::tileno#1) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG49 [28] (byte) draw_block::drawtile#0 ← *((const byte*) tileset#0 + (byte) draw_block::tileno#1) -- vbuaa=pbuc1_derefidx_vbuz1 ldy tileno lda tileset,y - //SEG49 [29] *((const byte*) screen#0 + (word) draw_block::z#1) ← (byte) draw_block::drawtile#0 -- pbuc1_derefidx_vwuz1=vbuaa + //SEG50 [29] *((const byte*) screen#0 + (word) draw_block::z#1) ← (byte) draw_block::drawtile#0 -- pbuc1_derefidx_vwuz1=vbuaa sta !v++1 lda #mul8u::@1] - //SEG61 [39] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 + //SEG61 [39] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG62 [39] phi (word) mul8u::mb#2 = ((word))(const byte) mul8u::b#0 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuc1 lda #b sta mb+1 - //SEG62 [39] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG63 [39] 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 sta res+1 - //SEG63 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG64 mul8u::@1 + //SEG64 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG65 mul8u::@1 b1: - //SEG65 [40] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG66 [40] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG66 mul8u::@return - //SEG67 [41] return + //SEG67 mul8u::@return + //SEG68 [41] return rts - //SEG68 mul8u::@2 + //SEG69 mul8u::@2 b2: - //SEG69 [42] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG70 [42] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG70 [43] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG71 [43] 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 - //SEG71 mul8u::@7 - //SEG72 [44] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG72 mul8u::@7 + //SEG73 [44] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -3445,86 +3446,85 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG73 [45] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] - //SEG74 [45] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy - //SEG75 mul8u::@4 + //SEG74 [45] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG75 [45] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG76 mul8u::@4 b4: - //SEG76 [46] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG77 [46] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG77 [47] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG78 [47] (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 - //SEG78 [39] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] - //SEG79 [39] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG80 [39] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG81 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG79 [39] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG80 [39] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG81 [39] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG82 [39] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG82 init +//SEG83 init init: { .const toD0181_return = (>(screen&$3fff)<<2)|(>charset)>>2&$f - //SEG83 [49] call init_sprites + //SEG84 [49] call init_sprites jsr init_sprites - //SEG84 [50] phi from init to init::@2 [phi:init->init::@2] - //SEG85 init::@2 - //SEG86 [51] call fill - //SEG87 [63] phi from init::@2 to fill [phi:init::@2->fill] - //SEG88 [63] phi (byte) fill::val#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->fill#0] -- vbuxx=vbuc1 + //SEG85 [50] phi from init to init::@2 [phi:init->init::@2] + //SEG86 init::@2 + //SEG87 [51] call fill + //SEG88 [63] phi from init::@2 to fill [phi:init::@2->fill] + //SEG89 [63] phi (byte) fill::val#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->fill#0] -- vbuxx=vbuc1 ldx #0 - //SEG89 [63] phi (byte*) fill::addr#0 = (const byte*) screen#0 [phi:init::@2->fill#1] -- pbuz1=pbuc1 + //SEG90 [63] phi (byte*) fill::addr#0 = (const byte*) screen#0 [phi:init::@2->fill#1] -- pbuz1=pbuc1 lda #screen sta fill.addr+1 jsr fill - //SEG90 [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3] - //SEG91 init::@3 - //SEG92 [53] call fill - //SEG93 [63] phi from init::@3 to fill [phi:init::@3->fill] - //SEG94 [63] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@3->fill#0] -- vbuxx=vbuc1 + //SEG91 [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG92 init::@3 + //SEG93 [53] call fill + //SEG94 [63] phi from init::@3 to fill [phi:init::@3->fill] + //SEG95 [63] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG95 [63] phi (byte*) fill::addr#0 = (const byte*) colors#0 [phi:init::@3->fill#1] -- pbuz1=pbuc1 + //SEG96 [63] phi (byte*) fill::addr#0 = (const byte*) colors#0 [phi:init::@3->fill#1] -- pbuz1=pbuc1 lda #colors sta fill.addr+1 jsr fill - //SEG96 [54] phi from init::@3 to init::toD0181 [phi:init::@3->init::toD0181] - //SEG97 init::toD0181 - //SEG98 init::@1 - //SEG99 [55] *((const byte*) D018#0) ← (const byte) init::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG97 [54] phi from init::@3 to init::toD0181 [phi:init::@3->init::toD0181] + //SEG98 init::toD0181 + //SEG99 init::@1 + //SEG100 [55] *((const byte*) D018#0) ← (const byte) init::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG100 asm { lda#$5b sta$d011 } + //SEG101 asm { lda#$5b sta$d011 } lda #$5b sta $d011 - //SEG101 [57] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG102 [57] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BORDERCOL - //SEG102 [58] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG103 [58] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 sta BGCOL1 - //SEG103 [59] *((const byte*) BGCOL2#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 + //SEG104 [59] *((const byte*) BGCOL2#0) ← (const byte) RED#0 -- _deref_pbuc1=vbuc2 lda #RED sta BGCOL2 - //SEG104 [60] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG105 [60] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL3 - //SEG105 [61] *((const byte*) BGCOL4#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG106 [61] *((const byte*) BGCOL4#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL4 - //SEG106 init::@return - //SEG107 [62] return + //SEG107 init::@return + //SEG108 [62] return rts } -//SEG108 fill -// Simple routines for working with memory +//SEG109 fill // Fill some memory with a value fill: { .label end = 6 .label addr = 4 - //SEG109 [64] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG110 [64] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -3532,50 +3532,50 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG110 [65] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG111 [65] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG112 fill::@1 + //SEG111 [65] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG112 [65] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG113 fill::@1 b1: - //SEG113 [66] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG114 [66] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG114 [67] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG115 [67] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG115 [68] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG116 [68] 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 - //SEG116 fill::@return - //SEG117 [69] return + //SEG117 fill::@return + //SEG118 [69] return rts } -//SEG118 init_sprites +//SEG119 init_sprites init_sprites: { - //SEG119 [70] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG120 [70] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SPRITES_ENABLE - //SEG120 [71] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG121 [71] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG121 [72] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG122 [72] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y - //SEG122 [73] *((const byte*) SPRITES_XMSB#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG123 [73] *((const byte*) SPRITES_XMSB#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_XMSB - //SEG123 [74] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG124 [74] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta SPRITES_COLS - //SEG124 [75] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG125 [75] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG125 init_sprites::@return - //SEG126 [76] return + //SEG126 init_sprites::@return + //SEG127 [76] return rts } diff --git a/src/test/ref/scroll-clobber.log b/src/test/ref/scroll-clobber.log index 814fdd125..095cab288 100644 --- a/src/test/ref/scroll-clobber.log +++ b/src/test/ref/scroll-clobber.log @@ -208,91 +208,92 @@ Allocated zp ZP_BYTE:3 [ main::c#2 main::c#0 main::c#1 ] Allocated zp ZP_WORD:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label c = 3 .label i = 2 .label nxt = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG12 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) main::c#0 ← *((byte*) main::nxt#3) -- vbuz1=_deref_pbuz2 + //SEG15 [6] (byte) main::c#0 ← *((byte*) main::nxt#3) -- vbuz1=_deref_pbuz2 ldy #0 lda (nxt),y sta c - //SEG15 [7] if((byte) main::c#0!=(byte) '@') goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG16 [7] if((byte) main::c#0!=(byte) '@') goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #'@' bne b2_from_b1 jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) -- vbuz1=_deref_pbuc1 + //SEG18 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) -- vbuz1=_deref_pbuc1 lda TEXT sta c - //SEG18 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG19 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG19 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 + //SEG20 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG20 [9] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy + //SEG21 [9] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy jmp b2 - //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [9] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy - //SEG23 [9] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy + //SEG23 [9] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG24 [9] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy jmp b2 - //SEG24 main::@2 + //SEG25 main::@2 b2: - //SEG25 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG26 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG26 [11] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG27 [11] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy i sta SCREEN,y - //SEG27 [12] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 + //SEG28 [12] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG28 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG29 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG29 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG30 [5] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG30 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG31 [5] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } TEXT: .text "01234567@" @@ -315,85 +316,86 @@ Uplifting [] best 777 combination Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ main::nxt#4 main::nxt#3 main::nxt#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label nxt = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 - //SEG12 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) main::c#0 ← *((byte*) main::nxt#3) -- vbuyy=_deref_pbuz1 + //SEG15 [6] (byte) main::c#0 ← *((byte*) main::nxt#3) -- vbuyy=_deref_pbuz1 ldy #0 lda (nxt),y tay - //SEG15 [7] if((byte) main::c#0!=(byte) '@') goto main::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG16 [7] if((byte) main::c#0!=(byte) '@') goto main::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #'@' bne b2_from_b1 jmp b3 - //SEG16 main::@3 + //SEG17 main::@3 b3: - //SEG17 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) -- vbuyy=_deref_pbuc1 + //SEG18 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) -- vbuyy=_deref_pbuc1 ldy TEXT - //SEG18 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG19 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG19 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 + //SEG20 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG20 [9] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy + //SEG21 [9] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy jmp b2 - //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [9] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy - //SEG23 [9] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy + //SEG23 [9] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG24 [9] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy jmp b2 - //SEG24 main::@2 + //SEG25 main::@2 b2: - //SEG25 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG26 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG26 [11] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG27 [11] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 -- pbuc1_derefidx_vbuxx=vbuyy tya sta SCREEN,x - //SEG27 [12] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 + //SEG28 [12] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG28 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG29 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG29 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG30 [5] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG30 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG31 [5] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } TEXT: .text "01234567@" @@ -459,67 +461,68 @@ zp ZP_WORD:2 [ main::nxt#4 main::nxt#3 main::nxt#1 ] FINAL ASSEMBLER Score: 645 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label nxt = 2 - //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 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG13 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] (byte) main::c#0 ← *((byte*) main::nxt#3) -- vbuyy=_deref_pbuz1 + //SEG15 [6] (byte) main::c#0 ← *((byte*) main::nxt#3) -- vbuyy=_deref_pbuz1 ldy #0 lda (nxt),y tay - //SEG15 [7] if((byte) main::c#0!=(byte) '@') goto main::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG16 [7] if((byte) main::c#0!=(byte) '@') goto main::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #'@' bne b2 - //SEG16 main::@3 - //SEG17 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) -- vbuyy=_deref_pbuc1 + //SEG17 main::@3 + //SEG18 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) -- vbuyy=_deref_pbuc1 ldy TEXT - //SEG18 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] - //SEG19 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 + //SEG19 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG20 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG20 [9] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy - //SEG21 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG22 [9] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy - //SEG23 [9] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy - //SEG24 main::@2 + //SEG21 [9] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy + //SEG22 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG23 [9] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG24 [9] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy + //SEG25 main::@2 b2: - //SEG25 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG26 [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG26 [11] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG27 [11] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 -- pbuc1_derefidx_vbuxx=vbuyy tya sta SCREEN,x - //SEG27 [12] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 + //SEG28 [12] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG28 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG29 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG30 [5] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG29 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG30 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG31 [5] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } TEXT: .text "01234567@" diff --git a/src/test/ref/signed-bytes.log b/src/test/ref/signed-bytes.log index 87f7bf28c..b0780c62f 100644 --- a/src/test/ref/signed-bytes.log +++ b/src/test/ref/signed-bytes.log @@ -149,44 +149,45 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label screen = $400 .label i = 2 .label j = 3 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 (signed byte) main::i#2 = -(byte/signed byte/word/signed word/dword/signed dword) 127 [phi:main->main::@1#1] -- vbsz1=vbsc1 + //SEG13 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word/dword/signed dword) 127 [phi:main->main::@1#1] -- vbsz1=vbsc1 lda #-$7f sta i jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 127) goto main::@2 -- vbsz1_lt_vbuc1_then_la1 + //SEG15 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 127) goto main::@2 -- vbsz1_lt_vbuc1_then_la1 lda i sec sbc #$7f @@ -195,24 +196,24 @@ main: { !: bmi b2 jmp breturn - //SEG15 main::@return + //SEG16 main::@return breturn: - //SEG16 [7] return + //SEG17 [7] return rts - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [8] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte)(signed byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG19 [8] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte)(signed byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda i ldy j sta screen,y - //SEG19 [9] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 -- vbsz1=_inc_vbsz1 + //SEG20 [9] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 -- vbsz1=_inc_vbsz1 inc i - //SEG20 [10] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG21 [10] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG21 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG22 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG22 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG23 [5] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG23 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG24 [5] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } @@ -234,40 +235,41 @@ Uplifting [main] best 388 combination reg byte y [ main::j#2 main::j#1 ] reg byt Uplifting [] best 388 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label screen = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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] -- vbuyy=vbuc1 + //SEG12 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word/dword/signed dword) 127 [phi:main->main::@1#1] -- vbsxx=vbsc1 + //SEG13 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word/dword/signed dword) 127 [phi:main->main::@1#1] -- vbsxx=vbsc1 ldx #-$7f jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 127) goto main::@2 -- vbsxx_lt_vbuc1_then_la1 + //SEG15 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 127) goto main::@2 -- vbsxx_lt_vbuc1_then_la1 txa sec sbc #$7f @@ -276,23 +278,23 @@ main: { !: bmi b2 jmp breturn - //SEG15 main::@return + //SEG16 main::@return breturn: - //SEG16 [7] return + //SEG17 [7] return rts - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [8] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte)(signed byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx + //SEG19 [8] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte)(signed byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx txa sta screen,y - //SEG19 [9] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 -- vbsxx=_inc_vbsxx + //SEG20 [9] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 -- vbsxx=_inc_vbsxx inx - //SEG20 [10] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuyy=_inc_vbuyy + //SEG21 [10] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuyy=_inc_vbuyy iny - //SEG21 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG22 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG22 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG23 [5] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG23 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG24 [5] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } @@ -342,29 +344,30 @@ reg byte y [ main::j#2 main::j#1 ] FINAL ASSEMBLER Score: 316 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label screen = $400 - //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] -- vbuyy=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word/dword/signed dword) 127 [phi:main->main::@1#1] -- vbsxx=vbsc1 + //SEG13 [5] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word/dword/signed dword) 127 [phi:main->main::@1#1] -- vbsxx=vbsc1 ldx #-$7f - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 127) goto main::@2 -- vbsxx_lt_vbuc1_then_la1 + //SEG15 [6] if((signed byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 127) goto main::@2 -- vbsxx_lt_vbuc1_then_la1 txa sec sbc #$7f @@ -372,21 +375,21 @@ main: { eor #$80 !: bmi b2 - //SEG15 main::@return - //SEG16 [7] return + //SEG16 main::@return + //SEG17 [7] return rts - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [8] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte)(signed byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx + //SEG19 [8] *((const byte*) main::screen#0 + (byte) main::j#2) ← (byte)(signed byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx txa sta screen,y - //SEG19 [9] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 -- vbsxx=_inc_vbsxx + //SEG20 [9] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 -- vbsxx=_inc_vbsxx inx - //SEG20 [10] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuyy=_inc_vbuyy + //SEG21 [10] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuyy=_inc_vbuyy iny - //SEG21 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG22 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG23 [5] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG22 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG23 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG24 [5] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } diff --git a/src/test/ref/signed-words.log b/src/test/ref/signed-words.log index d50f6d3af..f861f3aaf 100644 --- a/src/test/ref/signed-words.log +++ b/src/test/ref/signed-words.log @@ -1164,11 +1164,12 @@ Allocated zp ZP_BYTE:24 [ anim::$15 ] Allocated zp ZP_BYTE:25 [ anim::$16 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 @@ -1191,80 +1192,80 @@ INITIAL ASM .label xvel = 2 .label yvel_12 = 6 .label yvel_22 = 6 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] b7_from_bbegin: jmp b7 -//SEG4 @7 +//SEG5 @7 b7: -//SEG5 [2] call main -//SEG6 [4] phi from @7 to main [phi:@7->main] +//SEG6 [2] call main +//SEG7 [4] phi from @7 to main [phi:@7->main] main_from_b7: jsr main -//SEG7 [3] phi from @7 to @end [phi:@7->@end] +//SEG8 [3] phi from @7 to @end [phi:@7->@end] bend_from_b7: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call init + //SEG11 [5] call init jsr init - //SEG11 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG12 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1 + //SEG13 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1 lda #<$64 sta yvel_init lda #>$64 sta yvel_init+1 - //SEG13 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1 + //SEG14 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1 lda #<$c8 sta xvel lda #>$c8 sta xvel+1 - //SEG14 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1 + //SEG15 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1 lda #<0 sta ypos lda #>0 sta ypos+1 - //SEG15 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1 + //SEG16 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1 lda #<0 sta xpos lda #>0 sta xpos+1 - //SEG16 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1 + //SEG17 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1 lda #<$64 sta yvel_12 lda #>$64 sta yvel_12+1 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2_from_b2 - //SEG20 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [9] call anim + //SEG23 [9] call anim jsr anim - //SEG23 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG24 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG24 [6] phi (signed word) yvel_init#13 = (signed word) yvel_init#11 [phi:main::@3->main::@2#0] -- register_copy - //SEG25 [6] phi (signed word) xvel#12 = (signed word) xvel#10 [phi:main::@3->main::@2#1] -- register_copy - //SEG26 [6] phi (signed word) ypos#13 = (signed word) ypos#11 [phi:main::@3->main::@2#2] -- register_copy - //SEG27 [6] phi (signed word) xpos#12 = (signed word) xpos#10 [phi:main::@3->main::@2#3] -- register_copy - //SEG28 [6] phi (signed word) yvel#12 = (signed word) yvel#10 [phi:main::@3->main::@2#4] -- register_copy + //SEG25 [6] phi (signed word) yvel_init#13 = (signed word) yvel_init#11 [phi:main::@3->main::@2#0] -- register_copy + //SEG26 [6] phi (signed word) xvel#12 = (signed word) xvel#10 [phi:main::@3->main::@2#1] -- register_copy + //SEG27 [6] phi (signed word) ypos#13 = (signed word) ypos#11 [phi:main::@3->main::@2#2] -- register_copy + //SEG28 [6] phi (signed word) xpos#12 = (signed word) xpos#10 [phi:main::@3->main::@2#3] -- register_copy + //SEG29 [6] phi (signed word) yvel#12 = (signed word) yvel#10 [phi:main::@3->main::@2#4] -- register_copy jmp b2 } -//SEG29 anim +//SEG30 anim anim: { .label _10 = $f .label _12 = $13 @@ -1273,13 +1274,13 @@ anim: { .label _16 = $19 .label sprite_x = $11 .label sprite_y = $15 - //SEG30 [10] if((signed word) ypos#13>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 -- vwsz1_ge_0_then_la1 + //SEG31 [10] if((signed word) ypos#13>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 -- vwsz1_ge_0_then_la1 lda ypos+1 bpl b1_from_anim jmp b3 - //SEG31 anim::@3 + //SEG32 anim::@3 b3: - //SEG32 [11] (signed word) xvel#14 ← - (signed word) xvel#12 -- vwsz1=_neg_vwsz1 + //SEG33 [11] (signed word) xvel#14 ← - (signed word) xvel#12 -- vwsz1=_neg_vwsz1 sec lda xvel eor #$ff @@ -1289,7 +1290,7 @@ anim: { eor #$ff adc #0 sta xvel+1 - //SEG33 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_minus_vbuc1 + //SEG34 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_minus_vbuc1 lda yvel_init sec sbc #<$a @@ -1297,7 +1298,7 @@ anim: { lda yvel_init+1 sbc #>$a sta yvel_init+1 - //SEG34 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) 200) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1 + //SEG35 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) 200) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1 lda yvel_init cmp #<-$c8 lda yvel_init+1 @@ -1306,48 +1307,48 @@ anim: { eor #$80 !: bpl b5_from_b3 - //SEG35 [14] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2] + //SEG36 [14] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2] b2_from_b3: - //SEG36 [14] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1 + //SEG37 [14] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1 lda #<$c8 sta yvel lda #>$c8 sta yvel+1 jmp b2 - //SEG37 anim::@2 + //SEG38 anim::@2 b2: - //SEG38 [15] (signed word~) yvel#22 ← (signed word) yvel#4 -- vwsz1=vwsz2 + //SEG39 [15] (signed word~) yvel#22 ← (signed word) yvel#4 -- vwsz1=vwsz2 lda yvel sta yvel_22 lda yvel+1 sta yvel_22+1 - //SEG39 [16] phi from anim::@2 to anim::@1 [phi:anim::@2->anim::@1] + //SEG40 [16] phi from anim::@2 to anim::@1 [phi:anim::@2->anim::@1] b1_from_b2: - //SEG40 [16] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy - //SEG41 [16] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1 + //SEG41 [16] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy + //SEG42 [16] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1 lda #<0 sta ypos lda #>0 sta ypos+1 - //SEG42 [16] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy - //SEG43 [16] phi (signed word) xpos#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#3] -- vwsz1=vbuc1 + //SEG43 [16] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy + //SEG44 [16] phi (signed word) xpos#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#3] -- vwsz1=vbuc1 lda #<0 sta xpos lda #>0 sta xpos+1 - //SEG44 [16] phi (signed word) yvel#9 = (signed word~) yvel#22 [phi:anim::@2->anim::@1#4] -- register_copy + //SEG45 [16] phi (signed word) yvel#9 = (signed word~) yvel#22 [phi:anim::@2->anim::@1#4] -- register_copy jmp b1 - //SEG45 [16] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG46 [16] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG46 [16] phi (signed word) yvel_init#11 = (signed word) yvel_init#13 [phi:anim->anim::@1#0] -- register_copy - //SEG47 [16] phi (signed word) ypos#10 = (signed word) ypos#13 [phi:anim->anim::@1#1] -- register_copy - //SEG48 [16] phi (signed word) xvel#10 = (signed word) xvel#12 [phi:anim->anim::@1#2] -- register_copy - //SEG49 [16] phi (signed word) xpos#9 = (signed word) xpos#12 [phi:anim->anim::@1#3] -- register_copy - //SEG50 [16] phi (signed word) yvel#9 = (signed word) yvel#12 [phi:anim->anim::@1#4] -- register_copy + //SEG47 [16] phi (signed word) yvel_init#11 = (signed word) yvel_init#13 [phi:anim->anim::@1#0] -- register_copy + //SEG48 [16] phi (signed word) ypos#10 = (signed word) ypos#13 [phi:anim->anim::@1#1] -- register_copy + //SEG49 [16] phi (signed word) xvel#10 = (signed word) xvel#12 [phi:anim->anim::@1#2] -- register_copy + //SEG50 [16] phi (signed word) xpos#9 = (signed word) xpos#12 [phi:anim->anim::@1#3] -- register_copy + //SEG51 [16] phi (signed word) yvel#9 = (signed word) yvel#12 [phi:anim->anim::@1#4] -- register_copy jmp b1 - //SEG51 anim::@1 + //SEG52 anim::@1 b1: - //SEG52 [17] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 -- vwsz1=vwsz1_plus_vwsc1 + //SEG53 [17] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 -- vwsz1=vwsz1_plus_vwsc1 clc lda yvel_10 adc #g sta yvel_10+1 - //SEG53 [18] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 -- vwsz1=vwsz1_plus_vwsz2 + //SEG54 [18] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 -- vwsz1=vwsz1_plus_vwsz2 lda xpos clc adc xvel @@ -1363,7 +1364,7 @@ anim: { lda xpos+1 adc xvel+1 sta xpos+1 - //SEG54 [19] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 -- vwsz1=vwsz1_plus_vwsz2 + //SEG55 [19] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 -- vwsz1=vwsz1_plus_vwsz2 lda ypos clc adc yvel_10 @@ -1371,7 +1372,7 @@ anim: { lda ypos+1 adc yvel_10+1 sta ypos+1 - //SEG55 [20] (signed word~) anim::$10 ← (signed word) xpos#10 >> (byte/signed byte/word/signed word/dword/signed dword) 7 -- vwsz1=vwsz2_ror_7 + //SEG56 [20] (signed word~) anim::$10 ← (signed word) xpos#10 >> (byte/signed byte/word/signed word/dword/signed dword) 7 -- vwsz1=vwsz2_ror_7 lda xpos sta $ff lda xpos+1 @@ -1385,7 +1386,7 @@ anim: { rol $ff rol _10 rol _10+1 - //SEG56 [21] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word/dword/signed dword) 160 -- vwsz1=vwsz2_plus_vbuc1 + //SEG57 [21] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word/dword/signed dword) 160 -- vwsz1=vwsz2_plus_vbuc1 lda _10 clc adc #<$a0 @@ -1393,7 +1394,7 @@ anim: { lda _10+1 adc #>$a0 sta sprite_x+1 - //SEG57 [22] (signed word~) anim::$12 ← (signed word) ypos#11 >> (byte/signed byte/word/signed word/dword/signed dword) 5 -- vwsz1=vwsz2_ror_5 + //SEG58 [22] (signed word~) anim::$12 ← (signed word) ypos#11 >> (byte/signed byte/word/signed word/dword/signed dword) 5 -- vwsz1=vwsz2_ror_5 lda ypos sta $ff lda ypos+1 @@ -1413,7 +1414,7 @@ anim: { rol $ff rol _12 rol _12+1 - //SEG58 [23] (signed word) anim::sprite_y#0 ← (byte/word/signed word/dword/signed dword) 230 - (signed word~) anim::$12 -- vwsz1=vbuc1_minus_vwsz2 + //SEG59 [23] (signed word) anim::sprite_y#0 ← (byte/word/signed word/dword/signed dword) 230 - (signed word~) anim::$12 -- vwsz1=vbuc1_minus_vwsz2 lda #<$e6 sec sbc _12 @@ -1421,121 +1422,121 @@ anim: { lda #>$e6 sbc _12+1 sta sprite_y+1 - //SEG59 [24] (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x#0 -- vbuz1=_byte_vwsz2 + //SEG60 [24] (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x#0 -- vbuz1=_byte_vwsz2 lda sprite_x sta _14 - //SEG60 [25] *((const byte*) SPRITES_XPOS#0) ← (byte~) anim::$14 -- _deref_pbuc1=vbuz1 + //SEG61 [25] *((const byte*) SPRITES_XPOS#0) ← (byte~) anim::$14 -- _deref_pbuc1=vbuz1 lda _14 sta SPRITES_XPOS - //SEG61 [26] (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y#0 -- vbuz1=_byte_vwsz2 + //SEG62 [26] (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y#0 -- vbuz1=_byte_vwsz2 lda sprite_y sta _15 - //SEG62 [27] *((const byte*) SPRITES_YPOS#0) ← (byte~) anim::$15 -- _deref_pbuc1=vbuz1 + //SEG63 [27] *((const byte*) SPRITES_YPOS#0) ← (byte~) anim::$15 -- _deref_pbuc1=vbuz1 lda _15 sta SPRITES_YPOS - //SEG63 [28] (byte~) anim::$16 ← > (signed word) anim::sprite_x#0 -- vbuz1=_hi_vwsz2 + //SEG64 [28] (byte~) anim::$16 ← > (signed word) anim::sprite_x#0 -- vbuz1=_hi_vwsz2 lda sprite_x+1 sta _16 - //SEG64 [29] *((const byte*) SPRITES_XMSB#0) ← (byte~) anim::$16 -- _deref_pbuc1=vbuz1 + //SEG65 [29] *((const byte*) SPRITES_XMSB#0) ← (byte~) anim::$16 -- _deref_pbuc1=vbuz1 lda _16 sta SPRITES_XMSB jmp breturn - //SEG65 anim::@return + //SEG66 anim::@return breturn: - //SEG66 [30] return + //SEG67 [30] return rts - //SEG67 [31] phi from anim::@3 to anim::@5 [phi:anim::@3->anim::@5] + //SEG68 [31] phi from anim::@3 to anim::@5 [phi:anim::@3->anim::@5] b5_from_b3: jmp b5 - //SEG68 anim::@5 + //SEG69 anim::@5 b5: - //SEG69 [14] phi from anim::@5 to anim::@2 [phi:anim::@5->anim::@2] + //SEG70 [14] phi from anim::@5 to anim::@2 [phi:anim::@5->anim::@2] b2_from_b5: - //SEG70 [14] phi (signed word) yvel#4 = (signed word) yvel_init#3 [phi:anim::@5->anim::@2#0] -- register_copy + //SEG71 [14] phi (signed word) yvel#4 = (signed word) yvel_init#3 [phi:anim::@5->anim::@2#0] -- register_copy jmp b2 } -//SEG71 init +//SEG72 init // Fill and show a sprite, clear the screen init: { .label sc = $c .label i = $e - //SEG72 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG73 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SPRITES_ENABLE - //SEG73 [33] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG74 [33] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG74 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG75 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y - //SEG75 [35] *((const byte*) SPRITES_XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 + //SEG76 [35] *((const byte*) SPRITES_XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 lda #$64 sta SPRITES_XPOS - //SEG76 [36] *((const byte*) SPRITES_YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 + //SEG77 [36] *((const byte*) SPRITES_YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 lda #$64 sta SPRITES_YPOS - //SEG77 [37] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG78 [37] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta SPRITES_COLS - //SEG78 [38] *((const byte*) SPRITES_PTR#0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- _deref_pbuc1=vbuc2 + //SEG79 [38] *((const byte*) SPRITES_PTR#0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- _deref_pbuc1=vbuc2 lda #$ff&SPRITE/$40 sta SPRITES_PTR - //SEG79 [39] phi from init to init::@1 [phi:init->init::@1] + //SEG80 [39] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG80 [39] phi (byte*) init::sc#2 = (const byte*) SCREEN#0 [phi:init->init::@1#0] -- pbuz1=pbuc1 + //SEG81 [39] phi (byte*) init::sc#2 = (const byte*) SCREEN#0 [phi:init->init::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG81 [39] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG82 [39] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG82 [39] phi (byte*) init::sc#2 = (byte*) init::sc#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG83 [39] phi (byte*) init::sc#2 = (byte*) init::sc#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG83 init::@1 + //SEG84 init::@1 b1: - //SEG84 [40] *((byte*) init::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG85 [40] *((byte*) init::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG85 [41] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 -- pbuz1=_inc_pbuz1 + //SEG86 [41] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG86 [42] if((byte*) init::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG87 [42] if((byte*) init::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1_from_b1 lda sc cmp #init::@2] + //SEG88 [43] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: - //SEG88 [43] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#0] -- vbuz1=vbuc1 + //SEG89 [43] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG89 [43] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG90 [43] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG90 [43] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG91 [43] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@2->init::@2#0] -- register_copy jmp b2 - //SEG91 init::@2 + //SEG92 init::@2 b2: - //SEG92 [44] *((const byte*) SPRITE#0 + (byte) init::i#2) ← (byte/word/signed word/dword/signed dword) 255 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG93 [44] *((const byte*) SPRITE#0 + (byte) init::i#2) ← (byte/word/signed word/dword/signed dword) 255 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #$ff sta SPRITE,y - //SEG93 [45] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 + //SEG94 [45] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG94 [46] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG95 [46] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto init::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$40 bne b2_from_b2 jmp breturn - //SEG95 init::@return + //SEG96 init::@return breturn: - //SEG96 [47] return + //SEG97 [47] return rts } @@ -1625,11 +1626,12 @@ Allocated (was zp ZP_WORD:15) zp ZP_WORD:12 [ anim::$10 anim::sprite_x#0 ] Allocated (was zp ZP_WORD:19) zp ZP_WORD:14 [ anim::$12 anim::sprite_y#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 @@ -1652,92 +1654,92 @@ ASSEMBLER BEFORE OPTIMIZATION .label xvel = 2 .label yvel_12 = 6 .label yvel_22 = 6 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] b7_from_bbegin: jmp b7 -//SEG4 @7 +//SEG5 @7 b7: -//SEG5 [2] call main -//SEG6 [4] phi from @7 to main [phi:@7->main] +//SEG6 [2] call main +//SEG7 [4] phi from @7 to main [phi:@7->main] main_from_b7: jsr main -//SEG7 [3] phi from @7 to @end [phi:@7->@end] +//SEG8 [3] phi from @7 to @end [phi:@7->@end] bend_from_b7: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call init + //SEG11 [5] call init jsr init - //SEG11 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG12 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1 + //SEG13 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1 lda #<$64 sta yvel_init lda #>$64 sta yvel_init+1 - //SEG13 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1 + //SEG14 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1 lda #<$c8 sta xvel lda #>$c8 sta xvel+1 - //SEG14 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1 + //SEG15 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1 lda #<0 sta ypos lda #>0 sta ypos+1 - //SEG15 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1 + //SEG16 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1 lda #<0 sta xpos lda #>0 sta xpos+1 - //SEG16 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1 + //SEG17 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1 lda #<$64 sta yvel_12 lda #>$64 sta yvel_12+1 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG18 main::@2 + //SEG19 main::@2 b2: - //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2_from_b2 - //SEG20 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [9] call anim + //SEG23 [9] call anim jsr anim - //SEG23 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG24 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG24 [6] phi (signed word) yvel_init#13 = (signed word) yvel_init#11 [phi:main::@3->main::@2#0] -- register_copy - //SEG25 [6] phi (signed word) xvel#12 = (signed word) xvel#10 [phi:main::@3->main::@2#1] -- register_copy - //SEG26 [6] phi (signed word) ypos#13 = (signed word) ypos#11 [phi:main::@3->main::@2#2] -- register_copy - //SEG27 [6] phi (signed word) xpos#12 = (signed word) xpos#10 [phi:main::@3->main::@2#3] -- register_copy - //SEG28 [6] phi (signed word) yvel#12 = (signed word) yvel#10 [phi:main::@3->main::@2#4] -- register_copy + //SEG25 [6] phi (signed word) yvel_init#13 = (signed word) yvel_init#11 [phi:main::@3->main::@2#0] -- register_copy + //SEG26 [6] phi (signed word) xvel#12 = (signed word) xvel#10 [phi:main::@3->main::@2#1] -- register_copy + //SEG27 [6] phi (signed word) ypos#13 = (signed word) ypos#11 [phi:main::@3->main::@2#2] -- register_copy + //SEG28 [6] phi (signed word) xpos#12 = (signed word) xpos#10 [phi:main::@3->main::@2#3] -- register_copy + //SEG29 [6] phi (signed word) yvel#12 = (signed word) yvel#10 [phi:main::@3->main::@2#4] -- register_copy jmp b2 } -//SEG29 anim +//SEG30 anim anim: { .label _10 = $c .label _12 = $e .label sprite_x = $c .label sprite_y = $e - //SEG30 [10] if((signed word) ypos#13>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 -- vwsz1_ge_0_then_la1 + //SEG31 [10] if((signed word) ypos#13>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 -- vwsz1_ge_0_then_la1 lda ypos+1 bpl b1_from_anim jmp b3 - //SEG31 anim::@3 + //SEG32 anim::@3 b3: - //SEG32 [11] (signed word) xvel#14 ← - (signed word) xvel#12 -- vwsz1=_neg_vwsz1 + //SEG33 [11] (signed word) xvel#14 ← - (signed word) xvel#12 -- vwsz1=_neg_vwsz1 sec lda xvel eor #$ff @@ -1747,7 +1749,7 @@ anim: { eor #$ff adc #0 sta xvel+1 - //SEG33 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_minus_vbuc1 + //SEG34 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_minus_vbuc1 lda yvel_init sec sbc #<$a @@ -1755,7 +1757,7 @@ anim: { lda yvel_init+1 sbc #>$a sta yvel_init+1 - //SEG34 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) 200) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1 + //SEG35 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) 200) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1 lda yvel_init cmp #<-$c8 lda yvel_init+1 @@ -1764,48 +1766,48 @@ anim: { eor #$80 !: bpl b5_from_b3 - //SEG35 [14] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2] + //SEG36 [14] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2] b2_from_b3: - //SEG36 [14] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1 + //SEG37 [14] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1 lda #<$c8 sta yvel lda #>$c8 sta yvel+1 jmp b2 - //SEG37 anim::@2 + //SEG38 anim::@2 b2: - //SEG38 [15] (signed word~) yvel#22 ← (signed word) yvel#4 -- vwsz1=vwsz2 + //SEG39 [15] (signed word~) yvel#22 ← (signed word) yvel#4 -- vwsz1=vwsz2 lda yvel sta yvel_22 lda yvel+1 sta yvel_22+1 - //SEG39 [16] phi from anim::@2 to anim::@1 [phi:anim::@2->anim::@1] + //SEG40 [16] phi from anim::@2 to anim::@1 [phi:anim::@2->anim::@1] b1_from_b2: - //SEG40 [16] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy - //SEG41 [16] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1 + //SEG41 [16] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy + //SEG42 [16] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1 lda #<0 sta ypos lda #>0 sta ypos+1 - //SEG42 [16] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy - //SEG43 [16] phi (signed word) xpos#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#3] -- vwsz1=vbuc1 + //SEG43 [16] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy + //SEG44 [16] phi (signed word) xpos#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#3] -- vwsz1=vbuc1 lda #<0 sta xpos lda #>0 sta xpos+1 - //SEG44 [16] phi (signed word) yvel#9 = (signed word~) yvel#22 [phi:anim::@2->anim::@1#4] -- register_copy + //SEG45 [16] phi (signed word) yvel#9 = (signed word~) yvel#22 [phi:anim::@2->anim::@1#4] -- register_copy jmp b1 - //SEG45 [16] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG46 [16] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG46 [16] phi (signed word) yvel_init#11 = (signed word) yvel_init#13 [phi:anim->anim::@1#0] -- register_copy - //SEG47 [16] phi (signed word) ypos#10 = (signed word) ypos#13 [phi:anim->anim::@1#1] -- register_copy - //SEG48 [16] phi (signed word) xvel#10 = (signed word) xvel#12 [phi:anim->anim::@1#2] -- register_copy - //SEG49 [16] phi (signed word) xpos#9 = (signed word) xpos#12 [phi:anim->anim::@1#3] -- register_copy - //SEG50 [16] phi (signed word) yvel#9 = (signed word) yvel#12 [phi:anim->anim::@1#4] -- register_copy + //SEG47 [16] phi (signed word) yvel_init#11 = (signed word) yvel_init#13 [phi:anim->anim::@1#0] -- register_copy + //SEG48 [16] phi (signed word) ypos#10 = (signed word) ypos#13 [phi:anim->anim::@1#1] -- register_copy + //SEG49 [16] phi (signed word) xvel#10 = (signed word) xvel#12 [phi:anim->anim::@1#2] -- register_copy + //SEG50 [16] phi (signed word) xpos#9 = (signed word) xpos#12 [phi:anim->anim::@1#3] -- register_copy + //SEG51 [16] phi (signed word) yvel#9 = (signed word) yvel#12 [phi:anim->anim::@1#4] -- register_copy jmp b1 - //SEG51 anim::@1 + //SEG52 anim::@1 b1: - //SEG52 [17] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 -- vwsz1=vwsz1_plus_vwsc1 + //SEG53 [17] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 -- vwsz1=vwsz1_plus_vwsc1 clc lda yvel_10 adc #g sta yvel_10+1 - //SEG53 [18] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 -- vwsz1=vwsz1_plus_vwsz2 + //SEG54 [18] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 -- vwsz1=vwsz1_plus_vwsz2 lda xpos clc adc xvel @@ -1821,7 +1823,7 @@ anim: { lda xpos+1 adc xvel+1 sta xpos+1 - //SEG54 [19] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 -- vwsz1=vwsz1_plus_vwsz2 + //SEG55 [19] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 -- vwsz1=vwsz1_plus_vwsz2 lda ypos clc adc yvel_10 @@ -1829,7 +1831,7 @@ anim: { lda ypos+1 adc yvel_10+1 sta ypos+1 - //SEG55 [20] (signed word~) anim::$10 ← (signed word) xpos#10 >> (byte/signed byte/word/signed word/dword/signed dword) 7 -- vwsz1=vwsz2_ror_7 + //SEG56 [20] (signed word~) anim::$10 ← (signed word) xpos#10 >> (byte/signed byte/word/signed word/dword/signed dword) 7 -- vwsz1=vwsz2_ror_7 lda xpos sta $ff lda xpos+1 @@ -1843,7 +1845,7 @@ anim: { rol $ff rol _10 rol _10+1 - //SEG56 [21] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word/dword/signed dword) 160 -- vwsz1=vwsz1_plus_vbuc1 + //SEG57 [21] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word/dword/signed dword) 160 -- vwsz1=vwsz1_plus_vbuc1 clc lda sprite_x adc #<$a0 @@ -1851,7 +1853,7 @@ anim: { lda sprite_x+1 adc #>$a0 sta sprite_x+1 - //SEG57 [22] (signed word~) anim::$12 ← (signed word) ypos#11 >> (byte/signed byte/word/signed word/dword/signed dword) 5 -- vwsz1=vwsz2_ror_5 + //SEG58 [22] (signed word~) anim::$12 ← (signed word) ypos#11 >> (byte/signed byte/word/signed word/dword/signed dword) 5 -- vwsz1=vwsz2_ror_5 lda ypos sta $ff lda ypos+1 @@ -1871,7 +1873,7 @@ anim: { rol $ff rol _12 rol _12+1 - //SEG58 [23] (signed word) anim::sprite_y#0 ← (byte/word/signed word/dword/signed dword) 230 - (signed word~) anim::$12 -- vwsz1=vbuc1_minus_vwsz1 + //SEG59 [23] (signed word) anim::sprite_y#0 ← (byte/word/signed word/dword/signed dword) 230 - (signed word~) anim::$12 -- vwsz1=vbuc1_minus_vwsz1 lda #<$e6 sec sbc sprite_y @@ -1879,111 +1881,111 @@ anim: { lda #>$e6 sbc sprite_y+1 sta sprite_y+1 - //SEG59 [24] (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x#0 -- vbuaa=_byte_vwsz1 + //SEG60 [24] (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x#0 -- vbuaa=_byte_vwsz1 lda sprite_x - //SEG60 [25] *((const byte*) SPRITES_XPOS#0) ← (byte~) anim::$14 -- _deref_pbuc1=vbuaa + //SEG61 [25] *((const byte*) SPRITES_XPOS#0) ← (byte~) anim::$14 -- _deref_pbuc1=vbuaa sta SPRITES_XPOS - //SEG61 [26] (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y#0 -- vbuaa=_byte_vwsz1 + //SEG62 [26] (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y#0 -- vbuaa=_byte_vwsz1 lda sprite_y - //SEG62 [27] *((const byte*) SPRITES_YPOS#0) ← (byte~) anim::$15 -- _deref_pbuc1=vbuaa + //SEG63 [27] *((const byte*) SPRITES_YPOS#0) ← (byte~) anim::$15 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG63 [28] (byte~) anim::$16 ← > (signed word) anim::sprite_x#0 -- vbuaa=_hi_vwsz1 + //SEG64 [28] (byte~) anim::$16 ← > (signed word) anim::sprite_x#0 -- vbuaa=_hi_vwsz1 lda sprite_x+1 - //SEG64 [29] *((const byte*) SPRITES_XMSB#0) ← (byte~) anim::$16 -- _deref_pbuc1=vbuaa + //SEG65 [29] *((const byte*) SPRITES_XMSB#0) ← (byte~) anim::$16 -- _deref_pbuc1=vbuaa sta SPRITES_XMSB jmp breturn - //SEG65 anim::@return + //SEG66 anim::@return breturn: - //SEG66 [30] return + //SEG67 [30] return rts - //SEG67 [31] phi from anim::@3 to anim::@5 [phi:anim::@3->anim::@5] + //SEG68 [31] phi from anim::@3 to anim::@5 [phi:anim::@3->anim::@5] b5_from_b3: jmp b5 - //SEG68 anim::@5 + //SEG69 anim::@5 b5: - //SEG69 [14] phi from anim::@5 to anim::@2 [phi:anim::@5->anim::@2] + //SEG70 [14] phi from anim::@5 to anim::@2 [phi:anim::@5->anim::@2] b2_from_b5: - //SEG70 [14] phi (signed word) yvel#4 = (signed word) yvel_init#3 [phi:anim::@5->anim::@2#0] -- register_copy + //SEG71 [14] phi (signed word) yvel#4 = (signed word) yvel_init#3 [phi:anim::@5->anim::@2#0] -- register_copy jmp b2 } -//SEG71 init +//SEG72 init // Fill and show a sprite, clear the screen init: { .label sc = 2 - //SEG72 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG73 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SPRITES_ENABLE - //SEG73 [33] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG74 [33] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG74 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG75 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y - //SEG75 [35] *((const byte*) SPRITES_XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 + //SEG76 [35] *((const byte*) SPRITES_XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 lda #$64 sta SPRITES_XPOS - //SEG76 [36] *((const byte*) SPRITES_YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 + //SEG77 [36] *((const byte*) SPRITES_YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 lda #$64 sta SPRITES_YPOS - //SEG77 [37] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG78 [37] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta SPRITES_COLS - //SEG78 [38] *((const byte*) SPRITES_PTR#0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- _deref_pbuc1=vbuc2 + //SEG79 [38] *((const byte*) SPRITES_PTR#0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- _deref_pbuc1=vbuc2 lda #$ff&SPRITE/$40 sta SPRITES_PTR - //SEG79 [39] phi from init to init::@1 [phi:init->init::@1] + //SEG80 [39] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG80 [39] phi (byte*) init::sc#2 = (const byte*) SCREEN#0 [phi:init->init::@1#0] -- pbuz1=pbuc1 + //SEG81 [39] phi (byte*) init::sc#2 = (const byte*) SCREEN#0 [phi:init->init::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG81 [39] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG82 [39] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG82 [39] phi (byte*) init::sc#2 = (byte*) init::sc#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG83 [39] phi (byte*) init::sc#2 = (byte*) init::sc#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG83 init::@1 + //SEG84 init::@1 b1: - //SEG84 [40] *((byte*) init::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG85 [40] *((byte*) init::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG85 [41] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 -- pbuz1=_inc_pbuz1 + //SEG86 [41] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG86 [42] if((byte*) init::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG87 [42] if((byte*) init::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1_from_b1 lda sc cmp #init::@2] + //SEG88 [43] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: - //SEG88 [43] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#0] -- vbuxx=vbuc1 + //SEG89 [43] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG89 [43] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG90 [43] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG90 [43] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG91 [43] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@2->init::@2#0] -- register_copy jmp b2 - //SEG91 init::@2 + //SEG92 init::@2 b2: - //SEG92 [44] *((const byte*) SPRITE#0 + (byte) init::i#2) ← (byte/word/signed word/dword/signed dword) 255 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG93 [44] *((const byte*) SPRITE#0 + (byte) init::i#2) ← (byte/word/signed word/dword/signed dword) 255 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff sta SPRITE,x - //SEG93 [45] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG94 [45] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG94 [46] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG95 [46] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$40 bne b2_from_b2 jmp breturn - //SEG95 init::@return + //SEG96 init::@return breturn: - //SEG96 [47] return + //SEG97 [47] return rts } @@ -2223,11 +2225,12 @@ reg byte a [ anim::$16 ] FINAL ASSEMBLER Score: 6617 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 @@ -2250,70 +2253,70 @@ Score: 6617 .label xvel = 2 .label yvel_12 = 6 .label yvel_22 = 6 -//SEG2 @begin -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -//SEG4 @7 -//SEG5 [2] call main -//SEG6 [4] phi from @7 to main [phi:@7->main] -//SEG7 [3] phi from @7 to @end [phi:@7->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG5 @7 +//SEG6 [2] call main +//SEG7 [4] phi from @7 to main [phi:@7->main] +//SEG8 [3] phi from @7 to @end [phi:@7->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call init + //SEG11 [5] call init jsr init - //SEG11 [6] phi from main to main::@2 [phi:main->main::@2] - //SEG12 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1 + //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG13 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1 lda #<$64 sta yvel_init lda #>$64 sta yvel_init+1 - //SEG13 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1 + //SEG14 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1 lda #<$c8 sta xvel lda #>$c8 sta xvel+1 - //SEG14 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1 + //SEG15 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1 lda #<0 sta ypos sta ypos+1 - //SEG15 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1 + //SEG16 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1 sta xpos sta xpos+1 - //SEG16 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1 + //SEG17 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1 lda #<$64 sta yvel_12 lda #>$64 sta yvel_12+1 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG18 main::@2 + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG19 main::@2 b2: - //SEG19 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG20 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b2 - //SEG20 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG21 main::@3 - //SEG22 [9] call anim + //SEG21 [8] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG22 main::@3 + //SEG23 [9] call anim jsr anim - //SEG23 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] - //SEG24 [6] phi (signed word) yvel_init#13 = (signed word) yvel_init#11 [phi:main::@3->main::@2#0] -- register_copy - //SEG25 [6] phi (signed word) xvel#12 = (signed word) xvel#10 [phi:main::@3->main::@2#1] -- register_copy - //SEG26 [6] phi (signed word) ypos#13 = (signed word) ypos#11 [phi:main::@3->main::@2#2] -- register_copy - //SEG27 [6] phi (signed word) xpos#12 = (signed word) xpos#10 [phi:main::@3->main::@2#3] -- register_copy - //SEG28 [6] phi (signed word) yvel#12 = (signed word) yvel#10 [phi:main::@3->main::@2#4] -- register_copy + //SEG24 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG25 [6] phi (signed word) yvel_init#13 = (signed word) yvel_init#11 [phi:main::@3->main::@2#0] -- register_copy + //SEG26 [6] phi (signed word) xvel#12 = (signed word) xvel#10 [phi:main::@3->main::@2#1] -- register_copy + //SEG27 [6] phi (signed word) ypos#13 = (signed word) ypos#11 [phi:main::@3->main::@2#2] -- register_copy + //SEG28 [6] phi (signed word) xpos#12 = (signed word) xpos#10 [phi:main::@3->main::@2#3] -- register_copy + //SEG29 [6] phi (signed word) yvel#12 = (signed word) yvel#10 [phi:main::@3->main::@2#4] -- register_copy jmp b2 } -//SEG29 anim +//SEG30 anim anim: { .label _10 = $c .label _12 = $e .label sprite_x = $c .label sprite_y = $e - //SEG30 [10] if((signed word) ypos#13>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 -- vwsz1_ge_0_then_la1 + //SEG31 [10] if((signed word) ypos#13>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 -- vwsz1_ge_0_then_la1 lda ypos+1 bpl b1 - //SEG31 anim::@3 - //SEG32 [11] (signed word) xvel#14 ← - (signed word) xvel#12 -- vwsz1=_neg_vwsz1 + //SEG32 anim::@3 + //SEG33 [11] (signed word) xvel#14 ← - (signed word) xvel#12 -- vwsz1=_neg_vwsz1 sec lda xvel eor #$ff @@ -2323,7 +2326,7 @@ anim: { eor #$ff adc #0 sta xvel+1 - //SEG33 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_minus_vbuc1 + //SEG34 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (byte/signed byte/word/signed word/dword/signed dword) 10 -- vwsz1=vwsz1_minus_vbuc1 lda yvel_init sec sbc #<$a @@ -2331,7 +2334,7 @@ anim: { lda yvel_init+1 sbc #>$a sta yvel_init+1 - //SEG34 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) 200) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1 + //SEG35 [13] if((signed word) yvel_init#3>=-(byte/word/signed word/dword/signed dword) 200) goto anim::@5 -- vwsz1_ge_vwsc1_then_la1 lda yvel_init cmp #<-$c8 lda yvel_init+1 @@ -2340,39 +2343,39 @@ anim: { eor #$80 !: bpl b2 - //SEG35 [14] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2] - //SEG36 [14] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1 + //SEG36 [14] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2] + //SEG37 [14] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1 lda #<$c8 sta yvel lda #>$c8 sta yvel+1 - //SEG37 anim::@2 + //SEG38 anim::@2 b2: - //SEG38 [15] (signed word~) yvel#22 ← (signed word) yvel#4 -- vwsz1=vwsz2 + //SEG39 [15] (signed word~) yvel#22 ← (signed word) yvel#4 -- vwsz1=vwsz2 lda yvel sta yvel_22 lda yvel+1 sta yvel_22+1 - //SEG39 [16] phi from anim::@2 to anim::@1 [phi:anim::@2->anim::@1] - //SEG40 [16] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy - //SEG41 [16] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1 + //SEG40 [16] phi from anim::@2 to anim::@1 [phi:anim::@2->anim::@1] + //SEG41 [16] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy + //SEG42 [16] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1 lda #<0 sta ypos sta ypos+1 - //SEG42 [16] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy - //SEG43 [16] phi (signed word) xpos#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#3] -- vwsz1=vbuc1 + //SEG43 [16] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy + //SEG44 [16] phi (signed word) xpos#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#3] -- vwsz1=vbuc1 sta xpos sta xpos+1 - //SEG44 [16] phi (signed word) yvel#9 = (signed word~) yvel#22 [phi:anim::@2->anim::@1#4] -- register_copy - //SEG45 [16] phi from anim to anim::@1 [phi:anim->anim::@1] - //SEG46 [16] phi (signed word) yvel_init#11 = (signed word) yvel_init#13 [phi:anim->anim::@1#0] -- register_copy - //SEG47 [16] phi (signed word) ypos#10 = (signed word) ypos#13 [phi:anim->anim::@1#1] -- register_copy - //SEG48 [16] phi (signed word) xvel#10 = (signed word) xvel#12 [phi:anim->anim::@1#2] -- register_copy - //SEG49 [16] phi (signed word) xpos#9 = (signed word) xpos#12 [phi:anim->anim::@1#3] -- register_copy - //SEG50 [16] phi (signed word) yvel#9 = (signed word) yvel#12 [phi:anim->anim::@1#4] -- register_copy - //SEG51 anim::@1 + //SEG45 [16] phi (signed word) yvel#9 = (signed word~) yvel#22 [phi:anim::@2->anim::@1#4] -- register_copy + //SEG46 [16] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG47 [16] phi (signed word) yvel_init#11 = (signed word) yvel_init#13 [phi:anim->anim::@1#0] -- register_copy + //SEG48 [16] phi (signed word) ypos#10 = (signed word) ypos#13 [phi:anim->anim::@1#1] -- register_copy + //SEG49 [16] phi (signed word) xvel#10 = (signed word) xvel#12 [phi:anim->anim::@1#2] -- register_copy + //SEG50 [16] phi (signed word) xpos#9 = (signed word) xpos#12 [phi:anim->anim::@1#3] -- register_copy + //SEG51 [16] phi (signed word) yvel#9 = (signed word) yvel#12 [phi:anim->anim::@1#4] -- register_copy + //SEG52 anim::@1 b1: - //SEG52 [17] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 -- vwsz1=vwsz1_plus_vwsc1 + //SEG53 [17] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 -- vwsz1=vwsz1_plus_vwsc1 clc lda yvel_10 adc #g sta yvel_10+1 - //SEG53 [18] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 -- vwsz1=vwsz1_plus_vwsz2 + //SEG54 [18] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 -- vwsz1=vwsz1_plus_vwsz2 lda xpos clc adc xvel @@ -2388,7 +2391,7 @@ anim: { lda xpos+1 adc xvel+1 sta xpos+1 - //SEG54 [19] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 -- vwsz1=vwsz1_plus_vwsz2 + //SEG55 [19] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 -- vwsz1=vwsz1_plus_vwsz2 lda ypos clc adc yvel_10 @@ -2396,7 +2399,7 @@ anim: { lda ypos+1 adc yvel_10+1 sta ypos+1 - //SEG55 [20] (signed word~) anim::$10 ← (signed word) xpos#10 >> (byte/signed byte/word/signed word/dword/signed dword) 7 -- vwsz1=vwsz2_ror_7 + //SEG56 [20] (signed word~) anim::$10 ← (signed word) xpos#10 >> (byte/signed byte/word/signed word/dword/signed dword) 7 -- vwsz1=vwsz2_ror_7 lda xpos sta $ff lda xpos+1 @@ -2410,7 +2413,7 @@ anim: { rol $ff rol _10 rol _10+1 - //SEG56 [21] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word/dword/signed dword) 160 -- vwsz1=vwsz1_plus_vbuc1 + //SEG57 [21] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word/dword/signed dword) 160 -- vwsz1=vwsz1_plus_vbuc1 clc lda sprite_x adc #<$a0 @@ -2418,7 +2421,7 @@ anim: { lda sprite_x+1 adc #>$a0 sta sprite_x+1 - //SEG57 [22] (signed word~) anim::$12 ← (signed word) ypos#11 >> (byte/signed byte/word/signed word/dword/signed dword) 5 -- vwsz1=vwsz2_ror_5 + //SEG58 [22] (signed word~) anim::$12 ← (signed word) ypos#11 >> (byte/signed byte/word/signed word/dword/signed dword) 5 -- vwsz1=vwsz2_ror_5 lda ypos sta $ff lda ypos+1 @@ -2438,7 +2441,7 @@ anim: { rol $ff rol _12 rol _12+1 - //SEG58 [23] (signed word) anim::sprite_y#0 ← (byte/word/signed word/dword/signed dword) 230 - (signed word~) anim::$12 -- vwsz1=vbuc1_minus_vwsz1 + //SEG59 [23] (signed word) anim::sprite_y#0 ← (byte/word/signed word/dword/signed dword) 230 - (signed word~) anim::$12 -- vwsz1=vbuc1_minus_vwsz1 lda #<$e6 sec sbc sprite_y @@ -2446,92 +2449,92 @@ anim: { lda #>$e6 sbc sprite_y+1 sta sprite_y+1 - //SEG59 [24] (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x#0 -- vbuaa=_byte_vwsz1 + //SEG60 [24] (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x#0 -- vbuaa=_byte_vwsz1 lda sprite_x - //SEG60 [25] *((const byte*) SPRITES_XPOS#0) ← (byte~) anim::$14 -- _deref_pbuc1=vbuaa + //SEG61 [25] *((const byte*) SPRITES_XPOS#0) ← (byte~) anim::$14 -- _deref_pbuc1=vbuaa sta SPRITES_XPOS - //SEG61 [26] (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y#0 -- vbuaa=_byte_vwsz1 + //SEG62 [26] (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y#0 -- vbuaa=_byte_vwsz1 lda sprite_y - //SEG62 [27] *((const byte*) SPRITES_YPOS#0) ← (byte~) anim::$15 -- _deref_pbuc1=vbuaa + //SEG63 [27] *((const byte*) SPRITES_YPOS#0) ← (byte~) anim::$15 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG63 [28] (byte~) anim::$16 ← > (signed word) anim::sprite_x#0 -- vbuaa=_hi_vwsz1 + //SEG64 [28] (byte~) anim::$16 ← > (signed word) anim::sprite_x#0 -- vbuaa=_hi_vwsz1 lda sprite_x+1 - //SEG64 [29] *((const byte*) SPRITES_XMSB#0) ← (byte~) anim::$16 -- _deref_pbuc1=vbuaa + //SEG65 [29] *((const byte*) SPRITES_XMSB#0) ← (byte~) anim::$16 -- _deref_pbuc1=vbuaa sta SPRITES_XMSB - //SEG65 anim::@return - //SEG66 [30] return + //SEG66 anim::@return + //SEG67 [30] return rts - //SEG67 [31] phi from anim::@3 to anim::@5 [phi:anim::@3->anim::@5] - //SEG68 anim::@5 - //SEG69 [14] phi from anim::@5 to anim::@2 [phi:anim::@5->anim::@2] - //SEG70 [14] phi (signed word) yvel#4 = (signed word) yvel_init#3 [phi:anim::@5->anim::@2#0] -- register_copy + //SEG68 [31] phi from anim::@3 to anim::@5 [phi:anim::@3->anim::@5] + //SEG69 anim::@5 + //SEG70 [14] phi from anim::@5 to anim::@2 [phi:anim::@5->anim::@2] + //SEG71 [14] phi (signed word) yvel#4 = (signed word) yvel_init#3 [phi:anim::@5->anim::@2#0] -- register_copy } -//SEG71 init +//SEG72 init // Fill and show a sprite, clear the screen init: { .label sc = 2 - //SEG72 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG73 [32] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SPRITES_ENABLE - //SEG73 [33] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG74 [33] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - //SEG74 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG75 [34] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y - //SEG75 [35] *((const byte*) SPRITES_XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 + //SEG76 [35] *((const byte*) SPRITES_XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 lda #$64 sta SPRITES_XPOS - //SEG76 [36] *((const byte*) SPRITES_YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 + //SEG77 [36] *((const byte*) SPRITES_YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 100 -- _deref_pbuc1=vbuc2 sta SPRITES_YPOS - //SEG77 [37] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + //SEG78 [37] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 lda #WHITE sta SPRITES_COLS - //SEG78 [38] *((const byte*) SPRITES_PTR#0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- _deref_pbuc1=vbuc2 + //SEG79 [38] *((const byte*) SPRITES_PTR#0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- _deref_pbuc1=vbuc2 lda #$ff&SPRITE/$40 sta SPRITES_PTR - //SEG79 [39] phi from init to init::@1 [phi:init->init::@1] - //SEG80 [39] phi (byte*) init::sc#2 = (const byte*) SCREEN#0 [phi:init->init::@1#0] -- pbuz1=pbuc1 + //SEG80 [39] phi from init to init::@1 [phi:init->init::@1] + //SEG81 [39] phi (byte*) init::sc#2 = (const byte*) SCREEN#0 [phi:init->init::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG81 [39] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG82 [39] phi (byte*) init::sc#2 = (byte*) init::sc#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG83 init::@1 + //SEG82 [39] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG83 [39] phi (byte*) init::sc#2 = (byte*) init::sc#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG84 init::@1 b1: - //SEG84 [40] *((byte*) init::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG85 [40] *((byte*) init::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG85 [41] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 -- pbuz1=_inc_pbuz1 + //SEG86 [41] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG86 [42] if((byte*) init::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG87 [42] if((byte*) init::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1 lda sc cmp #init::@2] - //SEG88 [43] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#0] -- vbuxx=vbuc1 + //SEG88 [43] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG89 [43] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG89 [43] phi from init::@2 to init::@2 [phi:init::@2->init::@2] - //SEG90 [43] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG91 init::@2 + //SEG90 [43] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG91 [43] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG92 init::@2 b2: - //SEG92 [44] *((const byte*) SPRITE#0 + (byte) init::i#2) ← (byte/word/signed word/dword/signed dword) 255 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG93 [44] *((const byte*) SPRITE#0 + (byte) init::i#2) ← (byte/word/signed word/dword/signed dword) 255 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff sta SPRITE,x - //SEG93 [45] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG94 [45] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG94 [46] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG95 [46] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$40 bne b2 - //SEG95 init::@return - //SEG96 [47] return + //SEG96 init::@return + //SEG97 [47] return rts } diff --git a/src/test/ref/sinus-basic.asm b/src/test/ref/sinus-basic.asm index 47515c82f..75c74dcfc 100644 --- a/src/test/ref/sinus-basic.asm +++ b/src/test/ref/sinus-basic.asm @@ -1,9 +1,6 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // Library wrapping the BASIC floating point functions - // See https://www.c64-wiki.com/wiki/Floating_point_arithmetic - // See http://www.pagetable.com/c64rom/c64rom_sc.html // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM .label memLo = $fe .label memHi = $ff diff --git a/src/test/ref/sinus-basic.log b/src/test/ref/sinus-basic.log index 0543011e8..01c6ba639 100644 --- a/src/test/ref/sinus-basic.log +++ b/src/test/ref/sinus-basic.log @@ -1063,250 +1063,248 @@ Allocated zp ZP_BYTE:25 [ prepareMEM::$0 ] Allocated zp ZP_BYTE:26 [ prepareMEM::$1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Library wrapping the BASIC floating point functions - // See https://www.c64-wiki.com/wiki/Floating_point_arithmetic - // See http://www.pagetable.com/c64rom/c64rom_sc.html +//SEG2 Global Constants & labels // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM .label memLo = $fe .label memHi = $ff .label print_line_cursor = 3 .label print_char_cursor = 7 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @47 [phi:@begin->@47] +//SEG4 [1] phi from @begin to @47 [phi:@begin->@47] b47_from_bbegin: jmp b47 -//SEG4 @47 +//SEG5 @47 b47: -//SEG5 [2] call main -//SEG6 [4] phi from @47 to main [phi:@47->main] +//SEG6 [2] call main +//SEG7 [4] phi from @47 to main [phi:@47->main] main_from_b47: jsr main -//SEG7 [3] phi from @47 to @end [phi:@47->@end] +//SEG8 [3] phi from @47 to @end [phi:@47->@end] bend_from_b47: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label f_2pi = $e2e5 .label i = 2 - //SEG10 [5] call setFAC - //SEG11 [84] phi from main to setFAC [phi:main->setFAC] + //SEG11 [5] call setFAC + //SEG12 [84] phi from main to setFAC [phi:main->setFAC] setFAC_from_main: - //SEG12 [84] phi (word) setFAC::w#3 = (word/signed word/dword/signed dword) 1275 [phi:main->setFAC#0] -- vwuz1=vwuc1 + //SEG13 [84] phi (word) setFAC::w#3 = (word/signed word/dword/signed dword) 1275 [phi:main->setFAC#0] -- vwuz1=vwuc1 lda #<$4fb sta setFAC.w lda #>$4fb sta setFAC.w+1 jsr setFAC - //SEG13 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG14 [6] phi from main to main::@3 [phi:main->main::@3] b3_from_main: jmp b3 - //SEG14 main::@3 + //SEG15 main::@3 b3: - //SEG15 [7] call divFACby10 + //SEG16 [7] call divFACby10 jsr divFACby10 - //SEG16 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG17 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG17 main::@4 + //SEG18 main::@4 b4: - //SEG18 [9] call setMEMtoFAC - //SEG19 [89] phi from main::@4 to setMEMtoFAC [phi:main::@4->setMEMtoFAC] + //SEG19 [9] call setMEMtoFAC + //SEG20 [89] phi from main::@4 to setMEMtoFAC [phi:main::@4->setMEMtoFAC] setMEMtoFAC_from_b4: - //SEG20 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_127#0 [phi:main::@4->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG21 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_127#0 [phi:main::@4->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_127 sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG21 [10] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG22 [10] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG22 [10] phi (byte*) print_line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) print_line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG23 [10] phi (byte*) print_char_cursor#32 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#1] -- pbuz1=pbuc1 + //SEG24 [10] phi (byte*) print_char_cursor#32 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG24 [10] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@4->main::@1#2] -- vbuz1=vbuc1 + //SEG25 [10] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@4->main::@1#2] -- vbuz1=vbuc1 lda #1 sta i jmp b1 - //SEG25 main::@1 + //SEG26 main::@1 b1: - //SEG26 [11] (word) setFAC::w#1 ← ((word)) (byte) main::i#10 -- vwuz1=_word_vbuz2 + //SEG27 [11] (word) setFAC::w#1 ← ((word)) (byte) main::i#10 -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG27 [12] call setFAC - //SEG28 [84] phi from main::@1 to setFAC [phi:main::@1->setFAC] + //SEG28 [12] call setFAC + //SEG29 [84] phi from main::@1 to setFAC [phi:main::@1->setFAC] setFAC_from_b1: - //SEG29 [84] phi (word) setFAC::w#3 = (word) setFAC::w#1 [phi:main::@1->setFAC#0] -- register_copy + //SEG30 [84] phi (word) setFAC::w#3 = (word) setFAC::w#1 [phi:main::@1->setFAC#0] -- register_copy jsr setFAC - //SEG30 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG31 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG31 main::@6 + //SEG32 main::@6 b6: - //SEG32 [14] call mulFACbyMEM - //SEG33 [73] phi from main::@6 to mulFACbyMEM [phi:main::@6->mulFACbyMEM] + //SEG33 [14] call mulFACbyMEM + //SEG34 [73] phi from main::@6 to mulFACbyMEM [phi:main::@6->mulFACbyMEM] mulFACbyMEM_from_b6: - //SEG34 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) main::f_2pi#0 [phi:main::@6->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG35 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) main::f_2pi#0 [phi:main::@6->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG35 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG36 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: jmp b7 - //SEG36 main::@7 + //SEG37 main::@7 b7: - //SEG37 [16] call setMEMtoFAC - //SEG38 [89] phi from main::@7 to setMEMtoFAC [phi:main::@7->setMEMtoFAC] + //SEG38 [16] call setMEMtoFAC + //SEG39 [89] phi from main::@7 to setMEMtoFAC [phi:main::@7->setMEMtoFAC] setMEMtoFAC_from_b7: - //SEG39 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_i#0 [phi:main::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG40 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_i#0 [phi:main::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG40 [17] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG41 [17] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG41 main::@8 + //SEG42 main::@8 b8: - //SEG42 [18] call setFAC - //SEG43 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC] + //SEG43 [18] call setFAC + //SEG44 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC] setFAC_from_b8: - //SEG44 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG45 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1 lda #<$19 sta setFAC.w lda #>$19 sta setFAC.w+1 jsr setFAC - //SEG45 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG46 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG46 main::@9 + //SEG47 main::@9 b9: - //SEG47 [20] call divMEMbyFAC - //SEG48 [80] phi from main::@9 to divMEMbyFAC [phi:main::@9->divMEMbyFAC] + //SEG48 [20] call divMEMbyFAC + //SEG49 [80] phi from main::@9 to divMEMbyFAC [phi:main::@9->divMEMbyFAC] divMEMbyFAC_from_b9: jsr divMEMbyFAC - //SEG49 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG50 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG50 main::@10 + //SEG51 main::@10 b10: - //SEG51 [22] call sinFAC + //SEG52 [22] call sinFAC jsr sinFAC - //SEG52 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG53 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] b11_from_b10: jmp b11 - //SEG53 main::@11 + //SEG54 main::@11 b11: - //SEG54 [24] call mulFACbyMEM - //SEG55 [73] phi from main::@11 to mulFACbyMEM [phi:main::@11->mulFACbyMEM] + //SEG55 [24] call mulFACbyMEM + //SEG56 [73] phi from main::@11 to mulFACbyMEM [phi:main::@11->mulFACbyMEM] mulFACbyMEM_from_b11: - //SEG56 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) main::f_127#0 [phi:main::@11->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG57 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) main::f_127#0 [phi:main::@11->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_127 sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG57 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG58 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG58 main::@12 + //SEG59 main::@12 b12: - //SEG59 [26] call addMEMtoFAC - //SEG60 [63] phi from main::@12 to addMEMtoFAC [phi:main::@12->addMEMtoFAC] + //SEG60 [26] call addMEMtoFAC + //SEG61 [63] phi from main::@12 to addMEMtoFAC [phi:main::@12->addMEMtoFAC] addMEMtoFAC_from_b12: jsr addMEMtoFAC - //SEG61 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + //SEG62 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] b13_from_b12: jmp b13 - //SEG62 main::@13 + //SEG63 main::@13 b13: - //SEG63 [28] call getFAC + //SEG64 [28] call getFAC jsr getFAC - //SEG64 [29] (word) getFAC::return#2 ← (word) getFAC::return#0 -- vwuz1=vwuz2 + //SEG65 [29] (word) getFAC::return#2 ← (word) getFAC::return#0 -- vwuz1=vwuz2 lda getFAC.return sta getFAC.return_2 lda getFAC.return+1 sta getFAC.return_2+1 jmp b14 - //SEG65 main::@14 + //SEG66 main::@14 b14: - //SEG66 [30] (word) print_word::w#0 ← (word) getFAC::return#2 -- vwuz1=vwuz2 + //SEG67 [30] (word) print_word::w#0 ← (word) getFAC::return#2 -- vwuz1=vwuz2 lda getFAC.return_2 sta print_word.w lda getFAC.return_2+1 sta print_word.w+1 - //SEG67 [31] call print_word + //SEG68 [31] call print_word jsr print_word - //SEG68 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + //SEG69 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] b15_from_b14: jmp b15 - //SEG69 main::@15 + //SEG70 main::@15 b15: - //SEG70 [33] call print_ln - //SEG71 [38] phi from main::@15 to print_ln [phi:main::@15->print_ln] + //SEG71 [33] call print_ln + //SEG72 [38] phi from main::@15 to print_ln [phi:main::@15->print_ln] print_ln_from_b15: jsr print_ln jmp b16 - //SEG72 main::@16 + //SEG73 main::@16 b16: - //SEG73 [34] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + //SEG74 [34] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG74 [35] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 26) goto main::@17 -- vbuz1_neq_vbuc1_then_la1 + //SEG75 [35] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 26) goto main::@17 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$1a bne b17 jmp breturn - //SEG75 main::@return + //SEG76 main::@return breturn: - //SEG76 [36] return + //SEG77 [36] return rts - //SEG77 main::@17 + //SEG78 main::@17 b17: - //SEG78 [37] (byte*~) print_char_cursor#49 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG79 [37] (byte*~) print_char_cursor#49 ← (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 - //SEG79 [10] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG80 [10] phi from main::@17 to main::@1 [phi:main::@17->main::@1] b1_from_b17: - //SEG80 [10] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@17->main::@1#0] -- register_copy - //SEG81 [10] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#49 [phi:main::@17->main::@1#1] -- register_copy - //SEG82 [10] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@17->main::@1#2] -- register_copy + //SEG81 [10] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@17->main::@1#0] -- register_copy + //SEG82 [10] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#49 [phi:main::@17->main::@1#1] -- register_copy + //SEG83 [10] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@17->main::@1#2] -- register_copy jmp b1 f_i: .byte 0, 0, 0, 0, 0 f_127: .byte 0, 0, 0, 0, 0 } -//SEG83 print_ln +//SEG84 print_ln // Print a newline print_ln: { - //SEG84 [39] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG85 [39] 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: - //SEG85 [39] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG86 [39] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG86 print_ln::@1 + //SEG87 print_ln::@1 b1: - //SEG87 [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG88 [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -1314,7 +1312,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG88 [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG89 [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1324,316 +1322,316 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG89 print_ln::@return + //SEG90 print_ln::@return breturn: - //SEG90 [42] return + //SEG91 [42] return rts } -//SEG91 print_word +//SEG92 print_word // Print a word as HEX print_word: { .label w = $13 - //SEG92 [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG93 [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG93 [44] call print_byte - //SEG94 [48] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG94 [44] call print_byte + //SEG95 [48] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG95 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#32 [phi:print_word->print_byte#0] -- register_copy - //SEG96 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG96 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#32 [phi:print_word->print_byte#0] -- register_copy + //SEG97 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG97 print_word::@1 + //SEG98 print_word::@1 b1: - //SEG98 [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG99 [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG99 [46] call print_byte - //SEG100 [48] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG100 [46] call print_byte + //SEG101 [48] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG101 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG102 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG102 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG103 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG103 print_word::@return + //SEG104 print_word::@return breturn: - //SEG104 [47] return + //SEG105 [47] return rts } -//SEG105 print_byte +//SEG106 print_byte // Print a byte as HEX print_byte: { .label _0 = $15 .label _2 = $16 .label b = 5 - //SEG106 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG107 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG108 [50] (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 - //SEG108 [51] call print_char - //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG109 [51] call print_char + //SEG110 [56] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG110 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#31 [phi:print_byte->print_char#0] -- register_copy - //SEG111 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG111 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#31 [phi:print_byte->print_char#0] -- register_copy + //SEG112 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG112 print_byte::@1 + //SEG113 print_byte::@1 b1: - //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG114 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG115 [53] (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 - //SEG115 [54] call print_char - //SEG116 [56] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG116 [54] call print_char + //SEG117 [56] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG117 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG118 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG118 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG119 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG119 print_byte::@return + //SEG120 print_byte::@return breturn: - //SEG120 [55] return + //SEG121 [55] return rts } -//SEG121 print_char +//SEG122 print_char // Print a single char print_char: { .label ch = 6 - //SEG122 [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuz2 + //SEG123 [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG123 [58] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#23 -- pbuz1=_inc_pbuz1 + //SEG124 [58] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#23 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG124 print_char::@return + //SEG125 print_char::@return breturn: - //SEG125 [59] return + //SEG126 [59] return rts } -//SEG126 getFAC +//SEG127 getFAC // word = FAC // Get the value of the FAC (floating point accumulator) as an integer 16bit word // Destroys the value in the FAC in the process getFAC: { .label return = $17 .label return_2 = $11 - //SEG127 asm { jsr$b1aa sty$fe sta$ff } + //SEG128 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe sta $ff - //SEG128 [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG129 [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 jmp breturn - //SEG129 getFAC::@return + //SEG130 getFAC::@return breturn: - //SEG130 [62] return + //SEG131 [62] return rts } -//SEG131 addMEMtoFAC +//SEG132 addMEMtoFAC // FAC = MEM+FAC // Set FAC to MEM (float saved in memory) plus FAC (float accumulator) // Reads 5 bytes from memory addMEMtoFAC: { - //SEG132 [64] call prepareMEM - //SEG133 [67] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG133 [64] call prepareMEM + //SEG134 [67] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] prepareMEM_from_addMEMtoFAC: - //SEG134 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_127#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG135 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_127#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #main.f_127 sta prepareMEM.mem+1 jsr prepareMEM jmp b1 - //SEG135 addMEMtoFAC::@1 + //SEG136 addMEMtoFAC::@1 b1: - //SEG136 asm { lda$fe ldy$ff jsr$b867 } + //SEG137 asm { lda$fe ldy$ff jsr$b867 } lda $fe ldy $ff jsr $b867 jmp breturn - //SEG137 addMEMtoFAC::@return + //SEG138 addMEMtoFAC::@return breturn: - //SEG138 [66] return + //SEG139 [66] return rts } -//SEG139 prepareMEM +//SEG140 prepareMEM // Prepare MEM pointers for operations using MEM prepareMEM: { .label _0 = $19 .label _1 = $1a .label mem = 9 - //SEG140 [68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuz1=_lo_pbuz2 + //SEG141 [68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuz1=_lo_pbuz2 lda mem sta _0 - //SEG141 [69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuz1 + //SEG142 [69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuz1 lda _0 sta memLo - //SEG142 [70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuz1=_hi_pbuz2 + //SEG143 [70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuz1=_hi_pbuz2 lda mem+1 sta _1 - //SEG143 [71] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuz1 + //SEG144 [71] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuz1 lda _1 sta memHi jmp breturn - //SEG144 prepareMEM::@return + //SEG145 prepareMEM::@return breturn: - //SEG145 [72] return + //SEG146 [72] return rts } -//SEG146 mulFACbyMEM +//SEG147 mulFACbyMEM // FAC = MEM*FAC // Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator) // Reads 5 bytes from memory mulFACbyMEM: { .label mem = $b - //SEG147 [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 -- pbuz1=pbuz2 + //SEG148 [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG148 [75] call prepareMEM - //SEG149 [67] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG149 [75] call prepareMEM + //SEG150 [67] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] prepareMEM_from_mulFACbyMEM: - //SEG150 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG151 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG151 mulFACbyMEM::@1 + //SEG152 mulFACbyMEM::@1 b1: - //SEG152 asm { lda$fe ldy$ff jsr$ba28 } + //SEG153 asm { lda$fe ldy$ff jsr$ba28 } lda $fe ldy $ff jsr $ba28 jmp breturn - //SEG153 mulFACbyMEM::@return + //SEG154 mulFACbyMEM::@return breturn: - //SEG154 [77] return + //SEG155 [77] return rts } -//SEG155 sinFAC +//SEG156 sinFAC // FAC = sin(FAC) // Set FAC to sinus of the FAC - sin(FAC) // Sinus is calculated on radians (0-2*PI) sinFAC: { - //SEG156 asm { jsr$e26b } + //SEG157 asm { jsr$e26b } jsr $e26b jmp breturn - //SEG157 sinFAC::@return + //SEG158 sinFAC::@return breturn: - //SEG158 [79] return + //SEG159 [79] return rts } -//SEG159 divMEMbyFAC +//SEG160 divMEMbyFAC // FAC = MEM/FAC // Set FAC to MEM (float saved in memory) divided by FAC (float accumulator) // Reads 5 bytes from memory divMEMbyFAC: { - //SEG160 [81] call prepareMEM - //SEG161 [67] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG161 [81] call prepareMEM + //SEG162 [67] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] prepareMEM_from_divMEMbyFAC: - //SEG162 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_i#0 [phi:divMEMbyFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG163 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_i#0 [phi:divMEMbyFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #main.f_i sta prepareMEM.mem+1 jsr prepareMEM jmp b1 - //SEG163 divMEMbyFAC::@1 + //SEG164 divMEMbyFAC::@1 b1: - //SEG164 asm { lda$fe ldy$ff jsr$bb0f } + //SEG165 asm { lda$fe ldy$ff jsr$bb0f } lda $fe ldy $ff jsr $bb0f jmp breturn - //SEG165 divMEMbyFAC::@return + //SEG166 divMEMbyFAC::@return breturn: - //SEG166 [83] return + //SEG167 [83] return rts } -//SEG167 setFAC +//SEG168 setFAC // FAC = word // Set the FAC (floating point accumulator) to the integer value of a 16bit word setFAC: { .label w = $d - //SEG168 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 -- pbuz1=pbuz2 + //SEG169 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 -- pbuz1=pbuz2 lda w sta prepareMEM.mem lda w+1 sta prepareMEM.mem+1 - //SEG169 [86] call prepareMEM - //SEG170 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG170 [86] call prepareMEM + //SEG171 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] prepareMEM_from_setFAC: - //SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG172 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG172 setFAC::@1 + //SEG173 setFAC::@1 b1: - //SEG173 asm { ldy$fe lda$ff jsr$b391 } + //SEG174 asm { ldy$fe lda$ff jsr$b391 } ldy $fe lda $ff jsr $b391 jmp breturn - //SEG174 setFAC::@return + //SEG175 setFAC::@return breturn: - //SEG175 [88] return + //SEG176 [88] return rts } -//SEG176 setMEMtoFAC +//SEG177 setMEMtoFAC // MEM = FAC // Stores the value of the FAC to memory // Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};) setMEMtoFAC: { .label mem = $f - //SEG177 [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 -- pbuz1=pbuz2 + //SEG178 [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG178 [91] call prepareMEM - //SEG179 [67] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG179 [91] call prepareMEM + //SEG180 [67] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] prepareMEM_from_setMEMtoFAC: - //SEG180 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG181 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG181 setMEMtoFAC::@1 + //SEG182 setMEMtoFAC::@1 b1: - //SEG182 asm { ldx$fe ldy$ff jsr$bbd4 } + //SEG183 asm { ldx$fe ldy$ff jsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 jmp breturn - //SEG183 setMEMtoFAC::@return + //SEG184 setMEMtoFAC::@return breturn: - //SEG184 [93] return + //SEG185 [93] return rts } -//SEG185 divFACby10 +//SEG186 divFACby10 // FAC = FAC/10 // Set FAC to FAC divided by 10 divFACby10: { - //SEG186 asm { jsr$bafe } + //SEG187 asm { jsr$bafe } jsr $bafe jmp breturn - //SEG187 divFACby10::@return + //SEG188 divFACby10::@return breturn: - //SEG188 [95] return + //SEG189 [95] return rts } print_hextab: .text "0123456789abcdef" @@ -1746,242 +1744,240 @@ Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ print_char_cursor#23 print_char_curs Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Library wrapping the BASIC floating point functions - // See https://www.c64-wiki.com/wiki/Floating_point_arithmetic - // See http://www.pagetable.com/c64rom/c64rom_sc.html +//SEG2 Global Constants & labels // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM .label memLo = $fe .label memHi = $ff .label print_line_cursor = 3 .label print_char_cursor = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @47 [phi:@begin->@47] +//SEG4 [1] phi from @begin to @47 [phi:@begin->@47] b47_from_bbegin: jmp b47 -//SEG4 @47 +//SEG5 @47 b47: -//SEG5 [2] call main -//SEG6 [4] phi from @47 to main [phi:@47->main] +//SEG6 [2] call main +//SEG7 [4] phi from @47 to main [phi:@47->main] main_from_b47: jsr main -//SEG7 [3] phi from @47 to @end [phi:@47->@end] +//SEG8 [3] phi from @47 to @end [phi:@47->@end] bend_from_b47: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label f_2pi = $e2e5 .label i = 2 - //SEG10 [5] call setFAC - //SEG11 [84] phi from main to setFAC [phi:main->setFAC] + //SEG11 [5] call setFAC + //SEG12 [84] phi from main to setFAC [phi:main->setFAC] setFAC_from_main: - //SEG12 [84] phi (word) setFAC::w#3 = (word/signed word/dword/signed dword) 1275 [phi:main->setFAC#0] -- vwuz1=vwuc1 + //SEG13 [84] phi (word) setFAC::w#3 = (word/signed word/dword/signed dword) 1275 [phi:main->setFAC#0] -- vwuz1=vwuc1 lda #<$4fb sta setFAC.w lda #>$4fb sta setFAC.w+1 jsr setFAC - //SEG13 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG14 [6] phi from main to main::@3 [phi:main->main::@3] b3_from_main: jmp b3 - //SEG14 main::@3 + //SEG15 main::@3 b3: - //SEG15 [7] call divFACby10 + //SEG16 [7] call divFACby10 jsr divFACby10 - //SEG16 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG17 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG17 main::@4 + //SEG18 main::@4 b4: - //SEG18 [9] call setMEMtoFAC - //SEG19 [89] phi from main::@4 to setMEMtoFAC [phi:main::@4->setMEMtoFAC] + //SEG19 [9] call setMEMtoFAC + //SEG20 [89] phi from main::@4 to setMEMtoFAC [phi:main::@4->setMEMtoFAC] setMEMtoFAC_from_b4: - //SEG20 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_127#0 [phi:main::@4->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG21 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_127#0 [phi:main::@4->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_127 sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG21 [10] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG22 [10] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG22 [10] phi (byte*) print_line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) print_line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG23 [10] phi (byte*) print_char_cursor#32 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#1] -- pbuz1=pbuc1 + //SEG24 [10] phi (byte*) print_char_cursor#32 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG24 [10] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@4->main::@1#2] -- vbuz1=vbuc1 + //SEG25 [10] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@4->main::@1#2] -- vbuz1=vbuc1 lda #1 sta i jmp b1 - //SEG25 main::@1 + //SEG26 main::@1 b1: - //SEG26 [11] (word) setFAC::w#1 ← ((word)) (byte) main::i#10 -- vwuz1=_word_vbuz2 + //SEG27 [11] (word) setFAC::w#1 ← ((word)) (byte) main::i#10 -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG27 [12] call setFAC - //SEG28 [84] phi from main::@1 to setFAC [phi:main::@1->setFAC] + //SEG28 [12] call setFAC + //SEG29 [84] phi from main::@1 to setFAC [phi:main::@1->setFAC] setFAC_from_b1: - //SEG29 [84] phi (word) setFAC::w#3 = (word) setFAC::w#1 [phi:main::@1->setFAC#0] -- register_copy + //SEG30 [84] phi (word) setFAC::w#3 = (word) setFAC::w#1 [phi:main::@1->setFAC#0] -- register_copy jsr setFAC - //SEG30 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG31 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG31 main::@6 + //SEG32 main::@6 b6: - //SEG32 [14] call mulFACbyMEM - //SEG33 [73] phi from main::@6 to mulFACbyMEM [phi:main::@6->mulFACbyMEM] + //SEG33 [14] call mulFACbyMEM + //SEG34 [73] phi from main::@6 to mulFACbyMEM [phi:main::@6->mulFACbyMEM] mulFACbyMEM_from_b6: - //SEG34 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) main::f_2pi#0 [phi:main::@6->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG35 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) main::f_2pi#0 [phi:main::@6->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG35 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG36 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] b7_from_b6: jmp b7 - //SEG36 main::@7 + //SEG37 main::@7 b7: - //SEG37 [16] call setMEMtoFAC - //SEG38 [89] phi from main::@7 to setMEMtoFAC [phi:main::@7->setMEMtoFAC] + //SEG38 [16] call setMEMtoFAC + //SEG39 [89] phi from main::@7 to setMEMtoFAC [phi:main::@7->setMEMtoFAC] setMEMtoFAC_from_b7: - //SEG39 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_i#0 [phi:main::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG40 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_i#0 [phi:main::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG40 [17] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG41 [17] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG41 main::@8 + //SEG42 main::@8 b8: - //SEG42 [18] call setFAC - //SEG43 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC] + //SEG43 [18] call setFAC + //SEG44 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC] setFAC_from_b8: - //SEG44 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG45 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1 lda #<$19 sta setFAC.w lda #>$19 sta setFAC.w+1 jsr setFAC - //SEG45 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG46 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] b9_from_b8: jmp b9 - //SEG46 main::@9 + //SEG47 main::@9 b9: - //SEG47 [20] call divMEMbyFAC - //SEG48 [80] phi from main::@9 to divMEMbyFAC [phi:main::@9->divMEMbyFAC] + //SEG48 [20] call divMEMbyFAC + //SEG49 [80] phi from main::@9 to divMEMbyFAC [phi:main::@9->divMEMbyFAC] divMEMbyFAC_from_b9: jsr divMEMbyFAC - //SEG49 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG50 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG50 main::@10 + //SEG51 main::@10 b10: - //SEG51 [22] call sinFAC + //SEG52 [22] call sinFAC jsr sinFAC - //SEG52 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG53 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] b11_from_b10: jmp b11 - //SEG53 main::@11 + //SEG54 main::@11 b11: - //SEG54 [24] call mulFACbyMEM - //SEG55 [73] phi from main::@11 to mulFACbyMEM [phi:main::@11->mulFACbyMEM] + //SEG55 [24] call mulFACbyMEM + //SEG56 [73] phi from main::@11 to mulFACbyMEM [phi:main::@11->mulFACbyMEM] mulFACbyMEM_from_b11: - //SEG56 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) main::f_127#0 [phi:main::@11->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG57 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) main::f_127#0 [phi:main::@11->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_127 sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG57 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG58 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG58 main::@12 + //SEG59 main::@12 b12: - //SEG59 [26] call addMEMtoFAC - //SEG60 [63] phi from main::@12 to addMEMtoFAC [phi:main::@12->addMEMtoFAC] + //SEG60 [26] call addMEMtoFAC + //SEG61 [63] phi from main::@12 to addMEMtoFAC [phi:main::@12->addMEMtoFAC] addMEMtoFAC_from_b12: jsr addMEMtoFAC - //SEG61 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + //SEG62 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] b13_from_b12: jmp b13 - //SEG62 main::@13 + //SEG63 main::@13 b13: - //SEG63 [28] call getFAC + //SEG64 [28] call getFAC jsr getFAC - //SEG64 [29] (word) getFAC::return#2 ← (word) getFAC::return#0 + //SEG65 [29] (word) getFAC::return#2 ← (word) getFAC::return#0 jmp b14 - //SEG65 main::@14 + //SEG66 main::@14 b14: - //SEG66 [30] (word) print_word::w#0 ← (word) getFAC::return#2 - //SEG67 [31] call print_word + //SEG67 [30] (word) print_word::w#0 ← (word) getFAC::return#2 + //SEG68 [31] call print_word jsr print_word - //SEG68 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + //SEG69 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] b15_from_b14: jmp b15 - //SEG69 main::@15 + //SEG70 main::@15 b15: - //SEG70 [33] call print_ln - //SEG71 [38] phi from main::@15 to print_ln [phi:main::@15->print_ln] + //SEG71 [33] call print_ln + //SEG72 [38] phi from main::@15 to print_ln [phi:main::@15->print_ln] print_ln_from_b15: jsr print_ln jmp b16 - //SEG72 main::@16 + //SEG73 main::@16 b16: - //SEG73 [34] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + //SEG74 [34] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG74 [35] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 26) goto main::@17 -- vbuz1_neq_vbuc1_then_la1 + //SEG75 [35] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 26) goto main::@17 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$1a bne b17 jmp breturn - //SEG75 main::@return + //SEG76 main::@return breturn: - //SEG76 [36] return + //SEG77 [36] return rts - //SEG77 main::@17 + //SEG78 main::@17 b17: - //SEG78 [37] (byte*~) print_char_cursor#49 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG79 [37] (byte*~) print_char_cursor#49 ← (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 - //SEG79 [10] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG80 [10] phi from main::@17 to main::@1 [phi:main::@17->main::@1] b1_from_b17: - //SEG80 [10] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@17->main::@1#0] -- register_copy - //SEG81 [10] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#49 [phi:main::@17->main::@1#1] -- register_copy - //SEG82 [10] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@17->main::@1#2] -- register_copy + //SEG81 [10] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@17->main::@1#0] -- register_copy + //SEG82 [10] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#49 [phi:main::@17->main::@1#1] -- register_copy + //SEG83 [10] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@17->main::@1#2] -- register_copy jmp b1 f_i: .byte 0, 0, 0, 0, 0 f_127: .byte 0, 0, 0, 0, 0 } -//SEG83 print_ln +//SEG84 print_ln // Print a newline print_ln: { - //SEG84 [39] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG85 [39] 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: - //SEG85 [39] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG86 [39] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG86 print_ln::@1 + //SEG87 print_ln::@1 b1: - //SEG87 [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG88 [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -1989,7 +1985,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG88 [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG89 [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1999,288 +1995,288 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG89 print_ln::@return + //SEG90 print_ln::@return breturn: - //SEG90 [42] return + //SEG91 [42] return rts } -//SEG91 print_word +//SEG92 print_word // Print a word as HEX print_word: { .label w = 7 - //SEG92 [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + //SEG93 [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG93 [44] call print_byte - //SEG94 [48] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG94 [44] call print_byte + //SEG95 [48] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG95 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#32 [phi:print_word->print_byte#0] -- register_copy - //SEG96 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG96 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#32 [phi:print_word->print_byte#0] -- register_copy + //SEG97 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG97 print_word::@1 + //SEG98 print_word::@1 b1: - //SEG98 [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 + //SEG99 [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 lda w tax - //SEG99 [46] call print_byte - //SEG100 [48] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG100 [46] call print_byte + //SEG101 [48] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG101 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG102 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG102 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG103 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG103 print_word::@return + //SEG104 print_word::@return breturn: - //SEG104 [47] return + //SEG105 [47] return rts } -//SEG105 print_byte +//SEG106 print_byte // Print a byte as HEX print_byte: { - //SEG106 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG107 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG108 [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG108 [51] call print_char - //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG109 [51] call print_char + //SEG110 [56] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG110 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#31 [phi:print_byte->print_char#0] -- register_copy - //SEG111 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG111 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#31 [phi:print_byte->print_char#0] -- register_copy + //SEG112 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG112 print_byte::@1 + //SEG113 print_byte::@1 b1: - //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG114 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG115 [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG115 [54] call print_char - //SEG116 [56] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG116 [54] call print_char + //SEG117 [56] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG117 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG118 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG118 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG119 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG119 print_byte::@return + //SEG120 print_byte::@return breturn: - //SEG120 [55] return + //SEG121 [55] return rts } -//SEG121 print_char +//SEG122 print_char // Print a single char print_char: { - //SEG122 [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa + //SEG123 [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG123 [58] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#23 -- pbuz1=_inc_pbuz1 + //SEG124 [58] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#23 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG124 print_char::@return + //SEG125 print_char::@return breturn: - //SEG125 [59] return + //SEG126 [59] return rts } -//SEG126 getFAC +//SEG127 getFAC // word = FAC // Get the value of the FAC (floating point accumulator) as an integer 16bit word // Destroys the value in the FAC in the process getFAC: { .label return = 7 - //SEG127 asm { jsr$b1aa sty$fe sta$ff } + //SEG128 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe sta $ff - //SEG128 [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG129 [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 jmp breturn - //SEG129 getFAC::@return + //SEG130 getFAC::@return breturn: - //SEG130 [62] return + //SEG131 [62] return rts } -//SEG131 addMEMtoFAC +//SEG132 addMEMtoFAC // FAC = MEM+FAC // Set FAC to MEM (float saved in memory) plus FAC (float accumulator) // Reads 5 bytes from memory addMEMtoFAC: { - //SEG132 [64] call prepareMEM - //SEG133 [67] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG133 [64] call prepareMEM + //SEG134 [67] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] prepareMEM_from_addMEMtoFAC: - //SEG134 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_127#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG135 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_127#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #main.f_127 sta prepareMEM.mem+1 jsr prepareMEM jmp b1 - //SEG135 addMEMtoFAC::@1 + //SEG136 addMEMtoFAC::@1 b1: - //SEG136 asm { lda$fe ldy$ff jsr$b867 } + //SEG137 asm { lda$fe ldy$ff jsr$b867 } lda $fe ldy $ff jsr $b867 jmp breturn - //SEG137 addMEMtoFAC::@return + //SEG138 addMEMtoFAC::@return breturn: - //SEG138 [66] return + //SEG139 [66] return rts } -//SEG139 prepareMEM +//SEG140 prepareMEM // Prepare MEM pointers for operations using MEM prepareMEM: { .label mem = 7 - //SEG140 [68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuaa=_lo_pbuz1 + //SEG141 [68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuaa=_lo_pbuz1 lda mem - //SEG141 [69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuaa + //SEG142 [69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuaa sta memLo - //SEG142 [70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuaa=_hi_pbuz1 + //SEG143 [70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuaa=_hi_pbuz1 lda mem+1 - //SEG143 [71] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuaa + //SEG144 [71] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuaa sta memHi jmp breturn - //SEG144 prepareMEM::@return + //SEG145 prepareMEM::@return breturn: - //SEG145 [72] return + //SEG146 [72] return rts } -//SEG146 mulFACbyMEM +//SEG147 mulFACbyMEM // FAC = MEM*FAC // Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator) // Reads 5 bytes from memory mulFACbyMEM: { .label mem = 7 - //SEG147 [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 - //SEG148 [75] call prepareMEM - //SEG149 [67] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG148 [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 + //SEG149 [75] call prepareMEM + //SEG150 [67] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] prepareMEM_from_mulFACbyMEM: - //SEG150 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG151 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG151 mulFACbyMEM::@1 + //SEG152 mulFACbyMEM::@1 b1: - //SEG152 asm { lda$fe ldy$ff jsr$ba28 } + //SEG153 asm { lda$fe ldy$ff jsr$ba28 } lda $fe ldy $ff jsr $ba28 jmp breturn - //SEG153 mulFACbyMEM::@return + //SEG154 mulFACbyMEM::@return breturn: - //SEG154 [77] return + //SEG155 [77] return rts } -//SEG155 sinFAC +//SEG156 sinFAC // FAC = sin(FAC) // Set FAC to sinus of the FAC - sin(FAC) // Sinus is calculated on radians (0-2*PI) sinFAC: { - //SEG156 asm { jsr$e26b } + //SEG157 asm { jsr$e26b } jsr $e26b jmp breturn - //SEG157 sinFAC::@return + //SEG158 sinFAC::@return breturn: - //SEG158 [79] return + //SEG159 [79] return rts } -//SEG159 divMEMbyFAC +//SEG160 divMEMbyFAC // FAC = MEM/FAC // Set FAC to MEM (float saved in memory) divided by FAC (float accumulator) // Reads 5 bytes from memory divMEMbyFAC: { - //SEG160 [81] call prepareMEM - //SEG161 [67] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG161 [81] call prepareMEM + //SEG162 [67] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] prepareMEM_from_divMEMbyFAC: - //SEG162 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_i#0 [phi:divMEMbyFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG163 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_i#0 [phi:divMEMbyFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #main.f_i sta prepareMEM.mem+1 jsr prepareMEM jmp b1 - //SEG163 divMEMbyFAC::@1 + //SEG164 divMEMbyFAC::@1 b1: - //SEG164 asm { lda$fe ldy$ff jsr$bb0f } + //SEG165 asm { lda$fe ldy$ff jsr$bb0f } lda $fe ldy $ff jsr $bb0f jmp breturn - //SEG165 divMEMbyFAC::@return + //SEG166 divMEMbyFAC::@return breturn: - //SEG166 [83] return + //SEG167 [83] return rts } -//SEG167 setFAC +//SEG168 setFAC // FAC = word // Set the FAC (floating point accumulator) to the integer value of a 16bit word setFAC: { .label w = 7 - //SEG168 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 - //SEG169 [86] call prepareMEM - //SEG170 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG169 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 + //SEG170 [86] call prepareMEM + //SEG171 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] prepareMEM_from_setFAC: - //SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG172 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG172 setFAC::@1 + //SEG173 setFAC::@1 b1: - //SEG173 asm { ldy$fe lda$ff jsr$b391 } + //SEG174 asm { ldy$fe lda$ff jsr$b391 } ldy $fe lda $ff jsr $b391 jmp breturn - //SEG174 setFAC::@return + //SEG175 setFAC::@return breturn: - //SEG175 [88] return + //SEG176 [88] return rts } -//SEG176 setMEMtoFAC +//SEG177 setMEMtoFAC // MEM = FAC // Stores the value of the FAC to memory // Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};) setMEMtoFAC: { .label mem = 7 - //SEG177 [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 - //SEG178 [91] call prepareMEM - //SEG179 [67] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG178 [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 + //SEG179 [91] call prepareMEM + //SEG180 [67] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] prepareMEM_from_setMEMtoFAC: - //SEG180 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG181 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG181 setMEMtoFAC::@1 + //SEG182 setMEMtoFAC::@1 b1: - //SEG182 asm { ldx$fe ldy$ff jsr$bbd4 } + //SEG183 asm { ldx$fe ldy$ff jsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 jmp breturn - //SEG183 setMEMtoFAC::@return + //SEG184 setMEMtoFAC::@return breturn: - //SEG184 [93] return + //SEG185 [93] return rts } -//SEG185 divFACby10 +//SEG186 divFACby10 // FAC = FAC/10 // Set FAC to FAC divided by 10 divFACby10: { - //SEG186 asm { jsr$bafe } + //SEG187 asm { jsr$bafe } jsr $bafe jmp breturn - //SEG187 divFACby10::@return + //SEG188 divFACby10::@return breturn: - //SEG188 [95] return + //SEG189 [95] return rts } print_hextab: .text "0123456789abcdef" @@ -2537,178 +2533,176 @@ reg byte a [ prepareMEM::$1 ] FINAL ASSEMBLER Score: 4967 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Library wrapping the BASIC floating point functions - // See https://www.c64-wiki.com/wiki/Floating_point_arithmetic - // See http://www.pagetable.com/c64rom/c64rom_sc.html +//SEG2 Global Constants & labels // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM .label memLo = $fe .label memHi = $ff .label print_line_cursor = 3 .label print_char_cursor = 5 -//SEG2 @begin -//SEG3 [1] phi from @begin to @47 [phi:@begin->@47] -//SEG4 @47 -//SEG5 [2] call main -//SEG6 [4] phi from @47 to main [phi:@47->main] -//SEG7 [3] phi from @47 to @end [phi:@47->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @47 [phi:@begin->@47] +//SEG5 @47 +//SEG6 [2] call main +//SEG7 [4] phi from @47 to main [phi:@47->main] +//SEG8 [3] phi from @47 to @end [phi:@47->@end] +//SEG9 @end +//SEG10 main main: { .label f_2pi = $e2e5 .label i = 2 - //SEG10 [5] call setFAC - //SEG11 [84] phi from main to setFAC [phi:main->setFAC] - //SEG12 [84] phi (word) setFAC::w#3 = (word/signed word/dword/signed dword) 1275 [phi:main->setFAC#0] -- vwuz1=vwuc1 + //SEG11 [5] call setFAC + //SEG12 [84] phi from main to setFAC [phi:main->setFAC] + //SEG13 [84] phi (word) setFAC::w#3 = (word/signed word/dword/signed dword) 1275 [phi:main->setFAC#0] -- vwuz1=vwuc1 lda #<$4fb sta setFAC.w lda #>$4fb sta setFAC.w+1 jsr setFAC - //SEG13 [6] phi from main to main::@3 [phi:main->main::@3] - //SEG14 main::@3 - //SEG15 [7] call divFACby10 + //SEG14 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG15 main::@3 + //SEG16 [7] call divFACby10 jsr divFACby10 - //SEG16 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG17 main::@4 - //SEG18 [9] call setMEMtoFAC - //SEG19 [89] phi from main::@4 to setMEMtoFAC [phi:main::@4->setMEMtoFAC] - //SEG20 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_127#0 [phi:main::@4->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG17 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG18 main::@4 + //SEG19 [9] call setMEMtoFAC + //SEG20 [89] phi from main::@4 to setMEMtoFAC [phi:main::@4->setMEMtoFAC] + //SEG21 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_127#0 [phi:main::@4->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_127 sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG21 [10] phi from main::@4 to main::@1 [phi:main::@4->main::@1] - //SEG22 [10] phi (byte*) print_line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 + //SEG22 [10] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG23 [10] phi (byte*) print_line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG23 [10] phi (byte*) print_char_cursor#32 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#1] -- pbuz1=pbuc1 + //SEG24 [10] phi (byte*) print_char_cursor#32 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@4->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG24 [10] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@4->main::@1#2] -- vbuz1=vbuc1 + //SEG25 [10] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main::@4->main::@1#2] -- vbuz1=vbuc1 lda #1 sta i - //SEG25 main::@1 + //SEG26 main::@1 b1: - //SEG26 [11] (word) setFAC::w#1 ← ((word)) (byte) main::i#10 -- vwuz1=_word_vbuz2 + //SEG27 [11] (word) setFAC::w#1 ← ((word)) (byte) main::i#10 -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG27 [12] call setFAC - //SEG28 [84] phi from main::@1 to setFAC [phi:main::@1->setFAC] - //SEG29 [84] phi (word) setFAC::w#3 = (word) setFAC::w#1 [phi:main::@1->setFAC#0] -- register_copy + //SEG28 [12] call setFAC + //SEG29 [84] phi from main::@1 to setFAC [phi:main::@1->setFAC] + //SEG30 [84] phi (word) setFAC::w#3 = (word) setFAC::w#1 [phi:main::@1->setFAC#0] -- register_copy jsr setFAC - //SEG30 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] - //SEG31 main::@6 - //SEG32 [14] call mulFACbyMEM - //SEG33 [73] phi from main::@6 to mulFACbyMEM [phi:main::@6->mulFACbyMEM] - //SEG34 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) main::f_2pi#0 [phi:main::@6->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG31 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG32 main::@6 + //SEG33 [14] call mulFACbyMEM + //SEG34 [73] phi from main::@6 to mulFACbyMEM [phi:main::@6->mulFACbyMEM] + //SEG35 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) main::f_2pi#0 [phi:main::@6->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG35 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - //SEG36 main::@7 - //SEG37 [16] call setMEMtoFAC - //SEG38 [89] phi from main::@7 to setMEMtoFAC [phi:main::@7->setMEMtoFAC] - //SEG39 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_i#0 [phi:main::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG36 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG37 main::@7 + //SEG38 [16] call setMEMtoFAC + //SEG39 [89] phi from main::@7 to setMEMtoFAC [phi:main::@7->setMEMtoFAC] + //SEG40 [89] phi (byte*) setMEMtoFAC::mem#2 = (const byte[]) main::f_i#0 [phi:main::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG40 [17] phi from main::@7 to main::@8 [phi:main::@7->main::@8] - //SEG41 main::@8 - //SEG42 [18] call setFAC - //SEG43 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC] - //SEG44 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG41 [17] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG42 main::@8 + //SEG43 [18] call setFAC + //SEG44 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC] + //SEG45 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1 lda #<$19 sta setFAC.w lda #>$19 sta setFAC.w+1 jsr setFAC - //SEG45 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] - //SEG46 main::@9 - //SEG47 [20] call divMEMbyFAC - //SEG48 [80] phi from main::@9 to divMEMbyFAC [phi:main::@9->divMEMbyFAC] + //SEG46 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG47 main::@9 + //SEG48 [20] call divMEMbyFAC + //SEG49 [80] phi from main::@9 to divMEMbyFAC [phi:main::@9->divMEMbyFAC] jsr divMEMbyFAC - //SEG49 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - //SEG50 main::@10 - //SEG51 [22] call sinFAC + //SEG50 [21] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG51 main::@10 + //SEG52 [22] call sinFAC jsr sinFAC - //SEG52 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] - //SEG53 main::@11 - //SEG54 [24] call mulFACbyMEM - //SEG55 [73] phi from main::@11 to mulFACbyMEM [phi:main::@11->mulFACbyMEM] - //SEG56 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) main::f_127#0 [phi:main::@11->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG53 [23] phi from main::@10 to main::@11 [phi:main::@10->main::@11] + //SEG54 main::@11 + //SEG55 [24] call mulFACbyMEM + //SEG56 [73] phi from main::@11 to mulFACbyMEM [phi:main::@11->mulFACbyMEM] + //SEG57 [73] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) main::f_127#0 [phi:main::@11->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_127 sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG57 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] - //SEG58 main::@12 - //SEG59 [26] call addMEMtoFAC - //SEG60 [63] phi from main::@12 to addMEMtoFAC [phi:main::@12->addMEMtoFAC] + //SEG58 [25] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG59 main::@12 + //SEG60 [26] call addMEMtoFAC + //SEG61 [63] phi from main::@12 to addMEMtoFAC [phi:main::@12->addMEMtoFAC] jsr addMEMtoFAC - //SEG61 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] - //SEG62 main::@13 - //SEG63 [28] call getFAC + //SEG62 [27] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + //SEG63 main::@13 + //SEG64 [28] call getFAC jsr getFAC - //SEG64 [29] (word) getFAC::return#2 ← (word) getFAC::return#0 - //SEG65 main::@14 - //SEG66 [30] (word) print_word::w#0 ← (word) getFAC::return#2 - //SEG67 [31] call print_word + //SEG65 [29] (word) getFAC::return#2 ← (word) getFAC::return#0 + //SEG66 main::@14 + //SEG67 [30] (word) print_word::w#0 ← (word) getFAC::return#2 + //SEG68 [31] call print_word jsr print_word - //SEG68 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] - //SEG69 main::@15 - //SEG70 [33] call print_ln - //SEG71 [38] phi from main::@15 to print_ln [phi:main::@15->print_ln] + //SEG69 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + //SEG70 main::@15 + //SEG71 [33] call print_ln + //SEG72 [38] phi from main::@15 to print_ln [phi:main::@15->print_ln] jsr print_ln - //SEG72 main::@16 - //SEG73 [34] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + //SEG73 main::@16 + //SEG74 [34] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG74 [35] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 26) goto main::@17 -- vbuz1_neq_vbuc1_then_la1 + //SEG75 [35] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 26) goto main::@17 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$1a bne b17 - //SEG75 main::@return - //SEG76 [36] return + //SEG76 main::@return + //SEG77 [36] return rts - //SEG77 main::@17 + //SEG78 main::@17 b17: - //SEG78 [37] (byte*~) print_char_cursor#49 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG79 [37] (byte*~) print_char_cursor#49 ← (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 - //SEG79 [10] phi from main::@17 to main::@1 [phi:main::@17->main::@1] - //SEG80 [10] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@17->main::@1#0] -- register_copy - //SEG81 [10] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#49 [phi:main::@17->main::@1#1] -- register_copy - //SEG82 [10] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@17->main::@1#2] -- register_copy + //SEG80 [10] phi from main::@17 to main::@1 [phi:main::@17->main::@1] + //SEG81 [10] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@17->main::@1#0] -- register_copy + //SEG82 [10] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#49 [phi:main::@17->main::@1#1] -- register_copy + //SEG83 [10] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@17->main::@1#2] -- register_copy jmp b1 f_i: .byte 0, 0, 0, 0, 0 f_127: .byte 0, 0, 0, 0, 0 } -//SEG83 print_ln +//SEG84 print_ln // Print a newline print_ln: { - //SEG84 [39] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG85 [39] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG86 print_ln::@1 + //SEG85 [39] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG86 [39] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG87 print_ln::@1 b1: - //SEG87 [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG88 [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -2716,7 +2710,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG88 [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG89 [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -2725,240 +2719,240 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG89 print_ln::@return - //SEG90 [42] return + //SEG90 print_ln::@return + //SEG91 [42] return rts } -//SEG91 print_word +//SEG92 print_word // Print a word as HEX print_word: { .label w = 7 - //SEG92 [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + //SEG93 [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG93 [44] call print_byte - //SEG94 [48] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG95 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#32 [phi:print_word->print_byte#0] -- register_copy - //SEG96 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG94 [44] call print_byte + //SEG95 [48] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG96 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#32 [phi:print_word->print_byte#0] -- register_copy + //SEG97 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG97 print_word::@1 - //SEG98 [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 + //SEG98 print_word::@1 + //SEG99 [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 lda w tax - //SEG99 [46] call print_byte - //SEG100 [48] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG101 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG102 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG100 [46] call print_byte + //SEG101 [48] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG102 [48] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG103 [48] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG103 print_word::@return - //SEG104 [47] return + //SEG104 print_word::@return + //SEG105 [47] return rts } -//SEG105 print_byte +//SEG106 print_byte // Print a byte as HEX print_byte: { - //SEG106 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG107 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG108 [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG108 [51] call print_char - //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG110 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#31 [phi:print_byte->print_char#0] -- register_copy - //SEG111 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG109 [51] call print_char + //SEG110 [56] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG111 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#31 [phi:print_byte->print_char#0] -- register_copy + //SEG112 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG112 print_byte::@1 - //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG113 print_byte::@1 + //SEG114 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG115 [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG115 [54] call print_char - //SEG116 [56] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG117 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG118 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG116 [54] call print_char + //SEG117 [56] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG118 [56] phi (byte*) print_char_cursor#23 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG119 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG119 print_byte::@return - //SEG120 [55] return + //SEG120 print_byte::@return + //SEG121 [55] return rts } -//SEG121 print_char +//SEG122 print_char // Print a single char print_char: { - //SEG122 [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa + //SEG123 [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG123 [58] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#23 -- pbuz1=_inc_pbuz1 + //SEG124 [58] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#23 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG124 print_char::@return - //SEG125 [59] return + //SEG125 print_char::@return + //SEG126 [59] return rts } -//SEG126 getFAC +//SEG127 getFAC // word = FAC // Get the value of the FAC (floating point accumulator) as an integer 16bit word // Destroys the value in the FAC in the process getFAC: { .label return = 7 - //SEG127 asm { jsr$b1aa sty$fe sta$ff } + //SEG128 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe sta $ff - //SEG128 [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG129 [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 - //SEG129 getFAC::@return - //SEG130 [62] return + //SEG130 getFAC::@return + //SEG131 [62] return rts } -//SEG131 addMEMtoFAC +//SEG132 addMEMtoFAC // FAC = MEM+FAC // Set FAC to MEM (float saved in memory) plus FAC (float accumulator) // Reads 5 bytes from memory addMEMtoFAC: { - //SEG132 [64] call prepareMEM - //SEG133 [67] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] - //SEG134 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_127#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG133 [64] call prepareMEM + //SEG134 [67] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG135 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_127#0 [phi:addMEMtoFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #main.f_127 sta prepareMEM.mem+1 jsr prepareMEM - //SEG135 addMEMtoFAC::@1 - //SEG136 asm { lda$fe ldy$ff jsr$b867 } + //SEG136 addMEMtoFAC::@1 + //SEG137 asm { lda$fe ldy$ff jsr$b867 } lda $fe ldy $ff jsr $b867 - //SEG137 addMEMtoFAC::@return - //SEG138 [66] return + //SEG138 addMEMtoFAC::@return + //SEG139 [66] return rts } -//SEG139 prepareMEM +//SEG140 prepareMEM // Prepare MEM pointers for operations using MEM prepareMEM: { .label mem = 7 - //SEG140 [68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuaa=_lo_pbuz1 + //SEG141 [68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 -- vbuaa=_lo_pbuz1 lda mem - //SEG141 [69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuaa + //SEG142 [69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 -- _deref_pbuc1=vbuaa sta memLo - //SEG142 [70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuaa=_hi_pbuz1 + //SEG143 [70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 -- vbuaa=_hi_pbuz1 lda mem+1 - //SEG143 [71] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuaa + //SEG144 [71] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 -- _deref_pbuc1=vbuaa sta memHi - //SEG144 prepareMEM::@return - //SEG145 [72] return + //SEG145 prepareMEM::@return + //SEG146 [72] return rts } -//SEG146 mulFACbyMEM +//SEG147 mulFACbyMEM // FAC = MEM*FAC // Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator) // Reads 5 bytes from memory mulFACbyMEM: { .label mem = 7 - //SEG147 [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 - //SEG148 [75] call prepareMEM - //SEG149 [67] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] - //SEG150 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG148 [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 + //SEG149 [75] call prepareMEM + //SEG150 [67] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG151 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG151 mulFACbyMEM::@1 - //SEG152 asm { lda$fe ldy$ff jsr$ba28 } + //SEG152 mulFACbyMEM::@1 + //SEG153 asm { lda$fe ldy$ff jsr$ba28 } lda $fe ldy $ff jsr $ba28 - //SEG153 mulFACbyMEM::@return - //SEG154 [77] return + //SEG154 mulFACbyMEM::@return + //SEG155 [77] return rts } -//SEG155 sinFAC +//SEG156 sinFAC // FAC = sin(FAC) // Set FAC to sinus of the FAC - sin(FAC) // Sinus is calculated on radians (0-2*PI) sinFAC: { - //SEG156 asm { jsr$e26b } + //SEG157 asm { jsr$e26b } jsr $e26b - //SEG157 sinFAC::@return - //SEG158 [79] return + //SEG158 sinFAC::@return + //SEG159 [79] return rts } -//SEG159 divMEMbyFAC +//SEG160 divMEMbyFAC // FAC = MEM/FAC // Set FAC to MEM (float saved in memory) divided by FAC (float accumulator) // Reads 5 bytes from memory divMEMbyFAC: { - //SEG160 [81] call prepareMEM - //SEG161 [67] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] - //SEG162 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_i#0 [phi:divMEMbyFAC->prepareMEM#0] -- pbuz1=pbuc1 + //SEG161 [81] call prepareMEM + //SEG162 [67] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG163 [67] phi (byte*) prepareMEM::mem#5 = (const byte[]) main::f_i#0 [phi:divMEMbyFAC->prepareMEM#0] -- pbuz1=pbuc1 lda #main.f_i sta prepareMEM.mem+1 jsr prepareMEM - //SEG163 divMEMbyFAC::@1 - //SEG164 asm { lda$fe ldy$ff jsr$bb0f } + //SEG164 divMEMbyFAC::@1 + //SEG165 asm { lda$fe ldy$ff jsr$bb0f } lda $fe ldy $ff jsr $bb0f - //SEG165 divMEMbyFAC::@return - //SEG166 [83] return + //SEG166 divMEMbyFAC::@return + //SEG167 [83] return rts } -//SEG167 setFAC +//SEG168 setFAC // FAC = word // Set the FAC (floating point accumulator) to the integer value of a 16bit word setFAC: { .label w = 7 - //SEG168 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 - //SEG169 [86] call prepareMEM - //SEG170 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] - //SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG169 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 + //SEG170 [86] call prepareMEM + //SEG171 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG172 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG172 setFAC::@1 - //SEG173 asm { ldy$fe lda$ff jsr$b391 } + //SEG173 setFAC::@1 + //SEG174 asm { ldy$fe lda$ff jsr$b391 } ldy $fe lda $ff jsr $b391 - //SEG174 setFAC::@return - //SEG175 [88] return + //SEG175 setFAC::@return + //SEG176 [88] return rts } -//SEG176 setMEMtoFAC +//SEG177 setMEMtoFAC // MEM = FAC // Stores the value of the FAC to memory // Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};) setMEMtoFAC: { .label mem = 7 - //SEG177 [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 - //SEG178 [91] call prepareMEM - //SEG179 [67] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] - //SEG180 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG178 [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 + //SEG179 [91] call prepareMEM + //SEG180 [67] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG181 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG181 setMEMtoFAC::@1 - //SEG182 asm { ldx$fe ldy$ff jsr$bbd4 } + //SEG182 setMEMtoFAC::@1 + //SEG183 asm { ldx$fe ldy$ff jsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 - //SEG183 setMEMtoFAC::@return - //SEG184 [93] return + //SEG184 setMEMtoFAC::@return + //SEG185 [93] return rts } -//SEG185 divFACby10 +//SEG186 divFACby10 // FAC = FAC/10 // Set FAC to FAC divided by 10 divFACby10: { - //SEG186 asm { jsr$bafe } + //SEG187 asm { jsr$bafe } jsr $bafe - //SEG187 divFACby10::@return - //SEG188 [95] return + //SEG188 divFACby10::@return + //SEG189 [95] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgen16.asm b/src/test/ref/sinusgen16.asm index 461246d7c..00114c597 100644 --- a/src/test/ref/sinusgen16.asm +++ b/src/test/ref/sinusgen16.asm @@ -1,3 +1,4 @@ +// Generates a 16-bit signed sinus .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/sinusgen16.log b/src/test/ref/sinusgen16.log index 21b65166f..d8b96bc55 100644 --- a/src/test/ref/sinusgen16.log +++ b/src/test/ref/sinusgen16.log @@ -2406,11 +2406,13 @@ Allocated zp ZP_BYTE:129 [ divr16u::$2 ] Allocated zp ZP_WORD:130 [ rem16u#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Generates a 16-bit signed sinus +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -2420,118 +2422,118 @@ INITIAL ASM .label print_line_cursor = $400 .label rem16u = $82 .label print_char_cursor = $a -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] b40_from_bbegin: jmp b40 -//SEG4 @40 +//SEG5 @40 b40: -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] main_from_b40: jsr main -//SEG7 [3] phi from @40 to @end [phi:@40->@end] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] bend_from_b40: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label wavelength = $78 .label sw = $33 .label st1 = 2 - //SEG10 [5] call sin16s_gen - //SEG11 [58] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG11 [5] call sin16s_gen + //SEG12 [58] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: jsr sin16s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG13 main::@5 + //SEG14 main::@5 b5: - //SEG14 [7] call print_cls - //SEG15 [52] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG15 [7] call print_cls + //SEG16 [52] phi from main::@5 to print_cls [phi:main::@5->print_cls] print_cls_from_b5: jsr print_cls - //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG17 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG17 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG18 [8] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@5->main::@1#1] -- pwsz1=pwsc1 + //SEG19 [8] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@5->main::@1#1] -- pwsz1=pwsc1 lda #sintab1 sta st1+1 jmp b1 - //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG20 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] b1_from_b8: - //SEG20 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy - //SEG21 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG21 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy + //SEG22 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@8->main::@1#1] -- register_copy jmp b1 - //SEG22 main::@1 + //SEG23 main::@1 b1: - //SEG23 [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) -- vwsz1=_deref_pwsz2 + //SEG24 [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) -- vwsz1=_deref_pwsz2 ldy #0 lda (st1),y sta sw iny lda (st1),y sta sw+1 - //SEG24 [10] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 + //SEG25 [10] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 lda sw+1 bmi b2_from_b1 - //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG26 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] b3_from_b1: jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [12] call print_str - //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG28 [12] call print_str + //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG29 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy - //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG30 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG32 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG32 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG33 main::@2 + //SEG34 main::@2 b2: - //SEG34 [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 -- vwsz1=vwsz2 + //SEG35 [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 -- vwsz1=vwsz2 lda sw sta print_sword.w lda sw+1 sta print_sword.w+1 - //SEG35 [15] call print_sword + //SEG36 [15] call print_sword jsr print_sword - //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG37 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] b7_from_b2: jmp b7 - //SEG37 main::@7 + //SEG38 main::@7 b7: - //SEG38 [17] call print_str - //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + //SEG39 [17] call print_str + //SEG40 [21] phi from main::@7 to print_str [phi:main::@7->print_str] print_str_from_b7: - //SEG40 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@7->print_str#0] -- register_copy - //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + //SEG41 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@7->print_str#0] -- register_copy + //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b8 - //SEG42 main::@8 + //SEG43 main::@8 b8: - //SEG43 [18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG44 [18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st1 clc adc #2 @@ -2539,7 +2541,7 @@ main: { bcc !+ inc st1+1 !: - //SEG44 [19] if((signed word*) main::st1#1<(const signed word[120]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- pwsz1_lt_pwsc1_then_la1 + //SEG45 [19] if((signed word*) main::st1#1<(const signed word[120]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- pwsz1_lt_pwsc1_then_la1 lda st1+1 cmp #>sintab1+wavelength*2 bcc b1_from_b8 @@ -2549,79 +2551,79 @@ main: { bcc b1_from_b8 !: jmp breturn - //SEG45 main::@return + //SEG46 main::@return breturn: - //SEG46 [20] return + //SEG47 [20] return rts str: .text " @" str1: .text " @" sintab1: .fill 2*$78, 0 } -//SEG47 print_str +//SEG48 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG48 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG49 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG49 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG51 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG51 print_str::@1 + //SEG52 print_str::@1 b1: - //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG53 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG53 print_str::@return + //SEG54 print_str::@return breturn: - //SEG54 [24] return + //SEG55 [24] return rts - //SEG55 print_str::@2 + //SEG56 print_str::@2 b2: - //SEG56 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG57 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG57 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG58 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG59 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG59 print_sword +//SEG60 print_sword // Print a signed word as HEX print_sword: { .label w = 6 - //SEG60 [28] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG61 [28] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG61 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG62 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG62 print_sword::@2 + //SEG63 print_sword::@2 b2: - //SEG63 [30] call print_char - //SEG64 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG64 [30] call print_char + //SEG65 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG65 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG66 [48] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG66 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG67 [48] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG67 print_sword::@4 + //SEG68 print_sword::@4 b4: - //SEG68 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG69 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -2631,145 +2633,145 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG69 [32] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG70 [32] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG70 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG71 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG71 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG72 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG72 print_sword::@1 + //SEG73 print_sword::@1 b1: - //SEG73 [33] call print_word + //SEG74 [33] call print_word jsr print_word jmp breturn - //SEG74 print_sword::@return + //SEG75 print_sword::@return breturn: - //SEG75 [34] return + //SEG76 [34] return rts } -//SEG76 print_word +//SEG77 print_word // Print a word as HEX print_word: { - //SEG77 [35] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 + //SEG78 [35] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 lda print_sword.w+1 sta print_byte.b - //SEG78 [36] call print_byte - //SEG79 [40] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG79 [36] call print_byte + //SEG80 [40] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG80 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG81 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG81 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy + //SEG82 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG82 print_word::@1 + //SEG83 print_word::@1 b1: - //SEG83 [37] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 + //SEG84 [37] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 lda print_sword.w sta print_byte.b - //SEG84 [38] call print_byte - //SEG85 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG85 [38] call print_byte + //SEG86 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG86 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG87 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG87 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG88 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG88 print_word::@return + //SEG89 print_word::@return breturn: - //SEG89 [39] return + //SEG90 [39] return rts } -//SEG90 print_byte +//SEG91 print_byte // Print a byte as HEX print_byte: { .label _0 = $35 .label _2 = $36 .label b = 8 - //SEG91 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG92 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG92 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG93 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG93 [43] call print_char - //SEG94 [48] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG94 [43] call print_char + //SEG95 [48] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG95 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG96 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG96 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy + //SEG97 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG97 print_byte::@1 + //SEG98 print_byte::@1 b1: - //SEG98 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG99 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG99 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG100 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG100 [46] call print_char - //SEG101 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG101 [46] call print_char + //SEG102 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG102 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG103 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG103 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG104 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG104 print_byte::@return + //SEG105 print_byte::@return breturn: - //SEG105 [47] return + //SEG106 [47] return rts } -//SEG106 print_char +//SEG107 print_char // Print a single char print_char: { .label ch = 9 - //SEG107 [49] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 + //SEG108 [49] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG108 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 + //SEG109 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG109 print_char::@return + //SEG110 print_char::@return breturn: - //SEG110 [51] return + //SEG111 [51] return rts } -//SEG111 print_cls +//SEG112 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $c - //SEG112 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG113 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG113 [53] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG114 [53] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG114 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG115 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG115 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG116 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG116 print_cls::@1 + //SEG117 print_cls::@1 b1: - //SEG117 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG118 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG118 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG119 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG119 [56] 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 + //SEG120 [56] 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_line_cursor+$3e8 bne b1_from_b1 @@ -2777,12 +2779,12 @@ print_cls: { cmp #div32u16u] + //SEG124 [59] call div32u16u + //SEG125 [132] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG125 [60] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG126 [60] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -2806,9 +2808,9 @@ sin16s_gen: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b3 - //SEG126 sin16s_gen::@3 + //SEG127 sin16s_gen::@3 b3: - //SEG127 [61] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG128 [61] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -2817,19 +2819,19 @@ sin16s_gen: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG128 [62] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG129 [62] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG129 [62] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG130 [62] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG130 [62] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG131 [62] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG131 [62] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG132 [62] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -2837,15 +2839,15 @@ sin16s_gen: { sta x+2 sta x+3 jmp b1 - //SEG132 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG133 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] b1_from_b4: - //SEG133 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG135 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG134 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG135 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG136 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG136 sin16s_gen::@1 + //SEG137 sin16s_gen::@1 b1: - //SEG137 [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG138 [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -2854,29 +2856,29 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG138 [64] call sin16s + //SEG139 [64] call sin16s jsr sin16s - //SEG139 [65] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG140 [65] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b4 - //SEG140 sin16s_gen::@4 + //SEG141 sin16s_gen::@4 b4: - //SEG141 [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG142 [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta _1 lda sin16s.return+1 sta _1+1 - //SEG142 [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG143 [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG143 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG144 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -2884,7 +2886,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG145 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -2898,12 +2900,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG146 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG147 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -2913,12 +2915,12 @@ sin16s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG147 sin16s_gen::@return + //SEG148 sin16s_gen::@return breturn: - //SEG148 [72] return + //SEG149 [72] return rts } -//SEG149 sin16s +//SEG150 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -2939,7 +2941,7 @@ sin16s: { .label sinx = $1b .label isUpper = $16 .label return_5 = $1b - //SEG150 [73] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG151 [73] 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 @@ -2957,9 +2959,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG151 sin16s::@4 + //SEG152 sin16s::@4 b4: - //SEG152 [74] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG153 [74] (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 - //SEG153 [75] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG154 [75] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG154 [75] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG155 [75] 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 - //SEG155 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG156 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG156 [75] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG157 [75] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG157 [75] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG158 [75] 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 - //SEG158 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG159 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG159 sin16s::@1 + //SEG160 sin16s::@1 b1: - //SEG160 [76] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG161 [76] 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 @@ -3007,9 +3009,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG161 sin16s::@5 + //SEG162 sin16s::@5 b5: - //SEG162 [77] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG163 [77] (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 - //SEG163 [78] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG164 [78] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG164 [78] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG165 [78] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG165 sin16s::@2 + //SEG166 sin16s::@2 b2: - //SEG166 [79] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG167 [79] (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 @@ -3047,107 +3049,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG167 [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG168 [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG168 [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG169 [81] (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 - //SEG169 [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG170 [82] (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 - //SEG170 [83] call mulu16_sel - //SEG171 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG171 [83] call mulu16_sel + //SEG172 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG172 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG173 [113] 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 - //SEG173 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG174 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG174 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG175 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG175 [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG176 [84] (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 - //SEG176 sin16s::@8 + //SEG177 sin16s::@8 b8: - //SEG177 [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG178 [85] (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 - //SEG178 [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG179 [86] (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 - //SEG179 [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG180 [87] (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 - //SEG180 [88] call mulu16_sel - //SEG181 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG181 [88] call mulu16_sel + //SEG182 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG182 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG183 [113] 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 - //SEG183 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG184 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG184 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG185 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG185 [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG186 [89] (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 - //SEG186 sin16s::@9 + //SEG187 sin16s::@9 b9: - //SEG187 [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG188 [90] (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 - //SEG188 [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG189 [91] (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 - //SEG189 [92] call mulu16_sel - //SEG190 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG190 [92] call mulu16_sel + //SEG191 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG191 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG192 [113] 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 - //SEG192 [113] 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 + //SEG193 [113] 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 - //SEG193 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG194 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG194 [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG195 [93] (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 - //SEG195 sin16s::@10 + //SEG196 sin16s::@10 b10: - //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG197 [94] (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 - //SEG197 [95] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG198 [95] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -3155,71 +3157,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG198 [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG199 [96] (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 - //SEG199 [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG200 [97] (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 - //SEG200 [98] call mulu16_sel - //SEG201 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG201 [98] call mulu16_sel + //SEG202 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG202 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG203 [113] 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 - //SEG203 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG204 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG204 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG205 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG205 [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG206 [99] (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 - //SEG206 sin16s::@11 + //SEG207 sin16s::@11 b11: - //SEG207 [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG208 [100] (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 - //SEG208 [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG209 [101] (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 - //SEG209 [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG210 [102] (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 - //SEG210 [103] call mulu16_sel - //SEG211 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG211 [103] call mulu16_sel + //SEG212 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG212 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG213 [113] 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 - //SEG213 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG214 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG214 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG215 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG215 [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG216 [104] (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 - //SEG216 sin16s::@12 + //SEG217 sin16s::@12 b12: - //SEG217 [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG218 [105] (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 - //SEG218 [106] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG219 [106] (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 @@ -3230,7 +3232,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG219 [107] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG220 [107] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -3238,14 +3240,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG220 [108] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG221 [108] 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 - //SEG221 sin16s::@6 + //SEG222 sin16s::@6 b6: - //SEG222 [109] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG223 [109] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -3255,28 +3257,28 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG223 [110] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG224 [110] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG224 [110] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG225 [110] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG225 sin16s::@3 + //SEG226 sin16s::@3 b3: jmp breturn - //SEG226 sin16s::@return + //SEG227 sin16s::@return breturn: - //SEG227 [111] return + //SEG228 [111] return rts - //SEG228 sin16s::@15 + //SEG229 sin16s::@15 b15: - //SEG229 [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG230 [112] (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 } -//SEG230 mulu16_sel +//SEG231 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -3291,19 +3293,19 @@ mulu16_sel: { .label return_11 = $5b .label select = $21 .label return_12 = $71 - //SEG231 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG232 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG232 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG233 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG233 [116] call mul16u + //SEG234 [116] call mul16u jsr mul16u - //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG235 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -3313,9 +3315,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return+3 jmp b2 - //SEG235 mulu16_sel::@2 + //SEG236 mulu16_sel::@2 b2: - //SEG236 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG237 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta _0 lda mul16u.return+1 @@ -3324,7 +3326,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return+3 sta _0+3 - //SEG237 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG238 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -3343,18 +3345,18 @@ mulu16_sel: { dex bne !- !e: - //SEG238 [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG239 [120] (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 - //SEG239 mulu16_sel::@return + //SEG240 mulu16_sel::@return breturn: - //SEG240 [121] return + //SEG241 [121] return rts } -//SEG241 mul16u +//SEG242 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label _1 = $73 @@ -3363,7 +3365,7 @@ mul16u: { .label res = $24 .label b = $63 .label return = $65 - //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG243 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -3371,44 +3373,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG243 [123] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG244 [123] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG244 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG245 [123] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG245 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG246 [123] 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 - //SEG246 [123] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG247 [123] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG247 mul16u::@1 + //SEG248 mul16u::@1 b1: - //SEG248 [124] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG249 [124] if((word) mul16u::a#2!=(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 - //SEG249 mul16u::@return + //SEG250 mul16u::@return breturn: - //SEG250 [125] return + //SEG251 [125] return rts - //SEG251 mul16u::@2 + //SEG252 mul16u::@2 b2: - //SEG252 [126] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG253 [126] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG253 [127] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG254 [127] 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 - //SEG254 mul16u::@7 + //SEG255 mul16u::@7 b7: - //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG256 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -3422,30 +3424,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG256 [129] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG257 [129] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG257 [129] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG258 [129] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG258 mul16u::@4 + //SEG259 mul16u::@4 b4: - //SEG259 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG260 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG260 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG261 [131] (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 - //SEG261 [123] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG262 [123] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG262 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG263 [123] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG264 [123] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG263 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG264 [123] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG265 [123] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG265 div32u16u +//SEG266 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { @@ -3453,62 +3455,62 @@ div32u16u: { .label quotient_lo = $7a .label return = $7c .label return_2 = $37 - //SEG266 [133] call divr16u - //SEG267 [142] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG267 [133] call divr16u + //SEG268 [142] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG268 [142] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG269 [142] 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 - //SEG269 [142] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG270 [142] 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 - //SEG270 [134] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG271 [134] (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 - //SEG271 div32u16u::@2 + //SEG272 div32u16u::@2 b2: - //SEG272 [135] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG273 [135] (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 - //SEG273 [136] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG274 [136] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG274 [137] call divr16u - //SEG275 [142] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG275 [137] call divr16u + //SEG276 [142] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG276 [142] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG277 [142] 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 - //SEG277 [142] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG278 [142] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG278 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG279 [138] (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 - //SEG279 div32u16u::@3 + //SEG280 div32u16u::@3 b3: - //SEG280 [139] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG281 [139] (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 - //SEG281 [140] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG282 [140] (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 @@ -3518,12 +3520,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG282 div32u16u::@return + //SEG283 div32u16u::@return breturn: - //SEG283 [141] return + //SEG284 [141] return rts } -//SEG284 divr16u +//SEG285 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -3538,63 +3540,63 @@ divr16u: { .label return = $30 .label return_2 = $74 .label return_3 = $78 - //SEG285 [143] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG286 [143] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG286 [143] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG287 [143] 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 - //SEG287 [143] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG288 [143] 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 - //SEG288 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG289 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG289 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG290 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG290 [143] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG291 [143] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG291 [143] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG292 [143] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG293 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG294 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG292 [143] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG293 [143] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG294 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG295 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG295 divr16u::@1 + //SEG296 divr16u::@1 b1: - //SEG296 [144] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG297 [144] (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 - //SEG297 [145] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG298 [145] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG298 [146] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG299 [146] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG299 [147] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG300 [147] 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 - //SEG300 divr16u::@4 + //SEG301 divr16u::@4 b4: - //SEG301 [148] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG302 [148] (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 - //SEG302 [149] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG303 [149] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG303 [149] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG304 [149] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG304 divr16u::@2 + //SEG305 divr16u::@2 b2: - //SEG305 [150] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [150] (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 - //SEG306 [151] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG307 [151] (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 - //SEG307 [152] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG308 [152] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -3604,14 +3606,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG308 divr16u::@5 + //SEG309 divr16u::@5 b5: - //SEG309 [153] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG310 [153] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG310 [154] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG311 [154] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG311 [155] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG312 [155] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG312 [155] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG313 [155] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG313 [155] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG314 [155] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG314 divr16u::@3 + //SEG315 divr16u::@3 b3: - //SEG315 [156] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG316 [156] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG316 [157] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG317 [157] 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 - //SEG317 divr16u::@6 + //SEG318 divr16u::@6 b6: - //SEG318 [158] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG319 [158] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG319 divr16u::@return + //SEG320 divr16u::@return breturn: - //SEG320 [159] return + //SEG321 [159] return rts } print_hextab: .text "0123456789abcdef" @@ -3951,11 +3953,13 @@ Allocated (was zp ZP_DWORD:55) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen:: Allocated (was zp ZP_WORD:71) zp ZP_WORD:31 [ sin16s::x1#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Generates a 16-bit signed sinus +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -3965,114 +3969,114 @@ ASSEMBLER BEFORE OPTIMIZATION .label print_line_cursor = $400 .label rem16u = 2 .label print_char_cursor = 8 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] b40_from_bbegin: jmp b40 -//SEG4 @40 +//SEG5 @40 b40: -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] main_from_b40: jsr main -//SEG7 [3] phi from @40 to @end [phi:@40->@end] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] bend_from_b40: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label wavelength = $78 .label sw = 6 .label st1 = 2 - //SEG10 [5] call sin16s_gen - //SEG11 [58] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG11 [5] call sin16s_gen + //SEG12 [58] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: jsr sin16s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG13 main::@5 + //SEG14 main::@5 b5: - //SEG14 [7] call print_cls - //SEG15 [52] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG15 [7] call print_cls + //SEG16 [52] phi from main::@5 to print_cls [phi:main::@5->print_cls] print_cls_from_b5: jsr print_cls - //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG17 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG17 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG18 [8] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@5->main::@1#1] -- pwsz1=pwsc1 + //SEG19 [8] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@5->main::@1#1] -- pwsz1=pwsc1 lda #sintab1 sta st1+1 jmp b1 - //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG20 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] b1_from_b8: - //SEG20 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy - //SEG21 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG21 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy + //SEG22 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@8->main::@1#1] -- register_copy jmp b1 - //SEG22 main::@1 + //SEG23 main::@1 b1: - //SEG23 [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) -- vwsz1=_deref_pwsz2 + //SEG24 [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) -- vwsz1=_deref_pwsz2 ldy #0 lda (st1),y sta sw iny lda (st1),y sta sw+1 - //SEG24 [10] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 + //SEG25 [10] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 lda sw+1 bmi b2_from_b1 - //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG26 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] b3_from_b1: jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [12] call print_str - //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG28 [12] call print_str + //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG29 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy - //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG30 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG32 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG32 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG33 main::@2 + //SEG34 main::@2 b2: - //SEG34 [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 - //SEG35 [15] call print_sword + //SEG35 [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 + //SEG36 [15] call print_sword jsr print_sword - //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG37 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] b7_from_b2: jmp b7 - //SEG37 main::@7 + //SEG38 main::@7 b7: - //SEG38 [17] call print_str - //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + //SEG39 [17] call print_str + //SEG40 [21] phi from main::@7 to print_str [phi:main::@7->print_str] print_str_from_b7: - //SEG40 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@7->print_str#0] -- register_copy - //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + //SEG41 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@7->print_str#0] -- register_copy + //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b8 - //SEG42 main::@8 + //SEG43 main::@8 b8: - //SEG43 [18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG44 [18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st1 clc adc #2 @@ -4080,7 +4084,7 @@ main: { bcc !+ inc st1+1 !: - //SEG44 [19] if((signed word*) main::st1#1<(const signed word[120]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- pwsz1_lt_pwsc1_then_la1 + //SEG45 [19] if((signed word*) main::st1#1<(const signed word[120]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- pwsz1_lt_pwsc1_then_la1 lda st1+1 cmp #>sintab1+wavelength*2 bcc b1_from_b8 @@ -4090,78 +4094,78 @@ main: { bcc b1_from_b8 !: jmp breturn - //SEG45 main::@return + //SEG46 main::@return breturn: - //SEG46 [20] return + //SEG47 [20] return rts str: .text " @" str1: .text " @" sintab1: .fill 2*$78, 0 } -//SEG47 print_str +//SEG48 print_str // Print a zero-terminated string print_str: { .label str = 4 - //SEG48 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG49 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG49 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG51 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG51 print_str::@1 + //SEG52 print_str::@1 b1: - //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG53 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG53 print_str::@return + //SEG54 print_str::@return breturn: - //SEG54 [24] return + //SEG55 [24] return rts - //SEG55 print_str::@2 + //SEG56 print_str::@2 b2: - //SEG56 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG57 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG57 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG58 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG59 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG59 print_sword +//SEG60 print_sword // Print a signed word as HEX print_sword: { .label w = 6 - //SEG60 [28] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG61 [28] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG61 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG62 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG62 print_sword::@2 + //SEG63 print_sword::@2 b2: - //SEG63 [30] call print_char - //SEG64 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG64 [30] call print_char + //SEG65 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG65 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG66 [48] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG66 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG67 [48] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG67 print_sword::@4 + //SEG68 print_sword::@4 b4: - //SEG68 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG69 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -4171,136 +4175,136 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG69 [32] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG70 [32] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG70 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG71 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG71 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG72 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG72 print_sword::@1 + //SEG73 print_sword::@1 b1: - //SEG73 [33] call print_word + //SEG74 [33] call print_word jsr print_word jmp breturn - //SEG74 print_sword::@return + //SEG75 print_sword::@return breturn: - //SEG75 [34] return + //SEG76 [34] return rts } -//SEG76 print_word +//SEG77 print_word // Print a word as HEX print_word: { - //SEG77 [35] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuxx=_hi_vwuz1 + //SEG78 [35] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuxx=_hi_vwuz1 lda print_sword.w+1 tax - //SEG78 [36] call print_byte - //SEG79 [40] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG79 [36] call print_byte + //SEG80 [40] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG80 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG81 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG81 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy + //SEG82 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG82 print_word::@1 + //SEG83 print_word::@1 b1: - //SEG83 [37] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuxx=_lo_vwuz1 + //SEG84 [37] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuxx=_lo_vwuz1 lda print_sword.w tax - //SEG84 [38] call print_byte - //SEG85 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG85 [38] call print_byte + //SEG86 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG86 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG87 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG87 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG88 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG88 print_word::@return + //SEG89 print_word::@return breturn: - //SEG89 [39] return + //SEG90 [39] return rts } -//SEG90 print_byte +//SEG91 print_byte // Print a byte as HEX print_byte: { - //SEG91 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG92 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG92 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG93 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG93 [43] call print_char - //SEG94 [48] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG94 [43] call print_char + //SEG95 [48] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG95 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG96 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG96 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy + //SEG97 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG97 print_byte::@1 + //SEG98 print_byte::@1 b1: - //SEG98 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG99 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG99 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG100 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG100 [46] call print_char - //SEG101 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG101 [46] call print_char + //SEG102 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG102 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG103 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG103 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG104 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG104 print_byte::@return + //SEG105 print_byte::@return breturn: - //SEG105 [47] return + //SEG106 [47] return rts } -//SEG106 print_char +//SEG107 print_char // Print a single char print_char: { - //SEG107 [49] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG108 [49] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG108 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 + //SEG109 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG109 print_char::@return + //SEG110 print_char::@return breturn: - //SEG110 [51] return + //SEG111 [51] return rts } -//SEG111 print_cls +//SEG112 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG112 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG113 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG113 [53] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG114 [53] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG114 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG115 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG115 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG116 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG116 print_cls::@1 + //SEG117 print_cls::@1 b1: - //SEG117 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG118 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG118 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG119 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG119 [56] 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 + //SEG120 [56] 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_line_cursor+$3e8 bne b1_from_b1 @@ -4308,12 +4312,12 @@ print_cls: { cmp #div32u16u] + //SEG124 [59] call div32u16u + //SEG125 [132] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG125 [60] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG126 [60] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b3 - //SEG126 sin16s_gen::@3 + //SEG127 sin16s_gen::@3 b3: - //SEG127 [61] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG128 [62] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG128 [61] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG129 [62] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG129 [62] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG130 [62] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG130 [62] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG131 [62] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG131 [62] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG132 [62] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -4352,15 +4356,15 @@ sin16s_gen: { sta x+2 sta x+3 jmp b1 - //SEG132 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG133 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] b1_from_b4: - //SEG133 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG135 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG134 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG135 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG136 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG136 sin16s_gen::@1 + //SEG137 sin16s_gen::@1 b1: - //SEG137 [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG138 [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -4369,21 +4373,21 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG138 [64] call sin16s + //SEG139 [64] call sin16s jsr sin16s - //SEG139 [65] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG140 [65] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b4 - //SEG140 sin16s_gen::@4 + //SEG141 sin16s_gen::@4 b4: - //SEG141 [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG142 [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG142 [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG143 [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG143 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG144 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -4391,7 +4395,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG145 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4405,12 +4409,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG146 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG147 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -4420,12 +4424,12 @@ sin16s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG147 sin16s_gen::@return + //SEG148 sin16s_gen::@return breturn: - //SEG148 [72] return + //SEG149 [72] return rts } -//SEG149 sin16s +//SEG150 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -4443,7 +4447,7 @@ sin16s: { .label x5_128 = $13 .label sinx = 6 .label isUpper = $e - //SEG150 [73] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG151 [73] 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 @@ -4461,9 +4465,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG151 sin16s::@4 + //SEG152 sin16s::@4 b4: - //SEG152 [74] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG153 [74] (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 - //SEG153 [75] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG154 [75] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG154 [75] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG155 [75] 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 - //SEG155 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG156 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG156 [75] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG157 [75] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG157 [75] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG158 [75] 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 - //SEG158 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG159 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG159 sin16s::@1 + //SEG160 sin16s::@1 b1: - //SEG160 [76] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG161 [76] 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 @@ -4511,9 +4515,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG161 sin16s::@5 + //SEG162 sin16s::@5 b5: - //SEG162 [77] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG163 [77] (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 - //SEG163 [78] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG164 [78] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG164 [78] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG165 [78] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG165 sin16s::@2 + //SEG166 sin16s::@2 b2: - //SEG166 [79] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG167 [79] (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 @@ -4543,80 +4547,80 @@ sin16s: { rol _6+3 dey bne !- - //SEG167 [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG168 [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG168 [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG169 [81] (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 - //SEG169 [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG170 [82] (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 - //SEG170 [83] call mulu16_sel - //SEG171 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG171 [83] call mulu16_sel + //SEG172 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG172 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG173 [113] 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 - //SEG173 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG174 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG174 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG175 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG175 [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG176 [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b8 - //SEG176 sin16s::@8 + //SEG177 sin16s::@8 b8: - //SEG177 [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG178 [85] (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 - //SEG178 [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG179 [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG179 [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG180 [87] (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 - //SEG180 [88] call mulu16_sel - //SEG181 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG181 [88] call mulu16_sel + //SEG182 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG182 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG183 [113] 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 - //SEG183 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG184 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG184 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG185 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG185 [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG186 [89] (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 - //SEG186 sin16s::@9 + //SEG187 sin16s::@9 b9: - //SEG187 [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG188 [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG189 [92] call mulu16_sel - //SEG190 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG188 [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG189 [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG190 [92] call mulu16_sel + //SEG191 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG191 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG192 [113] 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 - //SEG192 [113] 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 + //SEG193 [113] 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 - //SEG193 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG194 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG194 [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG195 [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b10 - //SEG195 sin16s::@10 + //SEG196 sin16s::@10 b10: - //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG197 [95] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG197 [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG198 [95] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4624,56 +4628,56 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG198 [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG199 [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG199 [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG200 [97] (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 - //SEG200 [98] call mulu16_sel - //SEG201 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG201 [98] call mulu16_sel + //SEG202 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG202 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG203 [113] 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 - //SEG203 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG204 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG204 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG205 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG205 [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG206 [99] (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 - //SEG206 sin16s::@11 + //SEG207 sin16s::@11 b11: - //SEG207 [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG208 [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG209 [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG208 [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG209 [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG210 [102] (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 - //SEG210 [103] call mulu16_sel - //SEG211 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG211 [103] call mulu16_sel + //SEG212 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG212 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG213 [113] 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 - //SEG213 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG214 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG214 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG215 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG215 [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG216 [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b12 - //SEG216 sin16s::@12 + //SEG217 sin16s::@12 b12: - //SEG217 [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG218 [106] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG218 [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG219 [106] (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 !- - //SEG219 [107] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG220 [107] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -4681,14 +4685,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG220 [108] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG221 [108] 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 - //SEG221 sin16s::@6 + //SEG222 sin16s::@6 b6: - //SEG222 [109] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG223 [109] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -4698,24 +4702,24 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG223 [110] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG224 [110] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG224 [110] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG225 [110] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG225 sin16s::@3 + //SEG226 sin16s::@3 b3: jmp breturn - //SEG226 sin16s::@return + //SEG227 sin16s::@return breturn: - //SEG227 [111] return + //SEG228 [111] return rts - //SEG228 sin16s::@15 + //SEG229 sin16s::@15 b15: - //SEG229 [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG230 [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b15 } -//SEG230 mulu16_sel +//SEG231 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -4726,20 +4730,20 @@ mulu16_sel: { .label return = $13 .label return_1 = 8 .label return_10 = 8 - //SEG231 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG232 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG232 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 - //SEG233 [116] call mul16u + //SEG233 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + //SEG234 [116] call mul16u jsr mul16u - //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG235 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b2 - //SEG235 mulu16_sel::@2 + //SEG236 mulu16_sel::@2 b2: - //SEG236 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG237 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG237 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG238 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -4750,18 +4754,18 @@ mulu16_sel: { dex bne !- !e: - //SEG238 [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG239 [120] (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 - //SEG239 mulu16_sel::@return + //SEG240 mulu16_sel::@return breturn: - //SEG240 [121] return + //SEG241 [121] return rts } -//SEG241 mul16u +//SEG242 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $17 @@ -4769,7 +4773,7 @@ mul16u: { .label res = $f .label b = $13 .label return = $f - //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG243 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -4777,42 +4781,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG243 [123] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG244 [123] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG244 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG245 [123] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG245 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG246 [123] 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 - //SEG246 [123] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG247 [123] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG247 mul16u::@1 + //SEG248 mul16u::@1 b1: - //SEG248 [124] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG249 [124] if((word) mul16u::a#2!=(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 - //SEG249 mul16u::@return + //SEG250 mul16u::@return breturn: - //SEG250 [125] return + //SEG251 [125] return rts - //SEG251 mul16u::@2 + //SEG252 mul16u::@2 b2: - //SEG252 [126] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG253 [126] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG253 [127] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG254 [127] 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 - //SEG254 mul16u::@7 + //SEG255 mul16u::@7 b7: - //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG256 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4826,76 +4830,76 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG256 [129] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG257 [129] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG257 [129] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG258 [129] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG258 mul16u::@4 + //SEG259 mul16u::@4 b4: - //SEG259 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG260 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG260 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG261 [131] (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 - //SEG261 [123] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG262 [123] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG262 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG263 [123] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG264 [123] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG263 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG264 [123] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG265 [123] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG265 div32u16u +//SEG266 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = 8 .label quotient_lo = 6 .label return = $1b - //SEG266 [133] call divr16u - //SEG267 [142] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG267 [133] call divr16u + //SEG268 [142] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG268 [142] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG269 [142] 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 - //SEG269 [142] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG270 [142] 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 - //SEG270 [134] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG271 [134] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG271 div32u16u::@2 + //SEG272 div32u16u::@2 b2: - //SEG272 [135] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG273 [135] (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 - //SEG273 [136] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG274 [137] call divr16u - //SEG275 [142] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG274 [136] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG275 [137] call divr16u + //SEG276 [142] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG276 [142] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG277 [142] 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 - //SEG277 [142] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG278 [142] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG278 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG279 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b3 - //SEG279 div32u16u::@3 + //SEG280 div32u16u::@3 b3: - //SEG280 [139] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG281 [140] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG281 [139] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG282 [140] (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 @@ -4905,12 +4909,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG282 div32u16u::@return + //SEG283 div32u16u::@return breturn: - //SEG283 [141] return + //SEG284 [141] return rts } -//SEG284 divr16u +//SEG285 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -4920,58 +4924,58 @@ divr16u: { .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG285 [143] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG286 [143] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG286 [143] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG287 [143] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG287 [143] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG288 [143] 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 - //SEG288 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG289 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG289 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG290 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG290 [143] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG291 [143] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG291 [143] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG292 [143] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG293 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG294 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG292 [143] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG293 [143] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG294 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG295 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG295 divr16u::@1 + //SEG296 divr16u::@1 b1: - //SEG296 [144] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG297 [144] (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 - //SEG297 [145] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG298 [145] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG298 [146] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG299 [146] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG299 [147] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG300 [147] 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 - //SEG300 divr16u::@4 + //SEG301 divr16u::@4 b4: - //SEG301 [148] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG302 [148] (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 - //SEG302 [149] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG303 [149] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG303 [149] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG304 [149] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG304 divr16u::@2 + //SEG305 divr16u::@2 b2: - //SEG305 [150] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [150] (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 - //SEG306 [151] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG307 [151] (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 - //SEG307 [152] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG308 [152] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -4981,14 +4985,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG308 divr16u::@5 + //SEG309 divr16u::@5 b5: - //SEG309 [153] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG310 [153] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG310 [154] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG311 [154] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG311 [155] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG312 [155] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG312 [155] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG313 [155] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG313 [155] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG314 [155] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG314 divr16u::@3 + //SEG315 divr16u::@3 b3: - //SEG315 [156] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG316 [156] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG316 [157] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG317 [157] 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 - //SEG317 divr16u::@6 + //SEG318 divr16u::@6 b6: - //SEG318 [158] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG319 [158] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG319 divr16u::@return + //SEG320 divr16u::@return breturn: - //SEG320 [159] return + //SEG321 [159] return rts } print_hextab: .text "0123456789abcdef" @@ -5502,11 +5506,13 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER Score: 20863 -//SEG0 Basic Upstart +//SEG0 File Comments +// Generates a 16-bit signed sinus +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -5516,82 +5522,82 @@ Score: 20863 .label print_line_cursor = $400 .label rem16u = 2 .label print_char_cursor = 8 -//SEG2 @begin -//SEG3 [1] phi from @begin to @40 [phi:@begin->@40] -//SEG4 @40 -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] -//SEG7 [3] phi from @40 to @end [phi:@40->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG5 @40 +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] +//SEG9 @end +//SEG10 main main: { .label wavelength = $78 .label sw = 6 .label st1 = 2 - //SEG10 [5] call sin16s_gen - //SEG11 [58] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG11 [5] call sin16s_gen + //SEG12 [58] phi from main to sin16s_gen [phi:main->sin16s_gen] jsr sin16s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] - //SEG13 main::@5 - //SEG14 [7] call print_cls - //SEG15 [52] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG14 main::@5 + //SEG15 [7] call print_cls + //SEG16 [52] phi from main::@5 to print_cls [phi:main::@5->print_cls] jsr print_cls - //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG17 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + //SEG17 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG18 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG18 [8] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@5->main::@1#1] -- pwsz1=pwsc1 + //SEG19 [8] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@5->main::@1#1] -- pwsz1=pwsc1 lda #sintab1 sta st1+1 - //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] - //SEG20 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy - //SEG21 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@8->main::@1#1] -- register_copy - //SEG22 main::@1 + //SEG20 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG21 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy + //SEG22 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG23 main::@1 b1: - //SEG23 [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) -- vwsz1=_deref_pwsz2 + //SEG24 [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) -- vwsz1=_deref_pwsz2 ldy #0 lda (st1),y sta sw iny lda (st1),y sta sw+1 - //SEG24 [10] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 + //SEG25 [10] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 bmi b2 - //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] - //SEG26 main::@3 - //SEG27 [12] call print_str - //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] - //SEG29 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy - //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG26 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG27 main::@3 + //SEG28 [12] call print_str + //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG30 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] - //SEG32 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG33 main::@2 + //SEG32 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG33 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG34 main::@2 b2: - //SEG34 [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 - //SEG35 [15] call print_sword + //SEG35 [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 + //SEG36 [15] call print_sword jsr print_sword - //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] - //SEG37 main::@7 - //SEG38 [17] call print_str - //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] - //SEG40 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@7->print_str#0] -- register_copy - //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + //SEG37 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG38 main::@7 + //SEG39 [17] call print_str + //SEG40 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + //SEG41 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@7->print_str#0] -- register_copy + //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG42 main::@8 - //SEG43 [18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG43 main::@8 + //SEG44 [18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st1 clc adc #2 @@ -5599,7 +5605,7 @@ main: { bcc !+ inc st1+1 !: - //SEG44 [19] if((signed word*) main::st1#1<(const signed word[120]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- pwsz1_lt_pwsc1_then_la1 + //SEG45 [19] if((signed word*) main::st1#1<(const signed word[120]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 -- pwsz1_lt_pwsc1_then_la1 lda st1+1 cmp #>sintab1+wavelength*2 bcc b1 @@ -5608,65 +5614,65 @@ main: { cmp #print_str::@1] - //SEG49 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG51 print_str::@1 + //SEG49 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG51 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG52 print_str::@1 b1: - //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG53 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG53 print_str::@return - //SEG54 [24] return + //SEG54 print_str::@return + //SEG55 [24] return rts - //SEG55 print_str::@2 + //SEG56 print_str::@2 b2: - //SEG56 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG57 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG57 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG58 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG59 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG59 print_sword +//SEG60 print_sword // Print a signed word as HEX print_sword: { .label w = 6 - //SEG60 [28] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG61 [28] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1 - //SEG61 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG62 print_sword::@2 - //SEG63 [30] call print_char - //SEG64 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG65 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG66 [48] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG62 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG63 print_sword::@2 + //SEG64 [30] call print_char + //SEG65 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG66 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG67 [48] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG67 print_sword::@4 - //SEG68 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG68 print_sword::@4 + //SEG69 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -5676,124 +5682,124 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG69 [32] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] - //SEG70 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG71 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy - //SEG72 print_sword::@1 + //SEG70 [32] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG71 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG72 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG73 print_sword::@1 b1: - //SEG73 [33] call print_word + //SEG74 [33] call print_word jsr print_word - //SEG74 print_sword::@return - //SEG75 [34] return + //SEG75 print_sword::@return + //SEG76 [34] return rts } -//SEG76 print_word +//SEG77 print_word // Print a word as HEX print_word: { - //SEG77 [35] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuxx=_hi_vwuz1 + //SEG78 [35] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuxx=_hi_vwuz1 lda print_sword.w+1 tax - //SEG78 [36] call print_byte - //SEG79 [40] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG80 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG81 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG79 [36] call print_byte + //SEG80 [40] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG81 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy + //SEG82 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG82 print_word::@1 - //SEG83 [37] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuxx=_lo_vwuz1 + //SEG83 print_word::@1 + //SEG84 [37] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuxx=_lo_vwuz1 lda print_sword.w tax - //SEG84 [38] call print_byte - //SEG85 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG86 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG87 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG85 [38] call print_byte + //SEG86 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG87 [40] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG88 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG88 print_word::@return - //SEG89 [39] return + //SEG89 print_word::@return + //SEG90 [39] return rts } -//SEG90 print_byte +//SEG91 print_byte // Print a byte as HEX print_byte: { - //SEG91 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG92 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG92 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG93 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG93 [43] call print_char - //SEG94 [48] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG95 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG96 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG94 [43] call print_char + //SEG95 [48] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG96 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy + //SEG97 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG97 print_byte::@1 - //SEG98 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG98 print_byte::@1 + //SEG99 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG99 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG100 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG100 [46] call print_char - //SEG101 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG102 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG103 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG101 [46] call print_char + //SEG102 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG103 [48] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG104 [48] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG104 print_byte::@return - //SEG105 [47] return + //SEG105 print_byte::@return + //SEG106 [47] return rts } -//SEG106 print_char +//SEG107 print_char // Print a single char print_char: { - //SEG107 [49] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG108 [49] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG108 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 + //SEG109 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG109 print_char::@return - //SEG110 [51] return + //SEG110 print_char::@return + //SEG111 [51] return rts } -//SEG111 print_cls +//SEG112 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG112 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG113 [53] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG113 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG114 [53] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 - //SEG114 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG115 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG116 print_cls::@1 + //SEG115 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG116 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG117 print_cls::@1 b1: - //SEG117 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG118 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG118 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG119 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG119 [56] 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 + //SEG120 [56] 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_line_cursor+$3e8 bne b1 lda sc cmp #div32u16u] + //SEG124 [59] call div32u16u + //SEG125 [132] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] jsr div32u16u - //SEG125 [60] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG126 sin16s_gen::@3 - //SEG127 [61] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG128 [62] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] - //SEG129 [62] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG126 [60] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG127 sin16s_gen::@3 + //SEG128 [61] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG129 [62] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG130 [62] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG130 [62] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG131 [62] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG131 [62] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG132 [62] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 - //SEG132 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] - //SEG133 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG135 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy - //SEG136 sin16s_gen::@1 + //SEG133 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG134 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG135 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG136 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG137 sin16s_gen::@1 b1: - //SEG137 [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG138 [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -5840,19 +5846,19 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG138 [64] call sin16s + //SEG139 [64] call sin16s jsr sin16s - //SEG139 [65] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG140 sin16s_gen::@4 - //SEG141 [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG142 [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG140 [65] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG141 sin16s_gen::@4 + //SEG142 [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG143 [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG143 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG144 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -5860,7 +5866,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG145 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -5874,12 +5880,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG146 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG147 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -5888,11 +5894,11 @@ sin16s_gen: { cmp #PI_u4f28>>$10 bcc b4 @@ -5927,8 +5933,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG153 [75] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG154 [75] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG154 [75] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG155 [75] 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 - //SEG155 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG156 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG156 [75] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG157 [75] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG157 [75] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG158 [75] 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 - //SEG158 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG159 sin16s::@1 + //SEG159 [75] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG160 sin16s::@1 b1: - //SEG160 [76] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG161 [76] 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 @@ -5973,8 +5979,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG163 [78] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG164 [78] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG165 sin16s::@2 + //SEG164 [78] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG165 [78] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG166 sin16s::@2 b2: - //SEG166 [79] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG167 [79] (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 @@ -6001,71 +6007,71 @@ sin16s: { rol _6+3 dey bne !- - //SEG167 [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG168 [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG168 [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG169 [81] (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 - //SEG169 [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG170 [82] (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 - //SEG170 [83] call mulu16_sel - //SEG171 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG172 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG171 [83] call mulu16_sel + //SEG172 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG173 [113] 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 - //SEG173 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG174 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG174 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG175 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG175 [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG176 sin16s::@8 - //SEG177 [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG176 [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG177 sin16s::@8 + //SEG178 [85] (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 - //SEG178 [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG179 [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG179 [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG180 [87] (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 - //SEG180 [88] call mulu16_sel - //SEG181 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG182 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG181 [88] call mulu16_sel + //SEG182 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG183 [113] 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 - //SEG183 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG184 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG184 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG185 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG185 [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG186 [89] (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 - //SEG186 sin16s::@9 - //SEG187 [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG188 [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG189 [92] call mulu16_sel - //SEG190 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG191 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG187 sin16s::@9 + //SEG188 [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG189 [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG190 [92] call mulu16_sel + //SEG191 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG192 [113] 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 - //SEG192 [113] 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 + //SEG193 [113] 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 - //SEG193 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG194 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG194 [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG195 sin16s::@10 - //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG197 [95] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG195 [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG196 sin16s::@10 + //SEG197 [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG198 [95] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6073,50 +6079,50 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG198 [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG199 [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG199 [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG200 [97] (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 - //SEG200 [98] call mulu16_sel - //SEG201 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG202 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG201 [98] call mulu16_sel + //SEG202 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG203 [113] 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 - //SEG203 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG204 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG204 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG205 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG205 [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG206 [99] (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 - //SEG206 sin16s::@11 - //SEG207 [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG208 [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG209 [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG207 sin16s::@11 + //SEG208 [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG209 [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG210 [102] (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 - //SEG210 [103] call mulu16_sel - //SEG211 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] - //SEG212 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG211 [103] call mulu16_sel + //SEG212 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG213 [113] 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 - //SEG213 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG214 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG214 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG215 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG215 [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG216 sin16s::@12 - //SEG217 [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG218 [106] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG216 [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG217 sin16s::@12 + //SEG218 [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG219 [106] (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 !- - //SEG219 [107] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG220 [107] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6124,12 +6130,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG220 [108] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG221 [108] 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 - //SEG221 sin16s::@6 - //SEG222 [109] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG222 sin16s::@6 + //SEG223 [109] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6139,17 +6145,17 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG223 [110] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] - //SEG224 [110] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG225 sin16s::@3 + //SEG224 [110] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG225 [110] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG226 sin16s::@3 b3: - //SEG226 sin16s::@return - //SEG227 [111] return + //SEG227 sin16s::@return + //SEG228 [111] return rts - //SEG228 sin16s::@15 - //SEG229 [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG229 sin16s::@15 + //SEG230 [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG230 mulu16_sel +//SEG231 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -6160,18 +6166,18 @@ mulu16_sel: { .label return = $13 .label return_1 = 8 .label return_10 = 8 - //SEG231 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG232 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG232 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 - //SEG233 [116] call mul16u + //SEG233 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + //SEG234 [116] call mul16u jsr mul16u - //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG235 mulu16_sel::@2 - //SEG236 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG237 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG235 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG236 mulu16_sel::@2 + //SEG237 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG238 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -6182,16 +6188,16 @@ mulu16_sel: { dex bne !- !e: - //SEG238 [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG239 [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG239 mulu16_sel::@return - //SEG240 [121] return + //SEG240 mulu16_sel::@return + //SEG241 [121] return rts } -//SEG241 mul16u +//SEG242 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $17 @@ -6199,7 +6205,7 @@ mul16u: { .label res = $f .label b = $13 .label return = $f - //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG243 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6207,34 +6213,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG243 [123] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG244 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG245 [123] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG244 [123] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG245 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG246 [123] 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 - //SEG246 [123] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG247 mul16u::@1 + //SEG247 [123] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG248 mul16u::@1 b1: - //SEG248 [124] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG249 [124] if((word) mul16u::a#2!=(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 - //SEG249 mul16u::@return - //SEG250 [125] return + //SEG250 mul16u::@return + //SEG251 [125] return rts - //SEG251 mul16u::@2 + //SEG252 mul16u::@2 b2: - //SEG252 [126] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG253 [126] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG253 [127] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG254 [127] 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 - //SEG254 mul16u::@7 - //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG255 mul16u::@7 + //SEG256 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6248,65 +6254,65 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG256 [129] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG257 [129] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG258 mul16u::@4 + //SEG257 [129] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG258 [129] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG259 mul16u::@4 b4: - //SEG259 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG260 [130] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG260 [131] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG261 [131] (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 - //SEG261 [123] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG262 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG263 [123] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG264 [123] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG262 [123] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG263 [123] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG264 [123] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG265 [123] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG265 div32u16u +//SEG266 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = 8 .label quotient_lo = 6 .label return = $1b - //SEG266 [133] call divr16u - //SEG267 [142] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG268 [142] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG267 [133] call divr16u + //SEG268 [142] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG269 [142] 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 - //SEG269 [142] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG270 [142] 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 - //SEG270 [134] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG271 div32u16u::@2 - //SEG272 [135] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG271 [134] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG272 div32u16u::@2 + //SEG273 [135] (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 - //SEG273 [136] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG274 [137] call divr16u - //SEG275 [142] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] - //SEG276 [142] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG274 [136] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG275 [137] call divr16u + //SEG276 [142] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG277 [142] 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 - //SEG277 [142] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG278 [142] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG278 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG279 div32u16u::@3 - //SEG280 [139] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG281 [140] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG279 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG280 div32u16u::@3 + //SEG281 [139] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG282 [140] (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 @@ -6315,11 +6321,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG282 div32u16u::@return - //SEG283 [141] return + //SEG283 div32u16u::@return + //SEG284 [141] return rts } -//SEG284 divr16u +//SEG285 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6329,48 +6335,48 @@ divr16u: { .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG285 [143] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG286 [143] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG286 [143] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG287 [143] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG287 [143] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG288 [143] 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 - //SEG288 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG289 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG290 [143] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG291 [143] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG292 [143] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG293 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG294 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG295 divr16u::@1 + //SEG289 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG290 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG291 [143] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG292 [143] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG293 [143] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG294 [143] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG295 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG296 divr16u::@1 b1: - //SEG296 [144] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG297 [144] (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 - //SEG297 [145] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG298 [145] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG298 [146] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG299 [146] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG299 [147] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG300 [147] 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 - //SEG300 divr16u::@4 - //SEG301 [148] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG301 divr16u::@4 + //SEG302 [148] (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 - //SEG302 [149] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG303 [149] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG304 divr16u::@2 + //SEG303 [149] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG304 [149] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG305 divr16u::@2 b2: - //SEG305 [150] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [150] (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 - //SEG306 [151] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG307 [151] (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 - //SEG307 [152] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG308 [152] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3 @@ -6379,13 +6385,13 @@ divr16u: { cmp #main.wavelength sta rem+1 - //SEG311 [155] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG312 [155] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG313 [155] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG314 divr16u::@3 + //SEG312 [155] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG313 [155] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG314 [155] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG315 divr16u::@3 b3: - //SEG315 [156] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG316 [156] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG316 [157] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG317 [157] 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 - //SEG317 divr16u::@6 - //SEG318 [158] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG319 divr16u::@return - //SEG320 [159] return + //SEG318 divr16u::@6 + //SEG319 [158] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG320 divr16u::@return + //SEG321 [159] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgen16b.asm b/src/test/ref/sinusgen16b.asm index f47404598..29cd787cb 100644 --- a/src/test/ref/sinusgen16b.asm +++ b/src/test/ref/sinusgen16b.asm @@ -1,3 +1,4 @@ +// Generates a 16-bit signed sinus .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log index 362f37ce3..95e9834a3 100644 --- a/src/test/ref/sinusgen16b.log +++ b/src/test/ref/sinusgen16b.log @@ -3178,11 +3178,13 @@ Allocated zp ZP_WORD:184 [ sin16s::x5_128#0 ] Allocated zp ZP_WORD:186 [ sin16s::usinx#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Generates a 16-bit signed sinus +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -3196,82 +3198,82 @@ INITIAL ASM .label print_line_cursor = $400 .label rem16u = $8e .label print_char_cursor = $d -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @42 [phi:@begin->@42] +//SEG4 [1] phi from @begin to @42 [phi:@begin->@42] b42_from_bbegin: jmp b42 -//SEG4 @42 +//SEG5 @42 b42: -//SEG5 [2] call main -//SEG6 [4] phi from @42 to main [phi:@42->main] +//SEG6 [2] call main +//SEG7 [4] phi from @42 to main [phi:@42->main] main_from_b42: jsr main -//SEG7 [3] phi from @42 to @end [phi:@42->@end] +//SEG8 [3] phi from @42 to @end [phi:@42->@end] bend_from_b42: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label wavelength = $78 .label sw = $43 .label st1 = 2 .label st2 = 4 .label i = 6 - //SEG10 [5] call sin16s_gen - //SEG11 [163] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG11 [5] call sin16s_gen + //SEG12 [163] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: jsr sin16s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG13 main::@5 + //SEG14 main::@5 b5: - //SEG14 [7] call sin16s_genb - //SEG15 [62] phi from main::@5 to sin16s_genb [phi:main::@5->sin16s_genb] + //SEG15 [7] call sin16s_genb + //SEG16 [62] phi from main::@5 to sin16s_genb [phi:main::@5->sin16s_genb] sin16s_genb_from_b5: jsr sin16s_genb - //SEG16 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG17 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG17 main::@6 + //SEG18 main::@6 b6: - //SEG18 [9] call print_cls - //SEG19 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] + //SEG19 [9] call print_cls + //SEG20 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] print_cls_from_b6: jsr print_cls - //SEG20 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG21 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG21 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 + //SEG22 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG22 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#1] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG23 [10] phi (signed word*) main::st2#2 = (const signed word[120]) main::sintab2#0 [phi:main::@6->main::@1#2] -- pwsz1=pwsc1 + //SEG24 [10] phi (signed word*) main::st2#2 = (const signed word[120]) main::sintab2#0 [phi:main::@6->main::@1#2] -- pwsz1=pwsc1 lda #sintab2 sta st2+1 - //SEG24 [10] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@6->main::@1#3] -- pwsz1=pwsc1 + //SEG25 [10] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@6->main::@1#3] -- pwsz1=pwsc1 lda #sintab1 sta st1+1 jmp b1 - //SEG25 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG26 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] b1_from_b9: - //SEG26 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#0] -- register_copy - //SEG27 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#1] -- register_copy - //SEG28 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@9->main::@1#2] -- register_copy - //SEG29 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@9->main::@1#3] -- register_copy + //SEG27 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#0] -- register_copy + //SEG28 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#1] -- register_copy + //SEG29 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@9->main::@1#2] -- register_copy + //SEG30 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@9->main::@1#3] -- register_copy jmp b1 - //SEG30 main::@1 + //SEG31 main::@1 b1: - //SEG31 [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) -- vwsz1=_deref_pwsz2_minus__deref_pwsz3 + //SEG32 [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) -- vwsz1=_deref_pwsz2_minus__deref_pwsz3 ldy #0 sec lda (st1),y @@ -3281,57 +3283,57 @@ main: { lda (st1),y sbc (st2),y sta sw+1 - //SEG32 [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 + //SEG33 [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 lda sw+1 bmi b2_from_b1 - //SEG33 [13] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG34 [13] phi from main::@1 to main::@3 [phi:main::@1->main::@3] b3_from_b1: jmp b3 - //SEG34 main::@3 + //SEG35 main::@3 b3: - //SEG35 [14] call print_str - //SEG36 [25] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG36 [14] call print_str + //SEG37 [25] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG37 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy - //SEG38 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG38 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG39 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG39 [15] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG40 [15] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG40 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG41 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG41 main::@2 + //SEG42 main::@2 b2: - //SEG42 [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 -- vwsz1=vwsz2 + //SEG43 [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 -- vwsz1=vwsz2 lda sw sta print_sword.w lda sw+1 sta print_sword.w+1 - //SEG43 [17] call print_sword + //SEG44 [17] call print_sword jsr print_sword - //SEG44 [18] phi from main::@2 to main::@8 [phi:main::@2->main::@8] + //SEG45 [18] phi from main::@2 to main::@8 [phi:main::@2->main::@8] b8_from_b2: jmp b8 - //SEG45 main::@8 + //SEG46 main::@8 b8: - //SEG46 [19] call print_str - //SEG47 [25] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG47 [19] call print_str + //SEG48 [25] phi from main::@8 to print_str [phi:main::@8->print_str] print_str_from_b8: - //SEG48 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@8->print_str#0] -- register_copy - //SEG49 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG49 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@8->print_str#0] -- register_copy + //SEG50 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b9 - //SEG50 main::@9 + //SEG51 main::@9 b9: - //SEG51 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st1 clc adc #2 @@ -3339,7 +3341,7 @@ main: { bcc !+ inc st1+1 !: - //SEG52 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st2 clc adc #2 @@ -3347,87 +3349,87 @@ main: { bcc !+ inc st2+1 !: - //SEG53 [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG54 [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG54 [23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG55 [23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$78 bne b1_from_b9 jmp breturn - //SEG55 main::@return + //SEG56 main::@return breturn: - //SEG56 [24] return + //SEG57 [24] return rts str: .text " @" str1: .text " @" sintab1: .fill 2*$78, 0 sintab2: .fill 2*$78, 0 } -//SEG57 print_str +//SEG58 print_str // Print a zero-terminated string print_str: { .label str = 7 - //SEG58 [26] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG59 [26] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG59 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG60 [26] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG61 [26] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG61 print_str::@1 + //SEG62 print_str::@1 b1: - //SEG62 [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG63 [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG63 print_str::@return + //SEG64 print_str::@return breturn: - //SEG64 [28] return + //SEG65 [28] return rts - //SEG65 print_str::@2 + //SEG66 print_str::@2 b2: - //SEG66 [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG67 [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG67 [30] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG68 [30] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG68 [31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG69 [31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG69 print_sword +//SEG70 print_sword // Print a signed word as HEX print_sword: { .label w = 9 - //SEG70 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG71 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG71 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG72 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG72 print_sword::@2 + //SEG73 print_sword::@2 b2: - //SEG73 [34] call print_char - //SEG74 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG74 [34] call print_char + //SEG75 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG75 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG76 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG76 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG77 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG77 print_sword::@4 + //SEG78 print_sword::@4 b4: - //SEG78 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG79 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -3437,145 +3439,145 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG79 [36] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG80 [36] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG80 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG81 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG81 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG82 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG82 print_sword::@1 + //SEG83 print_sword::@1 b1: - //SEG83 [37] call print_word + //SEG84 [37] call print_word jsr print_word jmp breturn - //SEG84 print_sword::@return + //SEG85 print_sword::@return breturn: - //SEG85 [38] return + //SEG86 [38] return rts } -//SEG86 print_word +//SEG87 print_word // Print a word as HEX print_word: { - //SEG87 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 + //SEG88 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 lda print_sword.w+1 sta print_byte.b - //SEG88 [40] call print_byte - //SEG89 [44] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG89 [40] call print_byte + //SEG90 [44] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG90 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG91 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG91 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy + //SEG92 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG92 print_word::@1 + //SEG93 print_word::@1 b1: - //SEG93 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 + //SEG94 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 lda print_sword.w sta print_byte.b - //SEG94 [42] call print_byte - //SEG95 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG95 [42] call print_byte + //SEG96 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG96 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG97 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG97 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG98 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG98 print_word::@return + //SEG99 print_word::@return breturn: - //SEG99 [43] return + //SEG100 [43] return rts } -//SEG100 print_byte +//SEG101 print_byte // Print a byte as HEX print_byte: { .label _0 = $45 .label _2 = $46 .label b = $b - //SEG101 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG102 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG102 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG103 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG103 [47] call print_char - //SEG104 [52] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG104 [47] call print_char + //SEG105 [52] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG105 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG106 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG106 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy + //SEG107 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG107 print_byte::@1 + //SEG108 print_byte::@1 b1: - //SEG108 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG109 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG109 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG110 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG110 [50] call print_char - //SEG111 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG111 [50] call print_char + //SEG112 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG112 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG113 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG113 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG114 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG114 print_byte::@return + //SEG115 print_byte::@return breturn: - //SEG115 [51] return + //SEG116 [51] return rts } -//SEG116 print_char +//SEG117 print_char // Print a single char print_char: { .label ch = $c - //SEG117 [53] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 + //SEG118 [53] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG118 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 + //SEG119 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG119 print_char::@return + //SEG120 print_char::@return breturn: - //SEG120 [55] return + //SEG121 [55] return rts } -//SEG121 print_cls +//SEG122 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $f - //SEG122 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG123 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG123 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG124 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG124 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG125 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG125 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG126 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG126 print_cls::@1 + //SEG127 print_cls::@1 b1: - //SEG127 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG128 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG128 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG129 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG129 [60] 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 + //SEG130 [60] 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_line_cursor+$3e8 bne b1_from_b1 @@ -3583,12 +3585,12 @@ print_cls: { cmp #div32u16u] + //SEG134 [63] call div32u16u + //SEG135 [135] phi from sin16s_genb to div32u16u [phi:sin16s_genb->div32u16u] div32u16u_from_sin16s_genb: jsr div32u16u - //SEG135 [64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG136 [64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_3 lda div32u16u.return+1 @@ -3612,9 +3614,9 @@ sin16s_genb: { lda div32u16u.return+3 sta div32u16u.return_3+3 jmp b3 - //SEG136 sin16s_genb::@3 + //SEG137 sin16s_genb::@3 b3: - //SEG137 [65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 -- vduz1=vduz2 + //SEG138 [65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 -- vduz1=vduz2 lda div32u16u.return_3 sta step lda div32u16u.return_3+1 @@ -3623,19 +3625,19 @@ sin16s_genb: { sta step+2 lda div32u16u.return_3+3 sta step+3 - //SEG138 [66] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] + //SEG139 [66] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] b1_from_b3: - //SEG139 [66] phi (word) sin16s_genb::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- vwuz1=vbuc1 + //SEG140 [66] phi (word) sin16s_genb::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG140 [66] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[120]) main::sintab2#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- pwsz1=pwsc1 + //SEG141 [66] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[120]) main::sintab2#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- pwsz1=pwsc1 lda #main.sintab2 sta sintab+1 - //SEG141 [66] phi (dword) sin16s_genb::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- vduz1=vbuc1 + //SEG142 [66] phi (dword) sin16s_genb::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -3643,42 +3645,42 @@ sin16s_genb: { sta x+2 sta x+3 jmp b1 - //SEG142 [66] phi from sin16s_genb::@4 to sin16s_genb::@1 [phi:sin16s_genb::@4->sin16s_genb::@1] + //SEG143 [66] phi from sin16s_genb::@4 to sin16s_genb::@1 [phi:sin16s_genb::@4->sin16s_genb::@1] b1_from_b4: - //SEG143 [66] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@4->sin16s_genb::@1#0] -- register_copy - //SEG144 [66] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@4->sin16s_genb::@1#1] -- register_copy - //SEG145 [66] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@4->sin16s_genb::@1#2] -- register_copy + //SEG144 [66] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@4->sin16s_genb::@1#0] -- register_copy + //SEG145 [66] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@4->sin16s_genb::@1#1] -- register_copy + //SEG146 [66] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@4->sin16s_genb::@1#2] -- register_copy jmp b1 - //SEG146 sin16s_genb::@1 + //SEG147 sin16s_genb::@1 b1: - //SEG147 [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 + //SEG148 [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 lda x+2 sta sin16sb.x lda x+3 sta sin16sb.x+1 - //SEG148 [68] call sin16sb + //SEG149 [68] call sin16sb jsr sin16sb - //SEG149 [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 -- vwsz1=vwsz2 + //SEG150 [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 -- vwsz1=vwsz2 lda sin16sb.return_1 sta sin16sb.return lda sin16sb.return_1+1 sta sin16sb.return+1 jmp b4 - //SEG150 sin16s_genb::@4 + //SEG151 sin16s_genb::@4 b4: - //SEG151 [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 -- vwsz1=vwsz2 + //SEG152 [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 -- vwsz1=vwsz2 lda sin16sb.return sta _2 lda sin16sb.return+1 sta _2+1 - //SEG152 [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 + //SEG153 [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 ldy #0 lda _2 sta (sintab),y iny lda _2+1 sta (sintab),y - //SEG153 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -3686,7 +3688,7 @@ sin16s_genb: { bcc !+ inc sintab+1 !: - //SEG154 [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG155 [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -3700,12 +3702,12 @@ sin16s_genb: { lda x+3 adc step+3 sta x+3 - //SEG155 [74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 + //SEG156 [74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG156 [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG157 [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -3715,12 +3717,12 @@ sin16s_genb: { bcc b1_from_b4 !: jmp breturn - //SEG157 sin16s_genb::@return + //SEG158 sin16s_genb::@return breturn: - //SEG158 [76] return + //SEG159 [76] return rts } -//SEG159 sin16sb +//SEG160 sin16sb // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -3740,7 +3742,7 @@ sin16sb: { .label sinx = $1c .label isUpper = $19 .label return_5 = $1c - //SEG160 [77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG161 [77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin16sb @@ -3750,9 +3752,9 @@ sin16sb: { bcc b1_from_sin16sb !: jmp b4 - //SEG161 sin16sb::@4 + //SEG162 sin16sb::@4 b4: - //SEG162 [78] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG163 [78] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG163 [79] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] + //SEG164 [79] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] b1_from_b4: - //SEG164 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuz1=vbuc1 + //SEG165 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG165 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy + //SEG166 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy jmp b1 - //SEG166 [79] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] + //SEG167 [79] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] b1_from_sin16sb: - //SEG167 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuz1=vbuc1 + //SEG168 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG168 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy + //SEG169 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy jmp b1 - //SEG169 sin16sb::@1 + //SEG170 sin16sb::@1 b1: - //SEG170 [80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG171 [80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -3786,9 +3788,9 @@ sin16sb: { bcc b2_from_b1 !: jmp b5 - //SEG171 sin16sb::@5 + //SEG172 sin16sb::@5 b5: - //SEG172 [81] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG173 [81] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG173 [82] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] + //SEG174 [82] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] b2_from_b1: b2_from_b5: - //SEG174 [82] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy + //SEG175 [82] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy jmp b2 - //SEG175 sin16sb::@2 + //SEG176 sin16sb::@2 b2: - //SEG176 [83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG177 [83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda x asl sta x1 @@ -3814,102 +3816,102 @@ sin16sb: { rol x1+1 asl x1 rol x1+1 - //SEG177 [84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG178 [84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG178 [85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG179 [85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG179 [86] call mulu16_sel - //SEG180 [116] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] + //SEG180 [86] call mulu16_sel + //SEG181 [116] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG181 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG182 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG182 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy - //SEG183 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy + //SEG183 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy + //SEG184 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG184 [87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG185 [87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_18 lda mulu16_sel.return_17+1 sta mulu16_sel.return_18+1 jmp b8 - //SEG185 sin16sb::@8 + //SEG186 sin16sb::@8 b8: - //SEG186 [88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 + //SEG187 [88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 lda mulu16_sel.return_18 sta x2 lda mulu16_sel.return_18+1 sta x2+1 - //SEG187 [89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 -- vwuz1=vwuz2 + //SEG188 [89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 -- vwuz1=vwuz2 lda x2 sta mulu16_sel.v1 lda x2+1 sta mulu16_sel.v1+1 - //SEG188 [90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG189 [90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG189 [91] call mulu16_sel - //SEG190 [116] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] + //SEG190 [91] call mulu16_sel + //SEG191 [116] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG191 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG192 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG192 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@8->mulu16_sel#1] -- register_copy - //SEG193 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy + //SEG193 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@8->mulu16_sel#1] -- register_copy + //SEG194 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG194 [92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG195 [92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_19 lda mulu16_sel.return_17+1 sta mulu16_sel.return_19+1 jmp b9 - //SEG195 sin16sb::@9 + //SEG196 sin16sb::@9 b9: - //SEG196 [93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 -- vwuz1=vwuz2 + //SEG197 [93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 -- vwuz1=vwuz2 lda mulu16_sel.return_19 sta x3 lda mulu16_sel.return_19+1 sta x3+1 - //SEG197 [94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 -- vwuz1=vwuz2 + //SEG198 [94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG198 [95] call mulu16_sel - //SEG199 [116] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] + //SEG199 [95] call mulu16_sel + //SEG200 [116] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG200 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG201 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG201 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16sb::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG202 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16sb::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG202 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy + //SEG203 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG203 [96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG204 [96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_20 lda mulu16_sel.return_17+1 sta mulu16_sel.return_20+1 jmp b10 - //SEG204 sin16sb::@10 + //SEG205 sin16sb::@10 b10: - //SEG205 [97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 -- vwuz1=vwuz2 + //SEG206 [97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 -- vwuz1=vwuz2 lda mulu16_sel.return_20 sta x3_6 lda mulu16_sel.return_20+1 sta x3_6+1 - //SEG206 [98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG207 [98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -3917,71 +3919,71 @@ sin16sb: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG207 [99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 -- vwuz1=vwuz2 + //SEG208 [99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG208 [100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG209 [100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG209 [101] call mulu16_sel - //SEG210 [116] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] + //SEG210 [101] call mulu16_sel + //SEG211 [116] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG211 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG212 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG212 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy - //SEG213 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy + //SEG213 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy + //SEG214 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG214 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG215 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_10 lda mulu16_sel.return_17+1 sta mulu16_sel.return_10+1 jmp b11 - //SEG215 sin16sb::@11 + //SEG216 sin16sb::@11 b11: - //SEG216 [103] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG217 [103] (word) sin16sb::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 - //SEG217 [104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 -- vwuz1=vwuz2 + //SEG218 [104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 -- vwuz1=vwuz2 lda x4 sta mulu16_sel.v1 lda x4+1 sta mulu16_sel.v1+1 - //SEG218 [105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG219 [105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG219 [106] call mulu16_sel - //SEG220 [116] phi from sin16sb::@11 to mulu16_sel [phi:sin16sb::@11->mulu16_sel] + //SEG220 [106] call mulu16_sel + //SEG221 [116] phi from sin16sb::@11 to mulu16_sel [phi:sin16sb::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG221 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@11->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG222 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@11->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG222 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@11->mulu16_sel#1] -- register_copy - //SEG223 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@11->mulu16_sel#2] -- register_copy + //SEG223 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@11->mulu16_sel#1] -- register_copy + //SEG224 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG224 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG225 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_11 lda mulu16_sel.return_17+1 sta mulu16_sel.return_11+1 jmp b12 - //SEG225 sin16sb::@12 + //SEG226 sin16sb::@12 b12: - //SEG226 [108] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG227 [108] (word) sin16sb::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 - //SEG227 [109] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG228 [109] (word) sin16sb::x5_128#0 ← (word) sin16sb::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 @@ -3992,7 +3994,7 @@ sin16sb: { ror x5_128 dey bne !- - //SEG228 [110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG229 [110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -4000,14 +4002,14 @@ sin16sb: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG229 [111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15 -- vbuz1_eq_0_then_la1 + //SEG230 [111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG230 sin16sb::@6 + //SEG231 sin16sb::@6 b6: - //SEG231 [112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG232 [112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -4017,28 +4019,28 @@ sin16sb: { eor #$ff adc #0 sta sinx+1 - //SEG232 [113] phi from sin16sb::@15 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3] + //SEG233 [113] phi from sin16sb::@15 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3] b3_from_b15: b3_from_b6: - //SEG233 [113] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3#0] -- register_copy + //SEG234 [113] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3#0] -- register_copy jmp b3 - //SEG234 sin16sb::@3 + //SEG235 sin16sb::@3 b3: jmp breturn - //SEG235 sin16sb::@return + //SEG236 sin16sb::@return breturn: - //SEG236 [114] return + //SEG237 [114] return rts - //SEG237 sin16sb::@15 + //SEG238 sin16sb::@15 b15: - //SEG238 [115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 -- vwsz1=vwsz2 + //SEG239 [115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 sta return_5+1 jmp b3_from_b15 } -//SEG239 mulu16_sel +//SEG240 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -4058,19 +4060,19 @@ mulu16_sel: { .label return_18 = $55 .label return_19 = $59 .label return_20 = $5d - //SEG240 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 + //SEG241 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG241 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 -- vwuz1=vwuz2 + //SEG242 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG242 [119] call mul16u + //SEG243 [119] call mul16u jsr mul16u - //SEG243 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG244 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -4080,9 +4082,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return+3 jmp b2 - //SEG244 mulu16_sel::@2 + //SEG245 mulu16_sel::@2 b2: - //SEG245 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG246 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta _0 lda mul16u.return+1 @@ -4091,7 +4093,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return+3 sta _0+3 - //SEG246 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz2_rol_vbuz3 + //SEG247 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -4110,18 +4112,18 @@ mulu16_sel: { dex bne !- !e: - //SEG247 [123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG248 [123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_17 lda _1+3 sta return_17+1 jmp breturn - //SEG248 mulu16_sel::@return + //SEG249 mulu16_sel::@return breturn: - //SEG249 [124] return + //SEG250 [124] return rts } -//SEG250 mul16u +//SEG251 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label _1 = $7f @@ -4130,7 +4132,7 @@ mul16u: { .label res = $25 .label b = $6f .label return = $71 - //SEG251 [125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG252 [125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -4138,44 +4140,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG252 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG253 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG253 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG254 [126] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG254 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG255 [126] 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 - //SEG255 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG256 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG256 mul16u::@1 + //SEG257 mul16u::@1 b1: - //SEG257 [127] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG258 [127] if((word) mul16u::a#2!=(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 - //SEG258 mul16u::@return + //SEG259 mul16u::@return breturn: - //SEG259 [128] return + //SEG260 [128] return rts - //SEG260 mul16u::@2 + //SEG261 mul16u::@2 b2: - //SEG261 [129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG262 [129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG262 [130] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG263 [130] 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 - //SEG263 mul16u::@7 + //SEG264 mul16u::@7 b7: - //SEG264 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG265 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4189,30 +4191,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG265 [132] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG266 [132] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG266 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG267 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG267 mul16u::@4 + //SEG268 mul16u::@4 b4: - //SEG268 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG269 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG269 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG270 [134] (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 - //SEG270 [126] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG271 [126] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG271 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG272 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG273 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG272 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG273 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG274 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG274 div32u16u +//SEG275 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { @@ -4221,62 +4223,62 @@ div32u16u: { .label return = $88 .label return_2 = $90 .label return_3 = $47 - //SEG275 [136] call divr16u - //SEG276 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG276 [136] call divr16u + //SEG277 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG277 [145] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG278 [145] 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 - //SEG278 [145] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG279 [145] 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 - //SEG279 [137] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG280 [137] (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 - //SEG280 div32u16u::@2 + //SEG281 div32u16u::@2 b2: - //SEG281 [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG282 [138] (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 - //SEG282 [139] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG283 [139] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG283 [140] call divr16u - //SEG284 [145] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG284 [140] call divr16u + //SEG285 [145] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG285 [145] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG286 [145] 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 - //SEG286 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG287 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG287 [141] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG288 [141] (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 - //SEG288 div32u16u::@3 + //SEG289 div32u16u::@3 b3: - //SEG289 [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG290 [142] (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 - //SEG290 [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG291 [143] (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 @@ -4286,12 +4288,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG291 div32u16u::@return + //SEG292 div32u16u::@return breturn: - //SEG292 [144] return + //SEG293 [144] return rts } -//SEG293 divr16u +//SEG294 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -4306,63 +4308,63 @@ divr16u: { .label return = $31 .label return_2 = $80 .label return_3 = $84 - //SEG294 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG295 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG295 [146] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG296 [146] 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 - //SEG296 [146] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG297 [146] 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 - //SEG297 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG298 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG298 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG299 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG299 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG300 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG300 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG301 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG302 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG303 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG301 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG302 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG303 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG304 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG304 divr16u::@1 + //SEG305 divr16u::@1 b1: - //SEG305 [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [147] (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 - //SEG306 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG307 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG307 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG308 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG308 [150] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG309 [150] 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 - //SEG309 divr16u::@4 + //SEG310 divr16u::@4 b4: - //SEG310 [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG311 [151] (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 - //SEG311 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG312 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG312 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG313 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG313 divr16u::@2 + //SEG314 divr16u::@2 b2: - //SEG314 [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG315 [153] (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 - //SEG315 [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG316 [154] (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 - //SEG316 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG317 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -4372,14 +4374,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG317 divr16u::@5 + //SEG318 divr16u::@5 b5: - //SEG318 [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG319 [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG319 [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG320 [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG320 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG321 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG321 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG322 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG322 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG323 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG323 divr16u::@3 + //SEG324 divr16u::@3 b3: - //SEG324 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG325 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG325 [160] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG326 [160] 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 - //SEG326 divr16u::@6 + //SEG327 divr16u::@6 b6: - //SEG327 [161] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG328 [161] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG328 divr16u::@return + //SEG329 divr16u::@return breturn: - //SEG329 [162] return + //SEG330 [162] return rts } -//SEG330 sin16s_gen +//SEG331 sin16s_gen // Generate signed (large) word sinus table - on the full -$7fff - $7fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -4425,11 +4427,11 @@ sin16s_gen: { .label sintab = $38 .label x = $34 .label i = $3a - //SEG331 [164] call div32u16u - //SEG332 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] + //SEG332 [164] call div32u16u + //SEG333 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG333 [165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG334 [165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -4439,9 +4441,9 @@ sin16s_gen: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b3 - //SEG334 sin16s_gen::@3 + //SEG335 sin16s_gen::@3 b3: - //SEG335 [166] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG336 [166] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -4450,19 +4452,19 @@ sin16s_gen: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG336 [167] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG337 [167] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG337 [167] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG338 [167] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG338 [167] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG339 [167] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG339 [167] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG340 [167] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -4470,15 +4472,15 @@ sin16s_gen: { sta x+2 sta x+3 jmp b1 - //SEG340 [167] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG341 [167] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] b1_from_b4: - //SEG341 [167] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG342 [167] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG343 [167] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG342 [167] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG343 [167] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG344 [167] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG344 sin16s_gen::@1 + //SEG345 sin16s_gen::@1 b1: - //SEG345 [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG346 [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -4487,29 +4489,29 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG346 [169] call sin16s + //SEG347 [169] call sin16s jsr sin16s - //SEG347 [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG348 [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b4 - //SEG348 sin16s_gen::@4 + //SEG349 sin16s_gen::@4 b4: - //SEG349 [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG350 [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta _1 lda sin16s.return+1 sta _1+1 - //SEG350 [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG351 [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG351 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -4517,7 +4519,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG352 [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG353 [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4531,12 +4533,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG353 [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG354 [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG354 [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG355 [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -4546,12 +4548,12 @@ sin16s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG355 sin16s_gen::@return + //SEG356 sin16s_gen::@return breturn: - //SEG356 [177] return + //SEG357 [177] return rts } -//SEG357 sin16s +//SEG358 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -4572,7 +4574,7 @@ sin16s: { .label sinx = $41 .label isUpper = $3c .label return_5 = $41 - //SEG358 [178] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG359 [178] 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 @@ -4590,9 +4592,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG359 sin16s::@4 + //SEG360 sin16s::@4 b4: - //SEG360 [179] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG361 [179] (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 - //SEG361 [180] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG362 [180] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG362 [180] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG363 [180] 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 - //SEG363 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG364 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG364 [180] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG365 [180] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG365 [180] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG366 [180] 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 - //SEG366 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG367 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG367 sin16s::@1 + //SEG368 sin16s::@1 b1: - //SEG368 [181] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG369 [181] 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 @@ -4640,9 +4642,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG369 sin16s::@5 + //SEG370 sin16s::@5 b5: - //SEG370 [182] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG371 [182] (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 - //SEG371 [183] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG372 [183] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG372 [183] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG373 [183] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG373 sin16s::@2 + //SEG374 sin16s::@2 b2: - //SEG374 [184] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG375 [184] (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 @@ -4680,107 +4682,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG375 [185] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG376 [185] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG376 [186] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG377 [186] (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 - //SEG377 [187] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG378 [187] (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 - //SEG378 [188] call mulu16_sel - //SEG379 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG379 [188] call mulu16_sel + //SEG380 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG380 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG381 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG381 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG382 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG382 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG383 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG383 [189] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG384 [189] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b8 - //SEG384 sin16s::@8 + //SEG385 sin16s::@8 b8: - //SEG385 [190] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG386 [190] (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 - //SEG386 [191] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG387 [191] (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 - //SEG387 [192] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG388 [192] (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 - //SEG388 [193] call mulu16_sel - //SEG389 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG389 [193] call mulu16_sel + //SEG390 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG390 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG391 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG391 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG392 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG392 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG393 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG393 [194] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG394 [194] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_1 lda mulu16_sel.return_17+1 sta mulu16_sel.return_1+1 jmp b9 - //SEG394 sin16s::@9 + //SEG395 sin16s::@9 b9: - //SEG395 [195] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG396 [195] (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 - //SEG396 [196] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG397 [196] (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 - //SEG397 [197] call mulu16_sel - //SEG398 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG398 [197] call mulu16_sel + //SEG399 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG399 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG400 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG400 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG401 [116] phi (word) mulu16_sel::v2#10 = (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 - //SEG401 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG402 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG402 [198] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG403 [198] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_14 lda mulu16_sel.return_17+1 sta mulu16_sel.return_14+1 jmp b10 - //SEG403 sin16s::@10 + //SEG404 sin16s::@10 b10: - //SEG404 [199] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 -- vwuz1=vwuz2 + //SEG405 [199] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 -- vwuz1=vwuz2 lda mulu16_sel.return_14 sta x3_6 lda mulu16_sel.return_14+1 sta x3_6+1 - //SEG405 [200] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG406 [200] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4788,71 +4790,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG406 [201] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG407 [201] (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 - //SEG407 [202] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG408 [202] (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 - //SEG408 [203] call mulu16_sel - //SEG409 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG409 [203] call mulu16_sel + //SEG410 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG410 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG411 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG411 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG412 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG412 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG413 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG413 [204] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG414 [204] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_15 lda mulu16_sel.return_17+1 sta mulu16_sel.return_15+1 jmp b11 - //SEG414 sin16s::@11 + //SEG415 sin16s::@11 b11: - //SEG415 [205] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 -- vwuz1=vwuz2 + //SEG416 [205] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 -- vwuz1=vwuz2 lda mulu16_sel.return_15 sta x4 lda mulu16_sel.return_15+1 sta x4+1 - //SEG416 [206] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG417 [206] (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 - //SEG417 [207] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG418 [207] (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 - //SEG418 [208] call mulu16_sel - //SEG419 [116] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG419 [208] call mulu16_sel + //SEG420 [116] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG420 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG421 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG421 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG422 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG422 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG423 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG423 [209] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG424 [209] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_16 lda mulu16_sel.return_17+1 sta mulu16_sel.return_16+1 jmp b12 - //SEG424 sin16s::@12 + //SEG425 sin16s::@12 b12: - //SEG425 [210] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 -- vwuz1=vwuz2 + //SEG426 [210] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 -- vwuz1=vwuz2 lda mulu16_sel.return_16 sta x5 lda mulu16_sel.return_16+1 sta x5+1 - //SEG426 [211] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG427 [211] (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 @@ -4863,7 +4865,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG427 [212] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG428 [212] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -4871,14 +4873,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG428 [213] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG429 [213] 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 - //SEG429 sin16s::@6 + //SEG430 sin16s::@6 b6: - //SEG430 [214] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG431 [214] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -4888,21 +4890,21 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG431 [215] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG432 [215] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG432 [215] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG433 [215] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG433 sin16s::@3 + //SEG434 sin16s::@3 b3: jmp breturn - //SEG434 sin16s::@return + //SEG435 sin16s::@return breturn: - //SEG435 [216] return + //SEG436 [216] return rts - //SEG436 sin16s::@15 + //SEG437 sin16s::@15 b15: - //SEG437 [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG438 [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 @@ -5354,11 +5356,13 @@ Allocated (was zp ZP_DWORD:41) zp ZP_DWORD:25 [ mul16u::mb#2 mul16u::mb#0 mul16u Allocated (was zp ZP_DWORD:71) zp ZP_DWORD:29 [ div32u16u::return#3 sin16s_genb::step#0 div32u16u::return#0 div32u16u::return#2 sin16s_gen::step#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Generates a 16-bit signed sinus +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -5372,80 +5376,80 @@ ASSEMBLER BEFORE OPTIMIZATION .label print_line_cursor = $400 .label rem16u = 2 .label print_char_cursor = $b -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @42 [phi:@begin->@42] +//SEG4 [1] phi from @begin to @42 [phi:@begin->@42] b42_from_bbegin: jmp b42 -//SEG4 @42 +//SEG5 @42 b42: -//SEG5 [2] call main -//SEG6 [4] phi from @42 to main [phi:@42->main] +//SEG6 [2] call main +//SEG7 [4] phi from @42 to main [phi:@42->main] main_from_b42: jsr main -//SEG7 [3] phi from @42 to @end [phi:@42->@end] +//SEG8 [3] phi from @42 to @end [phi:@42->@end] bend_from_b42: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label wavelength = $78 .label sw = 8 .label st1 = 2 .label st2 = 4 - //SEG10 [5] call sin16s_gen - //SEG11 [163] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG11 [5] call sin16s_gen + //SEG12 [163] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: jsr sin16s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG13 main::@5 + //SEG14 main::@5 b5: - //SEG14 [7] call sin16s_genb - //SEG15 [62] phi from main::@5 to sin16s_genb [phi:main::@5->sin16s_genb] + //SEG15 [7] call sin16s_genb + //SEG16 [62] phi from main::@5 to sin16s_genb [phi:main::@5->sin16s_genb] sin16s_genb_from_b5: jsr sin16s_genb - //SEG16 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG17 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG17 main::@6 + //SEG18 main::@6 b6: - //SEG18 [9] call print_cls - //SEG19 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] + //SEG19 [9] call print_cls + //SEG20 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] print_cls_from_b6: jsr print_cls - //SEG20 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG21 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG21 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#0] -- vbuxx=vbuc1 + //SEG22 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG22 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#1] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG23 [10] phi (signed word*) main::st2#2 = (const signed word[120]) main::sintab2#0 [phi:main::@6->main::@1#2] -- pwsz1=pwsc1 + //SEG24 [10] phi (signed word*) main::st2#2 = (const signed word[120]) main::sintab2#0 [phi:main::@6->main::@1#2] -- pwsz1=pwsc1 lda #sintab2 sta st2+1 - //SEG24 [10] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@6->main::@1#3] -- pwsz1=pwsc1 + //SEG25 [10] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@6->main::@1#3] -- pwsz1=pwsc1 lda #sintab1 sta st1+1 jmp b1 - //SEG25 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG26 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] b1_from_b9: - //SEG26 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#0] -- register_copy - //SEG27 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#1] -- register_copy - //SEG28 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@9->main::@1#2] -- register_copy - //SEG29 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@9->main::@1#3] -- register_copy + //SEG27 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#0] -- register_copy + //SEG28 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#1] -- register_copy + //SEG29 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@9->main::@1#2] -- register_copy + //SEG30 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@9->main::@1#3] -- register_copy jmp b1 - //SEG30 main::@1 + //SEG31 main::@1 b1: - //SEG31 [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) -- vwsz1=_deref_pwsz2_minus__deref_pwsz3 + //SEG32 [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) -- vwsz1=_deref_pwsz2_minus__deref_pwsz3 ldy #0 sec lda (st1),y @@ -5455,53 +5459,53 @@ main: { lda (st1),y sbc (st2),y sta sw+1 - //SEG32 [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 + //SEG33 [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 lda sw+1 bmi b2_from_b1 - //SEG33 [13] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG34 [13] phi from main::@1 to main::@3 [phi:main::@1->main::@3] b3_from_b1: jmp b3 - //SEG34 main::@3 + //SEG35 main::@3 b3: - //SEG35 [14] call print_str - //SEG36 [25] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG36 [14] call print_str + //SEG37 [25] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG37 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy - //SEG38 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG38 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG39 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG39 [15] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG40 [15] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG40 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG41 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG41 main::@2 + //SEG42 main::@2 b2: - //SEG42 [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 - //SEG43 [17] call print_sword + //SEG43 [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 + //SEG44 [17] call print_sword jsr print_sword - //SEG44 [18] phi from main::@2 to main::@8 [phi:main::@2->main::@8] + //SEG45 [18] phi from main::@2 to main::@8 [phi:main::@2->main::@8] b8_from_b2: jmp b8 - //SEG45 main::@8 + //SEG46 main::@8 b8: - //SEG46 [19] call print_str - //SEG47 [25] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG47 [19] call print_str + //SEG48 [25] phi from main::@8 to print_str [phi:main::@8->print_str] print_str_from_b8: - //SEG48 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@8->print_str#0] -- register_copy - //SEG49 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG49 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@8->print_str#0] -- register_copy + //SEG50 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b9 - //SEG50 main::@9 + //SEG51 main::@9 b9: - //SEG51 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st1 clc adc #2 @@ -5509,7 +5513,7 @@ main: { bcc !+ inc st1+1 !: - //SEG52 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st2 clc adc #2 @@ -5517,85 +5521,85 @@ main: { bcc !+ inc st2+1 !: - //SEG53 [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG54 [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG54 [23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG55 [23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$78 bne b1_from_b9 jmp breturn - //SEG55 main::@return + //SEG56 main::@return breturn: - //SEG56 [24] return + //SEG57 [24] return rts str: .text " @" str1: .text " @" sintab1: .fill 2*$78, 0 sintab2: .fill 2*$78, 0 } -//SEG57 print_str +//SEG58 print_str // Print a zero-terminated string print_str: { .label str = 6 - //SEG58 [26] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG59 [26] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG59 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG60 [26] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG61 [26] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG61 print_str::@1 + //SEG62 print_str::@1 b1: - //SEG62 [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG63 [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG63 print_str::@return + //SEG64 print_str::@return breturn: - //SEG64 [28] return + //SEG65 [28] return rts - //SEG65 print_str::@2 + //SEG66 print_str::@2 b2: - //SEG66 [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG67 [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG67 [30] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG68 [30] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG68 [31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG69 [31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG69 print_sword +//SEG70 print_sword // Print a signed word as HEX print_sword: { .label w = 8 - //SEG70 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG71 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG71 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG72 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG72 print_sword::@2 + //SEG73 print_sword::@2 b2: - //SEG73 [34] call print_char - //SEG74 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG74 [34] call print_char + //SEG75 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG75 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG76 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG76 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG77 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG77 print_sword::@4 + //SEG78 print_sword::@4 b4: - //SEG78 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG79 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -5605,137 +5609,137 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG79 [36] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG80 [36] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG80 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG81 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG81 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG82 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG82 print_sword::@1 + //SEG83 print_sword::@1 b1: - //SEG83 [37] call print_word + //SEG84 [37] call print_word jsr print_word jmp breturn - //SEG84 print_sword::@return + //SEG85 print_sword::@return breturn: - //SEG85 [38] return + //SEG86 [38] return rts } -//SEG86 print_word +//SEG87 print_word // Print a word as HEX print_word: { - //SEG87 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 + //SEG88 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 lda print_sword.w+1 sta print_byte.b - //SEG88 [40] call print_byte - //SEG89 [44] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG89 [40] call print_byte + //SEG90 [44] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG90 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG91 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG91 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy + //SEG92 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG92 print_word::@1 + //SEG93 print_word::@1 b1: - //SEG93 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 + //SEG94 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 lda print_sword.w sta print_byte.b - //SEG94 [42] call print_byte - //SEG95 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG95 [42] call print_byte + //SEG96 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG96 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG97 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG97 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG98 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG98 print_word::@return + //SEG99 print_word::@return breturn: - //SEG99 [43] return + //SEG100 [43] return rts } -//SEG100 print_byte +//SEG101 print_byte // Print a byte as HEX print_byte: { .label b = $a - //SEG101 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG102 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG102 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG103 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG103 [47] call print_char - //SEG104 [52] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG104 [47] call print_char + //SEG105 [52] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG105 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG106 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG106 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy + //SEG107 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG107 print_byte::@1 + //SEG108 print_byte::@1 b1: - //SEG108 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG109 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG109 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG110 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG110 [50] call print_char - //SEG111 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG111 [50] call print_char + //SEG112 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG112 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG113 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG113 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG114 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG114 print_byte::@return + //SEG115 print_byte::@return breturn: - //SEG115 [51] return + //SEG116 [51] return rts } -//SEG116 print_char +//SEG117 print_char // Print a single char print_char: { - //SEG117 [53] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG118 [53] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG118 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 + //SEG119 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG119 print_char::@return + //SEG120 print_char::@return breturn: - //SEG120 [55] return + //SEG121 [55] return rts } -//SEG121 print_cls +//SEG122 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG122 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG123 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG123 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG124 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG124 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG125 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG125 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG126 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG126 print_cls::@1 + //SEG127 print_cls::@1 b1: - //SEG127 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG128 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG128 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG129 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG129 [60] 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 + //SEG130 [60] 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_line_cursor+$3e8 bne b1_from_b1 @@ -5743,12 +5747,12 @@ print_cls: { cmp #div32u16u] + //SEG134 [63] call div32u16u + //SEG135 [135] phi from sin16s_genb to div32u16u [phi:sin16s_genb->div32u16u] div32u16u_from_sin16s_genb: jsr div32u16u - //SEG135 [64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 + //SEG136 [64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 jmp b3 - //SEG136 sin16s_genb::@3 + //SEG137 sin16s_genb::@3 b3: - //SEG137 [65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 - //SEG138 [66] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] + //SEG138 [65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 + //SEG139 [66] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] b1_from_b3: - //SEG139 [66] phi (word) sin16s_genb::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- vwuz1=vbuc1 + //SEG140 [66] phi (word) sin16s_genb::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG140 [66] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[120]) main::sintab2#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- pwsz1=pwsc1 + //SEG141 [66] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[120]) main::sintab2#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- pwsz1=pwsc1 lda #main.sintab2 sta sintab+1 - //SEG141 [66] phi (dword) sin16s_genb::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- vduz1=vbuc1 + //SEG142 [66] phi (dword) sin16s_genb::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -5787,34 +5791,34 @@ sin16s_genb: { sta x+2 sta x+3 jmp b1 - //SEG142 [66] phi from sin16s_genb::@4 to sin16s_genb::@1 [phi:sin16s_genb::@4->sin16s_genb::@1] + //SEG143 [66] phi from sin16s_genb::@4 to sin16s_genb::@1 [phi:sin16s_genb::@4->sin16s_genb::@1] b1_from_b4: - //SEG143 [66] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@4->sin16s_genb::@1#0] -- register_copy - //SEG144 [66] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@4->sin16s_genb::@1#1] -- register_copy - //SEG145 [66] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@4->sin16s_genb::@1#2] -- register_copy + //SEG144 [66] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@4->sin16s_genb::@1#0] -- register_copy + //SEG145 [66] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@4->sin16s_genb::@1#1] -- register_copy + //SEG146 [66] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@4->sin16s_genb::@1#2] -- register_copy jmp b1 - //SEG146 sin16s_genb::@1 + //SEG147 sin16s_genb::@1 b1: - //SEG147 [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 + //SEG148 [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 lda x+2 sta sin16sb.x lda x+3 sta sin16sb.x+1 - //SEG148 [68] call sin16sb + //SEG149 [68] call sin16sb jsr sin16sb - //SEG149 [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 + //SEG150 [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 jmp b4 - //SEG150 sin16s_genb::@4 + //SEG151 sin16s_genb::@4 b4: - //SEG151 [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 - //SEG152 [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 + //SEG152 [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 + //SEG153 [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 ldy #0 lda _2 sta (sintab),y iny lda _2+1 sta (sintab),y - //SEG153 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -5822,7 +5826,7 @@ sin16s_genb: { bcc !+ inc sintab+1 !: - //SEG154 [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG155 [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -5836,12 +5840,12 @@ sin16s_genb: { lda x+3 adc step+3 sta x+3 - //SEG155 [74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 + //SEG156 [74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG156 [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG157 [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -5851,12 +5855,12 @@ sin16s_genb: { bcc b1_from_b4 !: jmp breturn - //SEG157 sin16s_genb::@return + //SEG158 sin16s_genb::@return breturn: - //SEG158 [76] return + //SEG159 [76] return rts } -//SEG159 sin16sb +//SEG160 sin16sb // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -5873,7 +5877,7 @@ sin16sb: { .label x5_128 = $11 .label sinx = 8 .label isUpper = $a - //SEG160 [77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG161 [77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin16sb @@ -5883,9 +5887,9 @@ sin16sb: { bcc b1_from_sin16sb !: jmp b4 - //SEG161 sin16sb::@4 + //SEG162 sin16sb::@4 b4: - //SEG162 [78] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG163 [78] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG163 [79] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] + //SEG164 [79] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] b1_from_b4: - //SEG164 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuz1=vbuc1 + //SEG165 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG165 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy + //SEG166 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy jmp b1 - //SEG166 [79] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] + //SEG167 [79] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] b1_from_sin16sb: - //SEG167 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuz1=vbuc1 + //SEG168 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG168 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy + //SEG169 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy jmp b1 - //SEG169 sin16sb::@1 + //SEG170 sin16sb::@1 b1: - //SEG170 [80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG171 [80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -5919,9 +5923,9 @@ sin16sb: { bcc b2_from_b1 !: jmp b5 - //SEG171 sin16sb::@5 + //SEG172 sin16sb::@5 b5: - //SEG172 [81] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG173 [81] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG173 [82] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] + //SEG174 [82] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] b2_from_b1: b2_from_b5: - //SEG174 [82] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy + //SEG175 [82] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy jmp b2 - //SEG175 sin16sb::@2 + //SEG176 sin16sb::@2 b2: - //SEG176 [83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG177 [83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl x1 rol x1+1 asl x1 rol x1+1 asl x1 rol x1+1 - //SEG177 [84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG178 [84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG178 [85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG179 [85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG179 [86] call mulu16_sel - //SEG180 [116] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] + //SEG180 [86] call mulu16_sel + //SEG181 [116] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG181 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG182 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG182 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy - //SEG183 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy + //SEG183 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy + //SEG184 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG184 [87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 + //SEG185 [87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 jmp b8 - //SEG185 sin16sb::@8 + //SEG186 sin16sb::@8 b8: - //SEG186 [88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 + //SEG187 [88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 lda mulu16_sel.return_18 sta x2 lda mulu16_sel.return_18+1 sta x2+1 - //SEG187 [89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 - //SEG188 [90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG188 [89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 + //SEG189 [90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG189 [91] call mulu16_sel - //SEG190 [116] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] + //SEG190 [91] call mulu16_sel + //SEG191 [116] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG191 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG192 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG192 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@8->mulu16_sel#1] -- register_copy - //SEG193 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy + //SEG193 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@8->mulu16_sel#1] -- register_copy + //SEG194 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG194 [92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG195 [92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b9 - //SEG195 sin16sb::@9 + //SEG196 sin16sb::@9 b9: - //SEG196 [93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 - //SEG197 [94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 - //SEG198 [95] call mulu16_sel - //SEG199 [116] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] + //SEG197 [93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 + //SEG198 [94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 + //SEG199 [95] call mulu16_sel + //SEG200 [116] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG200 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG201 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG201 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16sb::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG202 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16sb::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG202 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy + //SEG203 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG203 [96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 + //SEG204 [96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 jmp b10 - //SEG204 sin16sb::@10 + //SEG205 sin16sb::@10 b10: - //SEG205 [97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 - //SEG206 [98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG206 [97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 + //SEG207 [98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6019,56 +6023,56 @@ sin16sb: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG207 [99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 - //SEG208 [100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG208 [99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 + //SEG209 [100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG209 [101] call mulu16_sel - //SEG210 [116] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] + //SEG210 [101] call mulu16_sel + //SEG211 [116] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG211 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG212 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG212 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy - //SEG213 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy + //SEG213 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy + //SEG214 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG214 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG215 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b11 - //SEG215 sin16sb::@11 + //SEG216 sin16sb::@11 b11: - //SEG216 [103] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 - //SEG217 [104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 - //SEG218 [105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG217 [103] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 + //SEG218 [104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 + //SEG219 [105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG219 [106] call mulu16_sel - //SEG220 [116] phi from sin16sb::@11 to mulu16_sel [phi:sin16sb::@11->mulu16_sel] + //SEG220 [106] call mulu16_sel + //SEG221 [116] phi from sin16sb::@11 to mulu16_sel [phi:sin16sb::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG221 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG222 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG222 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@11->mulu16_sel#1] -- register_copy - //SEG223 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@11->mulu16_sel#2] -- register_copy + //SEG223 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@11->mulu16_sel#1] -- register_copy + //SEG224 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG224 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 + //SEG225 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 jmp b12 - //SEG225 sin16sb::@12 + //SEG226 sin16sb::@12 b12: - //SEG226 [108] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 - //SEG227 [109] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG227 [108] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 + //SEG228 [109] (word) sin16sb::x5_128#0 ← (word) sin16sb::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 !- - //SEG228 [110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG229 [110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6076,14 +6080,14 @@ sin16sb: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG229 [111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15 -- vbuz1_eq_0_then_la1 + //SEG230 [111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG230 sin16sb::@6 + //SEG231 sin16sb::@6 b6: - //SEG231 [112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG232 [112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6093,24 +6097,24 @@ sin16sb: { eor #$ff adc #0 sta sinx+1 - //SEG232 [113] phi from sin16sb::@15 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3] + //SEG233 [113] phi from sin16sb::@15 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3] b3_from_b15: b3_from_b6: - //SEG233 [113] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3#0] -- register_copy + //SEG234 [113] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3#0] -- register_copy jmp b3 - //SEG234 sin16sb::@3 + //SEG235 sin16sb::@3 b3: jmp breturn - //SEG235 sin16sb::@return + //SEG236 sin16sb::@return breturn: - //SEG236 [114] return + //SEG237 [114] return rts - //SEG237 sin16sb::@15 + //SEG238 sin16sb::@15 b15: - //SEG238 [115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 + //SEG239 [115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 jmp b3_from_b15 } -//SEG239 mulu16_sel +//SEG240 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -6125,20 +6129,20 @@ mulu16_sel: { .label return_17 = $11 .label return_18 = $11 .label return_20 = $11 - //SEG240 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 + //SEG241 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG241 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 - //SEG242 [119] call mul16u + //SEG242 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 + //SEG243 [119] call mul16u jsr mul16u - //SEG243 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG244 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b2 - //SEG244 mulu16_sel::@2 + //SEG245 mulu16_sel::@2 b2: - //SEG245 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG246 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz1_rol_vbuxx + //SEG246 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG247 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -6149,18 +6153,18 @@ mulu16_sel: { dex bne !- !e: - //SEG247 [123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG248 [123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_17 lda _1+3 sta return_17+1 jmp breturn - //SEG248 mulu16_sel::@return + //SEG249 mulu16_sel::@return breturn: - //SEG249 [124] return + //SEG250 [124] return rts } -//SEG250 mul16u +//SEG251 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $19 @@ -6168,7 +6172,7 @@ mul16u: { .label res = $15 .label b = $11 .label return = $15 - //SEG251 [125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG252 [125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6176,42 +6180,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG252 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG253 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG253 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG254 [126] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG254 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG255 [126] 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 - //SEG255 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG256 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG256 mul16u::@1 + //SEG257 mul16u::@1 b1: - //SEG257 [127] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG258 [127] if((word) mul16u::a#2!=(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 - //SEG258 mul16u::@return + //SEG259 mul16u::@return breturn: - //SEG259 [128] return + //SEG260 [128] return rts - //SEG260 mul16u::@2 + //SEG261 mul16u::@2 b2: - //SEG261 [129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG262 [129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG262 [130] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG263 [130] 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 - //SEG263 mul16u::@7 + //SEG264 mul16u::@7 b7: - //SEG264 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG265 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6225,76 +6229,76 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG265 [132] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG266 [132] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG266 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG267 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG267 mul16u::@4 + //SEG268 mul16u::@4 b4: - //SEG268 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG269 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG269 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG270 [134] (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 - //SEG270 [126] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG271 [126] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG271 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG272 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG273 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG272 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG273 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG274 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG274 div32u16u +//SEG275 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = 8 .label quotient_lo = 6 .label return = $1d - //SEG275 [136] call divr16u - //SEG276 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG276 [136] call divr16u + //SEG277 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG277 [145] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG278 [145] 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 - //SEG278 [145] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG279 [145] 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 - //SEG279 [137] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG280 [137] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG280 div32u16u::@2 + //SEG281 div32u16u::@2 b2: - //SEG281 [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG282 [138] (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 - //SEG282 [139] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG283 [140] call divr16u - //SEG284 [145] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG283 [139] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG284 [140] call divr16u + //SEG285 [145] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG285 [145] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG286 [145] 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 - //SEG286 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG287 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG287 [141] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG288 [141] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b3 - //SEG288 div32u16u::@3 + //SEG289 div32u16u::@3 b3: - //SEG289 [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG290 [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG290 [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG291 [143] (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 @@ -6304,12 +6308,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG291 div32u16u::@return + //SEG292 div32u16u::@return breturn: - //SEG292 [144] return + //SEG293 [144] return rts } -//SEG293 divr16u +//SEG294 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6319,58 +6323,58 @@ divr16u: { .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG294 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG295 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG295 [146] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG296 [146] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG296 [146] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG297 [146] 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 - //SEG297 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG298 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG298 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG299 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG299 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG300 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG300 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG301 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG302 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG303 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG301 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG302 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG303 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG304 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG304 divr16u::@1 + //SEG305 divr16u::@1 b1: - //SEG305 [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [147] (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 - //SEG306 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG307 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG307 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG308 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG308 [150] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG309 [150] 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 - //SEG309 divr16u::@4 + //SEG310 divr16u::@4 b4: - //SEG310 [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG311 [151] (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 - //SEG311 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG312 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG312 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG313 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG313 divr16u::@2 + //SEG314 divr16u::@2 b2: - //SEG314 [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG315 [153] (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 - //SEG315 [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG316 [154] (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 - //SEG316 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG317 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -6380,14 +6384,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG317 divr16u::@5 + //SEG318 divr16u::@5 b5: - //SEG318 [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG319 [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG319 [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG320 [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG320 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG321 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG321 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG322 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG322 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG323 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG323 divr16u::@3 + //SEG324 divr16u::@3 b3: - //SEG324 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG325 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG325 [160] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG326 [160] 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 - //SEG326 divr16u::@6 + //SEG327 divr16u::@6 b6: - //SEG327 [161] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG328 [161] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG328 divr16u::@return + //SEG329 divr16u::@return breturn: - //SEG329 [162] return + //SEG330 [162] return rts } -//SEG330 sin16s_gen +//SEG331 sin16s_gen // Generate signed (large) word sinus table - on the full -$7fff - $7fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -6428,28 +6432,28 @@ sin16s_gen: { .label sintab = 2 .label x = $d .label i = 4 - //SEG331 [164] call div32u16u - //SEG332 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] + //SEG332 [164] call div32u16u + //SEG333 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG333 [165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG334 [165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b3 - //SEG334 sin16s_gen::@3 + //SEG335 sin16s_gen::@3 b3: - //SEG335 [166] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG336 [167] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG336 [166] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG337 [167] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG337 [167] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG338 [167] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG338 [167] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG339 [167] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG339 [167] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG340 [167] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6457,15 +6461,15 @@ sin16s_gen: { sta x+2 sta x+3 jmp b1 - //SEG340 [167] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG341 [167] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] b1_from_b4: - //SEG341 [167] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG342 [167] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG343 [167] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG342 [167] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG343 [167] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG344 [167] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG344 sin16s_gen::@1 + //SEG345 sin16s_gen::@1 b1: - //SEG345 [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG346 [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -6474,21 +6478,21 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG346 [169] call sin16s + //SEG347 [169] call sin16s jsr sin16s - //SEG347 [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG348 [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b4 - //SEG348 sin16s_gen::@4 + //SEG349 sin16s_gen::@4 b4: - //SEG349 [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG350 [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG350 [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG351 [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG351 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -6496,7 +6500,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG352 [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG353 [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6510,12 +6514,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG353 [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG354 [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG354 [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG355 [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -6525,12 +6529,12 @@ sin16s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG355 sin16s_gen::@return + //SEG356 sin16s_gen::@return breturn: - //SEG356 [177] return + //SEG357 [177] return rts } -//SEG357 sin16s +//SEG358 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -6548,7 +6552,7 @@ sin16s: { .label x5_128 = $11 .label sinx = 6 .label isUpper = $a - //SEG358 [178] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG359 [178] 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 @@ -6566,9 +6570,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG359 sin16s::@4 + //SEG360 sin16s::@4 b4: - //SEG360 [179] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG361 [179] (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 - //SEG361 [180] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG362 [180] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG362 [180] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG363 [180] 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 - //SEG363 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG364 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG364 [180] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG365 [180] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG365 [180] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG366 [180] 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 - //SEG366 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG367 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG367 sin16s::@1 + //SEG368 sin16s::@1 b1: - //SEG368 [181] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG369 [181] 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 @@ -6616,9 +6620,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG369 sin16s::@5 + //SEG370 sin16s::@5 b5: - //SEG370 [182] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG371 [182] (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 - //SEG371 [183] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG372 [183] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG372 [183] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG373 [183] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG373 sin16s::@2 + //SEG374 sin16s::@2 b2: - //SEG374 [184] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG375 [184] (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 @@ -6648,80 +6652,80 @@ sin16s: { rol _6+3 dey bne !- - //SEG375 [185] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG376 [185] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG376 [186] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG377 [186] (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 - //SEG377 [187] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG378 [187] (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 - //SEG378 [188] call mulu16_sel - //SEG379 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG379 [188] call mulu16_sel + //SEG380 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG380 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG381 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG381 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG382 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG382 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG383 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG383 [189] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG384 [189] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b8 - //SEG384 sin16s::@8 + //SEG385 sin16s::@8 b8: - //SEG385 [190] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - //SEG386 [191] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG387 [192] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG386 [190] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + //SEG387 [191] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG388 [192] (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 - //SEG388 [193] call mulu16_sel - //SEG389 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG389 [193] call mulu16_sel + //SEG390 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG390 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG391 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG391 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG392 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG392 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG393 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG393 [194] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG394 [194] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b9 - //SEG394 sin16s::@9 + //SEG395 sin16s::@9 b9: - //SEG395 [195] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG396 [196] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG397 [197] call mulu16_sel - //SEG398 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG396 [195] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG397 [196] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG398 [197] call mulu16_sel + //SEG399 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG399 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG400 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG400 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG401 [116] phi (word) mulu16_sel::v2#10 = (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 - //SEG401 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG402 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG402 [198] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 + //SEG403 [198] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 jmp b10 - //SEG403 sin16s::@10 + //SEG404 sin16s::@10 b10: - //SEG404 [199] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 - //SEG405 [200] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG405 [199] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 + //SEG406 [200] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6729,56 +6733,56 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG406 [201] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG407 [202] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG407 [201] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG408 [202] (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 - //SEG408 [203] call mulu16_sel - //SEG409 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG409 [203] call mulu16_sel + //SEG410 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG410 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG411 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG411 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG412 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG412 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG413 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG413 [204] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG414 [204] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b11 - //SEG414 sin16s::@11 + //SEG415 sin16s::@11 b11: - //SEG415 [205] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 - //SEG416 [206] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG417 [207] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG416 [205] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 + //SEG417 [206] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG418 [207] (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 - //SEG418 [208] call mulu16_sel - //SEG419 [116] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG419 [208] call mulu16_sel + //SEG420 [116] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG420 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG421 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG421 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG422 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG422 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG423 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG423 [209] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 + //SEG424 [209] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 jmp b12 - //SEG424 sin16s::@12 + //SEG425 sin16s::@12 b12: - //SEG425 [210] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 - //SEG426 [211] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG426 [210] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 + //SEG427 [211] (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 !- - //SEG427 [212] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG428 [212] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6786,14 +6790,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG428 [213] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG429 [213] 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 - //SEG429 sin16s::@6 + //SEG430 sin16s::@6 b6: - //SEG430 [214] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG431 [214] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6803,21 +6807,21 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG431 [215] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG432 [215] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG432 [215] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG433 [215] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG433 sin16s::@3 + //SEG434 sin16s::@3 b3: jmp breturn - //SEG434 sin16s::@return + //SEG435 sin16s::@return breturn: - //SEG435 [216] return + //SEG436 [216] return rts - //SEG436 sin16s::@15 + //SEG437 sin16s::@15 b15: - //SEG437 [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG438 [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b15 } print_hextab: .text "0123456789abcdef" @@ -7448,11 +7452,13 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER Score: 23125 -//SEG0 Basic Upstart +//SEG0 File Comments +// Generates a 16-bit signed sinus +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -7466,58 +7472,58 @@ Score: 23125 .label print_line_cursor = $400 .label rem16u = 2 .label print_char_cursor = $b -//SEG2 @begin -//SEG3 [1] phi from @begin to @42 [phi:@begin->@42] -//SEG4 @42 -//SEG5 [2] call main -//SEG6 [4] phi from @42 to main [phi:@42->main] -//SEG7 [3] phi from @42 to @end [phi:@42->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @42 [phi:@begin->@42] +//SEG5 @42 +//SEG6 [2] call main +//SEG7 [4] phi from @42 to main [phi:@42->main] +//SEG8 [3] phi from @42 to @end [phi:@42->@end] +//SEG9 @end +//SEG10 main main: { .label wavelength = $78 .label sw = 8 .label st1 = 2 .label st2 = 4 - //SEG10 [5] call sin16s_gen - //SEG11 [163] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG11 [5] call sin16s_gen + //SEG12 [163] phi from main to sin16s_gen [phi:main->sin16s_gen] jsr sin16s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] - //SEG13 main::@5 - //SEG14 [7] call sin16s_genb - //SEG15 [62] phi from main::@5 to sin16s_genb [phi:main::@5->sin16s_genb] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG14 main::@5 + //SEG15 [7] call sin16s_genb + //SEG16 [62] phi from main::@5 to sin16s_genb [phi:main::@5->sin16s_genb] jsr sin16s_genb - //SEG16 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG17 main::@6 - //SEG18 [9] call print_cls - //SEG19 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] + //SEG17 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG18 main::@6 + //SEG19 [9] call print_cls + //SEG20 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] jsr print_cls - //SEG20 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] - //SEG21 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#0] -- vbuxx=vbuc1 + //SEG21 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG22 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG22 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#1] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG23 [10] phi (signed word*) main::st2#2 = (const signed word[120]) main::sintab2#0 [phi:main::@6->main::@1#2] -- pwsz1=pwsc1 + //SEG24 [10] phi (signed word*) main::st2#2 = (const signed word[120]) main::sintab2#0 [phi:main::@6->main::@1#2] -- pwsz1=pwsc1 lda #sintab2 sta st2+1 - //SEG24 [10] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@6->main::@1#3] -- pwsz1=pwsc1 + //SEG25 [10] phi (signed word*) main::st1#2 = (const signed word[120]) main::sintab1#0 [phi:main::@6->main::@1#3] -- pwsz1=pwsc1 lda #sintab1 sta st1+1 - //SEG25 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] - //SEG26 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#0] -- register_copy - //SEG27 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#1] -- register_copy - //SEG28 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@9->main::@1#2] -- register_copy - //SEG29 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@9->main::@1#3] -- register_copy - //SEG30 main::@1 + //SEG26 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG27 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#0] -- register_copy + //SEG28 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#1] -- register_copy + //SEG29 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@9->main::@1#2] -- register_copy + //SEG30 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@9->main::@1#3] -- register_copy + //SEG31 main::@1 b1: - //SEG31 [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) -- vwsz1=_deref_pwsz2_minus__deref_pwsz3 + //SEG32 [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) -- vwsz1=_deref_pwsz2_minus__deref_pwsz3 ldy #0 sec lda (st1),y @@ -7527,39 +7533,39 @@ main: { lda (st1),y sbc (st2),y sta sw+1 - //SEG32 [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 + //SEG33 [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vwsz1_lt_0_then_la1 bmi b2 - //SEG33 [13] phi from main::@1 to main::@3 [phi:main::@1->main::@3] - //SEG34 main::@3 - //SEG35 [14] call print_str - //SEG36 [25] phi from main::@3 to print_str [phi:main::@3->print_str] - //SEG37 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy - //SEG38 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG34 [13] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG35 main::@3 + //SEG36 [14] call print_str + //SEG37 [25] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG38 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG39 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG39 [15] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] - //SEG40 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG41 main::@2 + //SEG40 [15] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG41 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG42 main::@2 b2: - //SEG42 [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 - //SEG43 [17] call print_sword + //SEG43 [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 + //SEG44 [17] call print_sword jsr print_sword - //SEG44 [18] phi from main::@2 to main::@8 [phi:main::@2->main::@8] - //SEG45 main::@8 - //SEG46 [19] call print_str - //SEG47 [25] phi from main::@8 to print_str [phi:main::@8->print_str] - //SEG48 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@8->print_str#0] -- register_copy - //SEG49 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG45 [18] phi from main::@2 to main::@8 [phi:main::@2->main::@8] + //SEG46 main::@8 + //SEG47 [19] call print_str + //SEG48 [25] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG49 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@8->print_str#0] -- register_copy + //SEG50 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG50 main::@9 - //SEG51 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG51 main::@9 + //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st1 clc adc #2 @@ -7567,7 +7573,7 @@ main: { bcc !+ inc st1+1 !: - //SEG52 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda st2 clc adc #2 @@ -7575,71 +7581,71 @@ main: { bcc !+ inc st2+1 !: - //SEG53 [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG54 [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG54 [23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG55 [23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$78 bne b1 - //SEG55 main::@return - //SEG56 [24] return + //SEG56 main::@return + //SEG57 [24] return rts str: .text " @" str1: .text " @" sintab1: .fill 2*$78, 0 sintab2: .fill 2*$78, 0 } -//SEG57 print_str +//SEG58 print_str // Print a zero-terminated string print_str: { .label str = 6 - //SEG58 [26] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG59 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG60 [26] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG61 print_str::@1 + //SEG59 [26] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG61 [26] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG62 print_str::@1 b1: - //SEG62 [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG63 [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG63 print_str::@return - //SEG64 [28] return + //SEG64 print_str::@return + //SEG65 [28] return rts - //SEG65 print_str::@2 + //SEG66 print_str::@2 b2: - //SEG66 [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG67 [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG67 [30] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG68 [30] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG68 [31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG69 [31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG69 print_sword +//SEG70 print_sword // Print a signed word as HEX print_sword: { .label w = 8 - //SEG70 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG71 [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1 - //SEG71 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG72 print_sword::@2 - //SEG73 [34] call print_char - //SEG74 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG75 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG76 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG72 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG73 print_sword::@2 + //SEG74 [34] call print_char + //SEG75 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG76 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG77 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG77 print_sword::@4 - //SEG78 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG78 print_sword::@4 + //SEG79 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -7649,125 +7655,125 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG79 [36] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] - //SEG80 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG81 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy - //SEG82 print_sword::@1 + //SEG80 [36] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG81 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG82 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG83 print_sword::@1 b1: - //SEG83 [37] call print_word + //SEG84 [37] call print_word jsr print_word - //SEG84 print_sword::@return - //SEG85 [38] return + //SEG85 print_sword::@return + //SEG86 [38] return rts } -//SEG86 print_word +//SEG87 print_word // Print a word as HEX print_word: { - //SEG87 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 + //SEG88 [39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 -- vbuz1=_hi_vwuz2 lda print_sword.w+1 sta print_byte.b - //SEG88 [40] call print_byte - //SEG89 [44] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG90 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG91 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG89 [40] call print_byte + //SEG90 [44] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG91 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy + //SEG92 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG92 print_word::@1 - //SEG93 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 + //SEG93 print_word::@1 + //SEG94 [41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 -- vbuz1=_lo_vwuz2 lda print_sword.w sta print_byte.b - //SEG94 [42] call print_byte - //SEG95 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG96 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG97 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG95 [42] call print_byte + //SEG96 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG97 [44] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG98 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG98 print_word::@return - //SEG99 [43] return + //SEG99 print_word::@return + //SEG100 [43] return rts } -//SEG100 print_byte +//SEG101 print_byte // Print a byte as HEX print_byte: { .label b = $a - //SEG101 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG102 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG102 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG103 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG103 [47] call print_char - //SEG104 [52] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG105 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG106 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG104 [47] call print_char + //SEG105 [52] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG106 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy + //SEG107 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG107 print_byte::@1 - //SEG108 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG108 print_byte::@1 + //SEG109 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG109 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG110 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG110 [50] call print_char - //SEG111 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG112 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG113 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG111 [50] call print_char + //SEG112 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG113 [52] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG114 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG114 print_byte::@return - //SEG115 [51] return + //SEG115 print_byte::@return + //SEG116 [51] return rts } -//SEG116 print_char +//SEG117 print_char // Print a single char print_char: { - //SEG117 [53] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG118 [53] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG118 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 + //SEG119 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG119 print_char::@return - //SEG120 [55] return + //SEG120 print_char::@return + //SEG121 [55] return rts } -//SEG121 print_cls +//SEG122 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG122 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG123 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG123 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG124 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 - //SEG124 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG125 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG126 print_cls::@1 + //SEG125 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG126 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG127 print_cls::@1 b1: - //SEG127 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG128 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG128 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG129 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG129 [60] 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 + //SEG130 [60] 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_line_cursor+$3e8 bne b1 lda sc cmp #div32u16u] + //SEG134 [63] call div32u16u + //SEG135 [135] phi from sin16s_genb to div32u16u [phi:sin16s_genb->div32u16u] jsr div32u16u - //SEG135 [64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 - //SEG136 sin16s_genb::@3 - //SEG137 [65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 - //SEG138 [66] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] - //SEG139 [66] phi (word) sin16s_genb::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- vwuz1=vbuc1 + //SEG136 [64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 + //SEG137 sin16s_genb::@3 + //SEG138 [65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 + //SEG139 [66] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] + //SEG140 [66] phi (word) sin16s_genb::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG140 [66] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[120]) main::sintab2#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- pwsz1=pwsc1 + //SEG141 [66] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[120]) main::sintab2#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- pwsz1=pwsc1 lda #main.sintab2 sta sintab+1 - //SEG141 [66] phi (dword) sin16s_genb::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- vduz1=vbuc1 + //SEG142 [66] phi (dword) sin16s_genb::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 - //SEG142 [66] phi from sin16s_genb::@4 to sin16s_genb::@1 [phi:sin16s_genb::@4->sin16s_genb::@1] - //SEG143 [66] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@4->sin16s_genb::@1#0] -- register_copy - //SEG144 [66] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@4->sin16s_genb::@1#1] -- register_copy - //SEG145 [66] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@4->sin16s_genb::@1#2] -- register_copy - //SEG146 sin16s_genb::@1 + //SEG143 [66] phi from sin16s_genb::@4 to sin16s_genb::@1 [phi:sin16s_genb::@4->sin16s_genb::@1] + //SEG144 [66] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@4->sin16s_genb::@1#0] -- register_copy + //SEG145 [66] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@4->sin16s_genb::@1#1] -- register_copy + //SEG146 [66] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@4->sin16s_genb::@1#2] -- register_copy + //SEG147 sin16s_genb::@1 b1: - //SEG147 [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 + //SEG148 [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 lda x+2 sta sin16sb.x lda x+3 sta sin16sb.x+1 - //SEG148 [68] call sin16sb + //SEG149 [68] call sin16sb jsr sin16sb - //SEG149 [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 - //SEG150 sin16s_genb::@4 - //SEG151 [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 - //SEG152 [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 + //SEG150 [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 + //SEG151 sin16s_genb::@4 + //SEG152 [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 + //SEG153 [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 ldy #0 lda _2 sta (sintab),y iny lda _2+1 sta (sintab),y - //SEG153 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -7830,7 +7836,7 @@ sin16s_genb: { bcc !+ inc sintab+1 !: - //SEG154 [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG155 [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -7844,12 +7850,12 @@ sin16s_genb: { lda x+3 adc step+3 sta x+3 - //SEG155 [74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 + //SEG156 [74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG156 [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG157 [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -7858,11 +7864,11 @@ sin16s_genb: { cmp #PI_u4f12 bcc b4 @@ -7888,8 +7894,8 @@ sin16sb: { cmp #PI_u4f12 sta x+1 - //SEG163 [79] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] - //SEG164 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuz1=vbuc1 + //SEG164 [79] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] + //SEG165 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG165 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy + //SEG166 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy jmp b1 - //SEG166 [79] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] + //SEG167 [79] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] b4: - //SEG167 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuz1=vbuc1 + //SEG168 [79] phi (byte) sin16sb::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG168 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy - //SEG169 sin16sb::@1 + //SEG169 [79] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy + //SEG170 sin16sb::@1 b1: - //SEG170 [80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG171 [80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2 @@ -7920,8 +7926,8 @@ sin16sb: { cmp #PI_u4f12 sbc x+1 sta x+1 - //SEG173 [82] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] - //SEG174 [82] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy - //SEG175 sin16sb::@2 + //SEG174 [82] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] + //SEG175 [82] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy + //SEG176 sin16sb::@2 b2: - //SEG176 [83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG177 [83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl x1 rol x1+1 asl x1 rol x1+1 asl x1 rol x1+1 - //SEG177 [84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG178 [84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG178 [85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG179 [85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG179 [86] call mulu16_sel - //SEG180 [116] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] - //SEG181 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG180 [86] call mulu16_sel + //SEG181 [116] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] + //SEG182 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG182 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy - //SEG183 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy + //SEG183 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy + //SEG184 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG184 [87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 - //SEG185 sin16sb::@8 - //SEG186 [88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 + //SEG185 [87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 + //SEG186 sin16sb::@8 + //SEG187 [88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 lda mulu16_sel.return_18 sta x2 lda mulu16_sel.return_18+1 sta x2+1 - //SEG187 [89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 - //SEG188 [90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG188 [89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 + //SEG189 [90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG189 [91] call mulu16_sel - //SEG190 [116] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] - //SEG191 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG190 [91] call mulu16_sel + //SEG191 [116] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] + //SEG192 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG192 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@8->mulu16_sel#1] -- register_copy - //SEG193 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy + //SEG193 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@8->mulu16_sel#1] -- register_copy + //SEG194 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG194 [92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG195 [92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG195 sin16sb::@9 - //SEG196 [93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 - //SEG197 [94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 - //SEG198 [95] call mulu16_sel - //SEG199 [116] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] - //SEG200 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG196 sin16sb::@9 + //SEG197 [93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 + //SEG198 [94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 + //SEG199 [95] call mulu16_sel + //SEG200 [116] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] + //SEG201 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16sb::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG201 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16sb::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG202 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16sb::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG202 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy + //SEG203 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG203 [96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 - //SEG204 sin16sb::@10 - //SEG205 [97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 - //SEG206 [98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG204 [96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 + //SEG205 sin16sb::@10 + //SEG206 [97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 + //SEG207 [98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8007,50 +8013,50 @@ sin16sb: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG207 [99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 - //SEG208 [100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG208 [99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 + //SEG209 [100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG209 [101] call mulu16_sel - //SEG210 [116] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] - //SEG211 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG210 [101] call mulu16_sel + //SEG211 [116] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] + //SEG212 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG212 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy - //SEG213 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy + //SEG213 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy + //SEG214 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG214 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG215 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG215 sin16sb::@11 - //SEG216 [103] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 - //SEG217 [104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 - //SEG218 [105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG216 sin16sb::@11 + //SEG217 [103] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 + //SEG218 [104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 + //SEG219 [105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG219 [106] call mulu16_sel - //SEG220 [116] phi from sin16sb::@11 to mulu16_sel [phi:sin16sb::@11->mulu16_sel] - //SEG221 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG220 [106] call mulu16_sel + //SEG221 [116] phi from sin16sb::@11 to mulu16_sel [phi:sin16sb::@11->mulu16_sel] + //SEG222 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16sb::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG222 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@11->mulu16_sel#1] -- register_copy - //SEG223 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@11->mulu16_sel#2] -- register_copy + //SEG223 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@11->mulu16_sel#1] -- register_copy + //SEG224 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG224 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 - //SEG225 sin16sb::@12 - //SEG226 [108] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 - //SEG227 [109] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG225 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 + //SEG226 sin16sb::@12 + //SEG227 [108] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 + //SEG228 [109] (word) sin16sb::x5_128#0 ← (word) sin16sb::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 !- - //SEG228 [110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG229 [110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -8058,12 +8064,12 @@ sin16sb: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG229 [111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15 -- vbuz1_eq_0_then_la1 + //SEG230 [111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG230 sin16sb::@6 - //SEG231 [112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG231 sin16sb::@6 + //SEG232 [112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -8073,17 +8079,17 @@ sin16sb: { eor #$ff adc #0 sta sinx+1 - //SEG232 [113] phi from sin16sb::@15 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3] - //SEG233 [113] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3#0] -- register_copy - //SEG234 sin16sb::@3 + //SEG233 [113] phi from sin16sb::@15 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3] + //SEG234 [113] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@15/sin16sb::@6->sin16sb::@3#0] -- register_copy + //SEG235 sin16sb::@3 b3: - //SEG235 sin16sb::@return - //SEG236 [114] return + //SEG236 sin16sb::@return + //SEG237 [114] return rts - //SEG237 sin16sb::@15 - //SEG238 [115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 + //SEG238 sin16sb::@15 + //SEG239 [115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 } -//SEG239 mulu16_sel +//SEG240 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -8098,18 +8104,18 @@ mulu16_sel: { .label return_17 = $11 .label return_18 = $11 .label return_20 = $11 - //SEG240 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 + //SEG241 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG241 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 - //SEG242 [119] call mul16u + //SEG242 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 + //SEG243 [119] call mul16u jsr mul16u - //SEG243 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG244 mulu16_sel::@2 - //SEG245 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG246 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz1_rol_vbuxx + //SEG244 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG245 mulu16_sel::@2 + //SEG246 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG247 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -8120,16 +8126,16 @@ mulu16_sel: { dex bne !- !e: - //SEG247 [123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG248 [123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_17 lda _1+3 sta return_17+1 - //SEG248 mulu16_sel::@return - //SEG249 [124] return + //SEG249 mulu16_sel::@return + //SEG250 [124] return rts } -//SEG250 mul16u +//SEG251 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $19 @@ -8137,7 +8143,7 @@ mul16u: { .label res = $15 .label b = $11 .label return = $15 - //SEG251 [125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG252 [125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8145,34 +8151,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG252 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG253 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG254 [126] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG253 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG254 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG255 [126] 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 - //SEG255 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG256 mul16u::@1 + //SEG256 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG257 mul16u::@1 b1: - //SEG257 [127] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG258 [127] if((word) mul16u::a#2!=(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 - //SEG258 mul16u::@return - //SEG259 [128] return + //SEG259 mul16u::@return + //SEG260 [128] return rts - //SEG260 mul16u::@2 + //SEG261 mul16u::@2 b2: - //SEG261 [129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG262 [129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG262 [130] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG263 [130] 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 - //SEG263 mul16u::@7 - //SEG264 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG264 mul16u::@7 + //SEG265 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8186,65 +8192,65 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG265 [132] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG266 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG267 mul16u::@4 + //SEG266 [132] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG267 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG268 mul16u::@4 b4: - //SEG268 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG269 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG269 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG270 [134] (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 - //SEG270 [126] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG271 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG272 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG273 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG271 [126] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG272 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG273 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG274 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG274 div32u16u +//SEG275 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = 8 .label quotient_lo = 6 .label return = $1d - //SEG275 [136] call divr16u - //SEG276 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG277 [145] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG276 [136] call divr16u + //SEG277 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG278 [145] 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 - //SEG278 [145] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG279 [145] 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 - //SEG279 [137] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG280 div32u16u::@2 - //SEG281 [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG280 [137] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG281 div32u16u::@2 + //SEG282 [138] (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 - //SEG282 [139] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG283 [140] call divr16u - //SEG284 [145] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] - //SEG285 [145] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG283 [139] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG284 [140] call divr16u + //SEG285 [145] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG286 [145] 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 - //SEG286 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG287 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG287 [141] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG288 div32u16u::@3 - //SEG289 [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG290 [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG288 [141] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG289 div32u16u::@3 + //SEG290 [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG291 [143] (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 @@ -8253,11 +8259,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG291 div32u16u::@return - //SEG292 [144] return + //SEG292 div32u16u::@return + //SEG293 [144] return rts } -//SEG293 divr16u +//SEG294 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -8267,48 +8273,48 @@ divr16u: { .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG294 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG295 [146] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG295 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG296 [146] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG296 [146] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG297 [146] 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 - //SEG297 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG298 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG299 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG300 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG301 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG302 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG303 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG304 divr16u::@1 + //SEG298 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG299 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG300 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG301 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG302 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG303 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG304 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG305 divr16u::@1 b1: - //SEG305 [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [147] (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 - //SEG306 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG307 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG307 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG308 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG308 [150] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG309 [150] 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 - //SEG309 divr16u::@4 - //SEG310 [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG310 divr16u::@4 + //SEG311 [151] (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 - //SEG311 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG312 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG313 divr16u::@2 + //SEG312 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG313 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG314 divr16u::@2 b2: - //SEG314 [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG315 [153] (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 - //SEG315 [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG316 [154] (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 - //SEG316 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG317 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3 @@ -8317,13 +8323,13 @@ divr16u: { cmp #main.wavelength sta rem+1 - //SEG320 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG321 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG322 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG323 divr16u::@3 + //SEG321 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG322 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG323 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG324 divr16u::@3 b3: - //SEG324 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG325 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG325 [160] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG326 [160] 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 - //SEG326 divr16u::@6 - //SEG327 [161] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG328 divr16u::@return - //SEG329 [162] return + //SEG327 divr16u::@6 + //SEG328 [161] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG329 divr16u::@return + //SEG330 [162] return rts } -//SEG330 sin16s_gen +//SEG331 sin16s_gen // Generate signed (large) word sinus table - on the full -$7fff - $7fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -8357,35 +8363,35 @@ sin16s_gen: { .label sintab = 2 .label x = $d .label i = 4 - //SEG331 [164] call div32u16u - //SEG332 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] + //SEG332 [164] call div32u16u + //SEG333 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] jsr div32u16u - //SEG333 [165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG334 sin16s_gen::@3 - //SEG335 [166] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG336 [167] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] - //SEG337 [167] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG334 [165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG335 sin16s_gen::@3 + //SEG336 [166] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG337 [167] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG338 [167] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG338 [167] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG339 [167] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[120]) main::sintab1#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG339 [167] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG340 [167] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 - //SEG340 [167] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] - //SEG341 [167] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG342 [167] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG343 [167] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy - //SEG344 sin16s_gen::@1 + //SEG341 [167] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG342 [167] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG343 [167] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG344 [167] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG345 sin16s_gen::@1 b1: - //SEG345 [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG346 [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -8394,19 +8400,19 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG346 [169] call sin16s + //SEG347 [169] call sin16s jsr sin16s - //SEG347 [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG348 sin16s_gen::@4 - //SEG349 [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG350 [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG348 [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG349 sin16s_gen::@4 + //SEG350 [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG351 [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG351 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -8414,7 +8420,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG352 [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG353 [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8428,12 +8434,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG353 [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG354 [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG354 [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG355 [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -8442,11 +8448,11 @@ sin16s_gen: { cmp #PI_u4f28>>$10 bcc b4 @@ -8481,8 +8487,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG361 [180] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG362 [180] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG362 [180] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG363 [180] 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 - //SEG363 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG364 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG364 [180] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG365 [180] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG365 [180] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG366 [180] 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 - //SEG366 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG367 sin16s::@1 + //SEG367 [180] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG368 sin16s::@1 b1: - //SEG368 [181] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG369 [181] 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 @@ -8527,8 +8533,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG371 [183] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG372 [183] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG373 sin16s::@2 + //SEG372 [183] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG373 [183] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG374 sin16s::@2 b2: - //SEG374 [184] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG375 [184] (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 @@ -8555,71 +8561,71 @@ sin16s: { rol _6+3 dey bne !- - //SEG375 [185] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG376 [185] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG376 [186] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG377 [186] (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 - //SEG377 [187] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG378 [187] (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 - //SEG378 [188] call mulu16_sel - //SEG379 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG380 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG379 [188] call mulu16_sel + //SEG380 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG381 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG381 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG382 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG382 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG383 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG383 [189] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG384 [189] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG384 sin16s::@8 - //SEG385 [190] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - //SEG386 [191] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG387 [192] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG385 sin16s::@8 + //SEG386 [190] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + //SEG387 [191] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG388 [192] (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 - //SEG388 [193] call mulu16_sel - //SEG389 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG390 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG389 [193] call mulu16_sel + //SEG390 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG391 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG391 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG392 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG392 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG393 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG393 [194] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG394 [194] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG394 sin16s::@9 - //SEG395 [195] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG396 [196] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG397 [197] call mulu16_sel - //SEG398 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG399 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG395 sin16s::@9 + //SEG396 [195] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG397 [196] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG398 [197] call mulu16_sel + //SEG399 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG400 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG400 [116] phi (word) mulu16_sel::v2#10 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG401 [116] phi (word) mulu16_sel::v2#10 = (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 - //SEG401 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG402 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG402 [198] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 - //SEG403 sin16s::@10 - //SEG404 [199] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 - //SEG405 [200] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG403 [198] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 + //SEG404 sin16s::@10 + //SEG405 [199] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 + //SEG406 [200] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8627,50 +8633,50 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG406 [201] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG407 [202] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG407 [201] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG408 [202] (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 - //SEG408 [203] call mulu16_sel - //SEG409 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG410 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG409 [203] call mulu16_sel + //SEG410 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG411 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG411 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG412 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG412 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG413 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG413 [204] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG414 [204] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG414 sin16s::@11 - //SEG415 [205] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 - //SEG416 [206] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG417 [207] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG415 sin16s::@11 + //SEG416 [205] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 + //SEG417 [206] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG418 [207] (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 - //SEG418 [208] call mulu16_sel - //SEG419 [116] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] - //SEG420 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG419 [208] call mulu16_sel + //SEG420 [116] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG421 [116] phi (byte) mulu16_sel::select#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG421 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG422 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG422 [116] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG423 [116] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG423 [209] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 - //SEG424 sin16s::@12 - //SEG425 [210] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 - //SEG426 [211] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG424 [209] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 + //SEG425 sin16s::@12 + //SEG426 [210] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 + //SEG427 [211] (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 !- - //SEG427 [212] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG428 [212] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -8678,12 +8684,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG428 [213] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG429 [213] 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 - //SEG429 sin16s::@6 - //SEG430 [214] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG430 sin16s::@6 + //SEG431 [214] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -8693,15 +8699,15 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG431 [215] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] - //SEG432 [215] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG433 sin16s::@3 + //SEG432 [215] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG433 [215] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG434 sin16s::@3 b3: - //SEG434 sin16s::@return - //SEG435 [216] return + //SEG435 sin16s::@return + //SEG436 [216] return rts - //SEG436 sin16s::@15 - //SEG437 [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG437 sin16s::@15 + //SEG438 [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgen8.asm b/src/test/ref/sinusgen8.asm index 320dc6412..56f26b219 100644 --- a/src/test/ref/sinusgen8.asm +++ b/src/test/ref/sinusgen8.asm @@ -324,7 +324,6 @@ mulu8_sel: { lda _1+1 rts } -// Simple binary multiplication implementation // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $c diff --git a/src/test/ref/sinusgen8.log b/src/test/ref/sinusgen8.log index ece30d1de..24495dbe7 100644 --- a/src/test/ref/sinusgen8.log +++ b/src/test/ref/sinusgen8.log @@ -2285,11 +2285,12 @@ Allocated zp ZP_BYTE:75 [ divr16u::$2 ] Allocated zp ZP_WORD:76 [ rem16u#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.12] format .const PI2_u4f12 = $6488 // PI in u[4.12] format @@ -2299,122 +2300,122 @@ INITIAL ASM .label print_line_cursor = $400 .label rem16u = $4c .label print_char_cursor = 7 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] b40_from_bbegin: jmp b40 -//SEG4 @40 +//SEG5 @40 b40: -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] main_from_b40: jsr main -//SEG7 [3] phi from @40 to @end [phi:@40->@end] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] bend_from_b40: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label wavelength = $c0 .label sb = $25 .label i = 2 - //SEG10 [5] call sin8s_gen - //SEG11 [54] phi from main to sin8s_gen [phi:main->sin8s_gen] + //SEG11 [5] call sin8s_gen + //SEG12 [54] phi from main to sin8s_gen [phi:main->sin8s_gen] sin8s_gen_from_main: jsr sin8s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG13 main::@5 + //SEG14 main::@5 b5: - //SEG14 [7] call print_cls - //SEG15 [48] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG15 [7] call print_cls + //SEG16 [48] phi from main::@5 to print_cls [phi:main::@5->print_cls] print_cls_from_b5: jsr print_cls - //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG17 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG17 [8] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG18 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 + //SEG19 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG20 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] b1_from_b8: - //SEG20 [8] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy - //SEG21 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG21 [8] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy + //SEG22 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy jmp b1 - //SEG22 main::@1 + //SEG23 main::@1 b1: - //SEG23 [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) -- vbsz1=pbsc1_derefidx_vbuz2_minus_pbsc2_derefidx_vbuz2 + //SEG24 [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) -- vbsz1=pbsc1_derefidx_vbuz2_minus_pbsc2_derefidx_vbuz2 ldy i sec lda sintab2,y sbc sintabref,y sta sb - //SEG24 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 + //SEG25 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 lda sb bmi b2_from_b1 - //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG26 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] b3_from_b1: jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [12] call print_str - //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG28 [12] call print_str + //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG29 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy - //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG30 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy + //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG32 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG32 [13] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [13] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG33 main::@2 + //SEG34 main::@2 b2: - //SEG34 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 -- vbsz1=vbsz2 + //SEG35 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 -- vbsz1=vbsz2 lda sb sta print_sbyte.b - //SEG35 [15] call print_sbyte + //SEG36 [15] call print_sbyte jsr print_sbyte - //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG37 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] b7_from_b2: jmp b7 - //SEG37 main::@7 + //SEG38 main::@7 b7: - //SEG38 [17] call print_str - //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + //SEG39 [17] call print_str + //SEG40 [21] phi from main::@7 to print_str [phi:main::@7->print_str] print_str_from_b7: - //SEG40 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@7->print_str#0] -- register_copy - //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + //SEG41 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@7->print_str#0] -- register_copy + //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b8 - //SEG42 main::@8 + //SEG43 main::@8 b8: - //SEG43 [18] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG44 [18] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG44 [19] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG45 [19] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$c0 bne b1_from_b8 jmp breturn - //SEG45 main::@return + //SEG46 main::@return breturn: - //SEG46 [20] return + //SEG47 [20] return rts str: .text " @" str1: .text " @" @@ -2422,98 +2423,98 @@ main: { // .fill $c0, round(127.5*sin(i*2*PI/$c0)) sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc } -//SEG47 print_str +//SEG48 print_str // Print a zero-terminated string print_str: { .label str = 3 - //SEG48 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG49 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG49 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG51 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG51 print_str::@1 + //SEG52 print_str::@1 b1: - //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG53 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG53 print_str::@return + //SEG54 print_str::@return breturn: - //SEG54 [24] return + //SEG55 [24] return rts - //SEG55 print_str::@2 + //SEG56 print_str::@2 b2: - //SEG56 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG57 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG57 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG58 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG59 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG59 print_sbyte +//SEG60 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = 5 - //SEG60 [28] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG61 [28] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG61 [29] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG62 [29] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG62 print_sbyte::@3 + //SEG63 print_sbyte::@3 b3: - //SEG63 [30] call print_char - //SEG64 [37] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG64 [30] call print_char + //SEG65 [37] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG65 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG66 [37] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG66 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG67 [37] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG67 [31] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG68 [31] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG68 [31] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG69 [31] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG69 print_sbyte::@2 + //SEG70 print_sbyte::@2 b2: - //SEG70 [32] call print_byte + //SEG71 [32] call print_byte jsr print_byte jmp breturn - //SEG71 print_sbyte::@return + //SEG72 print_sbyte::@return breturn: - //SEG72 [33] return + //SEG73 [33] return rts - //SEG73 [34] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG74 [34] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG74 print_sbyte::@1 + //SEG75 print_sbyte::@1 b1: - //SEG75 [35] call print_char - //SEG76 [37] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG76 [35] call print_char + //SEG77 [37] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG77 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG78 [37] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG78 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG79 [37] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b5 - //SEG79 print_sbyte::@5 + //SEG80 print_sbyte::@5 b5: - //SEG80 [36] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG81 [36] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -2521,98 +2522,98 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG81 print_char +//SEG82 print_char // Print a single char print_char: { .label ch = 6 - //SEG82 [38] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + //SEG83 [38] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG83 [39] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 + //SEG84 [39] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG84 print_char::@return + //SEG85 print_char::@return breturn: - //SEG85 [40] return + //SEG86 [40] return rts } -//SEG86 print_byte +//SEG87 print_byte // Print a byte as HEX print_byte: { .label _0 = $26 .label _2 = $27 - //SEG87 [41] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG88 [41] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda print_sbyte.b lsr lsr lsr lsr sta _0 - //SEG88 [42] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG89 [42] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG89 [43] call print_char - //SEG90 [37] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG90 [43] call print_char + //SEG91 [37] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG91 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy - //SEG92 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG92 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy + //SEG93 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG93 print_byte::@1 + //SEG94 print_byte::@1 b1: - //SEG94 [44] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG95 [44] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and print_sbyte.b sta _2 - //SEG95 [45] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG96 [45] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG96 [46] call print_char - //SEG97 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG97 [46] call print_char + //SEG98 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG98 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG99 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG99 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG100 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG100 print_byte::@return + //SEG101 print_byte::@return breturn: - //SEG101 [47] return + //SEG102 [47] return rts } -//SEG102 print_cls +//SEG103 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 9 - //SEG103 [49] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG104 [49] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG104 [49] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG105 [49] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG105 [49] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG106 [49] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG106 [49] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG107 [49] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG107 print_cls::@1 + //SEG108 print_cls::@1 b1: - //SEG108 [50] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG109 [50] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG109 [51] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG110 [51] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG110 [52] 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 + //SEG111 [52] 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_line_cursor+$3e8 bne b1_from_b1 @@ -2620,12 +2621,12 @@ print_cls: { cmp #div16u] + //SEG115 [55] call div16u + //SEG116 [131] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] div16u_from_sin8s_gen: jsr div16u - //SEG116 [56] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 + //SEG117 [56] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 lda div16u.return sta div16u.return_2 lda div16u.return+1 sta div16u.return_2+1 jmp b3 - //SEG117 sin8s_gen::@3 + //SEG118 sin8s_gen::@3 b3: - //SEG118 [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 + //SEG119 [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 lda div16u.return_2 sta step lda div16u.return_2+1 sta step+1 - //SEG119 [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + //SEG120 [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] b1_from_b3: - //SEG120 [58] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + //SEG121 [58] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG121 [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + //SEG122 [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 lda #main.sintab2 sta sintab+1 - //SEG122 [58] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + //SEG123 [58] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 jmp b1 - //SEG123 [58] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + //SEG124 [58] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] b1_from_b4: - //SEG124 [58] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy - //SEG125 [58] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy - //SEG126 [58] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + //SEG125 [58] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG126 [58] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG127 [58] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy jmp b1 - //SEG127 sin8s_gen::@1 + //SEG128 sin8s_gen::@1 b1: - //SEG128 [59] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 + //SEG129 [59] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG129 [60] call sin8s + //SEG130 [60] call sin8s jsr sin8s - //SEG130 [61] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 -- vbsz1=vbsz2 + //SEG131 [61] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 -- vbsz1=vbsz2 lda sin8s.return_1 sta sin8s.return jmp b4 - //SEG131 sin8s_gen::@4 + //SEG132 sin8s_gen::@4 b4: - //SEG132 [62] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 -- vbsz1=vbsz2 + //SEG133 [62] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 -- vbsz1=vbsz2 lda sin8s.return sta _1 - //SEG133 [63] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsz2 + //SEG134 [63] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsz2 lda _1 ldy #0 sta (sintab),y - //SEG134 [64] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 + //SEG135 [64] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 inc sintab bne !+ inc sintab+1 !: - //SEG135 [65] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG136 [65] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -2711,12 +2712,12 @@ sin8s_gen: { lda x+1 adc step+1 sta x+1 - //SEG136 [66] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG137 [66] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG137 [67] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG138 [67] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -2726,12 +2727,12 @@ sin8s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG138 sin8s_gen::@return + //SEG139 sin8s_gen::@return breturn: - //SEG139 [68] return + //SEG140 [68] return rts } -//SEG140 sin8s +//SEG141 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -2756,7 +2757,7 @@ sin8s: { .label usinx_4 = $14 .label isUpper = $11 .label return_5 = $15 - //SEG141 [69] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG142 [69] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -2766,9 +2767,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG142 sin8s::@5 + //SEG143 sin8s::@5 b5: - //SEG143 [70] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG144 [70] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG144 [71] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG145 [71] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG145 [71] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG146 [71] 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 - //SEG146 [71] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG147 [71] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG147 [71] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG148 [71] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG148 [71] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG149 [71] 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 - //SEG149 [71] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG150 [71] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG150 sin8s::@1 + //SEG151 sin8s::@1 b1: - //SEG151 [72] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG152 [72] 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 @@ -2802,9 +2803,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG152 sin8s::@6 + //SEG153 sin8s::@6 b6: - //SEG153 [73] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG154 [73] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG154 [74] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG155 [74] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG155 [74] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG156 [74] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG156 sin8s::@2 + //SEG157 sin8s::@2 b2: - //SEG157 [75] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG158 [75] (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 @@ -2830,194 +2831,194 @@ sin8s: { rol _6+1 asl _6 rol _6+1 - //SEG158 [76] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG159 [76] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG159 [77] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG160 [77] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v1 - //SEG160 [78] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG161 [78] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG161 [79] call mulu8_sel - //SEG162 [112] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG162 [79] call mulu8_sel + //SEG163 [112] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG163 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG164 [112] 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 - //SEG164 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG165 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG165 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG166 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG166 [80] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG167 [80] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return jmp b10 - //SEG167 sin8s::@10 + //SEG168 sin8s::@10 b10: - //SEG168 [81] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 + //SEG169 [81] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 lda mulu8_sel.return sta x2 - //SEG169 [82] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 + //SEG170 [82] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 lda x2 sta mulu8_sel.v1 - //SEG170 [83] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG171 [83] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG171 [84] call mulu8_sel - //SEG172 [112] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG172 [84] call mulu8_sel + //SEG173 [112] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG173 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG174 [112] 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 - //SEG174 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG175 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG175 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG176 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG176 [85] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG177 [85] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_1 jmp b11 - //SEG177 sin8s::@11 + //SEG178 sin8s::@11 b11: - //SEG178 [86] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 + //SEG179 [86] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 lda mulu8_sel.return_1 sta x3 - //SEG179 [87] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG180 [87] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG180 [88] call mulu8_sel - //SEG181 [112] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG181 [88] call mulu8_sel + //SEG182 [112] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG182 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG183 [112] 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 - //SEG183 [112] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuz1=vbuc1 + //SEG184 [112] 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 - //SEG184 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG185 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG185 [89] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG186 [89] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_2 jmp b12 - //SEG186 sin8s::@12 + //SEG187 sin8s::@12 b12: - //SEG187 [90] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 + //SEG188 [90] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 lda mulu8_sel.return_2 sta x3_6 - //SEG188 [91] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG189 [91] (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 - //SEG189 [92] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG190 [92] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG190 [93] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG191 [93] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG191 [94] call mulu8_sel - //SEG192 [112] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG192 [94] call mulu8_sel + //SEG193 [112] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG193 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG194 [112] 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 - //SEG194 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG195 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG195 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG196 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG196 [95] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG197 [95] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_10 jmp b13 - //SEG197 sin8s::@13 + //SEG198 sin8s::@13 b13: - //SEG198 [96] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 + //SEG199 [96] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 lda mulu8_sel.return_10 sta x4 - //SEG199 [97] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 + //SEG200 [97] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 lda x4 sta mulu8_sel.v1 - //SEG200 [98] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG201 [98] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG201 [99] call mulu8_sel - //SEG202 [112] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG202 [99] call mulu8_sel + //SEG203 [112] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //SEG203 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG204 [112] 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 - //SEG204 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG205 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG205 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG206 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG206 [100] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG207 [100] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_11 jmp b14 - //SEG207 sin8s::@14 + //SEG208 sin8s::@14 b14: - //SEG208 [101] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 + //SEG209 [101] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 lda mulu8_sel.return_11 sta x5 - //SEG209 [102] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG210 [102] (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 - //SEG210 [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG211 [103] (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 - //SEG211 [104] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG212 [104] 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 - //SEG212 sin8s::@7 + //SEG213 sin8s::@7 b7: - //SEG213 [105] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 + //SEG214 [105] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 dec usinx_2 - //SEG214 [106] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG215 [106] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG215 [106] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG216 [106] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG216 sin8s::@3 + //SEG217 sin8s::@3 b3: - //SEG217 [107] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG218 [107] 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 - //SEG218 sin8s::@8 + //SEG219 sin8s::@8 b8: - //SEG219 [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 + //SEG220 [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 lda usinx_4 eor #$ff clc adc #1 sta sinx - //SEG220 [109] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG221 [109] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG221 [109] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG222 [109] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG222 sin8s::@4 + //SEG223 sin8s::@4 b4: jmp breturn - //SEG223 sin8s::@return + //SEG224 sin8s::@return breturn: - //SEG224 [110] return + //SEG225 [110] return rts - //SEG225 sin8s::@18 + //SEG226 sin8s::@18 b18: - //SEG226 [111] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 + //SEG227 [111] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 lda usinx_4 sta return_5 jmp b4_from_b18 } -//SEG227 mulu8_sel +//SEG228 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { @@ -3032,28 +3033,28 @@ mulu8_sel: { .label return_11 = $3a .label select = $18 .label return_12 = $44 - //SEG228 [113] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 + //SEG229 [113] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 lda v1 sta mul8u.a - //SEG229 [114] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 + //SEG230 [114] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 lda v2 sta mul8u.b - //SEG230 [115] call mul8u + //SEG231 [115] call mul8u jsr mul8u - //SEG231 [116] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG232 [116] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b2 - //SEG232 mulu8_sel::@2 + //SEG233 mulu8_sel::@2 b2: - //SEG233 [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG234 [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta _0 lda mul8u.return+1 sta _0+1 - //SEG234 [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 + //SEG235 [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -3066,17 +3067,16 @@ mulu8_sel: { dey bne !- !e: - //SEG235 [119] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 + //SEG236 [119] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 lda _1+1 sta return_12 jmp breturn - //SEG236 mulu8_sel::@return + //SEG237 mulu8_sel::@return breturn: - //SEG237 [120] return + //SEG238 [120] return rts } -//SEG238 mul8u -// Simple binary multiplication implementation +//SEG239 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label _1 = $45 @@ -3085,46 +3085,46 @@ mul8u: { .label res = $1a .label b = $3d .label return = $3e - //SEG239 [121] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuz2 + //SEG240 [121] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuz2 lda b sta mb lda #0 sta mb+1 - //SEG240 [122] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG241 [122] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG241 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG242 [122] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG242 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG243 [122] 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 - //SEG243 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG244 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG244 mul8u::@1 + //SEG245 mul8u::@1 b1: - //SEG245 [123] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG246 [123] if((byte) mul8u::a#2!=(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 - //SEG246 mul8u::@return + //SEG247 mul8u::@return breturn: - //SEG247 [124] return + //SEG248 [124] return rts - //SEG248 mul8u::@2 + //SEG249 mul8u::@2 b2: - //SEG249 [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG250 [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG250 [126] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG251 [126] 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 - //SEG251 mul8u::@7 + //SEG252 mul8u::@7 b7: - //SEG252 [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG253 [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -3132,26 +3132,26 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG253 [128] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG254 [128] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG254 [128] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG255 [128] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG255 mul8u::@4 + //SEG256 mul8u::@4 b4: - //SEG256 [129] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG257 [129] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG257 [130] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG258 [130] (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 - //SEG258 [122] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG259 [122] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG259 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG260 [122] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG261 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG260 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG261 [122] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG262 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG262 div16u +//SEG263 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -3159,30 +3159,30 @@ mul8u: { div16u: { .label return = $48 .label return_2 = $28 - //SEG263 [132] call divr16u - //SEG264 [136] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG264 [132] call divr16u + //SEG265 [136] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG265 [133] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG266 [133] (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 - //SEG266 div16u::@2 + //SEG267 div16u::@2 b2: - //SEG267 [134] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG268 [134] (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 - //SEG268 div16u::@return + //SEG269 div16u::@return breturn: - //SEG269 [135] return + //SEG270 [135] return rts } -//SEG270 divr16u +//SEG271 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -3196,71 +3196,71 @@ divr16u: { .label i = $24 .label return = $22 .label return_2 = $46 - //SEG271 [137] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG272 [137] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG272 [137] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG273 [137] 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 - //SEG273 [137] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG274 [137] 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 - //SEG274 [137] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG275 [137] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG275 [137] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG276 [137] 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 - //SEG276 [137] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG277 [137] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG278 [137] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG279 [137] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG280 [137] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG281 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG281 divr16u::@1 + //SEG282 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 + //SEG283 [138] (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 - //SEG283 [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + //SEG284 [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG284 [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG285 [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG285 [141] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG286 [141] 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 - //SEG286 divr16u::@4 + //SEG287 divr16u::@4 b4: - //SEG287 [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG288 [142] (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 - //SEG288 [143] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG289 [143] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG289 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG290 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG290 divr16u::@2 + //SEG291 divr16u::@2 b2: - //SEG291 [144] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG292 [144] (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 - //SEG292 [145] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG293 [145] (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 - //SEG293 [146] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG294 [146] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -3270,14 +3270,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG294 divr16u::@5 + //SEG295 divr16u::@5 b5: - //SEG295 [147] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG296 [147] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG296 [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG297 [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG297 [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG298 [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] 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#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG299 [149] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG300 [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 + //SEG301 divr16u::@3 b3: - //SEG301 [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG302 [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG302 [151] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG303 [151] 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 - //SEG303 divr16u::@6 + //SEG304 divr16u::@6 b6: - //SEG304 [152] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 + //SEG305 [152] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG305 divr16u::@return + //SEG306 divr16u::@return breturn: - //SEG306 [153] return + //SEG307 [153] return rts } print_hextab: .text "0123456789abcdef" @@ -3557,11 +3557,12 @@ Allocated (was zp ZP_BYTE:52) zp ZP_BYTE:17 [ sin8s::x3#0 ] Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:18 [ sin8s::usinx#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.12] format .const PI2_u4f12 = $6488 // PI in u[4.12] format @@ -3571,116 +3572,116 @@ ASSEMBLER BEFORE OPTIMIZATION .label print_line_cursor = $400 .label rem16u = 2 .label print_char_cursor = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] b40_from_bbegin: jmp b40 -//SEG4 @40 +//SEG5 @40 b40: -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] main_from_b40: jsr main -//SEG7 [3] phi from @40 to @end [phi:@40->@end] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] bend_from_b40: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label wavelength = $c0 .label sb = 4 - //SEG10 [5] call sin8s_gen - //SEG11 [54] phi from main to sin8s_gen [phi:main->sin8s_gen] + //SEG11 [5] call sin8s_gen + //SEG12 [54] phi from main to sin8s_gen [phi:main->sin8s_gen] sin8s_gen_from_main: jsr sin8s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG13 main::@5 + //SEG14 main::@5 b5: - //SEG14 [7] call print_cls - //SEG15 [48] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG15 [7] call print_cls + //SEG16 [48] phi from main::@5 to print_cls [phi:main::@5->print_cls] print_cls_from_b5: jsr print_cls - //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG17 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG17 [8] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG18 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuxx=vbuc1 + //SEG19 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG20 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] b1_from_b8: - //SEG20 [8] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy - //SEG21 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG21 [8] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy + //SEG22 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy jmp b1 - //SEG22 main::@1 + //SEG23 main::@1 b1: - //SEG23 [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) -- vbsz1=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx + //SEG24 [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) -- vbsz1=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx sec lda sintab2,x sbc sintabref,x sta sb - //SEG24 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 + //SEG25 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 lda sb bmi b2_from_b1 - //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG26 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] b3_from_b1: jmp b3 - //SEG26 main::@3 + //SEG27 main::@3 b3: - //SEG27 [12] call print_str - //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG28 [12] call print_str + //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG29 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy - //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG30 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy + //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG32 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG32 [13] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [13] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG33 main::@2 + //SEG34 main::@2 b2: - //SEG34 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 - //SEG35 [15] call print_sbyte + //SEG35 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 + //SEG36 [15] call print_sbyte jsr print_sbyte - //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG37 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] b7_from_b2: jmp b7 - //SEG37 main::@7 + //SEG38 main::@7 b7: - //SEG38 [17] call print_str - //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + //SEG39 [17] call print_str + //SEG40 [21] phi from main::@7 to print_str [phi:main::@7->print_str] print_str_from_b7: - //SEG40 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@7->print_str#0] -- register_copy - //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + //SEG41 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@7->print_str#0] -- register_copy + //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b8 - //SEG42 main::@8 + //SEG43 main::@8 b8: - //SEG43 [18] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG44 [18] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG44 [19] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG45 [19] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$c0 bne b1_from_b8 jmp breturn - //SEG45 main::@return + //SEG46 main::@return breturn: - //SEG46 [20] return + //SEG47 [20] return rts str: .text " @" str1: .text " @" @@ -3688,96 +3689,96 @@ main: { // .fill $c0, round(127.5*sin(i*2*PI/$c0)) sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc } -//SEG47 print_str +//SEG48 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG48 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG49 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG49 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG51 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG51 print_str::@1 + //SEG52 print_str::@1 b1: - //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG53 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG53 print_str::@return + //SEG54 print_str::@return breturn: - //SEG54 [24] return + //SEG55 [24] return rts - //SEG55 print_str::@2 + //SEG56 print_str::@2 b2: - //SEG56 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG57 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG57 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG58 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG59 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG59 print_sbyte +//SEG60 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = 4 - //SEG60 [28] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG61 [28] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG61 [29] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG62 [29] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG62 print_sbyte::@3 + //SEG63 print_sbyte::@3 b3: - //SEG63 [30] call print_char - //SEG64 [37] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG64 [30] call print_char + //SEG65 [37] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG65 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG66 [37] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG66 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG67 [37] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG67 [31] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG68 [31] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG68 [31] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG69 [31] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG69 print_sbyte::@2 + //SEG70 print_sbyte::@2 b2: - //SEG70 [32] call print_byte + //SEG71 [32] call print_byte jsr print_byte jmp breturn - //SEG71 print_sbyte::@return + //SEG72 print_sbyte::@return breturn: - //SEG72 [33] return + //SEG73 [33] return rts - //SEG73 [34] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG74 [34] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG74 print_sbyte::@1 + //SEG75 print_sbyte::@1 b1: - //SEG75 [35] call print_char - //SEG76 [37] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG76 [35] call print_char + //SEG77 [37] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG77 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG78 [37] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG78 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG79 [37] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b5 - //SEG79 print_sbyte::@5 + //SEG80 print_sbyte::@5 b5: - //SEG80 [36] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG81 [36] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -3785,90 +3786,90 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG81 print_char +//SEG82 print_char // Print a single char print_char: { - //SEG82 [38] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG83 [38] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG83 [39] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 + //SEG84 [39] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG84 print_char::@return + //SEG85 print_char::@return breturn: - //SEG85 [40] return + //SEG86 [40] return rts } -//SEG86 print_byte +//SEG87 print_byte // Print a byte as HEX print_byte: { - //SEG87 [41] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG88 [41] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda print_sbyte.b lsr lsr lsr lsr - //SEG88 [42] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG89 [42] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG89 [43] call print_char - //SEG90 [37] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG90 [43] call print_char + //SEG91 [37] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG91 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy - //SEG92 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG92 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy + //SEG93 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG93 print_byte::@1 + //SEG94 print_byte::@1 b1: - //SEG94 [44] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG95 [44] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and print_sbyte.b - //SEG95 [45] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG96 [45] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG96 [46] call print_char - //SEG97 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG97 [46] call print_char + //SEG98 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG98 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG99 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG99 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG100 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG100 print_byte::@return + //SEG101 print_byte::@return breturn: - //SEG101 [47] return + //SEG102 [47] return rts } -//SEG102 print_cls +//SEG103 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG103 [49] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG104 [49] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG104 [49] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG105 [49] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG105 [49] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG106 [49] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG106 [49] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG107 [49] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG107 print_cls::@1 + //SEG108 print_cls::@1 b1: - //SEG108 [50] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG109 [50] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG109 [51] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG110 [51] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG110 [52] 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 + //SEG111 [52] 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_line_cursor+$3e8 bne b1_from_b1 @@ -3876,12 +3877,12 @@ print_cls: { cmp #div16u] + //SEG115 [55] call div16u + //SEG116 [131] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] div16u_from_sin8s_gen: jsr div16u - //SEG116 [56] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG117 [56] (word) div16u::return#2 ← (word) div16u::return#0 jmp b3 - //SEG117 sin8s_gen::@3 + //SEG118 sin8s_gen::@3 b3: - //SEG118 [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 - //SEG119 [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + //SEG119 [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 + //SEG120 [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] b1_from_b3: - //SEG120 [58] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + //SEG121 [58] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG121 [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + //SEG122 [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 lda #main.sintab2 sta sintab+1 - //SEG122 [58] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + //SEG123 [58] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 jmp b1 - //SEG123 [58] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + //SEG124 [58] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] b1_from_b4: - //SEG124 [58] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy - //SEG125 [58] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy - //SEG126 [58] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + //SEG125 [58] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG126 [58] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG127 [58] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy jmp b1 - //SEG127 sin8s_gen::@1 + //SEG128 sin8s_gen::@1 b1: - //SEG128 [59] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 + //SEG129 [59] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG129 [60] call sin8s + //SEG130 [60] call sin8s jsr sin8s - //SEG130 [61] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 + //SEG131 [61] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 jmp b4 - //SEG131 sin8s_gen::@4 + //SEG132 sin8s_gen::@4 b4: - //SEG132 [62] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 - //SEG133 [63] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsaa + //SEG133 [62] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 + //SEG134 [63] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsaa ldy #0 sta (sintab),y - //SEG134 [64] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 + //SEG135 [64] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 inc sintab bne !+ inc sintab+1 !: - //SEG135 [65] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG136 [65] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -3953,12 +3954,12 @@ sin8s_gen: { lda x+1 adc step+1 sta x+1 - //SEG136 [66] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG137 [66] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG137 [67] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG138 [67] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -3968,12 +3969,12 @@ sin8s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG138 sin8s_gen::@return + //SEG139 sin8s_gen::@return breturn: - //SEG139 [68] return + //SEG140 [68] return rts } -//SEG140 sin8s +//SEG141 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -3986,7 +3987,7 @@ sin8s: { .label x3 = $11 .label usinx = $12 .label isUpper = 4 - //SEG141 [69] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG142 [69] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -3996,9 +3997,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG142 sin8s::@5 + //SEG143 sin8s::@5 b5: - //SEG143 [70] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG144 [70] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG144 [71] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG145 [71] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG145 [71] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG146 [71] 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 - //SEG146 [71] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG147 [71] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG147 [71] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG148 [71] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG148 [71] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG149 [71] 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 - //SEG149 [71] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG150 [71] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG150 sin8s::@1 + //SEG151 sin8s::@1 b1: - //SEG151 [72] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG152 [72] 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 @@ -4032,9 +4033,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG152 sin8s::@6 + //SEG153 sin8s::@6 b6: - //SEG153 [73] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG154 [73] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG154 [74] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG155 [74] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG155 [74] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG156 [74] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG156 sin8s::@2 + //SEG157 sin8s::@2 b2: - //SEG157 [75] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG158 [75] (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 - //SEG158 [76] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG159 [76] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG159 [77] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG160 [77] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG160 [78] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG161 [78] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG161 [79] call mulu8_sel - //SEG162 [112] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG162 [79] call mulu8_sel + //SEG163 [112] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG163 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG164 [112] 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 - //SEG164 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG165 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG165 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG166 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG166 [80] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG167 [80] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 jmp b10 - //SEG167 sin8s::@10 + //SEG168 sin8s::@10 b10: - //SEG168 [81] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG169 [82] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG169 [81] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG170 [82] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG170 [83] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG171 [83] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG171 [84] call mulu8_sel - //SEG172 [112] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG172 [84] call mulu8_sel + //SEG173 [112] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG173 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG174 [112] 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 - //SEG174 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG175 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG175 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG176 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG176 [85] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG177 [85] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 jmp b11 - //SEG177 sin8s::@11 + //SEG178 sin8s::@11 b11: - //SEG178 [86] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG179 [86] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG179 [87] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG180 [87] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG180 [88] call mulu8_sel - //SEG181 [112] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG181 [88] call mulu8_sel + //SEG182 [112] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG182 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG183 [112] 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 - //SEG183 [112] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG184 [112] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG184 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG185 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG185 [89] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG186 [89] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 jmp b12 - //SEG186 sin8s::@12 + //SEG187 sin8s::@12 b12: - //SEG187 [90] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG188 [91] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG188 [90] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG189 [91] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG189 [92] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG190 [92] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG190 [93] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG191 [93] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG191 [94] call mulu8_sel - //SEG192 [112] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG192 [94] call mulu8_sel + //SEG193 [112] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG193 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG194 [112] 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 - //SEG194 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG195 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG195 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG196 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG196 [95] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG197 [95] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 jmp b13 - //SEG197 sin8s::@13 + //SEG198 sin8s::@13 b13: - //SEG198 [96] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG199 [97] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG199 [96] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG200 [97] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG200 [98] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG201 [98] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG201 [99] call mulu8_sel - //SEG202 [112] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG202 [99] call mulu8_sel + //SEG203 [112] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //SEG203 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG204 [112] 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 - //SEG204 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG205 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG205 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG206 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG206 [100] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG207 [100] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 jmp b14 - //SEG207 sin8s::@14 + //SEG208 sin8s::@14 b14: - //SEG208 [101] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //SEG209 [102] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG209 [101] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG210 [102] (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 - //SEG210 [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG211 [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG211 [104] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG212 [104] 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 - //SEG212 sin8s::@7 + //SEG213 sin8s::@7 b7: - //SEG213 [105] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG214 [105] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG214 [106] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG215 [106] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG215 [106] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG216 [106] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG216 sin8s::@3 + //SEG217 sin8s::@3 b3: - //SEG217 [107] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG218 [107] 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 - //SEG218 sin8s::@8 + //SEG219 sin8s::@8 b8: - //SEG219 [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG220 [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG220 [109] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG221 [109] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG221 [109] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG222 [109] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG222 sin8s::@4 + //SEG223 sin8s::@4 b4: jmp breturn - //SEG223 sin8s::@return + //SEG224 sin8s::@return breturn: - //SEG224 [110] return + //SEG225 [110] return rts - //SEG225 sin8s::@18 + //SEG226 sin8s::@18 b18: - //SEG226 [111] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG227 [111] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4_from_b18 } -//SEG227 mulu8_sel +//SEG228 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { .label _0 = 9 .label _1 = 9 .label select = $b - //SEG228 [113] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 - //SEG229 [114] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG229 [113] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 + //SEG230 [114] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG230 [115] call mul8u + //SEG231 [115] call mul8u jsr mul8u - //SEG231 [116] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG232 [116] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b2 - //SEG232 mulu8_sel::@2 + //SEG233 mulu8_sel::@2 b2: - //SEG233 [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 - //SEG234 [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG234 [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 + //SEG235 [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -4234,57 +4235,56 @@ mulu8_sel: { dey bne !- !e: - //SEG235 [119] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG236 [119] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 jmp breturn - //SEG236 mulu8_sel::@return + //SEG237 mulu8_sel::@return breturn: - //SEG237 [120] return + //SEG238 [120] return rts } -//SEG238 mul8u -// Simple binary multiplication implementation +//SEG239 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $c .label res = 9 .label return = 9 - //SEG239 [121] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuaa + //SEG240 [121] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG240 [122] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG241 [122] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG241 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG242 [122] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG242 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG243 [122] 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 - //SEG243 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG244 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG244 mul8u::@1 + //SEG245 mul8u::@1 b1: - //SEG245 [123] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG246 [123] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG246 mul8u::@return + //SEG247 mul8u::@return breturn: - //SEG247 [124] return + //SEG248 [124] return rts - //SEG248 mul8u::@2 + //SEG249 mul8u::@2 b2: - //SEG249 [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG250 [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG250 [126] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG251 [126] 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 - //SEG251 mul8u::@7 + //SEG252 mul8u::@7 b7: - //SEG252 [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG253 [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -4292,50 +4292,50 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG253 [128] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG254 [128] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG254 [128] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG255 [128] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG255 mul8u::@4 + //SEG256 mul8u::@4 b4: - //SEG256 [129] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG257 [129] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG257 [130] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG258 [130] (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 - //SEG258 [122] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG259 [122] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG259 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG260 [122] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG261 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG260 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG261 [122] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG262 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG262 div16u +//SEG263 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { .label return = $e - //SEG263 [132] call divr16u - //SEG264 [136] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG264 [132] call divr16u + //SEG265 [136] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG265 [133] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG266 [133] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG266 div16u::@2 + //SEG267 div16u::@2 b2: - //SEG267 [134] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG268 [134] (word) div16u::return#0 ← (word) divr16u::return#2 jmp breturn - //SEG268 div16u::@return + //SEG269 div16u::@return breturn: - //SEG269 [135] return + //SEG270 [135] return rts } -//SEG270 divr16u +//SEG271 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -4345,66 +4345,66 @@ divr16u: { .label dividend = 5 .label quotient = $e .label return = $e - //SEG271 [137] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG272 [137] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG272 [137] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG273 [137] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG273 [137] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG274 [137] 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 - //SEG274 [137] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG275 [137] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG275 [137] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG276 [137] 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 - //SEG276 [137] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG277 [137] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG278 [137] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG279 [137] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG280 [137] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG281 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG281 divr16u::@1 + //SEG282 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 + //SEG283 [138] (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 - //SEG283 [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG284 [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG284 [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG285 [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG285 [141] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG286 [141] 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 - //SEG286 divr16u::@4 + //SEG287 divr16u::@4 b4: - //SEG287 [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG288 [142] (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 - //SEG288 [143] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG289 [143] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG289 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG290 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG290 divr16u::@2 + //SEG291 divr16u::@2 b2: - //SEG291 [144] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG292 [144] (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 - //SEG292 [145] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG293 [145] (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 - //SEG293 [146] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG294 [146] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -4414,14 +4414,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG294 divr16u::@5 + //SEG295 divr16u::@5 b5: - //SEG295 [147] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG296 [147] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG296 [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG297 [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG297 [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG298 [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] 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#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG299 [149] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG300 [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 + //SEG301 divr16u::@3 b3: - //SEG301 [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG302 [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG303 [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 + //SEG304 divr16u::@6 b6: - //SEG304 [152] (word) rem16u#1 ← (word) divr16u::rem#10 + //SEG305 [152] (word) rem16u#1 ← (word) divr16u::rem#10 jmp breturn - //SEG305 divr16u::@return + //SEG306 divr16u::@return breturn: - //SEG306 [153] return + //SEG307 [153] return rts } print_hextab: .text "0123456789abcdef" @@ -4939,11 +4939,12 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER Score: 15001 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.12] format .const PI2_u4f12 = $6488 // PI in u[4.12] format @@ -4953,82 +4954,82 @@ Score: 15001 .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] -//SEG4 @40 -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] -//SEG7 [3] phi from @40 to @end [phi:@40->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG5 @40 +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] +//SEG9 @end +//SEG10 main main: { .label wavelength = $c0 .label sb = 4 - //SEG10 [5] call sin8s_gen - //SEG11 [54] phi from main to sin8s_gen [phi:main->sin8s_gen] + //SEG11 [5] call sin8s_gen + //SEG12 [54] phi from main to sin8s_gen [phi:main->sin8s_gen] jsr sin8s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] - //SEG13 main::@5 - //SEG14 [7] call print_cls - //SEG15 [48] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG14 main::@5 + //SEG15 [7] call print_cls + //SEG16 [48] phi from main::@5 to print_cls [phi:main::@5->print_cls] jsr print_cls - //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG17 [8] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + //SEG17 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG18 [8] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG18 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuxx=vbuc1 + //SEG19 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] - //SEG20 [8] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy - //SEG21 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy - //SEG22 main::@1 + //SEG20 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG21 [8] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@8->main::@1#0] -- register_copy + //SEG22 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG23 main::@1 b1: - //SEG23 [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) -- vbsz1=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx + //SEG24 [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) -- vbsz1=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx sec lda sintab2,x sbc sintabref,x sta sb - //SEG24 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 + //SEG25 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 bmi b2 - //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] - //SEG26 main::@3 - //SEG27 [12] call print_str - //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] - //SEG29 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy - //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG26 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG27 main::@3 + //SEG28 [12] call print_str + //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG30 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy + //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] - //SEG32 [13] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG33 main::@2 + //SEG32 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG33 [13] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG34 main::@2 b2: - //SEG34 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 - //SEG35 [15] call print_sbyte + //SEG35 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 + //SEG36 [15] call print_sbyte jsr print_sbyte - //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] - //SEG37 main::@7 - //SEG38 [17] call print_str - //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] - //SEG40 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@7->print_str#0] -- register_copy - //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + //SEG37 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG38 main::@7 + //SEG39 [17] call print_str + //SEG40 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + //SEG41 [21] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@7->print_str#0] -- register_copy + //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG42 main::@8 - //SEG43 [18] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG43 main::@8 + //SEG44 [18] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG44 [19] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG45 [19] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$c0 bne b1 - //SEG45 main::@return - //SEG46 [20] return + //SEG46 main::@return + //SEG47 [20] return rts str: .text " @" str1: .text " @" @@ -5036,76 +5037,76 @@ main: { // .fill $c0, round(127.5*sin(i*2*PI/$c0)) sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc } -//SEG47 print_str +//SEG48 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG48 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG49 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG51 print_str::@1 + //SEG49 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG51 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG52 print_str::@1 b1: - //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG53 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG53 print_str::@return - //SEG54 [24] return + //SEG54 print_str::@return + //SEG55 [24] return rts - //SEG55 print_str::@2 + //SEG56 print_str::@2 b2: - //SEG56 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG57 [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG57 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG58 [26] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG59 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG59 print_sbyte +//SEG60 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = 4 - //SEG60 [28] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG61 [28] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG61 [29] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG62 print_sbyte::@3 - //SEG63 [30] call print_char - //SEG64 [37] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG65 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG66 [37] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG62 [29] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG63 print_sbyte::@3 + //SEG64 [30] call print_char + //SEG65 [37] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG66 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG67 [37] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG67 [31] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] - //SEG68 [31] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy - //SEG69 print_sbyte::@2 + //SEG68 [31] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG69 [31] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG70 print_sbyte::@2 b2: - //SEG70 [32] call print_byte + //SEG71 [32] call print_byte jsr print_byte - //SEG71 print_sbyte::@return - //SEG72 [33] return + //SEG72 print_sbyte::@return + //SEG73 [33] return rts - //SEG73 [34] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG74 print_sbyte::@1 + //SEG74 [34] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG75 print_sbyte::@1 b1: - //SEG75 [35] call print_char - //SEG76 [37] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG77 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG78 [37] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG76 [35] call print_char + //SEG77 [37] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG78 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG79 [37] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG79 print_sbyte::@5 - //SEG80 [36] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG80 print_sbyte::@5 + //SEG81 [36] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -5113,89 +5114,89 @@ print_sbyte: { sta b jmp b2 } -//SEG81 print_char +//SEG82 print_char // Print a single char print_char: { - //SEG82 [38] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG83 [38] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG83 [39] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 + //SEG84 [39] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG84 print_char::@return - //SEG85 [40] return + //SEG85 print_char::@return + //SEG86 [40] return rts } -//SEG86 print_byte +//SEG87 print_byte // Print a byte as HEX print_byte: { - //SEG87 [41] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG88 [41] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda print_sbyte.b lsr lsr lsr lsr - //SEG88 [42] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG89 [42] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG89 [43] call print_char - //SEG90 [37] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG91 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy - //SEG92 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG90 [43] call print_char + //SEG91 [37] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG92 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy + //SEG93 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG93 print_byte::@1 - //SEG94 [44] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG94 print_byte::@1 + //SEG95 [44] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and print_sbyte.b - //SEG95 [45] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG96 [45] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG96 [46] call print_char - //SEG97 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG98 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG99 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG97 [46] call print_char + //SEG98 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG99 [37] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG100 [37] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG100 print_byte::@return - //SEG101 [47] return + //SEG101 print_byte::@return + //SEG102 [47] return rts } -//SEG102 print_cls +//SEG103 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG103 [49] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG104 [49] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG104 [49] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG105 [49] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 - //SEG105 [49] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG106 [49] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG107 print_cls::@1 + //SEG106 [49] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG107 [49] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG108 print_cls::@1 b1: - //SEG108 [50] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG109 [50] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG109 [51] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG110 [51] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG110 [52] 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 + //SEG111 [52] 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_line_cursor+$3e8 bne b1 lda sc cmp #div16u] + //SEG115 [55] call div16u + //SEG116 [131] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] jsr div16u - //SEG116 [56] (word) div16u::return#2 ← (word) div16u::return#0 - //SEG117 sin8s_gen::@3 - //SEG118 [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 - //SEG119 [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] - //SEG120 [58] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + //SEG117 [56] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG118 sin8s_gen::@3 + //SEG119 [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 + //SEG120 [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + //SEG121 [58] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG121 [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + //SEG122 [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 lda #main.sintab2 sta sintab+1 - //SEG122 [58] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + //SEG123 [58] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 lda #<0 sta x sta x+1 - //SEG123 [58] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] - //SEG124 [58] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy - //SEG125 [58] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy - //SEG126 [58] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy - //SEG127 sin8s_gen::@1 + //SEG124 [58] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + //SEG125 [58] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG126 [58] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG127 [58] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + //SEG128 sin8s_gen::@1 b1: - //SEG128 [59] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 + //SEG129 [59] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG129 [60] call sin8s + //SEG130 [60] call sin8s jsr sin8s - //SEG130 [61] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 - //SEG131 sin8s_gen::@4 - //SEG132 [62] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 - //SEG133 [63] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsaa + //SEG131 [61] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 + //SEG132 sin8s_gen::@4 + //SEG133 [62] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 + //SEG134 [63] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsaa ldy #0 sta (sintab),y - //SEG134 [64] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 + //SEG135 [64] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 inc sintab bne !+ inc sintab+1 !: - //SEG135 [65] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG136 [65] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -5256,12 +5257,12 @@ sin8s_gen: { lda x+1 adc step+1 sta x+1 - //SEG136 [66] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG137 [66] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG137 [67] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG138 [67] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -5270,11 +5271,11 @@ sin8s_gen: { cmp #PI_u4f12 bcc b5 @@ -5296,8 +5297,8 @@ sin8s: { cmp #PI_u4f12 sta x+1 - //SEG144 [71] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] - //SEG145 [71] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG145 [71] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG146 [71] 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 - //SEG146 [71] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG147 [71] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG147 [71] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG148 [71] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b5: - //SEG148 [71] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG149 [71] 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 - //SEG149 [71] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy - //SEG150 sin8s::@1 + //SEG150 [71] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG151 sin8s::@1 b1: - //SEG151 [72] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG152 [72] 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 @@ -5328,8 +5329,8 @@ sin8s: { cmp #PI_u4f12 sbc x+1 sta x+1 - //SEG154 [74] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] - //SEG155 [74] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy - //SEG156 sin8s::@2 + //SEG155 [74] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG156 [74] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG157 sin8s::@2 b2: - //SEG157 [75] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG158 [75] (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 - //SEG158 [76] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG159 [76] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG159 [77] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG160 [77] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 tax - //SEG160 [78] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG161 [78] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 tay - //SEG161 [79] call mulu8_sel - //SEG162 [112] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] - //SEG163 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG162 [79] call mulu8_sel + //SEG163 [112] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG164 [112] 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 - //SEG164 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG165 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG165 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG166 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG166 [80] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 - //SEG167 sin8s::@10 - //SEG168 [81] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG169 [82] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG167 [80] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG168 sin8s::@10 + //SEG169 [81] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG170 [82] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG170 [83] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG171 [83] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG171 [84] call mulu8_sel - //SEG172 [112] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] - //SEG173 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG172 [84] call mulu8_sel + //SEG173 [112] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG174 [112] 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 - //SEG174 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG175 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG175 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG176 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG176 [85] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 - //SEG177 sin8s::@11 - //SEG178 [86] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG177 [85] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG178 sin8s::@11 + //SEG179 [86] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG179 [87] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG180 [87] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 tax - //SEG180 [88] call mulu8_sel - //SEG181 [112] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] - //SEG182 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG181 [88] call mulu8_sel + //SEG182 [112] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG183 [112] 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 - //SEG183 [112] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG184 [112] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG184 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG185 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG185 [89] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 - //SEG186 sin8s::@12 - //SEG187 [90] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG188 [91] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG186 [89] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG187 sin8s::@12 + //SEG188 [90] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG189 [91] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG189 [92] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG190 [92] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG190 [93] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG191 [93] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG191 [94] call mulu8_sel - //SEG192 [112] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] - //SEG193 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG192 [94] call mulu8_sel + //SEG193 [112] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG194 [112] 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 - //SEG194 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG195 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG195 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG196 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG196 [95] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 - //SEG197 sin8s::@13 - //SEG198 [96] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG199 [97] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG197 [95] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG198 sin8s::@13 + //SEG199 [96] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG200 [97] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG200 [98] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG201 [98] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG201 [99] call mulu8_sel - //SEG202 [112] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] - //SEG203 [112] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG202 [99] call mulu8_sel + //SEG203 [112] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG204 [112] 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 - //SEG204 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG205 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG205 [112] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG206 [112] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG206 [100] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 - //SEG207 sin8s::@14 - //SEG208 [101] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //SEG209 [102] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG207 [100] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG208 sin8s::@14 + //SEG209 [101] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG210 [102] (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 - //SEG210 [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG211 [103] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG211 [104] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG212 [104] 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 - //SEG212 sin8s::@7 - //SEG213 [105] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG213 sin8s::@7 + //SEG214 [105] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG214 [106] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] - //SEG215 [106] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy - //SEG216 sin8s::@3 + //SEG215 [106] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG216 [106] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG217 sin8s::@3 b3: - //SEG217 [107] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG218 [107] 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 - //SEG218 sin8s::@8 - //SEG219 [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG219 sin8s::@8 + //SEG220 [108] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG220 [109] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] - //SEG221 [109] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy - //SEG222 sin8s::@4 + //SEG221 [109] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG222 [109] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG223 sin8s::@4 b4: - //SEG223 sin8s::@return - //SEG224 [110] return + //SEG224 sin8s::@return + //SEG225 [110] return rts - //SEG225 sin8s::@18 + //SEG226 sin8s::@18 b18: - //SEG226 [111] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG227 [111] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4 } -//SEG227 mulu8_sel +//SEG228 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { .label _0 = 9 .label _1 = 9 .label select = $b - //SEG228 [113] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 - //SEG229 [114] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG229 [113] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 + //SEG230 [114] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG230 [115] call mul8u + //SEG231 [115] call mul8u jsr mul8u - //SEG231 [116] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG232 mulu8_sel::@2 - //SEG233 [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 - //SEG234 [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG232 [116] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG233 mulu8_sel::@2 + //SEG234 [117] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 + //SEG235 [118] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -5497,47 +5498,46 @@ mulu8_sel: { dey bne !- !e: - //SEG235 [119] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG236 [119] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 - //SEG236 mulu8_sel::@return - //SEG237 [120] return + //SEG237 mulu8_sel::@return + //SEG238 [120] return rts } -//SEG238 mul8u -// Simple binary multiplication implementation +//SEG239 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $c .label res = 9 .label return = 9 - //SEG239 [121] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuaa + //SEG240 [121] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG240 [122] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG241 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG242 [122] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG241 [122] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG242 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG243 [122] 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 - //SEG243 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG244 mul8u::@1 + //SEG244 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG245 mul8u::@1 b1: - //SEG245 [123] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG246 [123] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG246 mul8u::@return - //SEG247 [124] return + //SEG247 mul8u::@return + //SEG248 [124] return rts - //SEG248 mul8u::@2 + //SEG249 mul8u::@2 b2: - //SEG249 [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG250 [125] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG250 [126] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG251 [126] 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 - //SEG251 mul8u::@7 - //SEG252 [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG252 mul8u::@7 + //SEG253 [127] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5545,41 +5545,41 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG253 [128] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] - //SEG254 [128] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy - //SEG255 mul8u::@4 + //SEG254 [128] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG255 [128] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG256 mul8u::@4 b4: - //SEG256 [129] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG257 [129] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG257 [130] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG258 [130] (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 - //SEG258 [122] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] - //SEG259 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG260 [122] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG261 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG259 [122] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG260 [122] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG261 [122] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG262 [122] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG262 div16u +//SEG263 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { .label return = $e - //SEG263 [132] call divr16u - //SEG264 [136] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG264 [132] call divr16u + //SEG265 [136] phi from div16u to divr16u [phi:div16u->divr16u] jsr divr16u - //SEG265 [133] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG266 div16u::@2 - //SEG267 [134] (word) div16u::return#0 ← (word) divr16u::return#2 - //SEG268 div16u::@return - //SEG269 [135] return + //SEG266 [133] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG267 div16u::@2 + //SEG268 [134] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG269 div16u::@return + //SEG270 [135] return rts } -//SEG270 divr16u +//SEG271 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5589,55 +5589,55 @@ divr16u: { .label dividend = 5 .label quotient = $e .label return = $e - //SEG271 [137] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG272 [137] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG272 [137] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG273 [137] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG273 [137] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG274 [137] 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 - //SEG274 [137] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG275 [137] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG275 [137] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG276 [137] 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 - //SEG276 [137] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //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#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG281 divr16u::@1 + //SEG277 [137] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG278 [137] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG279 [137] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG280 [137] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG281 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG282 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 + //SEG283 [138] (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 - //SEG283 [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG284 [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG284 [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG285 [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG285 [141] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG286 [141] 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 - //SEG286 divr16u::@4 - //SEG287 [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG287 divr16u::@4 + //SEG288 [142] (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 - //SEG288 [143] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG289 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG290 divr16u::@2 + //SEG289 [143] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG290 [143] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG291 divr16u::@2 b2: - //SEG291 [144] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG292 [144] (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 - //SEG292 [145] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG293 [145] (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 - //SEG293 [146] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG294 [146] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3 @@ -5646,13 +5646,13 @@ divr16u: { cmp #main.wavelength 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#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG300 divr16u::@3 + //SEG298 [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG299 [149] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG300 [149] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG301 divr16u::@3 b3: - //SEG301 [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG302 [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG303 [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::@6 - //SEG304 [152] (word) rem16u#1 ← (word) divr16u::rem#10 - //SEG305 divr16u::@return - //SEG306 [153] return + //SEG304 divr16u::@6 + //SEG305 [152] (word) rem16u#1 ← (word) divr16u::rem#10 + //SEG306 divr16u::@return + //SEG307 [153] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgen8b.asm b/src/test/ref/sinusgen8b.asm index ad0150194..5d17800b2 100644 --- a/src/test/ref/sinusgen8b.asm +++ b/src/test/ref/sinusgen8b.asm @@ -773,7 +773,6 @@ mulu8_sel: { lda _1+1 rts } -// Simple binary multiplication implementation // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $15 diff --git a/src/test/ref/sinusgen8b.log b/src/test/ref/sinusgen8b.log index d576b9c3f..af001c15f 100644 --- a/src/test/ref/sinusgen8b.log +++ b/src/test/ref/sinusgen8b.log @@ -3498,11 +3498,12 @@ Allocated zp ZP_WORD:187 [ divr16u::return#2 ] Allocated zp ZP_WORD:189 [ div16u::return#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -3518,23 +3519,23 @@ INITIAL ASM .label print_line_cursor = $400 .label rem16u = $9b .label print_char_cursor = 7 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] b40_from_bbegin: jmp b40 -//SEG4 @40 +//SEG5 @40 b40: -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] main_from_b40: jsr main -//SEG7 [3] phi from @40 to @end [phi:@40->@end] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] bend_from_b40: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label wavelength = $c0 .label _3 = $44 @@ -3545,63 +3546,63 @@ main: { .label sw = $4a .label sd = $4d .label i = 2 - //SEG10 [5] call sin8s_gen - //SEG11 [164] phi from main to sin8s_gen [phi:main->sin8s_gen] + //SEG11 [5] call sin8s_gen + //SEG12 [164] phi from main to sin8s_gen [phi:main->sin8s_gen] sin8s_gen_from_main: jsr sin8s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG13 main::@5 + //SEG14 main::@5 b5: - //SEG14 [7] call sin16s_gen - //SEG15 [62] phi from main::@5 to sin16s_gen [phi:main::@5->sin16s_gen] + //SEG15 [7] call sin16s_gen + //SEG16 [62] phi from main::@5 to sin16s_gen [phi:main::@5->sin16s_gen] sin16s_gen_from_b5: jsr sin16s_gen - //SEG16 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG17 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG17 main::@6 + //SEG18 main::@6 b6: - //SEG18 [9] call print_cls - //SEG19 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] + //SEG19 [9] call print_cls + //SEG20 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] print_cls_from_b6: jsr print_cls - //SEG20 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG21 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG21 [10] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#0] -- pbuz1=pbuc1 + //SEG22 [10] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG22 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#1] -- vbuz1=vbuc1 + //SEG23 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG23 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG24 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] b1_from_b9: - //SEG24 [10] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#0] -- register_copy - //SEG25 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#1] -- register_copy + //SEG25 [10] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#0] -- register_copy + //SEG26 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#1] -- register_copy jmp b1 - //SEG26 main::@1 + //SEG27 main::@1 b1: - //SEG27 [11] (signed byte) main::sb#0 ← *((const signed byte[192]) main::sintabb#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG28 [11] (signed byte) main::sb#0 ← *((const signed byte[192]) main::sintabb#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda sintabb,y sta sb - //SEG28 [12] (word~) main::$3 ← ((word)) (byte) main::i#2 -- vwuz1=_word_vbuz2 + //SEG29 [12] (word~) main::$3 ← ((word)) (byte) main::i#2 -- vwuz1=_word_vbuz2 lda i sta _3 lda #0 sta _3+1 - //SEG29 [13] (word~) main::$4 ← (word~) main::$3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 + //SEG30 [13] (word~) main::$4 ← (word~) main::$3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda _3 asl sta _4 lda _3+1 rol sta _4+1 - //SEG30 [14] (signed word*~) main::$5 ← (const signed word[192]) main::sintabw#0 + (word~) main::$4 -- pwsz1=pwsc1_plus_vwuz2 + //SEG31 [14] (signed word*~) main::$5 ← (const signed word[192]) main::sintabw#0 + (word~) main::$4 -- pwsz1=pwsc1_plus_vwuz2 lda _4 clc adc #sintabw sta _5+1 - //SEG31 [15] (signed word) main::sw#0 ← *((signed word*~) main::$5) -- vwsz1=_deref_pwsz2 + //SEG32 [15] (signed word) main::sw#0 ← *((signed word*~) main::$5) -- vwsz1=_deref_pwsz2 ldy #0 lda (_5),y sta sw iny lda (_5),y sta sw+1 - //SEG32 [16] (byte~) main::$6 ← > (signed word) main::sw#0 -- vbuz1=_hi_vwsz2 + //SEG33 [16] (byte~) main::$6 ← > (signed word) main::sw#0 -- vbuz1=_hi_vwsz2 lda sw+1 sta _6 - //SEG33 [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 -- vbsz1=vbsz2_minus_vbsz3 + //SEG34 [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 -- vbsz1=vbsz2_minus_vbsz3 lda sb sec sbc _6 sta sd - //SEG34 [18] if((signed byte) main::sd#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 + //SEG35 [18] if((signed byte) main::sd#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 lda sd bmi b2_from_b1 - //SEG35 [19] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG36 [19] phi from main::@1 to main::@3 [phi:main::@1->main::@3] b3_from_b1: jmp b3 - //SEG36 main::@3 + //SEG37 main::@3 b3: - //SEG37 [20] call print_str - //SEG38 [29] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG38 [20] call print_str + //SEG39 [29] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG39 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy - //SEG40 [29] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG40 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy + //SEG41 [29] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG41 [21] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG42 [21] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG42 [21] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG43 [21] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG43 main::@2 + //SEG44 main::@2 b2: - //SEG44 [22] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 -- vbsz1=vbsz2 + //SEG45 [22] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 -- vbsz1=vbsz2 lda sd sta print_sbyte.b - //SEG45 [23] call print_sbyte + //SEG46 [23] call print_sbyte jsr print_sbyte - //SEG46 [24] phi from main::@2 to main::@8 [phi:main::@2->main::@8] + //SEG47 [24] phi from main::@2 to main::@8 [phi:main::@2->main::@8] b8_from_b2: jmp b8 - //SEG47 main::@8 + //SEG48 main::@8 b8: - //SEG48 [25] call print_str - //SEG49 [29] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG49 [25] call print_str + //SEG50 [29] phi from main::@8 to print_str [phi:main::@8->print_str] print_str_from_b8: - //SEG50 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@8->print_str#0] -- register_copy - //SEG51 [29] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG51 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@8->print_str#0] -- register_copy + //SEG52 [29] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b9 - //SEG52 main::@9 + //SEG53 main::@9 b9: - //SEG53 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG54 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG54 [27] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG55 [27] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$c0 bne b1_from_b9 jmp breturn - //SEG55 main::@return + //SEG56 main::@return breturn: - //SEG56 [28] return + //SEG57 [28] return rts str: .text " @" str1: .text " @" sintabb: .fill $c0, 0 sintabw: .fill 2*$c0, 0 } -//SEG57 print_str +//SEG58 print_str // Print a zero-terminated string print_str: { .label str = 3 - //SEG58 [30] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG59 [30] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG59 [30] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG60 [30] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG60 [30] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG61 [30] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG61 print_str::@1 + //SEG62 print_str::@1 b1: - //SEG62 [31] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG63 [31] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG63 print_str::@return + //SEG64 print_str::@return breturn: - //SEG64 [32] return + //SEG65 [32] return rts - //SEG65 print_str::@2 + //SEG66 print_str::@2 b2: - //SEG66 [33] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG67 [33] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG67 [34] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG68 [34] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG68 [35] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG69 [35] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG69 print_sbyte +//SEG70 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = 5 - //SEG70 [36] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG71 [36] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG71 [37] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG72 [37] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG72 print_sbyte::@3 + //SEG73 print_sbyte::@3 b3: - //SEG73 [38] call print_char - //SEG74 [45] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG74 [38] call print_char + //SEG75 [45] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG75 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG76 [45] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG76 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG77 [45] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG77 [39] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG78 [39] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG78 [39] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG79 [39] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG79 print_sbyte::@2 + //SEG80 print_sbyte::@2 b2: - //SEG80 [40] call print_byte + //SEG81 [40] call print_byte jsr print_byte jmp breturn - //SEG81 print_sbyte::@return + //SEG82 print_sbyte::@return breturn: - //SEG82 [41] return + //SEG83 [41] return rts - //SEG83 [42] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG84 [42] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG84 print_sbyte::@1 + //SEG85 print_sbyte::@1 b1: - //SEG85 [43] call print_char - //SEG86 [45] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG86 [43] call print_char + //SEG87 [45] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG87 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG88 [45] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG88 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG89 [45] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b5 - //SEG89 print_sbyte::@5 + //SEG90 print_sbyte::@5 b5: - //SEG90 [44] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG91 [44] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -3787,98 +3788,98 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG91 print_char +//SEG92 print_char // Print a single char print_char: { .label ch = 6 - //SEG92 [46] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + //SEG93 [46] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG93 [47] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 + //SEG94 [47] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG94 print_char::@return + //SEG95 print_char::@return breturn: - //SEG95 [48] return + //SEG96 [48] return rts } -//SEG96 print_byte +//SEG97 print_byte // Print a byte as HEX print_byte: { .label _0 = $4e .label _2 = $4f - //SEG97 [49] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG98 [49] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda print_sbyte.b lsr lsr lsr lsr sta _0 - //SEG98 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG99 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG99 [51] call print_char - //SEG100 [45] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG100 [51] call print_char + //SEG101 [45] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG101 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy - //SEG102 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG102 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy + //SEG103 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG103 print_byte::@1 + //SEG104 print_byte::@1 b1: - //SEG104 [52] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG105 [52] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and print_sbyte.b sta _2 - //SEG105 [53] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG106 [53] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG106 [54] call print_char - //SEG107 [45] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG107 [54] call print_char + //SEG108 [45] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG108 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG109 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG109 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG110 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG110 print_byte::@return + //SEG111 print_byte::@return breturn: - //SEG111 [55] return + //SEG112 [55] return rts } -//SEG112 print_cls +//SEG113 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 9 - //SEG113 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG114 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG114 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG115 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG115 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG116 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG116 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG117 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG117 print_cls::@1 + //SEG118 print_cls::@1 b1: - //SEG118 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG119 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG119 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG120 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG120 [60] 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 + //SEG121 [60] 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_line_cursor+$3e8 bne b1_from_b1 @@ -3886,12 +3887,12 @@ print_cls: { cmp #div32u16u] + //SEG125 [63] call div32u16u + //SEG126 [136] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG126 [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG127 [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -3915,9 +3916,9 @@ sin16s_gen: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b3 - //SEG127 sin16s_gen::@3 + //SEG128 sin16s_gen::@3 b3: - //SEG128 [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG129 [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -3926,19 +3927,19 @@ sin16s_gen: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG129 [66] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG130 [66] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG130 [66] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG131 [66] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG131 [66] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[192]) main::sintabw#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG132 [66] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[192]) main::sintabw#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintabw sta sintab+1 - //SEG132 [66] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG133 [66] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -3946,15 +3947,15 @@ sin16s_gen: { sta x+2 sta x+3 jmp b1 - //SEG133 [66] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG134 [66] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] b1_from_b4: - //SEG134 [66] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG135 [66] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG136 [66] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG135 [66] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG136 [66] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG137 [66] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG137 sin16s_gen::@1 + //SEG138 sin16s_gen::@1 b1: - //SEG138 [67] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG139 [67] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -3963,29 +3964,29 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG139 [68] call sin16s + //SEG140 [68] call sin16s jsr sin16s - //SEG140 [69] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG141 [69] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b4 - //SEG141 sin16s_gen::@4 + //SEG142 sin16s_gen::@4 b4: - //SEG142 [70] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG143 [70] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta _1 lda sin16s.return+1 sta _1+1 - //SEG143 [71] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG144 [71] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG144 [72] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG145 [72] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -3993,7 +3994,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG145 [73] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG146 [73] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4007,12 +4008,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG146 [74] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG147 [74] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG147 [75] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG148 [75] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -4022,12 +4023,12 @@ sin16s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG148 sin16s_gen::@return + //SEG149 sin16s_gen::@return breturn: - //SEG149 [76] return + //SEG150 [76] return rts } -//SEG150 sin16s +//SEG151 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -4048,7 +4049,7 @@ sin16s: { .label sinx = $18 .label isUpper = $13 .label return_5 = $18 - //SEG151 [77] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG152 [77] 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 @@ -4066,9 +4067,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG152 sin16s::@4 + //SEG153 sin16s::@4 b4: - //SEG153 [78] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG154 [78] (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 - //SEG154 [79] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG155 [79] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG155 [79] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG156 [79] 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 - //SEG156 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG157 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG157 [79] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG158 [79] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG158 [79] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG159 [79] 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 - //SEG159 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG160 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG160 sin16s::@1 + //SEG161 sin16s::@1 b1: - //SEG161 [80] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG162 [80] 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 @@ -4116,9 +4117,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG162 sin16s::@5 + //SEG163 sin16s::@5 b5: - //SEG163 [81] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG164 [81] (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 - //SEG164 [82] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG165 [82] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG165 [82] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG166 [82] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG166 sin16s::@2 + //SEG167 sin16s::@2 b2: - //SEG167 [83] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG168 [83] (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 @@ -4156,107 +4157,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG168 [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG169 [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG169 [85] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG170 [85] (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 - //SEG170 [86] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG171 [86] (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 - //SEG171 [87] call mulu16_sel - //SEG172 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG172 [87] call mulu16_sel + //SEG173 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG173 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG174 [117] 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 - //SEG174 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG175 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG175 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG176 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG176 [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG177 [88] (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 - //SEG177 sin16s::@8 + //SEG178 sin16s::@8 b8: - //SEG178 [89] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG179 [89] (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 - //SEG179 [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG180 [90] (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 - //SEG180 [91] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG181 [91] (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 - //SEG181 [92] call mulu16_sel - //SEG182 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG182 [92] call mulu16_sel + //SEG183 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG183 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG184 [117] 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 - //SEG184 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG185 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG185 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG186 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG186 [93] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG187 [93] (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 - //SEG187 sin16s::@9 + //SEG188 sin16s::@9 b9: - //SEG188 [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG189 [94] (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 - //SEG189 [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG190 [95] (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 - //SEG190 [96] call mulu16_sel - //SEG191 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG191 [96] call mulu16_sel + //SEG192 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG192 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG193 [117] 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 - //SEG193 [117] 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 + //SEG194 [117] 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 - //SEG194 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG195 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG195 [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG196 [97] (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 - //SEG196 sin16s::@10 + //SEG197 sin16s::@10 b10: - //SEG197 [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG198 [98] (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 - //SEG198 [99] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG199 [99] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4264,71 +4265,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG199 [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG200 [100] (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 - //SEG200 [101] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG201 [101] (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 - //SEG201 [102] call mulu16_sel - //SEG202 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG202 [102] call mulu16_sel + //SEG203 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG203 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG204 [117] 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 - //SEG204 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG205 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG205 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG206 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG206 [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG207 [103] (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 - //SEG207 sin16s::@11 + //SEG208 sin16s::@11 b11: - //SEG208 [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG209 [104] (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 - //SEG209 [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG210 [105] (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 - //SEG210 [106] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG211 [106] (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 - //SEG211 [107] call mulu16_sel - //SEG212 [117] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG212 [107] call mulu16_sel + //SEG213 [117] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG213 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG214 [117] 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 - //SEG214 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG215 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG215 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG216 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG216 [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG217 [108] (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 - //SEG217 sin16s::@12 + //SEG218 sin16s::@12 b12: - //SEG218 [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG219 [109] (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 - //SEG219 [110] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG220 [110] (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 @@ -4339,7 +4340,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG220 [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG221 [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -4347,14 +4348,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG221 [112] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG222 [112] 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 - //SEG222 sin16s::@6 + //SEG223 sin16s::@6 b6: - //SEG223 [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG224 [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -4364,28 +4365,28 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG224 [114] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG225 [114] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG225 [114] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG226 [114] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG226 sin16s::@3 + //SEG227 sin16s::@3 b3: jmp breturn - //SEG227 sin16s::@return + //SEG228 sin16s::@return breturn: - //SEG228 [115] return + //SEG229 [115] return rts - //SEG229 sin16s::@15 + //SEG230 sin16s::@15 b15: - //SEG230 [116] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG231 [116] (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 } -//SEG231 mulu16_sel +//SEG232 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -4400,19 +4401,19 @@ mulu16_sel: { .label return_11 = $74 .label select = $1e .label return_12 = $8a - //SEG232 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG233 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG233 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG234 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG234 [120] call mul16u + //SEG235 [120] call mul16u jsr mul16u - //SEG235 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG236 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -4422,9 +4423,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return+3 jmp b2 - //SEG236 mulu16_sel::@2 + //SEG237 mulu16_sel::@2 b2: - //SEG237 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG238 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta _0 lda mul16u.return+1 @@ -4433,7 +4434,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return+3 sta _0+3 - //SEG238 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG239 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -4452,18 +4453,18 @@ mulu16_sel: { dex bne !- !e: - //SEG239 [124] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG240 [124] (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 - //SEG240 mulu16_sel::@return + //SEG241 mulu16_sel::@return breturn: - //SEG241 [125] return + //SEG242 [125] return rts } -//SEG242 mul16u +//SEG243 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label _1 = $8c @@ -4472,7 +4473,7 @@ mul16u: { .label res = $21 .label b = $7c .label return = $7e - //SEG243 [126] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG244 [126] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -4480,44 +4481,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG244 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG245 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG245 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG246 [127] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG246 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG247 [127] 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 - //SEG247 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG248 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG248 mul16u::@1 + //SEG249 mul16u::@1 b1: - //SEG249 [128] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG250 [128] if((word) mul16u::a#2!=(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 - //SEG250 mul16u::@return + //SEG251 mul16u::@return breturn: - //SEG251 [129] return + //SEG252 [129] return rts - //SEG252 mul16u::@2 + //SEG253 mul16u::@2 b2: - //SEG253 [130] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG254 [130] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG254 [131] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG255 [131] 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 - //SEG255 mul16u::@7 + //SEG256 mul16u::@7 b7: - //SEG256 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG257 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4531,30 +4532,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG257 [133] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG258 [133] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG258 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG259 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG259 mul16u::@4 + //SEG260 mul16u::@4 b4: - //SEG260 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG261 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG261 [135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG262 [135] (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 - //SEG262 [127] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG263 [127] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG263 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG264 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG265 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG264 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG265 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG266 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG266 div32u16u +//SEG267 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { @@ -4562,62 +4563,62 @@ div32u16u: { .label quotient_lo = $93 .label return = $95 .label return_2 = $50 - //SEG267 [137] call divr16u - //SEG268 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG268 [137] call divr16u + //SEG269 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG269 [146] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG270 [146] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG270 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG271 [146] phi (word) divr16u::rem#11 = (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 - //SEG271 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG272 [138] (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 b2 - //SEG272 div32u16u::@2 + //SEG273 div32u16u::@2 b2: - //SEG273 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG274 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta quotient_hi lda divr16u.return_3+1 sta quotient_hi+1 - //SEG274 [140] (word) divr16u::rem#5 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG275 [140] (word) divr16u::rem#5 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG275 [141] call divr16u - //SEG276 [146] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG276 [141] call divr16u + //SEG277 [146] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG277 [146] phi (word) divr16u::dividend#6 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG278 [146] phi (word) divr16u::dividend#6 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG278 [146] phi (word) divr16u::rem#11 = (word) divr16u::rem#5 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG279 [146] phi (word) divr16u::rem#11 = (word) divr16u::rem#5 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG279 [142] (word) divr16u::return#4 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG280 [142] (word) divr16u::return#4 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_4 lda divr16u.return+1 sta divr16u.return_4+1 jmp b3 - //SEG280 div32u16u::@3 + //SEG281 div32u16u::@3 b3: - //SEG281 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 -- vwuz1=vwuz2 + //SEG282 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 -- vwuz1=vwuz2 lda divr16u.return_4 sta quotient_lo lda divr16u.return_4+1 sta quotient_lo+1 - //SEG282 [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG283 [144] (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 @@ -4627,12 +4628,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG283 div32u16u::@return + //SEG284 div32u16u::@return breturn: - //SEG284 [145] return + //SEG285 [145] return rts } -//SEG285 divr16u +//SEG286 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -4648,63 +4649,63 @@ divr16u: { .label return_2 = $bb .label return_3 = $8d .label return_4 = $91 - //SEG286 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG287 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG287 [147] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG288 [147] 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 - //SEG288 [147] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG289 [147] 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 - //SEG289 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#6 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG290 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#11 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG290 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#6 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG291 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#11 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG291 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG292 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG292 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG293 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG294 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG295 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG293 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG294 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG295 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG296 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG296 divr16u::@1 + //SEG297 divr16u::@1 b1: - //SEG297 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG298 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG298 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 -- vbuz1=_hi_vwuz2 + //SEG299 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG299 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG300 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG300 [151] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG301 [151] 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 - //SEG301 divr16u::@4 + //SEG302 divr16u::@4 b4: - //SEG302 [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG303 [152] (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 - //SEG303 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG304 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG304 [153] phi (word) divr16u::rem#7 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG305 [153] phi (word) divr16u::rem#7 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG305 divr16u::@2 + //SEG306 divr16u::@2 b2: - //SEG306 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG307 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG307 [155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG308 [155] (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 - //SEG308 [156] if((word) divr16u::rem#7<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [156] if((word) divr16u::rem#7<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -4714,14 +4715,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG309 divr16u::@5 + //SEG310 divr16u::@5 b5: - //SEG310 [157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG311 [157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG311 [158] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG312 [158] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG312 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG313 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG313 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG314 [159] phi (word) divr16u::rem#10 = (word) divr16u::rem#7 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG314 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG315 [159] phi (word) divr16u::rem#10 = (word) divr16u::rem#7 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG315 divr16u::@3 + //SEG316 divr16u::@3 b3: - //SEG316 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG317 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG317 [161] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG318 [161] 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 - //SEG318 divr16u::@6 + //SEG319 divr16u::@6 b6: - //SEG319 [162] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 + //SEG320 [162] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG320 divr16u::@return + //SEG321 divr16u::@return breturn: - //SEG321 [163] return + //SEG322 [163] return rts } -//SEG322 sin8s_gen +//SEG323 sin8s_gen // Generate signed byte sinus table - on the full -$7f - $7f range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -4767,75 +4768,75 @@ sin8s_gen: { .label sintab = $32 .label x = $30 .label i = $34 - //SEG323 [165] call div16u - //SEG324 [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] + //SEG324 [165] call div16u + //SEG325 [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] div16u_from_sin8s_gen: jsr div16u - //SEG325 [166] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 + //SEG326 [166] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 lda div16u.return sta div16u.return_2 lda div16u.return+1 sta div16u.return_2+1 jmp b3 - //SEG326 sin8s_gen::@3 + //SEG327 sin8s_gen::@3 b3: - //SEG327 [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 + //SEG328 [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 lda div16u.return_2 sta step lda div16u.return_2+1 sta step+1 - //SEG328 [168] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + //SEG329 [168] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] b1_from_b3: - //SEG329 [168] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + //SEG330 [168] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG330 [168] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintabb#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + //SEG331 [168] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintabb#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 lda #main.sintabb sta sintab+1 - //SEG331 [168] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + //SEG332 [168] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 jmp b1 - //SEG332 [168] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + //SEG333 [168] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] b1_from_b4: - //SEG333 [168] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy - //SEG334 [168] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy - //SEG335 [168] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + //SEG334 [168] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG335 [168] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG336 [168] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy jmp b1 - //SEG336 sin8s_gen::@1 + //SEG337 sin8s_gen::@1 b1: - //SEG337 [169] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 + //SEG338 [169] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG338 [170] call sin8s + //SEG339 [170] call sin8s jsr sin8s - //SEG339 [171] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 -- vbsz1=vbsz2 + //SEG340 [171] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 -- vbsz1=vbsz2 lda sin8s.return_1 sta sin8s.return jmp b4 - //SEG340 sin8s_gen::@4 + //SEG341 sin8s_gen::@4 b4: - //SEG341 [172] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 -- vbsz1=vbsz2 + //SEG342 [172] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 -- vbsz1=vbsz2 lda sin8s.return sta _1 - //SEG342 [173] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsz2 + //SEG343 [173] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsz2 lda _1 ldy #0 sta (sintab),y - //SEG343 [174] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 + //SEG344 [174] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 inc sintab bne !+ inc sintab+1 !: - //SEG344 [175] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG345 [175] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -4843,12 +4844,12 @@ sin8s_gen: { lda x+1 adc step+1 sta x+1 - //SEG345 [176] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG346 [176] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG346 [177] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG347 [177] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -4858,12 +4859,12 @@ sin8s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG347 sin8s_gen::@return + //SEG348 sin8s_gen::@return breturn: - //SEG348 [178] return + //SEG349 [178] return rts } -//SEG349 sin8s +//SEG350 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -4888,7 +4889,7 @@ sin8s: { .label usinx_4 = $39 .label isUpper = $36 .label return_5 = $3a - //SEG350 [179] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG351 [179] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -4898,9 +4899,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG351 sin8s::@5 + //SEG352 sin8s::@5 b5: - //SEG352 [180] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG353 [180] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG353 [181] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG354 [181] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG354 [181] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG355 [181] 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 - //SEG355 [181] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG356 [181] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG356 [181] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG357 [181] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG357 [181] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG358 [181] 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 - //SEG358 [181] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG359 [181] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG359 sin8s::@1 + //SEG360 sin8s::@1 b1: - //SEG360 [182] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG361 [182] 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 @@ -4934,9 +4935,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG361 sin8s::@6 + //SEG362 sin8s::@6 b6: - //SEG362 [183] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG363 [183] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG363 [184] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG364 [184] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG364 [184] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG365 [184] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG365 sin8s::@2 + //SEG366 sin8s::@2 b2: - //SEG366 [185] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG367 [185] (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 @@ -4962,194 +4963,194 @@ sin8s: { rol _6+1 asl _6 rol _6+1 - //SEG367 [186] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG368 [186] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG368 [187] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG369 [187] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v1 - //SEG369 [188] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG370 [188] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG370 [189] call mulu8_sel - //SEG371 [222] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG371 [189] call mulu8_sel + //SEG372 [222] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG372 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG373 [222] 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 - //SEG373 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG374 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG374 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG375 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG375 [190] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG376 [190] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return jmp b10 - //SEG376 sin8s::@10 + //SEG377 sin8s::@10 b10: - //SEG377 [191] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 + //SEG378 [191] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 lda mulu8_sel.return sta x2 - //SEG378 [192] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 + //SEG379 [192] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 lda x2 sta mulu8_sel.v1 - //SEG379 [193] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG380 [193] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG380 [194] call mulu8_sel - //SEG381 [222] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG381 [194] call mulu8_sel + //SEG382 [222] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG382 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG383 [222] 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 - //SEG383 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG384 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG384 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG385 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG385 [195] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG386 [195] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_1 jmp b11 - //SEG386 sin8s::@11 + //SEG387 sin8s::@11 b11: - //SEG387 [196] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 + //SEG388 [196] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 lda mulu8_sel.return_1 sta x3 - //SEG388 [197] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG389 [197] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG389 [198] call mulu8_sel - //SEG390 [222] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG390 [198] call mulu8_sel + //SEG391 [222] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG391 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG392 [222] 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 - //SEG392 [222] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuz1=vbuc1 + //SEG393 [222] 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 - //SEG393 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG394 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG394 [199] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG395 [199] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_2 jmp b12 - //SEG395 sin8s::@12 + //SEG396 sin8s::@12 b12: - //SEG396 [200] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 + //SEG397 [200] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 lda mulu8_sel.return_2 sta x3_6 - //SEG397 [201] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG398 [201] (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 - //SEG398 [202] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG399 [202] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG399 [203] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG400 [203] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG400 [204] call mulu8_sel - //SEG401 [222] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG401 [204] call mulu8_sel + //SEG402 [222] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG402 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG403 [222] 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 - //SEG403 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG404 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG404 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG405 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG405 [205] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG406 [205] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_10 jmp b13 - //SEG406 sin8s::@13 + //SEG407 sin8s::@13 b13: - //SEG407 [206] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 + //SEG408 [206] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 lda mulu8_sel.return_10 sta x4 - //SEG408 [207] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 + //SEG409 [207] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 lda x4 sta mulu8_sel.v1 - //SEG409 [208] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG410 [208] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG410 [209] call mulu8_sel - //SEG411 [222] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG411 [209] call mulu8_sel + //SEG412 [222] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //SEG412 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG413 [222] 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 - //SEG413 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG414 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG414 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG415 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG415 [210] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG416 [210] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_11 jmp b14 - //SEG416 sin8s::@14 + //SEG417 sin8s::@14 b14: - //SEG417 [211] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 + //SEG418 [211] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 lda mulu8_sel.return_11 sta x5 - //SEG418 [212] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG419 [212] (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 - //SEG419 [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG420 [213] (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 - //SEG420 [214] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG421 [214] 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 - //SEG421 sin8s::@7 + //SEG422 sin8s::@7 b7: - //SEG422 [215] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 + //SEG423 [215] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 dec usinx_2 - //SEG423 [216] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG424 [216] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG424 [216] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG425 [216] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG425 sin8s::@3 + //SEG426 sin8s::@3 b3: - //SEG426 [217] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG427 [217] 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 - //SEG427 sin8s::@8 + //SEG428 sin8s::@8 b8: - //SEG428 [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 + //SEG429 [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 lda usinx_4 eor #$ff clc adc #1 sta sinx - //SEG429 [219] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG430 [219] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG430 [219] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG431 [219] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG431 sin8s::@4 + //SEG432 sin8s::@4 b4: jmp breturn - //SEG432 sin8s::@return + //SEG433 sin8s::@return breturn: - //SEG433 [220] return + //SEG434 [220] return rts - //SEG434 sin8s::@18 + //SEG435 sin8s::@18 b18: - //SEG435 [221] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 + //SEG436 [221] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 lda usinx_4 sta return_5 jmp b4_from_b18 } -//SEG436 mulu8_sel +//SEG437 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { @@ -5164,28 +5165,28 @@ mulu8_sel: { .label return_11 = $af .label select = $3d .label return_12 = $b9 - //SEG437 [223] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 + //SEG438 [223] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 lda v1 sta mul8u.a - //SEG438 [224] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 + //SEG439 [224] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 lda v2 sta mul8u.b - //SEG439 [225] call mul8u + //SEG440 [225] call mul8u jsr mul8u - //SEG440 [226] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG441 [226] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b2 - //SEG441 mulu8_sel::@2 + //SEG442 mulu8_sel::@2 b2: - //SEG442 [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG443 [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta _0 lda mul8u.return+1 sta _0+1 - //SEG443 [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 + //SEG444 [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -5198,17 +5199,16 @@ mulu8_sel: { dey bne !- !e: - //SEG444 [229] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 + //SEG445 [229] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 lda _1+1 sta return_12 jmp breturn - //SEG445 mulu8_sel::@return + //SEG446 mulu8_sel::@return breturn: - //SEG446 [230] return + //SEG447 [230] return rts } -//SEG447 mul8u -// Simple binary multiplication implementation +//SEG448 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label _1 = $ba @@ -5217,46 +5217,46 @@ mul8u: { .label res = $3f .label b = $b2 .label return = $b3 - //SEG448 [231] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuz2 + //SEG449 [231] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuz2 lda b sta mb lda #0 sta mb+1 - //SEG449 [232] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG450 [232] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG450 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG451 [232] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG451 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG452 [232] 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 - //SEG452 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG453 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG453 mul8u::@1 + //SEG454 mul8u::@1 b1: - //SEG454 [233] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG455 [233] if((byte) mul8u::a#2!=(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 - //SEG455 mul8u::@return + //SEG456 mul8u::@return breturn: - //SEG456 [234] return + //SEG457 [234] return rts - //SEG457 mul8u::@2 + //SEG458 mul8u::@2 b2: - //SEG458 [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG459 [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG459 [236] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG460 [236] 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 - //SEG460 mul8u::@7 + //SEG461 mul8u::@7 b7: - //SEG461 [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG462 [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5264,26 +5264,26 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG462 [238] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG463 [238] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG463 [238] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG464 [238] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG464 mul8u::@4 + //SEG465 mul8u::@4 b4: - //SEG465 [239] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG466 [239] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG466 [240] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG467 [240] (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 - //SEG467 [232] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG468 [232] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG468 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG469 [232] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG470 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG469 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG470 [232] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG471 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG471 div16u +//SEG472 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -5291,37 +5291,37 @@ mul8u: { div16u: { .label return = $bd .label return_2 = $9d - //SEG472 [242] call divr16u - //SEG473 [146] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG473 [242] call divr16u + //SEG474 [146] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: - //SEG474 [146] phi (word) divr16u::dividend#6 = (const word) PI2_u4f12#0 [phi:div16u->divr16u#0] -- vwuz1=vwuc1 + //SEG475 [146] phi (word) divr16u::dividend#6 = (const word) PI2_u4f12#0 [phi:div16u->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f12 sta divr16u.dividend+1 - //SEG475 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#1] -- vwuz1=vbuc1 + //SEG476 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG476 [243] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG477 [243] (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 - //SEG477 div16u::@2 + //SEG478 div16u::@2 b2: - //SEG478 [244] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG479 [244] (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 - //SEG479 div16u::@return + //SEG480 div16u::@return breturn: - //SEG480 [245] return + //SEG481 [245] return rts } print_hextab: .text "0123456789abcdef" @@ -5801,11 +5801,12 @@ Allocated (was zp ZP_BYTE:169) zp ZP_BYTE:35 [ sin8s::x3#0 ] Allocated (was zp ZP_BYTE:172) zp ZP_BYTE:36 [ sin8s::usinx#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -5821,23 +5822,23 @@ ASSEMBLER BEFORE OPTIMIZATION .label print_line_cursor = $400 .label rem16u = 2 .label print_char_cursor = 5 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] b40_from_bbegin: jmp b40 -//SEG4 @40 +//SEG5 @40 b40: -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] main_from_b40: jsr main -//SEG7 [3] phi from @40 to @end [phi:@40->@end] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] bend_from_b40: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label wavelength = $c0 .label _3 = 2 @@ -5846,57 +5847,57 @@ main: { .label sb = 4 .label sw = $f .label sd = 4 - //SEG10 [5] call sin8s_gen - //SEG11 [164] phi from main to sin8s_gen [phi:main->sin8s_gen] + //SEG11 [5] call sin8s_gen + //SEG12 [164] phi from main to sin8s_gen [phi:main->sin8s_gen] sin8s_gen_from_main: jsr sin8s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] b5_from_main: jmp b5 - //SEG13 main::@5 + //SEG14 main::@5 b5: - //SEG14 [7] call sin16s_gen - //SEG15 [62] phi from main::@5 to sin16s_gen [phi:main::@5->sin16s_gen] + //SEG15 [7] call sin16s_gen + //SEG16 [62] phi from main::@5 to sin16s_gen [phi:main::@5->sin16s_gen] sin16s_gen_from_b5: jsr sin16s_gen - //SEG16 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG17 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG17 main::@6 + //SEG18 main::@6 b6: - //SEG18 [9] call print_cls - //SEG19 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] + //SEG19 [9] call print_cls + //SEG20 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] print_cls_from_b6: jsr print_cls - //SEG20 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG21 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG21 [10] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#0] -- pbuz1=pbuc1 + //SEG22 [10] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG22 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#1] -- vbuxx=vbuc1 + //SEG23 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG23 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG24 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] b1_from_b9: - //SEG24 [10] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#0] -- register_copy - //SEG25 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#1] -- register_copy + //SEG25 [10] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#0] -- register_copy + //SEG26 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#1] -- register_copy jmp b1 - //SEG26 main::@1 + //SEG27 main::@1 b1: - //SEG27 [11] (signed byte) main::sb#0 ← *((const signed byte[192]) main::sintabb#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuxx + //SEG28 [11] (signed byte) main::sb#0 ← *((const signed byte[192]) main::sintabb#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuxx lda sintabb,x sta sb - //SEG28 [12] (word~) main::$3 ← ((word)) (byte) main::i#2 -- vwuz1=_word_vbuxx + //SEG29 [12] (word~) main::$3 ← ((word)) (byte) main::i#2 -- vwuz1=_word_vbuxx txa sta _3 lda #0 sta _3+1 - //SEG29 [13] (word~) main::$4 ← (word~) main::$3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG30 [13] (word~) main::$4 ← (word~) main::$3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl _4 rol _4+1 - //SEG30 [14] (signed word*~) main::$5 ← (const signed word[192]) main::sintabw#0 + (word~) main::$4 -- pwsz1=pwsc1_plus_vwuz1 + //SEG31 [14] (signed word*~) main::$5 ← (const signed word[192]) main::sintabw#0 + (word~) main::$4 -- pwsz1=pwsc1_plus_vwuz1 clc lda _5 adc #sintabw sta _5+1 - //SEG31 [15] (signed word) main::sw#0 ← *((signed word*~) main::$5) -- vwsz1=_deref_pwsz2 + //SEG32 [15] (signed word) main::sw#0 ← *((signed word*~) main::$5) -- vwsz1=_deref_pwsz2 ldy #0 lda (_5),y sta sw iny lda (_5),y sta sw+1 - //SEG32 [16] (byte~) main::$6 ← > (signed word) main::sw#0 -- vbuaa=_hi_vwsz1 + //SEG33 [16] (byte~) main::$6 ← > (signed word) main::sw#0 -- vbuaa=_hi_vwsz1 lda sw+1 - //SEG33 [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 -- vbsz1=vbsz1_minus_vbsaa + //SEG34 [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 -- vbsz1=vbsz1_minus_vbsaa eor #$ff sec adc sd sta sd - //SEG34 [18] if((signed byte) main::sd#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 + //SEG35 [18] if((signed byte) main::sd#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 lda sd bmi b2_from_b1 - //SEG35 [19] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG36 [19] phi from main::@1 to main::@3 [phi:main::@1->main::@3] b3_from_b1: jmp b3 - //SEG36 main::@3 + //SEG37 main::@3 b3: - //SEG37 [20] call print_str - //SEG38 [29] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG38 [20] call print_str + //SEG39 [29] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG39 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy - //SEG40 [29] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG40 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy + //SEG41 [29] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG41 [21] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG42 [21] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG42 [21] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG43 [21] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 - //SEG43 main::@2 + //SEG44 main::@2 b2: - //SEG44 [22] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 - //SEG45 [23] call print_sbyte + //SEG45 [22] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 + //SEG46 [23] call print_sbyte jsr print_sbyte - //SEG46 [24] phi from main::@2 to main::@8 [phi:main::@2->main::@8] + //SEG47 [24] phi from main::@2 to main::@8 [phi:main::@2->main::@8] b8_from_b2: jmp b8 - //SEG47 main::@8 + //SEG48 main::@8 b8: - //SEG48 [25] call print_str - //SEG49 [29] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG49 [25] call print_str + //SEG50 [29] phi from main::@8 to print_str [phi:main::@8->print_str] print_str_from_b8: - //SEG50 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@8->print_str#0] -- register_copy - //SEG51 [29] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG51 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@8->print_str#0] -- register_copy + //SEG52 [29] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b9 - //SEG52 main::@9 + //SEG53 main::@9 b9: - //SEG53 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG54 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG54 [27] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG55 [27] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$c0 bne b1_from_b9 jmp breturn - //SEG55 main::@return + //SEG56 main::@return breturn: - //SEG56 [28] return + //SEG57 [28] return rts str: .text " @" str1: .text " @" sintabb: .fill $c0, 0 sintabw: .fill 2*$c0, 0 } -//SEG57 print_str +//SEG58 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG58 [30] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG59 [30] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG59 [30] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG60 [30] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG60 [30] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG61 [30] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG61 print_str::@1 + //SEG62 print_str::@1 b1: - //SEG62 [31] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG63 [31] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG63 print_str::@return + //SEG64 print_str::@return breturn: - //SEG64 [32] return + //SEG65 [32] return rts - //SEG65 print_str::@2 + //SEG66 print_str::@2 b2: - //SEG66 [33] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG67 [33] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG67 [34] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG68 [34] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG68 [35] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG69 [35] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG69 print_sbyte +//SEG70 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = 4 - //SEG70 [36] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG71 [36] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG71 [37] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG72 [37] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG72 print_sbyte::@3 + //SEG73 print_sbyte::@3 b3: - //SEG73 [38] call print_char - //SEG74 [45] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG74 [38] call print_char + //SEG75 [45] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG75 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG76 [45] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG76 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG77 [45] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG77 [39] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG78 [39] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG78 [39] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG79 [39] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG79 print_sbyte::@2 + //SEG80 print_sbyte::@2 b2: - //SEG80 [40] call print_byte + //SEG81 [40] call print_byte jsr print_byte jmp breturn - //SEG81 print_sbyte::@return + //SEG82 print_sbyte::@return breturn: - //SEG82 [41] return + //SEG83 [41] return rts - //SEG83 [42] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG84 [42] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG84 print_sbyte::@1 + //SEG85 print_sbyte::@1 b1: - //SEG85 [43] call print_char - //SEG86 [45] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG86 [43] call print_char + //SEG87 [45] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG87 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG88 [45] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG88 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG89 [45] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b5 - //SEG89 print_sbyte::@5 + //SEG90 print_sbyte::@5 b5: - //SEG90 [44] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG91 [44] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -6076,90 +6077,90 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG91 print_char +//SEG92 print_char // Print a single char print_char: { - //SEG92 [46] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG93 [46] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG93 [47] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 + //SEG94 [47] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG94 print_char::@return + //SEG95 print_char::@return breturn: - //SEG95 [48] return + //SEG96 [48] return rts } -//SEG96 print_byte +//SEG97 print_byte // Print a byte as HEX print_byte: { - //SEG97 [49] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG98 [49] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda print_sbyte.b lsr lsr lsr lsr - //SEG98 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG99 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG99 [51] call print_char - //SEG100 [45] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG100 [51] call print_char + //SEG101 [45] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG101 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy - //SEG102 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG102 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy + //SEG103 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG103 print_byte::@1 + //SEG104 print_byte::@1 b1: - //SEG104 [52] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG105 [52] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and print_sbyte.b - //SEG105 [53] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG106 [53] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG106 [54] call print_char - //SEG107 [45] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG107 [54] call print_char + //SEG108 [45] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG108 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG109 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG109 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG110 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG110 print_byte::@return + //SEG111 print_byte::@return breturn: - //SEG111 [55] return + //SEG112 [55] return rts } -//SEG112 print_cls +//SEG113 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG113 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG114 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG114 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG115 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG115 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG116 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG116 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG117 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG117 print_cls::@1 + //SEG118 print_cls::@1 b1: - //SEG118 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG119 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG119 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG120 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG120 [60] 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 + //SEG121 [60] 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_line_cursor+$3e8 bne b1_from_b1 @@ -6167,12 +6168,12 @@ print_cls: { cmp #div32u16u] + //SEG125 [63] call div32u16u + //SEG126 [136] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG126 [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG127 [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b3 - //SEG127 sin16s_gen::@3 + //SEG128 sin16s_gen::@3 b3: - //SEG128 [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG129 [66] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG129 [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG130 [66] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG130 [66] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG131 [66] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG131 [66] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[192]) main::sintabw#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG132 [66] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[192]) main::sintabw#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintabw sta sintab+1 - //SEG132 [66] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG133 [66] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6211,15 +6212,15 @@ sin16s_gen: { sta x+2 sta x+3 jmp b1 - //SEG133 [66] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG134 [66] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] b1_from_b4: - //SEG134 [66] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG135 [66] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG136 [66] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG135 [66] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG136 [66] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG137 [66] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG137 sin16s_gen::@1 + //SEG138 sin16s_gen::@1 b1: - //SEG138 [67] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG139 [67] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -6228,21 +6229,21 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG139 [68] call sin16s + //SEG140 [68] call sin16s jsr sin16s - //SEG140 [69] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG141 [69] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b4 - //SEG141 sin16s_gen::@4 + //SEG142 sin16s_gen::@4 b4: - //SEG142 [70] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG143 [71] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG143 [70] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG144 [71] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG144 [72] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG145 [72] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -6250,7 +6251,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG145 [73] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG146 [73] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6264,12 +6265,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG146 [74] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG147 [74] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG147 [75] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG148 [75] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -6279,12 +6280,12 @@ sin16s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG148 sin16s_gen::@return + //SEG149 sin16s_gen::@return breturn: - //SEG149 [76] return + //SEG150 [76] return rts } -//SEG150 sin16s +//SEG151 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -6302,7 +6303,7 @@ sin16s: { .label x5_128 = $13 .label sinx = $f .label isUpper = 4 - //SEG151 [77] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG152 [77] 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 @@ -6320,9 +6321,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG152 sin16s::@4 + //SEG153 sin16s::@4 b4: - //SEG153 [78] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG154 [78] (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 - //SEG154 [79] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG155 [79] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG155 [79] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG156 [79] 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 - //SEG156 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG157 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG157 [79] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG158 [79] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG158 [79] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG159 [79] 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 - //SEG159 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG160 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG160 sin16s::@1 + //SEG161 sin16s::@1 b1: - //SEG161 [80] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG162 [80] 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 @@ -6370,9 +6371,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG162 sin16s::@5 + //SEG163 sin16s::@5 b5: - //SEG163 [81] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG164 [81] (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 - //SEG164 [82] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG165 [82] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG165 [82] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG166 [82] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG166 sin16s::@2 + //SEG167 sin16s::@2 b2: - //SEG167 [83] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG168 [83] (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 @@ -6402,80 +6403,80 @@ sin16s: { rol _6+3 dey bne !- - //SEG168 [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG169 [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG169 [85] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG170 [85] (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 - //SEG170 [86] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG171 [86] (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 - //SEG171 [87] call mulu16_sel - //SEG172 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG172 [87] call mulu16_sel + //SEG173 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG173 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG174 [117] 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 - //SEG174 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG175 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG175 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG176 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG176 [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG177 [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b8 - //SEG177 sin16s::@8 + //SEG178 sin16s::@8 b8: - //SEG178 [89] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG179 [89] (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 - //SEG179 [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG180 [91] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG180 [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG181 [91] (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 - //SEG181 [92] call mulu16_sel - //SEG182 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG182 [92] call mulu16_sel + //SEG183 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG183 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG184 [117] 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 - //SEG184 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG185 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG185 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG186 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG186 [93] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG187 [93] (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 - //SEG187 sin16s::@9 + //SEG188 sin16s::@9 b9: - //SEG188 [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG189 [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG190 [96] call mulu16_sel - //SEG191 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG189 [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG190 [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG191 [96] call mulu16_sel + //SEG192 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG192 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG193 [117] 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 - //SEG193 [117] 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 + //SEG194 [117] 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 - //SEG194 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG195 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG195 [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG196 [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b10 - //SEG196 sin16s::@10 + //SEG197 sin16s::@10 b10: - //SEG197 [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG198 [99] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG198 [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG199 [99] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6483,56 +6484,56 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG199 [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG200 [101] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG200 [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG201 [101] (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 - //SEG201 [102] call mulu16_sel - //SEG202 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG202 [102] call mulu16_sel + //SEG203 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG203 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG204 [117] 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 - //SEG204 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG205 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG205 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG206 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG206 [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG207 [103] (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 - //SEG207 sin16s::@11 + //SEG208 sin16s::@11 b11: - //SEG208 [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG209 [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG210 [106] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG209 [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG210 [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG211 [106] (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 - //SEG211 [107] call mulu16_sel - //SEG212 [117] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG212 [107] call mulu16_sel + //SEG213 [117] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG213 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG214 [117] 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 - //SEG214 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG215 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG215 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG216 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG216 [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG217 [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b12 - //SEG217 sin16s::@12 + //SEG218 sin16s::@12 b12: - //SEG218 [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG219 [110] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG219 [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG220 [110] (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 !- - //SEG220 [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG221 [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6540,14 +6541,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG221 [112] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG222 [112] 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 - //SEG222 sin16s::@6 + //SEG223 sin16s::@6 b6: - //SEG223 [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG224 [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6557,24 +6558,24 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG224 [114] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG225 [114] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG225 [114] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG226 [114] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG226 sin16s::@3 + //SEG227 sin16s::@3 b3: jmp breturn - //SEG227 sin16s::@return + //SEG228 sin16s::@return breturn: - //SEG228 [115] return + //SEG229 [115] return rts - //SEG229 sin16s::@15 + //SEG230 sin16s::@15 b15: - //SEG230 [116] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG231 [116] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b15 } -//SEG231 mulu16_sel +//SEG232 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -6585,20 +6586,20 @@ mulu16_sel: { .label return = $13 .label return_1 = $11 .label return_10 = $11 - //SEG232 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG233 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG233 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 - //SEG234 [120] call mul16u + //SEG234 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + //SEG235 [120] call mul16u jsr mul16u - //SEG235 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG236 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b2 - //SEG236 mulu16_sel::@2 + //SEG237 mulu16_sel::@2 b2: - //SEG237 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG238 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG238 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG239 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -6609,18 +6610,18 @@ mulu16_sel: { dex bne !- !e: - //SEG239 [124] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG240 [124] (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 - //SEG240 mulu16_sel::@return + //SEG241 mulu16_sel::@return breturn: - //SEG241 [125] return + //SEG242 [125] return rts } -//SEG242 mul16u +//SEG243 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $17 @@ -6628,7 +6629,7 @@ mul16u: { .label res = $b .label b = $13 .label return = $b - //SEG243 [126] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG244 [126] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6636,42 +6637,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG244 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG245 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG245 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG246 [127] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG246 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG247 [127] 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 - //SEG247 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG248 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG248 mul16u::@1 + //SEG249 mul16u::@1 b1: - //SEG249 [128] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG250 [128] if((word) mul16u::a#2!=(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 - //SEG250 mul16u::@return + //SEG251 mul16u::@return breturn: - //SEG251 [129] return + //SEG252 [129] return rts - //SEG252 mul16u::@2 + //SEG253 mul16u::@2 b2: - //SEG253 [130] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG254 [130] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG254 [131] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG255 [131] 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 - //SEG255 mul16u::@7 + //SEG256 mul16u::@7 b7: - //SEG256 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG257 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6685,76 +6686,76 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG257 [133] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG258 [133] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG258 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG259 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG259 mul16u::@4 + //SEG260 mul16u::@4 b4: - //SEG260 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG261 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG261 [135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG262 [135] (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 - //SEG262 [127] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG263 [127] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG263 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG264 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG265 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG264 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG265 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG266 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG266 div32u16u +//SEG267 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $11 .label quotient_lo = $f .label return = $1c - //SEG267 [137] call divr16u - //SEG268 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG268 [137] call divr16u + //SEG269 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG269 [146] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG270 [146] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG270 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG271 [146] phi (word) divr16u::rem#11 = (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 - //SEG271 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG272 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b2 - //SEG272 div32u16u::@2 + //SEG273 div32u16u::@2 b2: - //SEG273 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG274 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG274 [140] (word) divr16u::rem#5 ← (word) rem16u#1 - //SEG275 [141] call divr16u - //SEG276 [146] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG275 [140] (word) divr16u::rem#5 ← (word) rem16u#1 + //SEG276 [141] call divr16u + //SEG277 [146] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG277 [146] phi (word) divr16u::dividend#6 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG278 [146] phi (word) divr16u::dividend#6 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG278 [146] phi (word) divr16u::rem#11 = (word) divr16u::rem#5 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG279 [146] phi (word) divr16u::rem#11 = (word) divr16u::rem#5 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG279 [142] (word) divr16u::return#4 ← (word) divr16u::return#0 + //SEG280 [142] (word) divr16u::return#4 ← (word) divr16u::return#0 jmp b3 - //SEG280 div32u16u::@3 + //SEG281 div32u16u::@3 b3: - //SEG281 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 - //SEG282 [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG282 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 + //SEG283 [144] (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 @@ -6764,12 +6765,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG283 div32u16u::@return + //SEG284 div32u16u::@return breturn: - //SEG284 [145] return + //SEG285 [145] return rts } -//SEG285 divr16u +//SEG286 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6779,58 +6780,58 @@ divr16u: { .label dividend = 5 .label quotient = $f .label return = $f - //SEG286 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG287 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG287 [147] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG288 [147] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG288 [147] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG289 [147] 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 - //SEG289 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#6 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG290 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#11 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG290 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#6 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG291 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#11 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG291 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG292 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG292 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG293 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG294 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG295 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG293 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG294 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG295 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG296 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG296 divr16u::@1 + //SEG297 divr16u::@1 b1: - //SEG297 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG298 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG298 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 -- vbuaa=_hi_vwuz1 + //SEG299 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG299 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG300 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG300 [151] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG301 [151] 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 - //SEG301 divr16u::@4 + //SEG302 divr16u::@4 b4: - //SEG302 [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG303 [152] (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 - //SEG303 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG304 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG304 [153] phi (word) divr16u::rem#7 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG305 [153] phi (word) divr16u::rem#7 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG305 divr16u::@2 + //SEG306 divr16u::@2 b2: - //SEG306 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG307 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG307 [155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG308 [155] (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 - //SEG308 [156] if((word) divr16u::rem#7<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [156] if((word) divr16u::rem#7<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -6840,14 +6841,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG309 divr16u::@5 + //SEG310 divr16u::@5 b5: - //SEG310 [157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG311 [157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG311 [158] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG312 [158] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG312 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG313 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG313 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG314 [159] phi (word) divr16u::rem#10 = (word) divr16u::rem#7 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG314 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG315 [159] phi (word) divr16u::rem#10 = (word) divr16u::rem#7 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG315 divr16u::@3 + //SEG316 divr16u::@3 b3: - //SEG316 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG317 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG317 [161] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG318 [161] 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 - //SEG318 divr16u::@6 + //SEG319 divr16u::@6 b6: - //SEG319 [162] (word) rem16u#1 ← (word) divr16u::rem#10 + //SEG320 [162] (word) rem16u#1 ← (word) divr16u::rem#10 jmp breturn - //SEG320 divr16u::@return + //SEG321 divr16u::@return breturn: - //SEG321 [163] return + //SEG322 [163] return rts } -//SEG322 sin8s_gen +//SEG323 sin8s_gen // Generate signed byte sinus table - on the full -$7f - $7f range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -6887,62 +6888,62 @@ sin8s_gen: { .label sintab = 5 .label x = 2 .label i = $11 - //SEG323 [165] call div16u - //SEG324 [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] + //SEG324 [165] call div16u + //SEG325 [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] div16u_from_sin8s_gen: jsr div16u - //SEG325 [166] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG326 [166] (word) div16u::return#2 ← (word) div16u::return#0 jmp b3 - //SEG326 sin8s_gen::@3 + //SEG327 sin8s_gen::@3 b3: - //SEG327 [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 - //SEG328 [168] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + //SEG328 [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 + //SEG329 [168] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] b1_from_b3: - //SEG329 [168] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + //SEG330 [168] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG330 [168] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintabb#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + //SEG331 [168] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintabb#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 lda #main.sintabb sta sintab+1 - //SEG331 [168] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + //SEG332 [168] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 jmp b1 - //SEG332 [168] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + //SEG333 [168] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] b1_from_b4: - //SEG333 [168] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy - //SEG334 [168] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy - //SEG335 [168] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + //SEG334 [168] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG335 [168] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG336 [168] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy jmp b1 - //SEG336 sin8s_gen::@1 + //SEG337 sin8s_gen::@1 b1: - //SEG337 [169] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 + //SEG338 [169] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG338 [170] call sin8s + //SEG339 [170] call sin8s jsr sin8s - //SEG339 [171] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 + //SEG340 [171] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 jmp b4 - //SEG340 sin8s_gen::@4 + //SEG341 sin8s_gen::@4 b4: - //SEG341 [172] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 - //SEG342 [173] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsaa + //SEG342 [172] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 + //SEG343 [173] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsaa ldy #0 sta (sintab),y - //SEG343 [174] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 + //SEG344 [174] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 inc sintab bne !+ inc sintab+1 !: - //SEG344 [175] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG345 [175] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -6950,12 +6951,12 @@ sin8s_gen: { lda x+1 adc step+1 sta x+1 - //SEG345 [176] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG346 [176] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG346 [177] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG347 [177] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -6965,12 +6966,12 @@ sin8s_gen: { bcc b1_from_b4 !: jmp breturn - //SEG347 sin8s_gen::@return + //SEG348 sin8s_gen::@return breturn: - //SEG348 [178] return + //SEG349 [178] return rts } -//SEG349 sin8s +//SEG350 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -6983,7 +6984,7 @@ sin8s: { .label x3 = $23 .label usinx = $24 .label isUpper = 4 - //SEG350 [179] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG351 [179] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -6993,9 +6994,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG351 sin8s::@5 + //SEG352 sin8s::@5 b5: - //SEG352 [180] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG353 [180] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG353 [181] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG354 [181] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG354 [181] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG355 [181] 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 - //SEG355 [181] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG356 [181] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG356 [181] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG357 [181] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG357 [181] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG358 [181] 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 - //SEG358 [181] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG359 [181] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG359 sin8s::@1 + //SEG360 sin8s::@1 b1: - //SEG360 [182] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG361 [182] 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 @@ -7029,9 +7030,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG361 sin8s::@6 + //SEG362 sin8s::@6 b6: - //SEG362 [183] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG363 [183] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG363 [184] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG364 [184] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG364 [184] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG365 [184] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG365 sin8s::@2 + //SEG366 sin8s::@2 b2: - //SEG366 [185] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG367 [185] (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 - //SEG367 [186] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG368 [186] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG368 [187] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG369 [187] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG369 [188] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG370 [188] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG370 [189] call mulu8_sel - //SEG371 [222] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG371 [189] call mulu8_sel + //SEG372 [222] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG372 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG373 [222] 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 - //SEG373 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG374 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG374 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG375 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG375 [190] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG376 [190] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 jmp b10 - //SEG376 sin8s::@10 + //SEG377 sin8s::@10 b10: - //SEG377 [191] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG378 [192] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG378 [191] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG379 [192] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG379 [193] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG380 [193] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG380 [194] call mulu8_sel - //SEG381 [222] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG381 [194] call mulu8_sel + //SEG382 [222] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG382 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG383 [222] 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 - //SEG383 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG384 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG384 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG385 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG385 [195] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG386 [195] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 jmp b11 - //SEG386 sin8s::@11 + //SEG387 sin8s::@11 b11: - //SEG387 [196] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG388 [196] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG388 [197] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG389 [197] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG389 [198] call mulu8_sel - //SEG390 [222] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG390 [198] call mulu8_sel + //SEG391 [222] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG391 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG392 [222] 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 - //SEG392 [222] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG393 [222] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG393 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG394 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG394 [199] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG395 [199] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 jmp b12 - //SEG395 sin8s::@12 + //SEG396 sin8s::@12 b12: - //SEG396 [200] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG397 [201] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG397 [200] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG398 [201] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG398 [202] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG399 [202] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG399 [203] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG400 [203] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG400 [204] call mulu8_sel - //SEG401 [222] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG401 [204] call mulu8_sel + //SEG402 [222] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG402 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG403 [222] 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 - //SEG403 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG404 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG404 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG405 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG405 [205] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG406 [205] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 jmp b13 - //SEG406 sin8s::@13 + //SEG407 sin8s::@13 b13: - //SEG407 [206] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG408 [207] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG408 [206] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG409 [207] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG409 [208] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG410 [208] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG410 [209] call mulu8_sel - //SEG411 [222] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG411 [209] call mulu8_sel + //SEG412 [222] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //SEG412 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG413 [222] 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 - //SEG413 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG414 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG414 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG415 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG415 [210] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG416 [210] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 jmp b14 - //SEG416 sin8s::@14 + //SEG417 sin8s::@14 b14: - //SEG417 [211] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //SEG418 [212] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG418 [211] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG419 [212] (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 - //SEG419 [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG420 [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG420 [214] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG421 [214] 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 - //SEG421 sin8s::@7 + //SEG422 sin8s::@7 b7: - //SEG422 [215] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG423 [215] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG423 [216] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG424 [216] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG424 [216] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG425 [216] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG425 sin8s::@3 + //SEG426 sin8s::@3 b3: - //SEG426 [217] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG427 [217] 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 - //SEG427 sin8s::@8 + //SEG428 sin8s::@8 b8: - //SEG428 [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG429 [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG429 [219] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG430 [219] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG430 [219] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG431 [219] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG431 sin8s::@4 + //SEG432 sin8s::@4 b4: jmp breturn - //SEG432 sin8s::@return + //SEG433 sin8s::@return breturn: - //SEG433 [220] return + //SEG434 [220] return rts - //SEG434 sin8s::@18 + //SEG435 sin8s::@18 b18: - //SEG435 [221] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG436 [221] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4_from_b18 } -//SEG436 mulu8_sel +//SEG437 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { .label _0 = $13 .label _1 = $13 .label select = $1b - //SEG437 [223] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 - //SEG438 [224] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG438 [223] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 + //SEG439 [224] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG439 [225] call mul8u + //SEG440 [225] call mul8u jsr mul8u - //SEG440 [226] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG441 [226] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b2 - //SEG441 mulu8_sel::@2 + //SEG442 mulu8_sel::@2 b2: - //SEG442 [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 - //SEG443 [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG443 [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 + //SEG444 [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -7231,57 +7232,56 @@ mulu8_sel: { dey bne !- !e: - //SEG444 [229] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG445 [229] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 jmp breturn - //SEG445 mulu8_sel::@return + //SEG446 mulu8_sel::@return breturn: - //SEG446 [230] return + //SEG447 [230] return rts } -//SEG447 mul8u -// Simple binary multiplication implementation +//SEG448 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $15 .label res = $13 .label return = $13 - //SEG448 [231] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuaa + //SEG449 [231] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG449 [232] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG450 [232] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG450 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG451 [232] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG451 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG452 [232] 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 - //SEG452 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG453 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG453 mul8u::@1 + //SEG454 mul8u::@1 b1: - //SEG454 [233] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG455 [233] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG455 mul8u::@return + //SEG456 mul8u::@return breturn: - //SEG456 [234] return + //SEG457 [234] return rts - //SEG457 mul8u::@2 + //SEG458 mul8u::@2 b2: - //SEG458 [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG459 [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG459 [236] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG460 [236] 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 - //SEG460 mul8u::@7 + //SEG461 mul8u::@7 b7: - //SEG461 [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG462 [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7289,57 +7289,57 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG462 [238] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG463 [238] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG463 [238] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG464 [238] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG464 mul8u::@4 + //SEG465 mul8u::@4 b4: - //SEG465 [239] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG466 [239] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG466 [240] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG467 [240] (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 - //SEG467 [232] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG468 [232] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG468 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG469 [232] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG470 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG469 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG470 [232] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG471 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG471 div16u +//SEG472 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { .label return = $f - //SEG472 [242] call divr16u - //SEG473 [146] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG473 [242] call divr16u + //SEG474 [146] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: - //SEG474 [146] phi (word) divr16u::dividend#6 = (const word) PI2_u4f12#0 [phi:div16u->divr16u#0] -- vwuz1=vwuc1 + //SEG475 [146] phi (word) divr16u::dividend#6 = (const word) PI2_u4f12#0 [phi:div16u->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f12 sta divr16u.dividend+1 - //SEG475 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#1] -- vwuz1=vbuc1 + //SEG476 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG476 [243] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG477 [243] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG477 div16u::@2 + //SEG478 div16u::@2 b2: - //SEG478 [244] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG479 [244] (word) div16u::return#0 ← (word) divr16u::return#2 jmp breturn - //SEG479 div16u::@return + //SEG480 div16u::@return breturn: - //SEG480 [245] return + //SEG481 [245] return rts } print_hextab: .text "0123456789abcdef" @@ -8069,11 +8069,12 @@ reg byte a [ mul8u::$1 ] FINAL ASSEMBLER Score: 28330 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -8089,14 +8090,14 @@ Score: 28330 .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] -//SEG4 @40 -//SEG5 [2] call main -//SEG6 [4] phi from @40 to main [phi:@40->main] -//SEG7 [3] phi from @40 to @end [phi:@40->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG5 @40 +//SEG6 [2] call main +//SEG7 [4] phi from @40 to main [phi:@40->main] +//SEG8 [3] phi from @40 to @end [phi:@40->@end] +//SEG9 @end +//SEG10 main main: { .label wavelength = $c0 .label _3 = 2 @@ -8105,44 +8106,44 @@ main: { .label sb = 4 .label sw = $f .label sd = 4 - //SEG10 [5] call sin8s_gen - //SEG11 [164] phi from main to sin8s_gen [phi:main->sin8s_gen] + //SEG11 [5] call sin8s_gen + //SEG12 [164] phi from main to sin8s_gen [phi:main->sin8s_gen] jsr sin8s_gen - //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] - //SEG13 main::@5 - //SEG14 [7] call sin16s_gen - //SEG15 [62] phi from main::@5 to sin16s_gen [phi:main::@5->sin16s_gen] + //SEG13 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG14 main::@5 + //SEG15 [7] call sin16s_gen + //SEG16 [62] phi from main::@5 to sin16s_gen [phi:main::@5->sin16s_gen] jsr sin16s_gen - //SEG16 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG17 main::@6 - //SEG18 [9] call print_cls - //SEG19 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] + //SEG17 [8] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG18 main::@6 + //SEG19 [9] call print_cls + //SEG20 [56] phi from main::@6 to print_cls [phi:main::@6->print_cls] jsr print_cls - //SEG20 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] - //SEG21 [10] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#0] -- pbuz1=pbuc1 + //SEG21 [10] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG22 [10] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:main::@6->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG22 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#1] -- vbuxx=vbuc1 + //SEG23 [10] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@6->main::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG23 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] - //SEG24 [10] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#0] -- register_copy - //SEG25 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#1] -- register_copy - //SEG26 main::@1 + //SEG24 [10] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG25 [10] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:main::@9->main::@1#0] -- register_copy + //SEG26 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#1] -- register_copy + //SEG27 main::@1 b1: - //SEG27 [11] (signed byte) main::sb#0 ← *((const signed byte[192]) main::sintabb#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuxx + //SEG28 [11] (signed byte) main::sb#0 ← *((const signed byte[192]) main::sintabb#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuxx lda sintabb,x sta sb - //SEG28 [12] (word~) main::$3 ← ((word)) (byte) main::i#2 -- vwuz1=_word_vbuxx + //SEG29 [12] (word~) main::$3 ← ((word)) (byte) main::i#2 -- vwuz1=_word_vbuxx txa sta _3 lda #0 sta _3+1 - //SEG29 [13] (word~) main::$4 ← (word~) main::$3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG30 [13] (word~) main::$4 ← (word~) main::$3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl _4 rol _4+1 - //SEG30 [14] (signed word*~) main::$5 ← (const signed word[192]) main::sintabw#0 + (word~) main::$4 -- pwsz1=pwsc1_plus_vwuz1 + //SEG31 [14] (signed word*~) main::$5 ← (const signed word[192]) main::sintabw#0 + (word~) main::$4 -- pwsz1=pwsc1_plus_vwuz1 clc lda _5 adc #sintabw sta _5+1 - //SEG31 [15] (signed word) main::sw#0 ← *((signed word*~) main::$5) -- vwsz1=_deref_pwsz2 + //SEG32 [15] (signed word) main::sw#0 ← *((signed word*~) main::$5) -- vwsz1=_deref_pwsz2 ldy #0 lda (_5),y sta sw iny lda (_5),y sta sw+1 - //SEG32 [16] (byte~) main::$6 ← > (signed word) main::sw#0 -- vbuaa=_hi_vwsz1 - //SEG33 [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 -- vbsz1=vbsz1_minus_vbsaa + //SEG33 [16] (byte~) main::$6 ← > (signed word) main::sw#0 -- vbuaa=_hi_vwsz1 + //SEG34 [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 -- vbsz1=vbsz1_minus_vbsaa eor #$ff sec adc sd sta sd - //SEG34 [18] if((signed byte) main::sd#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 + //SEG35 [18] if((signed byte) main::sd#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbsz1_lt_0_then_la1 bmi b2 - //SEG35 [19] phi from main::@1 to main::@3 [phi:main::@1->main::@3] - //SEG36 main::@3 - //SEG37 [20] call print_str - //SEG38 [29] phi from main::@3 to print_str [phi:main::@3->print_str] - //SEG39 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy - //SEG40 [29] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + //SEG36 [19] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG37 main::@3 + //SEG38 [20] call print_str + //SEG39 [29] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG40 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#45 [phi:main::@3->print_str#0] -- register_copy + //SEG41 [29] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG41 [21] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] - //SEG42 [21] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy - //SEG43 main::@2 + //SEG42 [21] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG43 [21] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG44 main::@2 b2: - //SEG44 [22] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 - //SEG45 [23] call print_sbyte + //SEG45 [22] (signed byte) print_sbyte::b#1 ← (signed byte) main::sd#0 + //SEG46 [23] call print_sbyte jsr print_sbyte - //SEG46 [24] phi from main::@2 to main::@8 [phi:main::@2->main::@8] - //SEG47 main::@8 - //SEG48 [25] call print_str - //SEG49 [29] phi from main::@8 to print_str [phi:main::@8->print_str] - //SEG50 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@8->print_str#0] -- register_copy - //SEG51 [29] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 + //SEG47 [24] phi from main::@2 to main::@8 [phi:main::@2->main::@8] + //SEG48 main::@8 + //SEG49 [25] call print_str + //SEG50 [29] phi from main::@8 to print_str [phi:main::@8->print_str] + //SEG51 [29] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#10 [phi:main::@8->print_str#0] -- register_copy + //SEG52 [29] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@8->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG52 main::@9 - //SEG53 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG53 main::@9 + //SEG54 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG54 [27] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG55 [27] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 192) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$c0 bne b1 - //SEG55 main::@return - //SEG56 [28] return + //SEG56 main::@return + //SEG57 [28] return rts str: .text " @" str1: .text " @" sintabb: .fill $c0, 0 sintabw: .fill 2*$c0, 0 } -//SEG57 print_str +//SEG58 print_str // Print a zero-terminated string print_str: { .label str = 2 - //SEG58 [30] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG59 [30] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG60 [30] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG61 print_str::@1 + //SEG59 [30] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG60 [30] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG61 [30] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG62 print_str::@1 b1: - //SEG62 [31] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG63 [31] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG63 print_str::@return - //SEG64 [32] return + //SEG64 print_str::@return + //SEG65 [32] return rts - //SEG65 print_str::@2 + //SEG66 print_str::@2 b2: - //SEG66 [33] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 + //SEG67 [33] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG67 [34] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG68 [34] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG68 [35] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 + //SEG69 [35] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG69 print_sbyte +//SEG70 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = 4 - //SEG70 [36] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG71 [36] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG71 [37] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG72 print_sbyte::@3 - //SEG73 [38] call print_char - //SEG74 [45] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG75 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG76 [45] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG72 [37] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG73 print_sbyte::@3 + //SEG74 [38] call print_char + //SEG75 [45] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG76 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG77 [45] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG77 [39] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] - //SEG78 [39] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy - //SEG79 print_sbyte::@2 + //SEG78 [39] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG79 [39] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG80 print_sbyte::@2 b2: - //SEG80 [40] call print_byte + //SEG81 [40] call print_byte jsr print_byte - //SEG81 print_sbyte::@return - //SEG82 [41] return + //SEG82 print_sbyte::@return + //SEG83 [41] return rts - //SEG83 [42] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG84 print_sbyte::@1 + //SEG84 [42] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG85 print_sbyte::@1 b1: - //SEG85 [43] call print_char - //SEG86 [45] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG87 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG88 [45] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG86 [43] call print_char + //SEG87 [45] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG88 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#44 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG89 [45] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG89 print_sbyte::@5 - //SEG90 [44] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG90 print_sbyte::@5 + //SEG91 [44] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -8285,89 +8286,89 @@ print_sbyte: { sta b jmp b2 } -//SEG91 print_char +//SEG92 print_char // Print a single char print_char: { - //SEG92 [46] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG93 [46] *((byte*) print_char_cursor#29) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG93 [47] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 + //SEG94 [47] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#29 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG94 print_char::@return - //SEG95 [48] return + //SEG95 print_char::@return + //SEG96 [48] return rts } -//SEG96 print_byte +//SEG97 print_byte // Print a byte as HEX print_byte: { - //SEG97 [49] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG98 [49] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda print_sbyte.b lsr lsr lsr lsr - //SEG98 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG99 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG99 [51] call print_char - //SEG100 [45] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG101 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy - //SEG102 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG100 [51] call print_char + //SEG101 [45] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG102 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte->print_char#0] -- register_copy + //SEG103 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG103 print_byte::@1 - //SEG104 [52] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG104 print_byte::@1 + //SEG105 [52] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and print_sbyte.b - //SEG105 [53] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG106 [53] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG106 [54] call print_char - //SEG107 [45] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG108 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG109 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG107 [54] call print_char + //SEG108 [45] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG109 [45] phi (byte*) print_char_cursor#29 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG110 [45] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG110 print_byte::@return - //SEG111 [55] return + //SEG111 print_byte::@return + //SEG112 [55] return rts } -//SEG112 print_cls +//SEG113 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG113 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG114 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG114 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG115 [57] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 - //SEG115 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG116 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG117 print_cls::@1 + //SEG116 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG117 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG118 print_cls::@1 b1: - //SEG118 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG119 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG119 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG120 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG120 [60] 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 + //SEG121 [60] 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_line_cursor+$3e8 bne b1 lda sc cmp #div32u16u] + //SEG125 [63] call div32u16u + //SEG126 [136] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] jsr div32u16u - //SEG126 [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG127 sin16s_gen::@3 - //SEG128 [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG129 [66] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] - //SEG130 [66] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG127 [64] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG128 sin16s_gen::@3 + //SEG129 [65] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG130 [66] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG131 [66] phi (word) sin16s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG131 [66] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[192]) main::sintabw#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG132 [66] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[192]) main::sintabw#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintabw sta sintab+1 - //SEG132 [66] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG133 [66] phi (dword) sin16s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 - //SEG133 [66] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] - //SEG134 [66] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG135 [66] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG136 [66] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy - //SEG137 sin16s_gen::@1 + //SEG134 [66] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] + //SEG135 [66] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy + //SEG136 [66] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG137 [66] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG138 sin16s_gen::@1 b1: - //SEG138 [67] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG139 [67] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -8414,19 +8415,19 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG139 [68] call sin16s + //SEG140 [68] call sin16s jsr sin16s - //SEG140 [69] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG141 sin16s_gen::@4 - //SEG142 [70] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG143 [71] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG141 [69] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG142 sin16s_gen::@4 + //SEG143 [70] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG144 [71] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG144 [72] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 + //SEG145 [72] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 lda sintab clc adc #2 @@ -8434,7 +8435,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG145 [73] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG146 [73] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8448,12 +8449,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG146 [74] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG147 [74] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG147 [75] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG148 [75] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -8462,11 +8463,11 @@ sin16s_gen: { cmp #PI_u4f28>>$10 bcc b4 @@ -8501,8 +8502,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG154 [79] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG155 [79] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG155 [79] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG156 [79] 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 - //SEG156 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG157 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG157 [79] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG158 [79] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG158 [79] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG159 [79] 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 - //SEG159 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG160 sin16s::@1 + //SEG160 [79] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG161 sin16s::@1 b1: - //SEG161 [80] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG162 [80] 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 @@ -8547,8 +8548,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG164 [82] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG165 [82] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG166 sin16s::@2 + //SEG165 [82] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG166 [82] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG167 sin16s::@2 b2: - //SEG167 [83] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG168 [83] (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 @@ -8575,71 +8576,71 @@ sin16s: { rol _6+3 dey bne !- - //SEG168 [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG169 [84] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG169 [85] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG170 [85] (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 - //SEG170 [86] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG171 [86] (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 - //SEG171 [87] call mulu16_sel - //SEG172 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG173 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG172 [87] call mulu16_sel + //SEG173 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG174 [117] 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 - //SEG174 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG175 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG175 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG176 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG176 [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG177 sin16s::@8 - //SEG178 [89] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG177 [88] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG178 sin16s::@8 + //SEG179 [89] (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 - //SEG179 [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG180 [91] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG180 [90] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG181 [91] (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 - //SEG181 [92] call mulu16_sel - //SEG182 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG183 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG182 [92] call mulu16_sel + //SEG183 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG184 [117] 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 - //SEG184 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG185 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG185 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG186 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG186 [93] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG187 [93] (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 - //SEG187 sin16s::@9 - //SEG188 [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG189 [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG190 [96] call mulu16_sel - //SEG191 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG192 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG188 sin16s::@9 + //SEG189 [94] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG190 [95] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG191 [96] call mulu16_sel + //SEG192 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG193 [117] 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 - //SEG193 [117] 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 + //SEG194 [117] 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 - //SEG194 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG195 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG195 [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG196 sin16s::@10 - //SEG197 [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG198 [99] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG196 [97] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG197 sin16s::@10 + //SEG198 [98] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG199 [99] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8647,50 +8648,50 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG199 [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG200 [101] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG200 [100] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG201 [101] (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 - //SEG201 [102] call mulu16_sel - //SEG202 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG203 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG202 [102] call mulu16_sel + //SEG203 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG204 [117] 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 - //SEG204 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG205 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG205 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG206 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG206 [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG207 [103] (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 - //SEG207 sin16s::@11 - //SEG208 [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG209 [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG210 [106] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG208 sin16s::@11 + //SEG209 [104] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG210 [105] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG211 [106] (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 - //SEG211 [107] call mulu16_sel - //SEG212 [117] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] - //SEG213 [117] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG212 [107] call mulu16_sel + //SEG213 [117] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG214 [117] 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 - //SEG214 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG215 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG215 [117] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG216 [117] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG216 [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG217 sin16s::@12 - //SEG218 [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG219 [110] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG217 [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG218 sin16s::@12 + //SEG219 [109] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG220 [110] (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 !- - //SEG220 [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG221 [111] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -8698,12 +8699,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG221 [112] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG222 [112] 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 - //SEG222 sin16s::@6 - //SEG223 [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG223 sin16s::@6 + //SEG224 [113] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -8713,17 +8714,17 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG224 [114] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] - //SEG225 [114] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG226 sin16s::@3 + //SEG225 [114] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG226 [114] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG227 sin16s::@3 b3: - //SEG227 sin16s::@return - //SEG228 [115] return + //SEG228 sin16s::@return + //SEG229 [115] return rts - //SEG229 sin16s::@15 - //SEG230 [116] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG230 sin16s::@15 + //SEG231 [116] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG231 mulu16_sel +//SEG232 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip mulu16_sel: { @@ -8734,18 +8735,18 @@ mulu16_sel: { .label return = $13 .label return_1 = $11 .label return_10 = $11 - //SEG232 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG233 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG233 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 - //SEG234 [120] call mul16u + //SEG234 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + //SEG235 [120] call mul16u jsr mul16u - //SEG235 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG236 mulu16_sel::@2 - //SEG237 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG238 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG236 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG237 mulu16_sel::@2 + //SEG238 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG239 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -8756,16 +8757,16 @@ mulu16_sel: { dex bne !- !e: - //SEG239 [124] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG240 [124] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG240 mulu16_sel::@return - //SEG241 [125] return + //SEG241 mulu16_sel::@return + //SEG242 [125] return rts } -//SEG242 mul16u +//SEG243 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $17 @@ -8773,7 +8774,7 @@ mul16u: { .label res = $b .label b = $13 .label return = $b - //SEG243 [126] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 + //SEG244 [126] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8781,34 +8782,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG244 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG245 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG246 [127] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG245 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG246 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG247 [127] 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 - //SEG247 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG248 mul16u::@1 + //SEG248 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG249 mul16u::@1 b1: - //SEG249 [128] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG250 [128] if((word) mul16u::a#2!=(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 - //SEG250 mul16u::@return - //SEG251 [129] return + //SEG251 mul16u::@return + //SEG252 [129] return rts - //SEG252 mul16u::@2 + //SEG253 mul16u::@2 b2: - //SEG253 [130] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG254 [130] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG254 [131] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG255 [131] 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 - //SEG255 mul16u::@7 - //SEG256 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG256 mul16u::@7 + //SEG257 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8822,65 +8823,65 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG257 [133] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG258 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG259 mul16u::@4 + //SEG258 [133] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG259 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG260 mul16u::@4 b4: - //SEG260 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG261 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG261 [135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG262 [135] (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 - //SEG262 [127] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG263 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG264 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG265 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG263 [127] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG264 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG265 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG266 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG266 div32u16u +//SEG267 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $11 .label quotient_lo = $f .label return = $1c - //SEG267 [137] call divr16u - //SEG268 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG269 [146] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG268 [137] call divr16u + //SEG269 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG270 [146] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG270 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG271 [146] phi (word) divr16u::rem#11 = (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 - //SEG271 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG272 div32u16u::@2 - //SEG273 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG272 [138] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG273 div32u16u::@2 + //SEG274 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG274 [140] (word) divr16u::rem#5 ← (word) rem16u#1 - //SEG275 [141] call divr16u - //SEG276 [146] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] - //SEG277 [146] phi (word) divr16u::dividend#6 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG275 [140] (word) divr16u::rem#5 ← (word) rem16u#1 + //SEG276 [141] call divr16u + //SEG277 [146] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG278 [146] phi (word) divr16u::dividend#6 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG278 [146] phi (word) divr16u::rem#11 = (word) divr16u::rem#5 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG279 [146] phi (word) divr16u::rem#11 = (word) divr16u::rem#5 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG279 [142] (word) divr16u::return#4 ← (word) divr16u::return#0 - //SEG280 div32u16u::@3 - //SEG281 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 - //SEG282 [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG280 [142] (word) divr16u::return#4 ← (word) divr16u::return#0 + //SEG281 div32u16u::@3 + //SEG282 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#4 + //SEG283 [144] (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 @@ -8889,11 +8890,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG283 div32u16u::@return - //SEG284 [145] return + //SEG284 div32u16u::@return + //SEG285 [145] return rts } -//SEG285 divr16u +//SEG286 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -8903,48 +8904,48 @@ divr16u: { .label dividend = 5 .label quotient = $f .label return = $f - //SEG286 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG287 [147] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG287 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG288 [147] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG288 [147] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG289 [147] 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 - //SEG289 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#6 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG290 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#11 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG291 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG292 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG293 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG294 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG295 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG296 divr16u::@1 + //SEG290 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#6 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG291 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#11 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG292 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG293 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG294 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG295 [147] phi (word) divr16u::dividend#4 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG296 [147] phi (word) divr16u::rem#6 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG297 divr16u::@1 b1: - //SEG297 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG298 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#6 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG298 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 -- vbuaa=_hi_vwuz1 + //SEG299 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG299 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG300 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG300 [151] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG301 [151] 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 - //SEG301 divr16u::@4 - //SEG302 [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG302 divr16u::@4 + //SEG303 [152] (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 - //SEG303 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG304 [153] phi (word) divr16u::rem#7 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG305 divr16u::@2 + //SEG304 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG305 [153] phi (word) divr16u::rem#7 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG306 divr16u::@2 b2: - //SEG306 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG307 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG307 [155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG308 [155] (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 - //SEG308 [156] if((word) divr16u::rem#7<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [156] if((word) divr16u::rem#7<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3 @@ -8953,13 +8954,13 @@ divr16u: { cmp #main.wavelength sta rem+1 - //SEG312 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG313 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG314 [159] phi (word) divr16u::rem#10 = (word) divr16u::rem#7 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG315 divr16u::@3 + //SEG313 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG314 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG315 [159] phi (word) divr16u::rem#10 = (word) divr16u::rem#7 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG316 divr16u::@3 b3: - //SEG316 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG317 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG317 [161] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG318 [161] 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 - //SEG318 divr16u::@6 - //SEG319 [162] (word) rem16u#1 ← (word) divr16u::rem#10 - //SEG320 divr16u::@return - //SEG321 [163] return + //SEG319 divr16u::@6 + //SEG320 [162] (word) rem16u#1 ← (word) divr16u::rem#10 + //SEG321 divr16u::@return + //SEG322 [163] return rts } -//SEG322 sin8s_gen +//SEG323 sin8s_gen // Generate signed byte sinus table - on the full -$7f - $7f range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -8992,51 +8993,51 @@ sin8s_gen: { .label sintab = 5 .label x = 2 .label i = $11 - //SEG323 [165] call div16u - //SEG324 [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] + //SEG324 [165] call div16u + //SEG325 [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u] jsr div16u - //SEG325 [166] (word) div16u::return#2 ← (word) div16u::return#0 - //SEG326 sin8s_gen::@3 - //SEG327 [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 - //SEG328 [168] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] - //SEG329 [168] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + //SEG326 [166] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG327 sin8s_gen::@3 + //SEG328 [167] (word) sin8s_gen::step#0 ← (word) div16u::return#2 + //SEG329 [168] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + //SEG330 [168] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG330 [168] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintabb#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + //SEG331 [168] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[192]) main::sintabb#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 lda #main.sintabb sta sintab+1 - //SEG331 [168] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + //SEG332 [168] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 lda #<0 sta x sta x+1 - //SEG332 [168] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] - //SEG333 [168] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy - //SEG334 [168] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy - //SEG335 [168] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy - //SEG336 sin8s_gen::@1 + //SEG333 [168] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + //SEG334 [168] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG335 [168] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG336 [168] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + //SEG337 sin8s_gen::@1 b1: - //SEG337 [169] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 + //SEG338 [169] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG338 [170] call sin8s + //SEG339 [170] call sin8s jsr sin8s - //SEG339 [171] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 - //SEG340 sin8s_gen::@4 - //SEG341 [172] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 - //SEG342 [173] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsaa + //SEG340 [171] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 + //SEG341 sin8s_gen::@4 + //SEG342 [172] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 + //SEG343 [173] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 -- _deref_pbsz1=vbsaa ldy #0 sta (sintab),y - //SEG343 [174] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 + //SEG344 [174] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 -- pbsz1=_inc_pbsz1 inc sintab bne !+ inc sintab+1 !: - //SEG344 [175] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG345 [175] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -9044,12 +9045,12 @@ sin8s_gen: { lda x+1 adc step+1 sta x+1 - //SEG345 [176] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG346 [176] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG346 [177] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG347 [177] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -9058,11 +9059,11 @@ sin8s_gen: { cmp #PI_u4f12 bcc b5 @@ -9084,8 +9085,8 @@ sin8s: { cmp #PI_u4f12 sta x+1 - //SEG353 [181] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] - //SEG354 [181] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG354 [181] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG355 [181] 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 - //SEG355 [181] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG356 [181] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG356 [181] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG357 [181] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b5: - //SEG357 [181] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG358 [181] 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 - //SEG358 [181] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy - //SEG359 sin8s::@1 + //SEG359 [181] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG360 sin8s::@1 b1: - //SEG360 [182] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG361 [182] 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 @@ -9116,8 +9117,8 @@ sin8s: { cmp #PI_u4f12 sbc x+1 sta x+1 - //SEG363 [184] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] - //SEG364 [184] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy - //SEG365 sin8s::@2 + //SEG364 [184] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG365 [184] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG366 sin8s::@2 b2: - //SEG366 [185] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG367 [185] (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 - //SEG367 [186] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG368 [186] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG368 [187] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG369 [187] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 tax - //SEG369 [188] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG370 [188] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 tay - //SEG370 [189] call mulu8_sel - //SEG371 [222] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] - //SEG372 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG371 [189] call mulu8_sel + //SEG372 [222] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG373 [222] 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 - //SEG373 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG374 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG374 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG375 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG375 [190] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 - //SEG376 sin8s::@10 - //SEG377 [191] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG378 [192] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG376 [190] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG377 sin8s::@10 + //SEG378 [191] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG379 [192] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG379 [193] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG380 [193] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG380 [194] call mulu8_sel - //SEG381 [222] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] - //SEG382 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG381 [194] call mulu8_sel + //SEG382 [222] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG383 [222] 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 - //SEG383 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG384 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG384 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG385 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG385 [195] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 - //SEG386 sin8s::@11 - //SEG387 [196] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG386 [195] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG387 sin8s::@11 + //SEG388 [196] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG388 [197] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG389 [197] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 tax - //SEG389 [198] call mulu8_sel - //SEG390 [222] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] - //SEG391 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG390 [198] call mulu8_sel + //SEG391 [222] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG392 [222] 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 - //SEG392 [222] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG393 [222] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG393 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG394 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG394 [199] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 - //SEG395 sin8s::@12 - //SEG396 [200] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG397 [201] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG395 [199] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG396 sin8s::@12 + //SEG397 [200] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG398 [201] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG398 [202] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG399 [202] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG399 [203] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG400 [203] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG400 [204] call mulu8_sel - //SEG401 [222] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] - //SEG402 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG401 [204] call mulu8_sel + //SEG402 [222] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG403 [222] 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 - //SEG403 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG404 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG404 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG405 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG405 [205] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 - //SEG406 sin8s::@13 - //SEG407 [206] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG408 [207] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG406 [205] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG407 sin8s::@13 + //SEG408 [206] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG409 [207] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG409 [208] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG410 [208] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG410 [209] call mulu8_sel - //SEG411 [222] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] - //SEG412 [222] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG411 [209] call mulu8_sel + //SEG412 [222] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG413 [222] 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 - //SEG413 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG414 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG414 [222] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG415 [222] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG415 [210] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 - //SEG416 sin8s::@14 - //SEG417 [211] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //SEG418 [212] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG416 [210] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG417 sin8s::@14 + //SEG418 [211] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG419 [212] (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 - //SEG419 [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG420 [213] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG420 [214] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG421 [214] 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 - //SEG421 sin8s::@7 - //SEG422 [215] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG422 sin8s::@7 + //SEG423 [215] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG423 [216] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] - //SEG424 [216] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy - //SEG425 sin8s::@3 + //SEG424 [216] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG425 [216] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG426 sin8s::@3 b3: - //SEG426 [217] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG427 [217] 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 - //SEG427 sin8s::@8 - //SEG428 [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG428 sin8s::@8 + //SEG429 [218] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG429 [219] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] - //SEG430 [219] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy - //SEG431 sin8s::@4 + //SEG430 [219] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG431 [219] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG432 sin8s::@4 b4: - //SEG432 sin8s::@return - //SEG433 [220] return + //SEG433 sin8s::@return + //SEG434 [220] return rts - //SEG434 sin8s::@18 + //SEG435 sin8s::@18 b18: - //SEG435 [221] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG436 [221] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4 } -//SEG436 mulu8_sel +//SEG437 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { .label _0 = $13 .label _1 = $13 .label select = $1b - //SEG437 [223] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 - //SEG438 [224] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG438 [223] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 + //SEG439 [224] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG439 [225] call mul8u + //SEG440 [225] call mul8u jsr mul8u - //SEG440 [226] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG441 mulu8_sel::@2 - //SEG442 [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 - //SEG443 [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG441 [226] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG442 mulu8_sel::@2 + //SEG443 [227] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 + //SEG444 [228] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -9285,47 +9286,46 @@ mulu8_sel: { dey bne !- !e: - //SEG444 [229] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG445 [229] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 - //SEG445 mulu8_sel::@return - //SEG446 [230] return + //SEG446 mulu8_sel::@return + //SEG447 [230] return rts } -//SEG447 mul8u -// Simple binary multiplication implementation +//SEG448 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $15 .label res = $13 .label return = $13 - //SEG448 [231] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuaa + //SEG449 [231] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG449 [232] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG450 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG451 [232] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG450 [232] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG451 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG452 [232] 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 - //SEG452 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG453 mul8u::@1 + //SEG453 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG454 mul8u::@1 b1: - //SEG454 [233] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG455 [233] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG455 mul8u::@return - //SEG456 [234] return + //SEG456 mul8u::@return + //SEG457 [234] return rts - //SEG457 mul8u::@2 + //SEG458 mul8u::@2 b2: - //SEG458 [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG459 [235] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG459 [236] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG460 [236] 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 - //SEG460 mul8u::@7 - //SEG461 [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG461 mul8u::@7 + //SEG462 [237] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -9333,47 +9333,47 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG462 [238] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] - //SEG463 [238] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy - //SEG464 mul8u::@4 + //SEG463 [238] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG464 [238] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG465 mul8u::@4 b4: - //SEG465 [239] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG466 [239] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG466 [240] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG467 [240] (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 - //SEG467 [232] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] - //SEG468 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG469 [232] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG470 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG468 [232] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG469 [232] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG470 [232] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG471 [232] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG471 div16u +//SEG472 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { .label return = $f - //SEG472 [242] call divr16u - //SEG473 [146] phi from div16u to divr16u [phi:div16u->divr16u] - //SEG474 [146] phi (word) divr16u::dividend#6 = (const word) PI2_u4f12#0 [phi:div16u->divr16u#0] -- vwuz1=vwuc1 + //SEG473 [242] call divr16u + //SEG474 [146] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG475 [146] phi (word) divr16u::dividend#6 = (const word) PI2_u4f12#0 [phi:div16u->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f12 sta divr16u.dividend+1 - //SEG475 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#1] -- vwuz1=vbuc1 + //SEG476 [146] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG476 [243] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG477 div16u::@2 - //SEG478 [244] (word) div16u::return#0 ← (word) divr16u::return#2 - //SEG479 div16u::@return - //SEG480 [245] return + //SEG477 [243] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG478 div16u::@2 + //SEG479 [244] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG480 div16u::@return + //SEG481 [245] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgenscale8.asm b/src/test/ref/sinusgenscale8.asm index 3e2235c5d..b45c7ac23 100644 --- a/src/test/ref/sinusgenscale8.asm +++ b/src/test/ref/sinusgenscale8.asm @@ -331,7 +331,6 @@ mul8su: { b1: rts } -// Simple binary multiplication implementation // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $b diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log index e90f032a7..f27096659 100644 --- a/src/test/ref/sinusgenscale8.log +++ b/src/test/ref/sinusgenscale8.log @@ -3488,11 +3488,12 @@ Allocated zp ZP_BYTE:94 [ divr16u::$2 ] Allocated zp ZP_WORD:95 [ rem16u#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.12] format .const PI2_u4f12 = $6488 // PI in u[4.12] format @@ -3502,46 +3503,46 @@ INITIAL ASM .label rem16u = $5f .label print_char_cursor = $10 .label print_line_cursor = 8 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @41 [phi:@begin->@41] +//SEG4 [1] phi from @begin to @41 [phi:@begin->@41] b41_from_bbegin: jmp b41 -//SEG4 @41 +//SEG5 @41 b41: -//SEG5 [2] call main -//SEG6 [4] phi from @41 to main [phi:@41->main] +//SEG6 [2] call main +//SEG7 [4] phi from @41 to main [phi:@41->main] main_from_b41: jsr main -//SEG7 [3] phi from @41 to @end [phi:@41->@end] +//SEG8 [3] phi from @41 to @end [phi:@41->@end] bend_from_b41: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label tabsize = $14 - //SEG10 [5] call print_cls - //SEG11 [214] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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] + //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 sin8u_table - //SEG15 [9] phi from main::@1 to sin8u_table [phi:main::@1->sin8u_table] + //SEG15 [7] call sin8u_table + //SEG16 [9] phi from main::@1 to sin8u_table [phi:main::@1->sin8u_table] sin8u_table_from_b1: jsr sin8u_table jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts sintab: .fill $14, 0 } -//SEG18 sin8u_table +//SEG19 sin8u_table // Generate unsigned byte sinus table in a min-max range // sintab - the table to generate into // tabsize - the number of sinus points (the size of the table) @@ -3561,372 +3562,372 @@ sin8u_table: { .label sintab = 4 .label x = 2 .label i = 6 - //SEG19 [10] call div16u - //SEG20 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG20 [10] call div16u + //SEG21 [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 + //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 lda div16u.return sta div16u.return_2 lda div16u.return+1 sta div16u.return_2+1 jmp b3 - //SEG22 sin8u_table::@3 + //SEG23 sin8u_table::@3 b3: - //SEG23 [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 + //SEG24 [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 lda div16u.return_2 sta step lda div16u.return_2+1 sta step+1 - //SEG24 [13] call print_str - //SEG25 [86] phi from sin8u_table::@3 to print_str [phi:sin8u_table::@3->print_str] + //SEG25 [13] call print_str + //SEG26 [86] phi from sin8u_table::@3 to print_str [phi:sin8u_table::@3->print_str] print_str_from_b3: - //SEG26 [86] phi (byte*) print_char_cursor#105 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@3->print_str#0] -- pbuz1=pbuc1 + //SEG27 [86] phi (byte*) print_char_cursor#105 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG27 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str [phi:sin8u_table::@3->print_str#1] -- pbuz1=pbuc1 + //SEG28 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str [phi:sin8u_table::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG28 sin8u_table::@4 + //SEG29 sin8u_table::@4 b4: - //SEG29 [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 -- vwuz1=vwuz2 + //SEG30 [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 -- vwuz1=vwuz2 lda step sta print_word.w lda step+1 sta print_word.w+1 - //SEG30 [15] call print_word - //SEG31 [101] phi from sin8u_table::@4 to print_word [phi:sin8u_table::@4->print_word] + //SEG31 [15] call print_word + //SEG32 [101] phi from sin8u_table::@4 to print_word [phi:sin8u_table::@4->print_word] print_word_from_b4: - //SEG32 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@4->print_word#0] -- register_copy - //SEG33 [101] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@4->print_word#1] -- register_copy + //SEG33 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@4->print_word#0] -- register_copy + //SEG34 [101] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@4->print_word#1] -- register_copy jsr print_word - //SEG34 [16] phi from sin8u_table::@4 to sin8u_table::@5 [phi:sin8u_table::@4->sin8u_table::@5] + //SEG35 [16] phi from sin8u_table::@4 to sin8u_table::@5 [phi:sin8u_table::@4->sin8u_table::@5] b5_from_b4: jmp b5 - //SEG35 sin8u_table::@5 + //SEG36 sin8u_table::@5 b5: - //SEG36 [17] call print_str - //SEG37 [86] phi from sin8u_table::@5 to print_str [phi:sin8u_table::@5->print_str] + //SEG37 [17] call print_str + //SEG38 [86] phi from sin8u_table::@5 to print_str [phi:sin8u_table::@5->print_str] print_str_from_b5: - //SEG38 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@5->print_str#0] -- register_copy - //SEG39 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@5->print_str#1] -- pbuz1=pbuc1 + //SEG39 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@5->print_str#0] -- register_copy + //SEG40 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@5->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG40 [18] phi from sin8u_table::@5 to sin8u_table::@6 [phi:sin8u_table::@5->sin8u_table::@6] + //SEG41 [18] phi from sin8u_table::@5 to sin8u_table::@6 [phi:sin8u_table::@5->sin8u_table::@6] b6_from_b5: jmp b6 - //SEG41 sin8u_table::@6 + //SEG42 sin8u_table::@6 b6: - //SEG42 [19] call print_byte - //SEG43 [74] phi from sin8u_table::@6 to print_byte [phi:sin8u_table::@6->print_byte] + //SEG43 [19] call print_byte + //SEG44 [74] phi from sin8u_table::@6 to print_byte [phi:sin8u_table::@6->print_byte] print_byte_from_b6: - //SEG44 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@6->print_byte#0] -- register_copy - //SEG45 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuz1=vbuc1 + //SEG45 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@6->print_byte#0] -- register_copy + //SEG46 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuz1=vbuc1 lda #min sta print_byte.b jsr print_byte - //SEG46 [20] phi from sin8u_table::@6 to sin8u_table::@7 [phi:sin8u_table::@6->sin8u_table::@7] + //SEG47 [20] phi from sin8u_table::@6 to sin8u_table::@7 [phi:sin8u_table::@6->sin8u_table::@7] b7_from_b6: jmp b7 - //SEG47 sin8u_table::@7 + //SEG48 sin8u_table::@7 b7: - //SEG48 [21] call print_str - //SEG49 [86] phi from sin8u_table::@7 to print_str [phi:sin8u_table::@7->print_str] + //SEG49 [21] call print_str + //SEG50 [86] phi from sin8u_table::@7 to print_str [phi:sin8u_table::@7->print_str] print_str_from_b7: - //SEG50 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@7->print_str#0] -- register_copy - //SEG51 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@7->print_str#1] -- pbuz1=pbuc1 + //SEG51 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@7->print_str#0] -- register_copy + //SEG52 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@7->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG52 [22] phi from sin8u_table::@7 to sin8u_table::@8 [phi:sin8u_table::@7->sin8u_table::@8] + //SEG53 [22] phi from sin8u_table::@7 to sin8u_table::@8 [phi:sin8u_table::@7->sin8u_table::@8] b8_from_b7: jmp b8 - //SEG53 sin8u_table::@8 + //SEG54 sin8u_table::@8 b8: - //SEG54 [23] call print_byte - //SEG55 [74] phi from sin8u_table::@8 to print_byte [phi:sin8u_table::@8->print_byte] + //SEG55 [23] call print_byte + //SEG56 [74] phi from sin8u_table::@8 to print_byte [phi:sin8u_table::@8->print_byte] print_byte_from_b8: - //SEG56 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@8->print_byte#0] -- register_copy - //SEG57 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuz1=vbuc1 + //SEG57 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@8->print_byte#0] -- register_copy + //SEG58 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuz1=vbuc1 lda #max sta print_byte.b jsr print_byte - //SEG58 [24] phi from sin8u_table::@8 to sin8u_table::@9 [phi:sin8u_table::@8->sin8u_table::@9] + //SEG59 [24] phi from sin8u_table::@8 to sin8u_table::@9 [phi:sin8u_table::@8->sin8u_table::@9] b9_from_b8: jmp b9 - //SEG59 sin8u_table::@9 + //SEG60 sin8u_table::@9 b9: - //SEG60 [25] call print_str - //SEG61 [86] phi from sin8u_table::@9 to print_str [phi:sin8u_table::@9->print_str] + //SEG61 [25] call print_str + //SEG62 [86] phi from sin8u_table::@9 to print_str [phi:sin8u_table::@9->print_str] print_str_from_b9: - //SEG62 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@9->print_str#0] -- register_copy - //SEG63 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@9->print_str#1] -- pbuz1=pbuc1 + //SEG63 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@9->print_str#0] -- register_copy + //SEG64 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@9->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG64 [26] phi from sin8u_table::@9 to sin8u_table::@10 [phi:sin8u_table::@9->sin8u_table::@10] + //SEG65 [26] phi from sin8u_table::@9 to sin8u_table::@10 [phi:sin8u_table::@9->sin8u_table::@10] b10_from_b9: jmp b10 - //SEG65 sin8u_table::@10 + //SEG66 sin8u_table::@10 b10: - //SEG66 [27] call print_byte - //SEG67 [74] phi from sin8u_table::@10 to print_byte [phi:sin8u_table::@10->print_byte] + //SEG67 [27] call print_byte + //SEG68 [74] phi from sin8u_table::@10 to print_byte [phi:sin8u_table::@10->print_byte] print_byte_from_b10: - //SEG68 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@10->print_byte#0] -- register_copy - //SEG69 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuz1=vbuc1 + //SEG69 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@10->print_byte#0] -- register_copy + //SEG70 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuz1=vbuc1 lda #amplitude sta print_byte.b jsr print_byte - //SEG70 [28] phi from sin8u_table::@10 to sin8u_table::@11 [phi:sin8u_table::@10->sin8u_table::@11] + //SEG71 [28] phi from sin8u_table::@10 to sin8u_table::@11 [phi:sin8u_table::@10->sin8u_table::@11] b11_from_b10: jmp b11 - //SEG71 sin8u_table::@11 + //SEG72 sin8u_table::@11 b11: - //SEG72 [29] call print_str - //SEG73 [86] phi from sin8u_table::@11 to print_str [phi:sin8u_table::@11->print_str] + //SEG73 [29] call print_str + //SEG74 [86] phi from sin8u_table::@11 to print_str [phi:sin8u_table::@11->print_str] print_str_from_b11: - //SEG74 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@11->print_str#0] -- register_copy - //SEG75 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@11->print_str#1] -- pbuz1=pbuc1 + //SEG75 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@11->print_str#0] -- register_copy + //SEG76 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@11->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG76 [30] phi from sin8u_table::@11 to sin8u_table::@12 [phi:sin8u_table::@11->sin8u_table::@12] + //SEG77 [30] phi from sin8u_table::@11 to sin8u_table::@12 [phi:sin8u_table::@11->sin8u_table::@12] b12_from_b11: jmp b12 - //SEG77 sin8u_table::@12 + //SEG78 sin8u_table::@12 b12: - //SEG78 [31] call print_byte - //SEG79 [74] phi from sin8u_table::@12 to print_byte [phi:sin8u_table::@12->print_byte] + //SEG79 [31] call print_byte + //SEG80 [74] phi from sin8u_table::@12 to print_byte [phi:sin8u_table::@12->print_byte] print_byte_from_b12: - //SEG80 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@12->print_byte#0] -- register_copy - //SEG81 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuz1=vbuc1 + //SEG81 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@12->print_byte#0] -- register_copy + //SEG82 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuz1=vbuc1 lda #mid sta print_byte.b jsr print_byte - //SEG82 [32] phi from sin8u_table::@12 to sin8u_table::@13 [phi:sin8u_table::@12->sin8u_table::@13] + //SEG83 [32] phi from sin8u_table::@12 to sin8u_table::@13 [phi:sin8u_table::@12->sin8u_table::@13] b13_from_b12: jmp b13 - //SEG83 sin8u_table::@13 + //SEG84 sin8u_table::@13 b13: - //SEG84 [33] call print_ln - //SEG85 [69] phi from sin8u_table::@13 to print_ln [phi:sin8u_table::@13->print_ln] + //SEG85 [33] call print_ln + //SEG86 [69] phi from sin8u_table::@13 to print_ln [phi:sin8u_table::@13->print_ln] print_ln_from_b13: - //SEG86 [69] phi (byte*) print_line_cursor#23 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@13->print_ln#0] -- pbuz1=pbuc1 + //SEG87 [69] phi (byte*) print_line_cursor#23 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@13->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG87 [34] phi from sin8u_table::@13 to sin8u_table::@1 [phi:sin8u_table::@13->sin8u_table::@1] + //SEG88 [34] phi from sin8u_table::@13 to sin8u_table::@1 [phi:sin8u_table::@13->sin8u_table::@1] b1_from_b13: - //SEG88 [34] phi (word) sin8u_table::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#0] -- vwuz1=vbuc1 + //SEG89 [34] phi (word) sin8u_table::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG89 [34] phi (byte*) sin8u_table::sintab#2 = (const byte[20]) main::sintab#0 [phi:sin8u_table::@13->sin8u_table::@1#1] -- pbuz1=pbuc1 + //SEG90 [34] phi (byte*) sin8u_table::sintab#2 = (const byte[20]) main::sintab#0 [phi:sin8u_table::@13->sin8u_table::@1#1] -- pbuz1=pbuc1 lda #main.sintab sta sintab+1 - //SEG90 [34] phi (word) sin8u_table::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#2] -- vwuz1=vbuc1 + //SEG91 [34] phi (word) sin8u_table::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#2] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 jmp b1 - //SEG91 [34] phi from sin8u_table::@25 to sin8u_table::@1 [phi:sin8u_table::@25->sin8u_table::@1] + //SEG92 [34] phi from sin8u_table::@25 to sin8u_table::@1 [phi:sin8u_table::@25->sin8u_table::@1] b1_from_b25: - //SEG92 [34] phi (word) sin8u_table::i#10 = (word) sin8u_table::i#1 [phi:sin8u_table::@25->sin8u_table::@1#0] -- register_copy - //SEG93 [34] phi (byte*) sin8u_table::sintab#2 = (byte*) sin8u_table::sintab#1 [phi:sin8u_table::@25->sin8u_table::@1#1] -- register_copy - //SEG94 [34] phi (word) sin8u_table::x#10 = (word) sin8u_table::x#1 [phi:sin8u_table::@25->sin8u_table::@1#2] -- register_copy + //SEG93 [34] phi (word) sin8u_table::i#10 = (word) sin8u_table::i#1 [phi:sin8u_table::@25->sin8u_table::@1#0] -- register_copy + //SEG94 [34] phi (byte*) sin8u_table::sintab#2 = (byte*) sin8u_table::sintab#1 [phi:sin8u_table::@25->sin8u_table::@1#1] -- register_copy + //SEG95 [34] phi (word) sin8u_table::x#10 = (word) sin8u_table::x#1 [phi:sin8u_table::@25->sin8u_table::@1#2] -- register_copy jmp b1 - //SEG95 sin8u_table::@1 + //SEG96 sin8u_table::@1 b1: - //SEG96 [35] (word) sin8s::x#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 + //SEG97 [35] (word) sin8s::x#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG97 [36] call sin8s + //SEG98 [36] call sin8s jsr sin8s - //SEG98 [37] (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#0 -- vbsz1=vbsz2 + //SEG99 [37] (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#0 -- vbsz1=vbsz2 lda sin8s.return sta sin8s.return_2 jmp b15 - //SEG99 sin8u_table::@15 + //SEG100 sin8u_table::@15 b15: - //SEG100 [38] (signed byte) sin8u_table::sinx#0 ← (signed byte) sin8s::return#2 -- vbsz1=vbsz2 + //SEG101 [38] (signed byte) sin8u_table::sinx#0 ← (signed byte) sin8s::return#2 -- vbsz1=vbsz2 lda sin8s.return_2 sta sinx - //SEG101 [39] (signed byte) mul8su::a#0 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 + //SEG102 [39] (signed byte) mul8su::a#0 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 lda sinx sta mul8su.a - //SEG102 [40] call mul8su + //SEG103 [40] call mul8su jsr mul8su - //SEG103 [41] (signed word) mul8su::return#2 ← (signed word)(word) mul8su::m#2 -- vwsz1=vwsz2 + //SEG104 [41] (signed word) mul8su::return#2 ← (signed word)(word) mul8su::m#2 -- vwsz1=vwsz2 lda mul8su.m sta mul8su.return lda mul8su.m+1 sta mul8su.return+1 jmp b16 - //SEG104 sin8u_table::@16 + //SEG105 sin8u_table::@16 b16: - //SEG105 [42] (signed word) sin8u_table::sinx_sc#0 ← (signed word) mul8su::return#2 -- vwsz1=vwsz2 + //SEG106 [42] (signed word) sin8u_table::sinx_sc#0 ← (signed word) mul8su::return#2 -- vwsz1=vwsz2 lda mul8su.return sta sinx_sc lda mul8su.return+1 sta sinx_sc+1 - //SEG106 [43] (byte~) sin8u_table::$21 ← > (signed word) sin8u_table::sinx_sc#0 -- vbuz1=_hi_vwsz2 + //SEG107 [43] (byte~) sin8u_table::$21 ← > (signed word) sin8u_table::sinx_sc#0 -- vbuz1=_hi_vwsz2 lda sinx_sc+1 sta _21 - //SEG107 [44] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21 -- vbuz1=vbuc1_plus_vbuz2 + //SEG108 [44] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21 -- vbuz1=vbuc1_plus_vbuz2 lda #mid clc adc _21 sta sinx_tr - //SEG108 [45] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuz2 + //SEG109 [45] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuz2 lda sinx_tr ldy #0 sta (sintab),y - //SEG109 [46] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 -- pbuz1=_inc_pbuz1 + //SEG110 [46] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 -- pbuz1=_inc_pbuz1 inc sintab bne !+ inc sintab+1 !: - //SEG110 [47] (byte*~) print_char_cursor#126 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG111 [47] (byte*~) print_char_cursor#126 ← (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 - //SEG111 [48] call print_str - //SEG112 [86] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] + //SEG112 [48] call print_str + //SEG113 [86] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] print_str_from_b16: - //SEG113 [86] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#126 [phi:sin8u_table::@16->print_str#0] -- register_copy - //SEG114 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 + //SEG114 [86] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#126 [phi:sin8u_table::@16->print_str#0] -- register_copy + //SEG115 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str jmp b17 - //SEG115 sin8u_table::@17 + //SEG116 sin8u_table::@17 b17: - //SEG116 [49] (word) print_word::w#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 + //SEG117 [49] (word) print_word::w#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 lda x sta print_word.w lda x+1 sta print_word.w+1 - //SEG117 [50] call print_word - //SEG118 [101] phi from sin8u_table::@17 to print_word [phi:sin8u_table::@17->print_word] + //SEG118 [50] call print_word + //SEG119 [101] phi from sin8u_table::@17 to print_word [phi:sin8u_table::@17->print_word] print_word_from_b17: - //SEG119 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@17->print_word#0] -- register_copy - //SEG120 [101] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@17->print_word#1] -- register_copy + //SEG120 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@17->print_word#0] -- register_copy + //SEG121 [101] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@17->print_word#1] -- register_copy jsr print_word - //SEG121 [51] phi from sin8u_table::@17 to sin8u_table::@18 [phi:sin8u_table::@17->sin8u_table::@18] + //SEG122 [51] phi from sin8u_table::@17 to sin8u_table::@18 [phi:sin8u_table::@17->sin8u_table::@18] b18_from_b17: jmp b18 - //SEG122 sin8u_table::@18 + //SEG123 sin8u_table::@18 b18: - //SEG123 [52] call print_str - //SEG124 [86] phi from sin8u_table::@18 to print_str [phi:sin8u_table::@18->print_str] + //SEG124 [52] call print_str + //SEG125 [86] phi from sin8u_table::@18 to print_str [phi:sin8u_table::@18->print_str] print_str_from_b18: - //SEG125 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy - //SEG126 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 + //SEG126 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy + //SEG127 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 lda #str6 sta print_str.str+1 jsr print_str jmp b19 - //SEG127 sin8u_table::@19 + //SEG128 sin8u_table::@19 b19: - //SEG128 [53] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 + //SEG129 [53] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 lda sinx sta print_sbyte.b - //SEG129 [54] call print_sbyte + //SEG130 [54] call print_sbyte jsr print_sbyte - //SEG130 [55] phi from sin8u_table::@19 to sin8u_table::@20 [phi:sin8u_table::@19->sin8u_table::@20] + //SEG131 [55] phi from sin8u_table::@19 to sin8u_table::@20 [phi:sin8u_table::@19->sin8u_table::@20] b20_from_b19: jmp b20 - //SEG131 sin8u_table::@20 + //SEG132 sin8u_table::@20 b20: - //SEG132 [56] call print_str - //SEG133 [86] phi from sin8u_table::@20 to print_str [phi:sin8u_table::@20->print_str] + //SEG133 [56] call print_str + //SEG134 [86] phi from sin8u_table::@20 to print_str [phi:sin8u_table::@20->print_str] print_str_from_b20: - //SEG134 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy - //SEG135 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 + //SEG135 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy + //SEG136 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 lda #str7 sta print_str.str+1 jsr print_str jmp b21 - //SEG136 sin8u_table::@21 + //SEG137 sin8u_table::@21 b21: - //SEG137 [57] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 -- vwsz1=vwsz2 + //SEG138 [57] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 -- vwsz1=vwsz2 lda sinx_sc sta print_sword.w lda sinx_sc+1 sta print_sword.w+1 - //SEG138 [58] call print_sword + //SEG139 [58] call print_sword jsr print_sword - //SEG139 [59] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] + //SEG140 [59] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] b22_from_b21: jmp b22 - //SEG140 sin8u_table::@22 + //SEG141 sin8u_table::@22 b22: - //SEG141 [60] call print_str - //SEG142 [86] phi from sin8u_table::@22 to print_str [phi:sin8u_table::@22->print_str] + //SEG142 [60] call print_str + //SEG143 [86] phi from sin8u_table::@22 to print_str [phi:sin8u_table::@22->print_str] print_str_from_b22: - //SEG143 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@22->print_str#0] -- register_copy - //SEG144 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@22->print_str#1] -- pbuz1=pbuc1 + //SEG144 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@22->print_str#0] -- register_copy + //SEG145 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@22->print_str#1] -- pbuz1=pbuc1 lda #str8 sta print_str.str+1 jsr print_str jmp b23 - //SEG145 sin8u_table::@23 + //SEG146 sin8u_table::@23 b23: - //SEG146 [61] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuz1=vbuz2 + //SEG147 [61] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuz1=vbuz2 lda sinx_tr sta print_byte.b - //SEG147 [62] call print_byte - //SEG148 [74] phi from sin8u_table::@23 to print_byte [phi:sin8u_table::@23->print_byte] + //SEG148 [62] call print_byte + //SEG149 [74] phi from sin8u_table::@23 to print_byte [phi:sin8u_table::@23->print_byte] print_byte_from_b23: - //SEG149 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@23->print_byte#0] -- register_copy - //SEG150 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@23->print_byte#1] -- register_copy + //SEG150 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@23->print_byte#0] -- register_copy + //SEG151 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@23->print_byte#1] -- register_copy jsr print_byte - //SEG151 [63] phi from sin8u_table::@23 to sin8u_table::@24 [phi:sin8u_table::@23->sin8u_table::@24] + //SEG152 [63] phi from sin8u_table::@23 to sin8u_table::@24 [phi:sin8u_table::@23->sin8u_table::@24] b24_from_b23: jmp b24 - //SEG152 sin8u_table::@24 + //SEG153 sin8u_table::@24 b24: - //SEG153 [64] call print_ln - //SEG154 [69] phi from sin8u_table::@24 to print_ln [phi:sin8u_table::@24->print_ln] + //SEG154 [64] call print_ln + //SEG155 [69] phi from sin8u_table::@24 to print_ln [phi:sin8u_table::@24->print_ln] print_ln_from_b24: - //SEG155 [69] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#1 [phi:sin8u_table::@24->print_ln#0] -- register_copy + //SEG156 [69] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#1 [phi:sin8u_table::@24->print_ln#0] -- register_copy jsr print_ln jmp b25 - //SEG156 sin8u_table::@25 + //SEG157 sin8u_table::@25 b25: - //SEG157 [65] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG158 [65] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -3934,12 +3935,12 @@ sin8u_table: { lda x+1 adc step+1 sta x+1 - //SEG158 [66] (word) sin8u_table::i#1 ← ++ (word) sin8u_table::i#10 -- vwuz1=_inc_vwuz1 + //SEG159 [66] (word) sin8u_table::i#1 ← ++ (word) sin8u_table::i#10 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG159 [67] if((word) sin8u_table::i#1<(const word) main::tabsize#0) goto sin8u_table::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG160 [67] if((word) sin8u_table::i#1<(const word) main::tabsize#0) goto sin8u_table::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.tabsize bcc b1_from_b25 @@ -3949,9 +3950,9 @@ sin8u_table: { bcc b1_from_b25 !: jmp breturn - //SEG160 sin8u_table::@return + //SEG161 sin8u_table::@return breturn: - //SEG161 [68] return + //SEG162 [68] return rts str: .text "step:@" str1: .text " min:@" @@ -3963,17 +3964,17 @@ sin8u_table: { str7: .text " scaled: @" str8: .text " trans: @" } -//SEG162 print_ln +//SEG163 print_ln // Print a newline print_ln: { - //SEG163 [70] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG164 [70] 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: - //SEG164 [70] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG165 [70] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG165 print_ln::@1 + //SEG166 print_ln::@1 b1: - //SEG166 [71] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG167 [71] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -3981,7 +3982,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG167 [72] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG168 [72] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -3991,141 +3992,141 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG168 print_ln::@return + //SEG169 print_ln::@return breturn: - //SEG169 [73] return + //SEG170 [73] return rts } -//SEG170 print_byte +//SEG171 print_byte // Print a byte as HEX print_byte: { .label _0 = $3b .label _2 = $3c .label b = $a - //SEG171 [75] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG172 [75] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG172 [76] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG173 [76] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG173 [77] call print_char - //SEG174 [82] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG174 [77] call print_char + //SEG175 [82] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG175 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy - //SEG176 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG176 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy + //SEG177 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG177 print_byte::@1 + //SEG178 print_byte::@1 b1: - //SEG178 [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG179 [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG179 [79] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG180 [79] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG180 [80] call print_char - //SEG181 [82] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG181 [80] call print_char + //SEG182 [82] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG182 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG183 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG183 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG184 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG184 print_byte::@return + //SEG185 print_byte::@return breturn: - //SEG185 [81] return + //SEG186 [81] return rts } -//SEG186 print_char +//SEG187 print_char // Print a single char print_char: { .label ch = $b - //SEG187 [83] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 + //SEG188 [83] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG188 [84] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 + //SEG189 [84] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG189 print_char::@return + //SEG190 print_char::@return breturn: - //SEG190 [85] return + //SEG191 [85] return rts } -//SEG191 print_str +//SEG192 print_str // Print a zero-terminated string print_str: { .label str = $c - //SEG192 [87] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG193 [87] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG193 [87] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG194 [87] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG194 [87] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG195 [87] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG195 print_str::@1 + //SEG196 print_str::@1 b1: - //SEG196 [88] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG197 [88] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG197 print_str::@return + //SEG198 print_str::@return breturn: - //SEG198 [89] return + //SEG199 [89] return rts - //SEG199 print_str::@2 + //SEG200 print_str::@2 b2: - //SEG200 [90] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG201 [90] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG201 [91] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG202 [91] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG202 [92] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG203 [92] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG203 print_sword +//SEG204 print_sword // Print a signed word as HEX print_sword: { .label w = $e - //SEG204 [93] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG205 [93] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG205 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG206 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG206 print_sword::@2 + //SEG207 print_sword::@2 b2: - //SEG207 [95] call print_char - //SEG208 [82] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG208 [95] call print_char + //SEG209 [82] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG209 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG210 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG210 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG211 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG211 print_sword::@4 + //SEG212 print_sword::@4 b4: - //SEG212 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG213 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -4135,120 +4136,120 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG213 [97] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG214 [97] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG214 [97] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG215 [97] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG215 [97] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG216 [97] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG216 print_sword::@1 + //SEG217 print_sword::@1 b1: - //SEG217 [98] (word~) print_word::w#5 ← (word)(signed word) print_sword::w#3 -- vwuz1=vwuz2 + //SEG218 [98] (word~) print_word::w#5 ← (word)(signed word) print_sword::w#3 -- vwuz1=vwuz2 lda w sta print_word.w lda w+1 sta print_word.w+1 - //SEG218 [99] call print_word - //SEG219 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG219 [99] call print_word + //SEG220 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG220 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG221 [101] phi (word) print_word::w#3 = (word~) print_word::w#5 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG221 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG222 [101] phi (word) print_word::w#3 = (word~) print_word::w#5 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG222 print_sword::@return + //SEG223 print_sword::@return breturn: - //SEG223 [100] return + //SEG224 [100] return rts } -//SEG224 print_word +//SEG225 print_word // Print a word as HEX print_word: { .label w = $12 - //SEG225 [102] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 + //SEG226 [102] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG226 [103] call print_byte - //SEG227 [74] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG227 [103] call print_byte + //SEG228 [74] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG228 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy - //SEG229 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG229 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy + //SEG230 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG230 print_word::@1 + //SEG231 print_word::@1 b1: - //SEG231 [104] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 + //SEG232 [104] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG232 [105] call print_byte - //SEG233 [74] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG233 [105] call print_byte + //SEG234 [74] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG234 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG235 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG235 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG236 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG236 print_word::@return + //SEG237 print_word::@return breturn: - //SEG237 [106] return + //SEG238 [106] return rts } -//SEG238 print_sbyte +//SEG239 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = $14 - //SEG239 [107] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG240 [107] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG240 [108] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG241 [108] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG241 print_sbyte::@3 + //SEG242 print_sbyte::@3 b3: - //SEG242 [109] call print_char - //SEG243 [82] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG243 [109] call print_char + //SEG244 [82] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG244 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG245 [82] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG245 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG246 [82] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG246 [110] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG247 [110] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG247 [110] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG248 [110] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG248 print_sbyte::@2 + //SEG249 print_sbyte::@2 b2: - //SEG249 [111] (byte~) print_byte::b#10 ← (byte)(signed byte) print_sbyte::b#4 -- vbuz1=vbuz2 + //SEG250 [111] (byte~) print_byte::b#10 ← (byte)(signed byte) print_sbyte::b#4 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG250 [112] call print_byte - //SEG251 [74] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG251 [112] call print_byte + //SEG252 [74] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG252 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG253 [74] phi (byte) print_byte::b#8 = (byte~) print_byte::b#10 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG253 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG254 [74] phi (byte) print_byte::b#8 = (byte~) print_byte::b#10 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG254 print_sbyte::@return + //SEG255 print_sbyte::@return breturn: - //SEG255 [113] return + //SEG256 [113] return rts - //SEG256 [114] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG257 [114] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG257 print_sbyte::@1 + //SEG258 print_sbyte::@1 b1: - //SEG258 [115] call print_char - //SEG259 [82] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG259 [115] call print_char + //SEG260 [82] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG260 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG261 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG261 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG262 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b5 - //SEG262 print_sbyte::@5 + //SEG263 print_sbyte::@5 b5: - //SEG263 [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG264 [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -4256,7 +4257,7 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG264 mul8su +//SEG265 mul8su // Multiply a signed byte and an unsigned byte (into a signed word) // Fixes offsets introduced by using unsigned multiplication mul8su: { @@ -4267,66 +4268,65 @@ mul8su: { .label m = $15 .label a = $34 .label return = $35 - //SEG265 [117] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8su::a#0 -- vbuz1=vbuz2 + //SEG266 [117] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8su::a#0 -- vbuz1=vbuz2 lda a sta mul8u.a - //SEG266 [118] call mul8u - //SEG267 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG267 [118] call mul8u + //SEG268 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] mul8u_from_mul8su: - //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 + //SEG269 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG270 [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 - //SEG270 [119] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG271 [119] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b4 - //SEG271 mul8su::@4 + //SEG272 mul8su::@4 b4: - //SEG272 [120] (word) mul8su::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG273 [120] (word) mul8su::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta m lda mul8u.return+1 sta m+1 - //SEG273 [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 -- vbsz1_ge_0_then_la1 + //SEG274 [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1_from_b4 jmp b2 - //SEG274 mul8su::@2 + //SEG275 mul8su::@2 b2: - //SEG275 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 + //SEG276 [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 + //SEG277 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _6 - //SEG277 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuz1=vbuz2_minus_vbuc1 + //SEG278 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuz1=vbuz2_minus_vbuc1 lda _6 sec sbc #b sta _10 - //SEG278 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG279 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuz2 lda _10 sta m+1 - //SEG279 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG280 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] b1_from_b2: b1_from_b4: - //SEG280 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG281 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy jmp b1 - //SEG281 mul8su::@1 + //SEG282 mul8su::@1 b1: jmp breturn - //SEG282 mul8su::@return + //SEG283 mul8su::@return breturn: - //SEG283 [127] return + //SEG284 [127] return rts } -//SEG284 mul8u -// Simple binary multiplication implementation +//SEG285 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label _1 = $42 @@ -4336,46 +4336,46 @@ mul8u: { .label return = $3d .label b = $17 .label return_3 = $52 - //SEG285 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 + //SEG286 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 lda b sta mb lda #0 sta mb+1 - //SEG286 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG287 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //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 + //SEG288 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG289 [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 - //SEG289 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG290 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG290 mul8u::@1 + //SEG291 mul8u::@1 b1: - //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 + //SEG292 [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 - //SEG292 mul8u::@return + //SEG293 mul8u::@return breturn: - //SEG293 [132] return + //SEG294 [132] return rts - //SEG294 mul8u::@2 + //SEG295 mul8u::@2 b2: - //SEG295 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG296 [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 - //SEG296 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG297 [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 - //SEG297 mul8u::@7 + //SEG298 mul8u::@7 b7: - //SEG298 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG299 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -4383,26 +4383,26 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG299 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG300 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG300 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG301 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG301 mul8u::@4 + //SEG302 mul8u::@4 b4: - //SEG302 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG303 [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 - //SEG303 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG304 [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 - //SEG304 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG305 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //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 + //SEG306 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG307 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG308 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG308 sin8s +//SEG309 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -4426,7 +4426,7 @@ sin8s: { .label return_2 = $32 .label usinx_4 = $20 .label isUpper = $1d - //SEG309 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG310 [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 @@ -4436,9 +4436,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG310 sin8s::@5 + //SEG311 sin8s::@5 b5: - //SEG311 [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG312 [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 - //SEG312 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG313 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //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 + //SEG314 [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 - //SEG314 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG315 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG315 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG316 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG316 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG317 [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 - //SEG317 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG318 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG318 sin8s::@1 + //SEG319 sin8s::@1 b1: - //SEG319 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG320 [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 @@ -4472,9 +4472,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG320 sin8s::@6 + //SEG321 sin8s::@6 b6: - //SEG321 [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG322 [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 - //SEG322 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG323 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG323 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG324 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG324 sin8s::@2 + //SEG325 sin8s::@2 b2: - //SEG325 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG326 [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 @@ -4500,194 +4500,194 @@ sin8s: { rol _6+1 asl _6 rol _6+1 - //SEG326 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG327 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG327 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG328 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v1 - //SEG328 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG329 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG329 [149] call mulu8_sel - //SEG330 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG330 [149] call mulu8_sel + //SEG331 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //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 + //SEG332 [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 - //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 + //SEG333 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG334 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG334 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG335 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return jmp b10 - //SEG335 sin8s::@10 + //SEG336 sin8s::@10 b10: - //SEG336 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 + //SEG337 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 lda mulu8_sel.return sta x2 - //SEG337 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 + //SEG338 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 lda x2 sta mulu8_sel.v1 - //SEG338 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG339 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG339 [154] call mulu8_sel - //SEG340 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG340 [154] call mulu8_sel + //SEG341 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //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 + //SEG342 [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 - //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 + //SEG343 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG344 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG344 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG345 [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 - //SEG345 sin8s::@11 + //SEG346 sin8s::@11 b11: - //SEG346 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 + //SEG347 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 lda mulu8_sel.return_1 sta x3 - //SEG347 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG348 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG348 [158] call mulu8_sel - //SEG349 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG349 [158] call mulu8_sel + //SEG350 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //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 + //SEG351 [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 - //SEG351 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuz1=vbuc1 + //SEG352 [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 - //SEG352 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG353 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG353 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG354 [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 - //SEG354 sin8s::@12 + //SEG355 sin8s::@12 b12: - //SEG355 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 + //SEG356 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 lda mulu8_sel.return_2 sta x3_6 - //SEG356 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG357 [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 - //SEG357 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG358 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG358 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG359 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG359 [164] call mulu8_sel - //SEG360 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG360 [164] call mulu8_sel + //SEG361 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //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 + //SEG362 [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 - //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 + //SEG363 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG364 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG364 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG365 [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 - //SEG365 sin8s::@13 + //SEG366 sin8s::@13 b13: - //SEG366 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 + //SEG367 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 lda mulu8_sel.return_10 sta x4 - //SEG367 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 + //SEG368 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 lda x4 sta mulu8_sel.v1 - //SEG368 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG369 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG369 [169] call mulu8_sel - //SEG370 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG370 [169] call mulu8_sel + //SEG371 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //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 + //SEG372 [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 - //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 + //SEG373 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG374 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG374 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG375 [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 - //SEG375 sin8s::@14 + //SEG376 sin8s::@14 b14: - //SEG376 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 + //SEG377 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 lda mulu8_sel.return_11 sta x5 - //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 + //SEG378 [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 - //SEG378 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG379 [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 - //SEG379 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG380 [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 - //SEG380 sin8s::@7 + //SEG381 sin8s::@7 b7: - //SEG381 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 + //SEG382 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 dec usinx_2 - //SEG382 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG383 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG383 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG384 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG384 sin8s::@3 + //SEG385 sin8s::@3 b3: - //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 + //SEG386 [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 - //SEG386 sin8s::@8 + //SEG387 sin8s::@8 b8: - //SEG387 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 + //SEG388 [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 - //SEG388 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG389 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG389 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG390 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG390 sin8s::@4 + //SEG391 sin8s::@4 b4: jmp breturn - //SEG391 sin8s::@return + //SEG392 sin8s::@return breturn: - //SEG392 [180] return + //SEG393 [180] return rts - //SEG393 sin8s::@18 + //SEG394 sin8s::@18 b18: - //SEG394 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 + //SEG395 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 lda usinx_4 sta return jmp b4_from_b18 } -//SEG395 mulu8_sel +//SEG396 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { @@ -4702,32 +4702,32 @@ mulu8_sel: { .label return_11 = $4f .label select = $24 .label return_12 = $58 - //SEG396 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 + //SEG397 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 lda v1 sta mul8u.a - //SEG397 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 + //SEG398 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 lda v2 sta mul8u.b - //SEG398 [185] call mul8u - //SEG399 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG399 [185] call mul8u + //SEG400 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] mul8u_from_mulu8_sel: - //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 + //SEG401 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG402 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG402 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG403 [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 - //SEG403 mulu8_sel::@2 + //SEG404 mulu8_sel::@2 b2: - //SEG404 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG405 [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 - //SEG405 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 + //SEG406 [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 @@ -4740,16 +4740,16 @@ mulu8_sel: { dey bne !- !e: - //SEG406 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 + //SEG407 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 lda _1+1 sta return_12 jmp breturn - //SEG407 mulu8_sel::@return + //SEG408 mulu8_sel::@return breturn: - //SEG408 [190] return + //SEG409 [190] return rts } -//SEG409 div16u +//SEG410 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -4757,30 +4757,30 @@ mulu8_sel: { div16u: { .label return = $5b .label return_2 = $2e - //SEG410 [192] call divr16u - //SEG411 [196] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG411 [192] call divr16u + //SEG412 [196] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG412 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG413 [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 - //SEG413 div16u::@2 + //SEG414 div16u::@2 b2: - //SEG414 [194] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG415 [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 - //SEG415 div16u::@return + //SEG416 div16u::@return breturn: - //SEG416 [195] return + //SEG417 [195] return rts } -//SEG417 divr16u +//SEG418 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -4794,71 +4794,71 @@ divr16u: { .label i = $2b .label return = $29 .label return_2 = $59 - //SEG418 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG419 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG419 [197] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG420 [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 - //SEG420 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG421 [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 - //SEG421 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG422 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG422 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG423 [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 - //SEG423 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG424 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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 + //SEG425 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG426 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG427 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG428 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG428 divr16u::@1 + //SEG429 divr16u::@1 b1: - //SEG429 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG430 [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 - //SEG430 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + //SEG431 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG431 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG432 [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 - //SEG432 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG433 [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 - //SEG433 divr16u::@4 + //SEG434 divr16u::@4 b4: - //SEG434 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG435 [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 - //SEG435 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG436 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG436 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG437 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG437 divr16u::@2 + //SEG438 divr16u::@2 b2: - //SEG438 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [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 - //SEG439 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG440 [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 - //SEG440 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG441 [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 @@ -4868,14 +4868,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG441 divr16u::@5 + //SEG442 divr16u::@5 b5: - //SEG442 [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG443 [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG443 [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG444 [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 - //SEG444 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG445 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //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 + //SEG446 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG447 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG447 divr16u::@3 + //SEG448 divr16u::@3 b3: - //SEG448 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG449 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //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 + //SEG450 [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 + //SEG451 divr16u::@6 b6: - //SEG451 [212] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 + //SEG452 [212] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG452 divr16u::@return + //SEG453 divr16u::@return breturn: - //SEG453 [213] return + //SEG454 [213] return rts } -//SEG454 print_cls +//SEG455 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $2c - //SEG455 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG456 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //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 + //SEG457 [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 - //SEG457 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG458 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG458 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG459 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG459 print_cls::@1 + //SEG460 print_cls::@1 b1: - //SEG460 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG461 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG461 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG462 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG463 [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 @@ -4946,9 +4946,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG463 print_cls::@return + //SEG464 print_cls::@return breturn: - //SEG464 [219] return + //SEG465 [219] return rts } print_hextab: .text "0123456789abcdef" @@ -5262,11 +5262,12 @@ 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 +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.12] format .const PI2_u4f12 = $6488 // PI in u[4.12] format @@ -5276,46 +5277,46 @@ ASSEMBLER BEFORE OPTIMIZATION .label rem16u = 2 .label print_char_cursor = $d .label print_line_cursor = 8 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @41 [phi:@begin->@41] +//SEG4 [1] phi from @begin to @41 [phi:@begin->@41] b41_from_bbegin: jmp b41 -//SEG4 @41 +//SEG5 @41 b41: -//SEG5 [2] call main -//SEG6 [4] phi from @41 to main [phi:@41->main] +//SEG6 [2] call main +//SEG7 [4] phi from @41 to main [phi:@41->main] main_from_b41: jsr main -//SEG7 [3] phi from @41 to @end [phi:@41->@end] +//SEG8 [3] phi from @41 to @end [phi:@41->@end] bend_from_b41: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label tabsize = $14 - //SEG10 [5] call print_cls - //SEG11 [214] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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] + //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 sin8u_table - //SEG15 [9] phi from main::@1 to sin8u_table [phi:main::@1->sin8u_table] + //SEG15 [7] call sin8u_table + //SEG16 [9] phi from main::@1 to sin8u_table [phi:main::@1->sin8u_table] sin8u_table_from_b1: jsr sin8u_table jmp breturn - //SEG16 main::@return + //SEG17 main::@return breturn: - //SEG17 [8] return + //SEG18 [8] return rts sintab: .fill $14, 0 } -//SEG18 sin8u_table +//SEG19 sin8u_table // Generate unsigned byte sinus table in a min-max range // sintab - the table to generate into // tabsize - the number of sinus points (the size of the table) @@ -5333,349 +5334,349 @@ sin8u_table: { .label sintab = 4 .label x = 2 .label i = 6 - //SEG19 [10] call div16u - //SEG20 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG20 [10] call div16u + //SEG21 [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 + //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 jmp b3 - //SEG22 sin8u_table::@3 + //SEG23 sin8u_table::@3 b3: - //SEG23 [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 - //SEG24 [13] call print_str - //SEG25 [86] phi from sin8u_table::@3 to print_str [phi:sin8u_table::@3->print_str] + //SEG24 [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 + //SEG25 [13] call print_str + //SEG26 [86] phi from sin8u_table::@3 to print_str [phi:sin8u_table::@3->print_str] print_str_from_b3: - //SEG26 [86] phi (byte*) print_char_cursor#105 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@3->print_str#0] -- pbuz1=pbuc1 + //SEG27 [86] phi (byte*) print_char_cursor#105 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG27 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str [phi:sin8u_table::@3->print_str#1] -- pbuz1=pbuc1 + //SEG28 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str [phi:sin8u_table::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG28 sin8u_table::@4 + //SEG29 sin8u_table::@4 b4: - //SEG29 [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 -- vwuz1=vwuz2 + //SEG30 [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 -- vwuz1=vwuz2 lda step sta print_word.w lda step+1 sta print_word.w+1 - //SEG30 [15] call print_word - //SEG31 [101] phi from sin8u_table::@4 to print_word [phi:sin8u_table::@4->print_word] + //SEG31 [15] call print_word + //SEG32 [101] phi from sin8u_table::@4 to print_word [phi:sin8u_table::@4->print_word] print_word_from_b4: - //SEG32 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@4->print_word#0] -- register_copy - //SEG33 [101] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@4->print_word#1] -- register_copy + //SEG33 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@4->print_word#0] -- register_copy + //SEG34 [101] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@4->print_word#1] -- register_copy jsr print_word - //SEG34 [16] phi from sin8u_table::@4 to sin8u_table::@5 [phi:sin8u_table::@4->sin8u_table::@5] + //SEG35 [16] phi from sin8u_table::@4 to sin8u_table::@5 [phi:sin8u_table::@4->sin8u_table::@5] b5_from_b4: jmp b5 - //SEG35 sin8u_table::@5 + //SEG36 sin8u_table::@5 b5: - //SEG36 [17] call print_str - //SEG37 [86] phi from sin8u_table::@5 to print_str [phi:sin8u_table::@5->print_str] + //SEG37 [17] call print_str + //SEG38 [86] phi from sin8u_table::@5 to print_str [phi:sin8u_table::@5->print_str] print_str_from_b5: - //SEG38 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@5->print_str#0] -- register_copy - //SEG39 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@5->print_str#1] -- pbuz1=pbuc1 + //SEG39 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@5->print_str#0] -- register_copy + //SEG40 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@5->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG40 [18] phi from sin8u_table::@5 to sin8u_table::@6 [phi:sin8u_table::@5->sin8u_table::@6] + //SEG41 [18] phi from sin8u_table::@5 to sin8u_table::@6 [phi:sin8u_table::@5->sin8u_table::@6] b6_from_b5: jmp b6 - //SEG41 sin8u_table::@6 + //SEG42 sin8u_table::@6 b6: - //SEG42 [19] call print_byte - //SEG43 [74] phi from sin8u_table::@6 to print_byte [phi:sin8u_table::@6->print_byte] + //SEG43 [19] call print_byte + //SEG44 [74] phi from sin8u_table::@6 to print_byte [phi:sin8u_table::@6->print_byte] print_byte_from_b6: - //SEG44 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@6->print_byte#0] -- register_copy - //SEG45 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuz1=vbuc1 + //SEG45 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@6->print_byte#0] -- register_copy + //SEG46 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuz1=vbuc1 lda #min sta print_byte.b jsr print_byte - //SEG46 [20] phi from sin8u_table::@6 to sin8u_table::@7 [phi:sin8u_table::@6->sin8u_table::@7] + //SEG47 [20] phi from sin8u_table::@6 to sin8u_table::@7 [phi:sin8u_table::@6->sin8u_table::@7] b7_from_b6: jmp b7 - //SEG47 sin8u_table::@7 + //SEG48 sin8u_table::@7 b7: - //SEG48 [21] call print_str - //SEG49 [86] phi from sin8u_table::@7 to print_str [phi:sin8u_table::@7->print_str] + //SEG49 [21] call print_str + //SEG50 [86] phi from sin8u_table::@7 to print_str [phi:sin8u_table::@7->print_str] print_str_from_b7: - //SEG50 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@7->print_str#0] -- register_copy - //SEG51 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@7->print_str#1] -- pbuz1=pbuc1 + //SEG51 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@7->print_str#0] -- register_copy + //SEG52 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@7->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG52 [22] phi from sin8u_table::@7 to sin8u_table::@8 [phi:sin8u_table::@7->sin8u_table::@8] + //SEG53 [22] phi from sin8u_table::@7 to sin8u_table::@8 [phi:sin8u_table::@7->sin8u_table::@8] b8_from_b7: jmp b8 - //SEG53 sin8u_table::@8 + //SEG54 sin8u_table::@8 b8: - //SEG54 [23] call print_byte - //SEG55 [74] phi from sin8u_table::@8 to print_byte [phi:sin8u_table::@8->print_byte] + //SEG55 [23] call print_byte + //SEG56 [74] phi from sin8u_table::@8 to print_byte [phi:sin8u_table::@8->print_byte] print_byte_from_b8: - //SEG56 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@8->print_byte#0] -- register_copy - //SEG57 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuz1=vbuc1 + //SEG57 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@8->print_byte#0] -- register_copy + //SEG58 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuz1=vbuc1 lda #max sta print_byte.b jsr print_byte - //SEG58 [24] phi from sin8u_table::@8 to sin8u_table::@9 [phi:sin8u_table::@8->sin8u_table::@9] + //SEG59 [24] phi from sin8u_table::@8 to sin8u_table::@9 [phi:sin8u_table::@8->sin8u_table::@9] b9_from_b8: jmp b9 - //SEG59 sin8u_table::@9 + //SEG60 sin8u_table::@9 b9: - //SEG60 [25] call print_str - //SEG61 [86] phi from sin8u_table::@9 to print_str [phi:sin8u_table::@9->print_str] + //SEG61 [25] call print_str + //SEG62 [86] phi from sin8u_table::@9 to print_str [phi:sin8u_table::@9->print_str] print_str_from_b9: - //SEG62 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@9->print_str#0] -- register_copy - //SEG63 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@9->print_str#1] -- pbuz1=pbuc1 + //SEG63 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@9->print_str#0] -- register_copy + //SEG64 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@9->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG64 [26] phi from sin8u_table::@9 to sin8u_table::@10 [phi:sin8u_table::@9->sin8u_table::@10] + //SEG65 [26] phi from sin8u_table::@9 to sin8u_table::@10 [phi:sin8u_table::@9->sin8u_table::@10] b10_from_b9: jmp b10 - //SEG65 sin8u_table::@10 + //SEG66 sin8u_table::@10 b10: - //SEG66 [27] call print_byte - //SEG67 [74] phi from sin8u_table::@10 to print_byte [phi:sin8u_table::@10->print_byte] + //SEG67 [27] call print_byte + //SEG68 [74] phi from sin8u_table::@10 to print_byte [phi:sin8u_table::@10->print_byte] print_byte_from_b10: - //SEG68 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@10->print_byte#0] -- register_copy - //SEG69 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuz1=vbuc1 + //SEG69 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@10->print_byte#0] -- register_copy + //SEG70 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuz1=vbuc1 lda #amplitude sta print_byte.b jsr print_byte - //SEG70 [28] phi from sin8u_table::@10 to sin8u_table::@11 [phi:sin8u_table::@10->sin8u_table::@11] + //SEG71 [28] phi from sin8u_table::@10 to sin8u_table::@11 [phi:sin8u_table::@10->sin8u_table::@11] b11_from_b10: jmp b11 - //SEG71 sin8u_table::@11 + //SEG72 sin8u_table::@11 b11: - //SEG72 [29] call print_str - //SEG73 [86] phi from sin8u_table::@11 to print_str [phi:sin8u_table::@11->print_str] + //SEG73 [29] call print_str + //SEG74 [86] phi from sin8u_table::@11 to print_str [phi:sin8u_table::@11->print_str] print_str_from_b11: - //SEG74 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@11->print_str#0] -- register_copy - //SEG75 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@11->print_str#1] -- pbuz1=pbuc1 + //SEG75 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@11->print_str#0] -- register_copy + //SEG76 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@11->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG76 [30] phi from sin8u_table::@11 to sin8u_table::@12 [phi:sin8u_table::@11->sin8u_table::@12] + //SEG77 [30] phi from sin8u_table::@11 to sin8u_table::@12 [phi:sin8u_table::@11->sin8u_table::@12] b12_from_b11: jmp b12 - //SEG77 sin8u_table::@12 + //SEG78 sin8u_table::@12 b12: - //SEG78 [31] call print_byte - //SEG79 [74] phi from sin8u_table::@12 to print_byte [phi:sin8u_table::@12->print_byte] + //SEG79 [31] call print_byte + //SEG80 [74] phi from sin8u_table::@12 to print_byte [phi:sin8u_table::@12->print_byte] print_byte_from_b12: - //SEG80 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@12->print_byte#0] -- register_copy - //SEG81 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuz1=vbuc1 + //SEG81 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@12->print_byte#0] -- register_copy + //SEG82 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuz1=vbuc1 lda #mid sta print_byte.b jsr print_byte - //SEG82 [32] phi from sin8u_table::@12 to sin8u_table::@13 [phi:sin8u_table::@12->sin8u_table::@13] + //SEG83 [32] phi from sin8u_table::@12 to sin8u_table::@13 [phi:sin8u_table::@12->sin8u_table::@13] b13_from_b12: jmp b13 - //SEG83 sin8u_table::@13 + //SEG84 sin8u_table::@13 b13: - //SEG84 [33] call print_ln - //SEG85 [69] phi from sin8u_table::@13 to print_ln [phi:sin8u_table::@13->print_ln] + //SEG85 [33] call print_ln + //SEG86 [69] phi from sin8u_table::@13 to print_ln [phi:sin8u_table::@13->print_ln] print_ln_from_b13: - //SEG86 [69] phi (byte*) print_line_cursor#23 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@13->print_ln#0] -- pbuz1=pbuc1 + //SEG87 [69] phi (byte*) print_line_cursor#23 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@13->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG87 [34] phi from sin8u_table::@13 to sin8u_table::@1 [phi:sin8u_table::@13->sin8u_table::@1] + //SEG88 [34] phi from sin8u_table::@13 to sin8u_table::@1 [phi:sin8u_table::@13->sin8u_table::@1] b1_from_b13: - //SEG88 [34] phi (word) sin8u_table::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#0] -- vwuz1=vbuc1 + //SEG89 [34] phi (word) sin8u_table::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG89 [34] phi (byte*) sin8u_table::sintab#2 = (const byte[20]) main::sintab#0 [phi:sin8u_table::@13->sin8u_table::@1#1] -- pbuz1=pbuc1 + //SEG90 [34] phi (byte*) sin8u_table::sintab#2 = (const byte[20]) main::sintab#0 [phi:sin8u_table::@13->sin8u_table::@1#1] -- pbuz1=pbuc1 lda #main.sintab sta sintab+1 - //SEG90 [34] phi (word) sin8u_table::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#2] -- vwuz1=vbuc1 + //SEG91 [34] phi (word) sin8u_table::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#2] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 jmp b1 - //SEG91 [34] phi from sin8u_table::@25 to sin8u_table::@1 [phi:sin8u_table::@25->sin8u_table::@1] + //SEG92 [34] phi from sin8u_table::@25 to sin8u_table::@1 [phi:sin8u_table::@25->sin8u_table::@1] b1_from_b25: - //SEG92 [34] phi (word) sin8u_table::i#10 = (word) sin8u_table::i#1 [phi:sin8u_table::@25->sin8u_table::@1#0] -- register_copy - //SEG93 [34] phi (byte*) sin8u_table::sintab#2 = (byte*) sin8u_table::sintab#1 [phi:sin8u_table::@25->sin8u_table::@1#1] -- register_copy - //SEG94 [34] phi (word) sin8u_table::x#10 = (word) sin8u_table::x#1 [phi:sin8u_table::@25->sin8u_table::@1#2] -- register_copy + //SEG93 [34] phi (word) sin8u_table::i#10 = (word) sin8u_table::i#1 [phi:sin8u_table::@25->sin8u_table::@1#0] -- register_copy + //SEG94 [34] phi (byte*) sin8u_table::sintab#2 = (byte*) sin8u_table::sintab#1 [phi:sin8u_table::@25->sin8u_table::@1#1] -- register_copy + //SEG95 [34] phi (word) sin8u_table::x#10 = (word) sin8u_table::x#1 [phi:sin8u_table::@25->sin8u_table::@1#2] -- register_copy jmp b1 - //SEG95 sin8u_table::@1 + //SEG96 sin8u_table::@1 b1: - //SEG96 [35] (word) sin8s::x#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 + //SEG97 [35] (word) sin8s::x#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG97 [36] call sin8s + //SEG98 [36] call sin8s jsr sin8s - //SEG98 [37] (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#0 + //SEG99 [37] (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#0 jmp b15 - //SEG99 sin8u_table::@15 + //SEG100 sin8u_table::@15 b15: - //SEG100 [38] (signed byte) sin8u_table::sinx#0 ← (signed byte) sin8s::return#2 -- vbsz1=vbsaa + //SEG101 [38] (signed byte) sin8u_table::sinx#0 ← (signed byte) sin8s::return#2 -- vbsz1=vbsaa sta sinx - //SEG101 [39] (signed byte) mul8su::a#0 ← (signed byte) sin8u_table::sinx#0 -- vbsyy=vbsz1 + //SEG102 [39] (signed byte) mul8su::a#0 ← (signed byte) sin8u_table::sinx#0 -- vbsyy=vbsz1 ldy sinx - //SEG102 [40] call mul8su + //SEG103 [40] call mul8su jsr mul8su - //SEG103 [41] (signed word) mul8su::return#2 ← (signed word)(word) mul8su::m#2 + //SEG104 [41] (signed word) mul8su::return#2 ← (signed word)(word) mul8su::m#2 jmp b16 - //SEG104 sin8u_table::@16 + //SEG105 sin8u_table::@16 b16: - //SEG105 [42] (signed word) sin8u_table::sinx_sc#0 ← (signed word) mul8su::return#2 - //SEG106 [43] (byte~) sin8u_table::$21 ← > (signed word) sin8u_table::sinx_sc#0 -- vbuaa=_hi_vwsz1 + //SEG106 [42] (signed word) sin8u_table::sinx_sc#0 ← (signed word) mul8su::return#2 + //SEG107 [43] (byte~) sin8u_table::$21 ← > (signed word) sin8u_table::sinx_sc#0 -- vbuaa=_hi_vwsz1 lda sinx_sc+1 - //SEG107 [44] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21 -- vbuxx=vbuc1_plus_vbuaa + //SEG108 [44] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21 -- vbuxx=vbuc1_plus_vbuaa clc adc #mid tax - //SEG108 [45] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuxx + //SEG109 [45] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuxx txa ldy #0 sta (sintab),y - //SEG109 [46] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 -- pbuz1=_inc_pbuz1 + //SEG110 [46] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 -- pbuz1=_inc_pbuz1 inc sintab bne !+ inc sintab+1 !: - //SEG110 [47] (byte*~) print_char_cursor#126 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG111 [47] (byte*~) print_char_cursor#126 ← (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 - //SEG111 [48] call print_str - //SEG112 [86] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] + //SEG112 [48] call print_str + //SEG113 [86] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] print_str_from_b16: - //SEG113 [86] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#126 [phi:sin8u_table::@16->print_str#0] -- register_copy - //SEG114 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 + //SEG114 [86] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#126 [phi:sin8u_table::@16->print_str#0] -- register_copy + //SEG115 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str jmp b17 - //SEG115 sin8u_table::@17 + //SEG116 sin8u_table::@17 b17: - //SEG116 [49] (word) print_word::w#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 + //SEG117 [49] (word) print_word::w#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 lda x sta print_word.w lda x+1 sta print_word.w+1 - //SEG117 [50] call print_word - //SEG118 [101] phi from sin8u_table::@17 to print_word [phi:sin8u_table::@17->print_word] + //SEG118 [50] call print_word + //SEG119 [101] phi from sin8u_table::@17 to print_word [phi:sin8u_table::@17->print_word] print_word_from_b17: - //SEG119 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@17->print_word#0] -- register_copy - //SEG120 [101] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@17->print_word#1] -- register_copy + //SEG120 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@17->print_word#0] -- register_copy + //SEG121 [101] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@17->print_word#1] -- register_copy jsr print_word - //SEG121 [51] phi from sin8u_table::@17 to sin8u_table::@18 [phi:sin8u_table::@17->sin8u_table::@18] + //SEG122 [51] phi from sin8u_table::@17 to sin8u_table::@18 [phi:sin8u_table::@17->sin8u_table::@18] b18_from_b17: jmp b18 - //SEG122 sin8u_table::@18 + //SEG123 sin8u_table::@18 b18: - //SEG123 [52] call print_str - //SEG124 [86] phi from sin8u_table::@18 to print_str [phi:sin8u_table::@18->print_str] + //SEG124 [52] call print_str + //SEG125 [86] phi from sin8u_table::@18 to print_str [phi:sin8u_table::@18->print_str] print_str_from_b18: - //SEG125 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy - //SEG126 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 + //SEG126 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy + //SEG127 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 lda #str6 sta print_str.str+1 jsr print_str jmp b19 - //SEG127 sin8u_table::@19 + //SEG128 sin8u_table::@19 b19: - //SEG128 [53] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 + //SEG129 [53] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 lda sinx sta print_sbyte.b - //SEG129 [54] call print_sbyte + //SEG130 [54] call print_sbyte jsr print_sbyte - //SEG130 [55] phi from sin8u_table::@19 to sin8u_table::@20 [phi:sin8u_table::@19->sin8u_table::@20] + //SEG131 [55] phi from sin8u_table::@19 to sin8u_table::@20 [phi:sin8u_table::@19->sin8u_table::@20] b20_from_b19: jmp b20 - //SEG131 sin8u_table::@20 + //SEG132 sin8u_table::@20 b20: - //SEG132 [56] call print_str - //SEG133 [86] phi from sin8u_table::@20 to print_str [phi:sin8u_table::@20->print_str] + //SEG133 [56] call print_str + //SEG134 [86] phi from sin8u_table::@20 to print_str [phi:sin8u_table::@20->print_str] print_str_from_b20: - //SEG134 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy - //SEG135 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 + //SEG135 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy + //SEG136 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 lda #str7 sta print_str.str+1 jsr print_str jmp b21 - //SEG136 sin8u_table::@21 + //SEG137 sin8u_table::@21 b21: - //SEG137 [57] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 -- vwsz1=vwsz2 + //SEG138 [57] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 -- vwsz1=vwsz2 lda sinx_sc sta print_sword.w lda sinx_sc+1 sta print_sword.w+1 - //SEG138 [58] call print_sword + //SEG139 [58] call print_sword jsr print_sword - //SEG139 [59] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] + //SEG140 [59] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] b22_from_b21: jmp b22 - //SEG140 sin8u_table::@22 + //SEG141 sin8u_table::@22 b22: - //SEG141 [60] call print_str - //SEG142 [86] phi from sin8u_table::@22 to print_str [phi:sin8u_table::@22->print_str] + //SEG142 [60] call print_str + //SEG143 [86] phi from sin8u_table::@22 to print_str [phi:sin8u_table::@22->print_str] print_str_from_b22: - //SEG143 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@22->print_str#0] -- register_copy - //SEG144 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@22->print_str#1] -- pbuz1=pbuc1 + //SEG144 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@22->print_str#0] -- register_copy + //SEG145 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@22->print_str#1] -- pbuz1=pbuc1 lda #str8 sta print_str.str+1 jsr print_str jmp b23 - //SEG145 sin8u_table::@23 + //SEG146 sin8u_table::@23 b23: - //SEG146 [61] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuz1=vbuxx + //SEG147 [61] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuz1=vbuxx stx print_byte.b - //SEG147 [62] call print_byte - //SEG148 [74] phi from sin8u_table::@23 to print_byte [phi:sin8u_table::@23->print_byte] + //SEG148 [62] call print_byte + //SEG149 [74] phi from sin8u_table::@23 to print_byte [phi:sin8u_table::@23->print_byte] print_byte_from_b23: - //SEG149 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@23->print_byte#0] -- register_copy - //SEG150 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@23->print_byte#1] -- register_copy + //SEG150 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@23->print_byte#0] -- register_copy + //SEG151 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@23->print_byte#1] -- register_copy jsr print_byte - //SEG151 [63] phi from sin8u_table::@23 to sin8u_table::@24 [phi:sin8u_table::@23->sin8u_table::@24] + //SEG152 [63] phi from sin8u_table::@23 to sin8u_table::@24 [phi:sin8u_table::@23->sin8u_table::@24] b24_from_b23: jmp b24 - //SEG152 sin8u_table::@24 + //SEG153 sin8u_table::@24 b24: - //SEG153 [64] call print_ln - //SEG154 [69] phi from sin8u_table::@24 to print_ln [phi:sin8u_table::@24->print_ln] + //SEG154 [64] call print_ln + //SEG155 [69] phi from sin8u_table::@24 to print_ln [phi:sin8u_table::@24->print_ln] print_ln_from_b24: - //SEG155 [69] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#1 [phi:sin8u_table::@24->print_ln#0] -- register_copy + //SEG156 [69] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#1 [phi:sin8u_table::@24->print_ln#0] -- register_copy jsr print_ln jmp b25 - //SEG156 sin8u_table::@25 + //SEG157 sin8u_table::@25 b25: - //SEG157 [65] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG158 [65] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -5683,12 +5684,12 @@ sin8u_table: { lda x+1 adc step+1 sta x+1 - //SEG158 [66] (word) sin8u_table::i#1 ← ++ (word) sin8u_table::i#10 -- vwuz1=_inc_vwuz1 + //SEG159 [66] (word) sin8u_table::i#1 ← ++ (word) sin8u_table::i#10 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG159 [67] if((word) sin8u_table::i#1<(const word) main::tabsize#0) goto sin8u_table::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG160 [67] if((word) sin8u_table::i#1<(const word) main::tabsize#0) goto sin8u_table::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.tabsize bcc b1_from_b25 @@ -5698,9 +5699,9 @@ sin8u_table: { bcc b1_from_b25 !: jmp breturn - //SEG160 sin8u_table::@return + //SEG161 sin8u_table::@return breturn: - //SEG161 [68] return + //SEG162 [68] return rts str: .text "step:@" str1: .text " min:@" @@ -5712,17 +5713,17 @@ sin8u_table: { str7: .text " scaled: @" str8: .text " trans: @" } -//SEG162 print_ln +//SEG163 print_ln // Print a newline print_ln: { - //SEG163 [70] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG164 [70] 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: - //SEG164 [70] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG165 [70] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG165 print_ln::@1 + //SEG166 print_ln::@1 b1: - //SEG166 [71] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG167 [71] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -5730,7 +5731,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG167 [72] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG168 [72] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5740,132 +5741,132 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG168 print_ln::@return + //SEG169 print_ln::@return breturn: - //SEG169 [73] return + //SEG170 [73] return rts } -//SEG170 print_byte +//SEG171 print_byte // Print a byte as HEX print_byte: { .label b = $a - //SEG171 [75] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG172 [75] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG172 [76] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG173 [76] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG173 [77] call print_char - //SEG174 [82] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG174 [77] call print_char + //SEG175 [82] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG175 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy - //SEG176 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG176 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy + //SEG177 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG177 print_byte::@1 + //SEG178 print_byte::@1 b1: - //SEG178 [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG179 [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG179 [79] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG180 [79] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG180 [80] call print_char - //SEG181 [82] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG181 [80] call print_char + //SEG182 [82] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG182 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG183 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG183 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG184 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG184 print_byte::@return + //SEG185 print_byte::@return breturn: - //SEG185 [81] return + //SEG186 [81] return rts } -//SEG186 print_char +//SEG187 print_char // Print a single char print_char: { - //SEG187 [83] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG188 [83] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG188 [84] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 + //SEG189 [84] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG189 print_char::@return + //SEG190 print_char::@return breturn: - //SEG190 [85] return + //SEG191 [85] return rts } -//SEG191 print_str +//SEG192 print_str // Print a zero-terminated string print_str: { .label str = $b - //SEG192 [87] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG193 [87] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG193 [87] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG194 [87] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG194 [87] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG195 [87] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG195 print_str::@1 + //SEG196 print_str::@1 b1: - //SEG196 [88] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG197 [88] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG197 print_str::@return + //SEG198 print_str::@return breturn: - //SEG198 [89] return + //SEG199 [89] return rts - //SEG199 print_str::@2 + //SEG200 print_str::@2 b2: - //SEG200 [90] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG201 [90] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG201 [91] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG202 [91] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG202 [92] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG203 [92] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG203 print_sword +//SEG204 print_sword // Print a signed word as HEX print_sword: { .label w = $b - //SEG204 [93] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG205 [93] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG205 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG206 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG206 print_sword::@2 + //SEG207 print_sword::@2 b2: - //SEG207 [95] call print_char - //SEG208 [82] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG208 [95] call print_char + //SEG209 [82] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG209 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG210 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG210 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG211 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG211 print_sword::@4 + //SEG212 print_sword::@4 b4: - //SEG212 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG213 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -5875,112 +5876,112 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG213 [97] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG214 [97] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG214 [97] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG215 [97] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG215 [97] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG216 [97] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG216 print_sword::@1 + //SEG217 print_sword::@1 b1: - //SEG217 [98] (word~) print_word::w#5 ← (word)(signed word) print_sword::w#3 - //SEG218 [99] call print_word - //SEG219 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG218 [98] (word~) print_word::w#5 ← (word)(signed word) print_sword::w#3 + //SEG219 [99] call print_word + //SEG220 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG220 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG221 [101] phi (word) print_word::w#3 = (word~) print_word::w#5 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG221 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG222 [101] phi (word) print_word::w#3 = (word~) print_word::w#5 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG222 print_sword::@return + //SEG223 print_sword::@return breturn: - //SEG223 [100] return + //SEG224 [100] return rts } -//SEG224 print_word +//SEG225 print_word // Print a word as HEX print_word: { .label w = $b - //SEG225 [102] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 + //SEG226 [102] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG226 [103] call print_byte - //SEG227 [74] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG227 [103] call print_byte + //SEG228 [74] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG228 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy - //SEG229 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG229 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy + //SEG230 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG230 print_word::@1 + //SEG231 print_word::@1 b1: - //SEG231 [104] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 + //SEG232 [104] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG232 [105] call print_byte - //SEG233 [74] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG233 [105] call print_byte + //SEG234 [74] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG234 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG235 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG235 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG236 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG236 print_word::@return + //SEG237 print_word::@return breturn: - //SEG237 [106] return + //SEG238 [106] return rts } -//SEG238 print_sbyte +//SEG239 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = $a - //SEG239 [107] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG240 [107] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG240 [108] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG241 [108] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG241 print_sbyte::@3 + //SEG242 print_sbyte::@3 b3: - //SEG242 [109] call print_char - //SEG243 [82] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG243 [109] call print_char + //SEG244 [82] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG244 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG245 [82] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG245 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG246 [82] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG246 [110] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG247 [110] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG247 [110] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG248 [110] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG248 print_sbyte::@2 + //SEG249 print_sbyte::@2 b2: - //SEG249 [111] (byte~) print_byte::b#10 ← (byte)(signed byte) print_sbyte::b#4 - //SEG250 [112] call print_byte - //SEG251 [74] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG250 [111] (byte~) print_byte::b#10 ← (byte)(signed byte) print_sbyte::b#4 + //SEG251 [112] call print_byte + //SEG252 [74] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG252 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG253 [74] phi (byte) print_byte::b#8 = (byte~) print_byte::b#10 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG253 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG254 [74] phi (byte) print_byte::b#8 = (byte~) print_byte::b#10 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG254 print_sbyte::@return + //SEG255 print_sbyte::@return breturn: - //SEG255 [113] return + //SEG256 [113] return rts - //SEG256 [114] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG257 [114] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG257 print_sbyte::@1 + //SEG258 print_sbyte::@1 b1: - //SEG258 [115] call print_char - //SEG259 [82] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG259 [115] call print_char + //SEG260 [82] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG260 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG261 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG261 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG262 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b5 - //SEG262 print_sbyte::@5 + //SEG263 print_sbyte::@5 b5: - //SEG263 [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG264 [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -5988,99 +5989,98 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG264 mul8su +//SEG265 mul8su // Multiply a signed byte and an unsigned byte (into a signed word) // Fixes offsets introduced by using unsigned multiplication mul8su: { .const b = sin8u_table.amplitude+1 .label m = $f .label return = $f - //SEG265 [117] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8su::a#0 -- vbuxx=vbuyy + //SEG266 [117] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8su::a#0 -- vbuxx=vbuyy tya tax - //SEG266 [118] call mul8u - //SEG267 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG267 [118] call mul8u + //SEG268 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] mul8u_from_mul8su: - //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 + //SEG269 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG270 [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 + //SEG271 [119] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b4 - //SEG271 mul8su::@4 + //SEG272 mul8su::@4 b4: - //SEG272 [120] (word) mul8su::m#0 ← (word) mul8u::return#2 - //SEG273 [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 -- vbsyy_ge_0_then_la1 + //SEG273 [120] (word) mul8su::m#0 ← (word) mul8u::return#2 + //SEG274 [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 -- vbsyy_ge_0_then_la1 cpy #0 bpl b1_from_b4 jmp b2 - //SEG274 mul8su::@2 + //SEG275 mul8su::@2 b2: - //SEG275 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG276 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG276 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG277 [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 + //SEG278 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #b - //SEG278 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa + //SEG279 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG279 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG280 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] b1_from_b2: b1_from_b4: - //SEG280 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG281 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy jmp b1 - //SEG281 mul8su::@1 + //SEG282 mul8su::@1 b1: jmp breturn - //SEG282 mul8su::@return + //SEG283 mul8su::@return breturn: - //SEG283 [127] return + //SEG284 [127] return rts } -//SEG284 mul8u -// Simple binary multiplication implementation +//SEG285 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $b .label res = $f .label return = $f - //SEG285 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG286 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG286 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG287 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //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 + //SEG288 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG289 [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 - //SEG289 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG290 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG290 mul8u::@1 + //SEG291 mul8u::@1 b1: - //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 + //SEG292 [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 - //SEG292 mul8u::@return + //SEG293 mul8u::@return breturn: - //SEG293 [132] return + //SEG294 [132] return rts - //SEG294 mul8u::@2 + //SEG295 mul8u::@2 b2: - //SEG295 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG296 [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 - //SEG296 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG297 [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 - //SEG297 mul8u::@7 + //SEG298 mul8u::@7 b7: - //SEG298 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG299 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -6088,28 +6088,28 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG299 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG300 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG300 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG301 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG301 mul8u::@4 + //SEG302 mul8u::@4 b4: - //SEG302 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG303 [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 - //SEG303 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG304 [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 - //SEG304 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG305 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //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 + //SEG306 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG307 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG308 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG308 sin8s +//SEG309 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -6122,7 +6122,7 @@ sin8s: { .label x3 = $15 .label usinx = $16 .label isUpper = $a - //SEG309 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG310 [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 @@ -6132,9 +6132,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG310 sin8s::@5 + //SEG311 sin8s::@5 b5: - //SEG311 [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG312 [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 - //SEG312 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG313 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //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 + //SEG314 [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 - //SEG314 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG315 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG315 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG316 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG316 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG317 [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 - //SEG317 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG318 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG318 sin8s::@1 + //SEG319 sin8s::@1 b1: - //SEG319 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG320 [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 @@ -6168,9 +6168,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG320 sin8s::@6 + //SEG321 sin8s::@6 b6: - //SEG321 [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG322 [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 - //SEG322 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG323 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG323 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG324 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG324 sin8s::@2 + //SEG325 sin8s::@2 b2: - //SEG325 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG326 [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 - //SEG326 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG327 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG327 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG328 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG328 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG329 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG329 [149] call mulu8_sel - //SEG330 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG330 [149] call mulu8_sel + //SEG331 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //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 + //SEG332 [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 - //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 + //SEG333 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG334 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG334 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG335 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 jmp b10 - //SEG335 sin8s::@10 + //SEG336 sin8s::@10 b10: - //SEG336 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG337 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG337 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG338 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG338 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG339 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG339 [154] call mulu8_sel - //SEG340 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG340 [154] call mulu8_sel + //SEG341 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //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 + //SEG342 [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 - //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 + //SEG343 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG344 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG344 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG345 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 jmp b11 - //SEG345 sin8s::@11 + //SEG346 sin8s::@11 b11: - //SEG346 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG347 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG347 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG348 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG348 [158] call mulu8_sel - //SEG349 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG349 [158] call mulu8_sel + //SEG350 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //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 + //SEG351 [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 - //SEG351 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG352 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG352 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG353 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG353 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG354 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 jmp b12 - //SEG354 sin8s::@12 + //SEG355 sin8s::@12 b12: - //SEG355 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG356 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG356 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG357 [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 - //SEG357 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG358 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG358 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG359 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG359 [164] call mulu8_sel - //SEG360 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG360 [164] call mulu8_sel + //SEG361 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //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 + //SEG362 [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 - //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 + //SEG363 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG364 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG364 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG365 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 jmp b13 - //SEG365 sin8s::@13 + //SEG366 sin8s::@13 b13: - //SEG366 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG367 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG367 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG368 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG368 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG369 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG369 [169] call mulu8_sel - //SEG370 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG370 [169] call mulu8_sel + //SEG371 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //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 + //SEG372 [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 - //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 + //SEG373 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG374 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG374 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG375 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 jmp b14 - //SEG375 sin8s::@14 + //SEG376 sin8s::@14 b14: - //SEG376 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //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 + //SEG377 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG378 [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 - //SEG378 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG379 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG379 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG380 [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 - //SEG380 sin8s::@7 + //SEG381 sin8s::@7 b7: - //SEG381 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG382 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG382 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG383 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG383 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG384 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG384 sin8s::@3 + //SEG385 sin8s::@3 b3: - //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 + //SEG386 [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 - //SEG386 sin8s::@8 + //SEG387 sin8s::@8 b8: - //SEG387 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG388 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG388 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG389 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG389 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG390 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG390 sin8s::@4 + //SEG391 sin8s::@4 b4: jmp breturn - //SEG391 sin8s::@return + //SEG392 sin8s::@return breturn: - //SEG392 [180] return + //SEG393 [180] return rts - //SEG393 sin8s::@18 + //SEG394 sin8s::@18 b18: - //SEG394 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG395 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4_from_b18 } -//SEG395 mulu8_sel +//SEG396 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { .label _0 = $f .label _1 = $f .label select = $11 - //SEG396 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - //SEG397 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG397 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + //SEG398 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG398 [185] call mul8u - //SEG399 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG399 [185] call mul8u + //SEG400 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] mul8u_from_mulu8_sel: - //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 + //SEG401 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG402 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG402 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG403 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b2 - //SEG403 mulu8_sel::@2 + //SEG404 mulu8_sel::@2 b2: - //SEG404 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - //SEG405 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG405 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + //SEG406 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -6374,37 +6374,37 @@ mulu8_sel: { dey bne !- !e: - //SEG406 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG407 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 jmp breturn - //SEG407 mulu8_sel::@return + //SEG408 mulu8_sel::@return breturn: - //SEG408 [190] return + //SEG409 [190] return rts } -//SEG409 div16u +//SEG410 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { .label return = $12 - //SEG410 [192] call divr16u - //SEG411 [196] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG411 [192] call divr16u + //SEG412 [196] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG412 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG413 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG413 div16u::@2 + //SEG414 div16u::@2 b2: - //SEG414 [194] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG415 [194] (word) div16u::return#0 ← (word) divr16u::return#2 jmp breturn - //SEG415 div16u::@return + //SEG416 div16u::@return breturn: - //SEG416 [195] return + //SEG417 [195] return rts } -//SEG417 divr16u +//SEG418 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6414,66 +6414,66 @@ divr16u: { .label dividend = 4 .label quotient = $12 .label return = $12 - //SEG418 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG419 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG419 [197] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG420 [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 - //SEG420 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG421 [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 - //SEG421 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG422 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG422 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG423 [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 - //SEG423 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG424 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //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 + //SEG425 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG426 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG427 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG428 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG428 divr16u::@1 + //SEG429 divr16u::@1 b1: - //SEG429 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG430 [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 - //SEG430 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG431 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG431 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG432 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG432 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG433 [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 - //SEG433 divr16u::@4 + //SEG434 divr16u::@4 b4: - //SEG434 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG435 [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 - //SEG435 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG436 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG436 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG437 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG437 divr16u::@2 + //SEG438 divr16u::@2 b2: - //SEG438 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [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 - //SEG439 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG440 [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 - //SEG440 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG441 [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 @@ -6483,14 +6483,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG441 divr16u::@5 + //SEG442 divr16u::@5 b5: - //SEG442 [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG443 [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG443 [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG444 [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 - //SEG444 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG445 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //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 + //SEG446 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG447 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG447 divr16u::@3 + //SEG448 divr16u::@3 b3: - //SEG448 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG449 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG450 [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 + //SEG451 divr16u::@6 b6: - //SEG451 [212] (word) rem16u#1 ← (word) divr16u::rem#10 + //SEG452 [212] (word) rem16u#1 ← (word) divr16u::rem#10 jmp breturn - //SEG452 divr16u::@return + //SEG453 divr16u::@return breturn: - //SEG453 [213] return + //SEG454 [213] return rts } -//SEG454 print_cls +//SEG455 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG455 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG456 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //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 + //SEG457 [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 - //SEG457 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG458 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG458 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG459 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG459 print_cls::@1 + //SEG460 print_cls::@1 b1: - //SEG460 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG461 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG461 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG462 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG463 [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 @@ -6556,9 +6556,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG463 print_cls::@return + //SEG464 print_cls::@return breturn: - //SEG464 [219] return + //SEG465 [219] return rts } print_hextab: .text "0123456789abcdef" @@ -7230,11 +7230,12 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER Score: 19474 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels // PI*2 in u[4.12] format .const PI2_u4f12 = $6488 // PI in u[4.12] format @@ -7244,30 +7245,30 @@ Score: 19474 .label rem16u = 2 .label print_char_cursor = $d .label print_line_cursor = 8 -//SEG2 @begin -//SEG3 [1] phi from @begin to @41 [phi:@begin->@41] -//SEG4 @41 -//SEG5 [2] call main -//SEG6 [4] phi from @41 to main [phi:@41->main] -//SEG7 [3] phi from @41 to @end [phi:@41->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @41 [phi:@begin->@41] +//SEG5 @41 +//SEG6 [2] call main +//SEG7 [4] phi from @41 to main [phi:@41->main] +//SEG8 [3] phi from @41 to @end [phi:@41->@end] +//SEG9 @end +//SEG10 main main: { .label tabsize = $14 - //SEG10 [5] call print_cls - //SEG11 [214] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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 - //SEG14 [7] call sin8u_table - //SEG15 [9] phi from main::@1 to sin8u_table [phi:main::@1->sin8u_table] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call sin8u_table + //SEG16 [9] phi from main::@1 to sin8u_table [phi:main::@1->sin8u_table] jsr sin8u_table - //SEG16 main::@return - //SEG17 [8] return + //SEG17 main::@return + //SEG18 [8] return rts sintab: .fill $14, 0 } -//SEG18 sin8u_table +//SEG19 sin8u_table // Generate unsigned byte sinus table in a min-max range // sintab - the table to generate into // tabsize - the number of sinus points (the size of the table) @@ -7285,267 +7286,267 @@ sin8u_table: { .label sintab = 4 .label x = 2 .label i = 6 - //SEG19 [10] call div16u - //SEG20 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG20 [10] call div16u + //SEG21 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] jsr div16u - //SEG21 [11] (word) div16u::return#2 ← (word) div16u::return#0 - //SEG22 sin8u_table::@3 - //SEG23 [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 - //SEG24 [13] call print_str - //SEG25 [86] phi from sin8u_table::@3 to print_str [phi:sin8u_table::@3->print_str] - //SEG26 [86] phi (byte*) print_char_cursor#105 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@3->print_str#0] -- pbuz1=pbuc1 + //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG23 sin8u_table::@3 + //SEG24 [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 + //SEG25 [13] call print_str + //SEG26 [86] phi from sin8u_table::@3 to print_str [phi:sin8u_table::@3->print_str] + //SEG27 [86] phi (byte*) print_char_cursor#105 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG27 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str [phi:sin8u_table::@3->print_str#1] -- pbuz1=pbuc1 + //SEG28 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str [phi:sin8u_table::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG28 sin8u_table::@4 - //SEG29 [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 -- vwuz1=vwuz2 + //SEG29 sin8u_table::@4 + //SEG30 [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 -- vwuz1=vwuz2 lda step sta print_word.w lda step+1 sta print_word.w+1 - //SEG30 [15] call print_word - //SEG31 [101] phi from sin8u_table::@4 to print_word [phi:sin8u_table::@4->print_word] - //SEG32 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@4->print_word#0] -- register_copy - //SEG33 [101] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@4->print_word#1] -- register_copy + //SEG31 [15] call print_word + //SEG32 [101] phi from sin8u_table::@4 to print_word [phi:sin8u_table::@4->print_word] + //SEG33 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@4->print_word#0] -- register_copy + //SEG34 [101] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@4->print_word#1] -- register_copy jsr print_word - //SEG34 [16] phi from sin8u_table::@4 to sin8u_table::@5 [phi:sin8u_table::@4->sin8u_table::@5] - //SEG35 sin8u_table::@5 - //SEG36 [17] call print_str - //SEG37 [86] phi from sin8u_table::@5 to print_str [phi:sin8u_table::@5->print_str] - //SEG38 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@5->print_str#0] -- register_copy - //SEG39 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@5->print_str#1] -- pbuz1=pbuc1 + //SEG35 [16] phi from sin8u_table::@4 to sin8u_table::@5 [phi:sin8u_table::@4->sin8u_table::@5] + //SEG36 sin8u_table::@5 + //SEG37 [17] call print_str + //SEG38 [86] phi from sin8u_table::@5 to print_str [phi:sin8u_table::@5->print_str] + //SEG39 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@5->print_str#0] -- register_copy + //SEG40 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@5->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG40 [18] phi from sin8u_table::@5 to sin8u_table::@6 [phi:sin8u_table::@5->sin8u_table::@6] - //SEG41 sin8u_table::@6 - //SEG42 [19] call print_byte - //SEG43 [74] phi from sin8u_table::@6 to print_byte [phi:sin8u_table::@6->print_byte] - //SEG44 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@6->print_byte#0] -- register_copy - //SEG45 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuz1=vbuc1 + //SEG41 [18] phi from sin8u_table::@5 to sin8u_table::@6 [phi:sin8u_table::@5->sin8u_table::@6] + //SEG42 sin8u_table::@6 + //SEG43 [19] call print_byte + //SEG44 [74] phi from sin8u_table::@6 to print_byte [phi:sin8u_table::@6->print_byte] + //SEG45 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@6->print_byte#0] -- register_copy + //SEG46 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@6->print_byte#1] -- vbuz1=vbuc1 lda #min sta print_byte.b jsr print_byte - //SEG46 [20] phi from sin8u_table::@6 to sin8u_table::@7 [phi:sin8u_table::@6->sin8u_table::@7] - //SEG47 sin8u_table::@7 - //SEG48 [21] call print_str - //SEG49 [86] phi from sin8u_table::@7 to print_str [phi:sin8u_table::@7->print_str] - //SEG50 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@7->print_str#0] -- register_copy - //SEG51 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@7->print_str#1] -- pbuz1=pbuc1 + //SEG47 [20] phi from sin8u_table::@6 to sin8u_table::@7 [phi:sin8u_table::@6->sin8u_table::@7] + //SEG48 sin8u_table::@7 + //SEG49 [21] call print_str + //SEG50 [86] phi from sin8u_table::@7 to print_str [phi:sin8u_table::@7->print_str] + //SEG51 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@7->print_str#0] -- register_copy + //SEG52 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@7->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG52 [22] phi from sin8u_table::@7 to sin8u_table::@8 [phi:sin8u_table::@7->sin8u_table::@8] - //SEG53 sin8u_table::@8 - //SEG54 [23] call print_byte - //SEG55 [74] phi from sin8u_table::@8 to print_byte [phi:sin8u_table::@8->print_byte] - //SEG56 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@8->print_byte#0] -- register_copy - //SEG57 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuz1=vbuc1 + //SEG53 [22] phi from sin8u_table::@7 to sin8u_table::@8 [phi:sin8u_table::@7->sin8u_table::@8] + //SEG54 sin8u_table::@8 + //SEG55 [23] call print_byte + //SEG56 [74] phi from sin8u_table::@8 to print_byte [phi:sin8u_table::@8->print_byte] + //SEG57 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@8->print_byte#0] -- register_copy + //SEG58 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@8->print_byte#1] -- vbuz1=vbuc1 lda #max sta print_byte.b jsr print_byte - //SEG58 [24] phi from sin8u_table::@8 to sin8u_table::@9 [phi:sin8u_table::@8->sin8u_table::@9] - //SEG59 sin8u_table::@9 - //SEG60 [25] call print_str - //SEG61 [86] phi from sin8u_table::@9 to print_str [phi:sin8u_table::@9->print_str] - //SEG62 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@9->print_str#0] -- register_copy - //SEG63 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@9->print_str#1] -- pbuz1=pbuc1 + //SEG59 [24] phi from sin8u_table::@8 to sin8u_table::@9 [phi:sin8u_table::@8->sin8u_table::@9] + //SEG60 sin8u_table::@9 + //SEG61 [25] call print_str + //SEG62 [86] phi from sin8u_table::@9 to print_str [phi:sin8u_table::@9->print_str] + //SEG63 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@9->print_str#0] -- register_copy + //SEG64 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@9->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG64 [26] phi from sin8u_table::@9 to sin8u_table::@10 [phi:sin8u_table::@9->sin8u_table::@10] - //SEG65 sin8u_table::@10 - //SEG66 [27] call print_byte - //SEG67 [74] phi from sin8u_table::@10 to print_byte [phi:sin8u_table::@10->print_byte] - //SEG68 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@10->print_byte#0] -- register_copy - //SEG69 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuz1=vbuc1 + //SEG65 [26] phi from sin8u_table::@9 to sin8u_table::@10 [phi:sin8u_table::@9->sin8u_table::@10] + //SEG66 sin8u_table::@10 + //SEG67 [27] call print_byte + //SEG68 [74] phi from sin8u_table::@10 to print_byte [phi:sin8u_table::@10->print_byte] + //SEG69 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@10->print_byte#0] -- register_copy + //SEG70 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@10->print_byte#1] -- vbuz1=vbuc1 lda #amplitude sta print_byte.b jsr print_byte - //SEG70 [28] phi from sin8u_table::@10 to sin8u_table::@11 [phi:sin8u_table::@10->sin8u_table::@11] - //SEG71 sin8u_table::@11 - //SEG72 [29] call print_str - //SEG73 [86] phi from sin8u_table::@11 to print_str [phi:sin8u_table::@11->print_str] - //SEG74 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@11->print_str#0] -- register_copy - //SEG75 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@11->print_str#1] -- pbuz1=pbuc1 + //SEG71 [28] phi from sin8u_table::@10 to sin8u_table::@11 [phi:sin8u_table::@10->sin8u_table::@11] + //SEG72 sin8u_table::@11 + //SEG73 [29] call print_str + //SEG74 [86] phi from sin8u_table::@11 to print_str [phi:sin8u_table::@11->print_str] + //SEG75 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@11->print_str#0] -- register_copy + //SEG76 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@11->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG76 [30] phi from sin8u_table::@11 to sin8u_table::@12 [phi:sin8u_table::@11->sin8u_table::@12] - //SEG77 sin8u_table::@12 - //SEG78 [31] call print_byte - //SEG79 [74] phi from sin8u_table::@12 to print_byte [phi:sin8u_table::@12->print_byte] - //SEG80 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@12->print_byte#0] -- register_copy - //SEG81 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuz1=vbuc1 + //SEG77 [30] phi from sin8u_table::@11 to sin8u_table::@12 [phi:sin8u_table::@11->sin8u_table::@12] + //SEG78 sin8u_table::@12 + //SEG79 [31] call print_byte + //SEG80 [74] phi from sin8u_table::@12 to print_byte [phi:sin8u_table::@12->print_byte] + //SEG81 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@12->print_byte#0] -- register_copy + //SEG82 [74] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@12->print_byte#1] -- vbuz1=vbuc1 lda #mid sta print_byte.b jsr print_byte - //SEG82 [32] phi from sin8u_table::@12 to sin8u_table::@13 [phi:sin8u_table::@12->sin8u_table::@13] - //SEG83 sin8u_table::@13 - //SEG84 [33] call print_ln - //SEG85 [69] phi from sin8u_table::@13 to print_ln [phi:sin8u_table::@13->print_ln] - //SEG86 [69] phi (byte*) print_line_cursor#23 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@13->print_ln#0] -- pbuz1=pbuc1 + //SEG83 [32] phi from sin8u_table::@12 to sin8u_table::@13 [phi:sin8u_table::@12->sin8u_table::@13] + //SEG84 sin8u_table::@13 + //SEG85 [33] call print_ln + //SEG86 [69] phi from sin8u_table::@13 to print_ln [phi:sin8u_table::@13->print_ln] + //SEG87 [69] phi (byte*) print_line_cursor#23 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:sin8u_table::@13->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG87 [34] phi from sin8u_table::@13 to sin8u_table::@1 [phi:sin8u_table::@13->sin8u_table::@1] - //SEG88 [34] phi (word) sin8u_table::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#0] -- vwuz1=vbuc1 + //SEG88 [34] phi from sin8u_table::@13 to sin8u_table::@1 [phi:sin8u_table::@13->sin8u_table::@1] + //SEG89 [34] phi (word) sin8u_table::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG89 [34] phi (byte*) sin8u_table::sintab#2 = (const byte[20]) main::sintab#0 [phi:sin8u_table::@13->sin8u_table::@1#1] -- pbuz1=pbuc1 + //SEG90 [34] phi (byte*) sin8u_table::sintab#2 = (const byte[20]) main::sintab#0 [phi:sin8u_table::@13->sin8u_table::@1#1] -- pbuz1=pbuc1 lda #main.sintab sta sintab+1 - //SEG90 [34] phi (word) sin8u_table::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#2] -- vwuz1=vbuc1 + //SEG91 [34] phi (word) sin8u_table::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8u_table::@13->sin8u_table::@1#2] -- vwuz1=vbuc1 lda #<0 sta x sta x+1 - //SEG91 [34] phi from sin8u_table::@25 to sin8u_table::@1 [phi:sin8u_table::@25->sin8u_table::@1] - //SEG92 [34] phi (word) sin8u_table::i#10 = (word) sin8u_table::i#1 [phi:sin8u_table::@25->sin8u_table::@1#0] -- register_copy - //SEG93 [34] phi (byte*) sin8u_table::sintab#2 = (byte*) sin8u_table::sintab#1 [phi:sin8u_table::@25->sin8u_table::@1#1] -- register_copy - //SEG94 [34] phi (word) sin8u_table::x#10 = (word) sin8u_table::x#1 [phi:sin8u_table::@25->sin8u_table::@1#2] -- register_copy - //SEG95 sin8u_table::@1 + //SEG92 [34] phi from sin8u_table::@25 to sin8u_table::@1 [phi:sin8u_table::@25->sin8u_table::@1] + //SEG93 [34] phi (word) sin8u_table::i#10 = (word) sin8u_table::i#1 [phi:sin8u_table::@25->sin8u_table::@1#0] -- register_copy + //SEG94 [34] phi (byte*) sin8u_table::sintab#2 = (byte*) sin8u_table::sintab#1 [phi:sin8u_table::@25->sin8u_table::@1#1] -- register_copy + //SEG95 [34] phi (word) sin8u_table::x#10 = (word) sin8u_table::x#1 [phi:sin8u_table::@25->sin8u_table::@1#2] -- register_copy + //SEG96 sin8u_table::@1 b1: - //SEG96 [35] (word) sin8s::x#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 + //SEG97 [35] (word) sin8s::x#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 lda x sta sin8s.x lda x+1 sta sin8s.x+1 - //SEG97 [36] call sin8s + //SEG98 [36] call sin8s jsr sin8s - //SEG98 [37] (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#0 - //SEG99 sin8u_table::@15 - //SEG100 [38] (signed byte) sin8u_table::sinx#0 ← (signed byte) sin8s::return#2 -- vbsz1=vbsaa + //SEG99 [37] (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#0 + //SEG100 sin8u_table::@15 + //SEG101 [38] (signed byte) sin8u_table::sinx#0 ← (signed byte) sin8s::return#2 -- vbsz1=vbsaa sta sinx - //SEG101 [39] (signed byte) mul8su::a#0 ← (signed byte) sin8u_table::sinx#0 -- vbsyy=vbsz1 + //SEG102 [39] (signed byte) mul8su::a#0 ← (signed byte) sin8u_table::sinx#0 -- vbsyy=vbsz1 tay - //SEG102 [40] call mul8su + //SEG103 [40] call mul8su jsr mul8su - //SEG103 [41] (signed word) mul8su::return#2 ← (signed word)(word) mul8su::m#2 - //SEG104 sin8u_table::@16 - //SEG105 [42] (signed word) sin8u_table::sinx_sc#0 ← (signed word) mul8su::return#2 - //SEG106 [43] (byte~) sin8u_table::$21 ← > (signed word) sin8u_table::sinx_sc#0 -- vbuaa=_hi_vwsz1 + //SEG104 [41] (signed word) mul8su::return#2 ← (signed word)(word) mul8su::m#2 + //SEG105 sin8u_table::@16 + //SEG106 [42] (signed word) sin8u_table::sinx_sc#0 ← (signed word) mul8su::return#2 + //SEG107 [43] (byte~) sin8u_table::$21 ← > (signed word) sin8u_table::sinx_sc#0 -- vbuaa=_hi_vwsz1 lda sinx_sc+1 - //SEG107 [44] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21 -- vbuxx=vbuc1_plus_vbuaa + //SEG108 [44] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21 -- vbuxx=vbuc1_plus_vbuaa clc adc #mid tax - //SEG108 [45] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuxx + //SEG109 [45] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 -- _deref_pbuz1=vbuxx txa ldy #0 sta (sintab),y - //SEG109 [46] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 -- pbuz1=_inc_pbuz1 + //SEG110 [46] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 -- pbuz1=_inc_pbuz1 inc sintab bne !+ inc sintab+1 !: - //SEG110 [47] (byte*~) print_char_cursor#126 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG111 [47] (byte*~) print_char_cursor#126 ← (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 - //SEG111 [48] call print_str - //SEG112 [86] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] - //SEG113 [86] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#126 [phi:sin8u_table::@16->print_str#0] -- register_copy - //SEG114 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 + //SEG112 [48] call print_str + //SEG113 [86] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] + //SEG114 [86] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#126 [phi:sin8u_table::@16->print_str#0] -- register_copy + //SEG115 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 lda #str5 sta print_str.str+1 jsr print_str - //SEG115 sin8u_table::@17 - //SEG116 [49] (word) print_word::w#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 + //SEG116 sin8u_table::@17 + //SEG117 [49] (word) print_word::w#2 ← (word) sin8u_table::x#10 -- vwuz1=vwuz2 lda x sta print_word.w lda x+1 sta print_word.w+1 - //SEG117 [50] call print_word - //SEG118 [101] phi from sin8u_table::@17 to print_word [phi:sin8u_table::@17->print_word] - //SEG119 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@17->print_word#0] -- register_copy - //SEG120 [101] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@17->print_word#1] -- register_copy + //SEG118 [50] call print_word + //SEG119 [101] phi from sin8u_table::@17 to print_word [phi:sin8u_table::@17->print_word] + //SEG120 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@17->print_word#0] -- register_copy + //SEG121 [101] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@17->print_word#1] -- register_copy jsr print_word - //SEG121 [51] phi from sin8u_table::@17 to sin8u_table::@18 [phi:sin8u_table::@17->sin8u_table::@18] - //SEG122 sin8u_table::@18 - //SEG123 [52] call print_str - //SEG124 [86] phi from sin8u_table::@18 to print_str [phi:sin8u_table::@18->print_str] - //SEG125 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy - //SEG126 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 + //SEG122 [51] phi from sin8u_table::@17 to sin8u_table::@18 [phi:sin8u_table::@17->sin8u_table::@18] + //SEG123 sin8u_table::@18 + //SEG124 [52] call print_str + //SEG125 [86] phi from sin8u_table::@18 to print_str [phi:sin8u_table::@18->print_str] + //SEG126 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy + //SEG127 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 lda #str6 sta print_str.str+1 jsr print_str - //SEG127 sin8u_table::@19 - //SEG128 [53] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 + //SEG128 sin8u_table::@19 + //SEG129 [53] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0 -- vbsz1=vbsz2 lda sinx sta print_sbyte.b - //SEG129 [54] call print_sbyte + //SEG130 [54] call print_sbyte jsr print_sbyte - //SEG130 [55] phi from sin8u_table::@19 to sin8u_table::@20 [phi:sin8u_table::@19->sin8u_table::@20] - //SEG131 sin8u_table::@20 - //SEG132 [56] call print_str - //SEG133 [86] phi from sin8u_table::@20 to print_str [phi:sin8u_table::@20->print_str] - //SEG134 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy - //SEG135 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 + //SEG131 [55] phi from sin8u_table::@19 to sin8u_table::@20 [phi:sin8u_table::@19->sin8u_table::@20] + //SEG132 sin8u_table::@20 + //SEG133 [56] call print_str + //SEG134 [86] phi from sin8u_table::@20 to print_str [phi:sin8u_table::@20->print_str] + //SEG135 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy + //SEG136 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 lda #str7 sta print_str.str+1 jsr print_str - //SEG136 sin8u_table::@21 - //SEG137 [57] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 -- vwsz1=vwsz2 + //SEG137 sin8u_table::@21 + //SEG138 [57] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 -- vwsz1=vwsz2 lda sinx_sc sta print_sword.w lda sinx_sc+1 sta print_sword.w+1 - //SEG138 [58] call print_sword + //SEG139 [58] call print_sword jsr print_sword - //SEG139 [59] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] - //SEG140 sin8u_table::@22 - //SEG141 [60] call print_str - //SEG142 [86] phi from sin8u_table::@22 to print_str [phi:sin8u_table::@22->print_str] - //SEG143 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@22->print_str#0] -- register_copy - //SEG144 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@22->print_str#1] -- pbuz1=pbuc1 + //SEG140 [59] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] + //SEG141 sin8u_table::@22 + //SEG142 [60] call print_str + //SEG143 [86] phi from sin8u_table::@22 to print_str [phi:sin8u_table::@22->print_str] + //SEG144 [86] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@22->print_str#0] -- register_copy + //SEG145 [86] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@22->print_str#1] -- pbuz1=pbuc1 lda #str8 sta print_str.str+1 jsr print_str - //SEG145 sin8u_table::@23 - //SEG146 [61] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuz1=vbuxx + //SEG146 sin8u_table::@23 + //SEG147 [61] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0 -- vbuz1=vbuxx stx print_byte.b - //SEG147 [62] call print_byte - //SEG148 [74] phi from sin8u_table::@23 to print_byte [phi:sin8u_table::@23->print_byte] - //SEG149 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@23->print_byte#0] -- register_copy - //SEG150 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@23->print_byte#1] -- register_copy + //SEG148 [62] call print_byte + //SEG149 [74] phi from sin8u_table::@23 to print_byte [phi:sin8u_table::@23->print_byte] + //SEG150 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@23->print_byte#0] -- register_copy + //SEG151 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@23->print_byte#1] -- register_copy jsr print_byte - //SEG151 [63] phi from sin8u_table::@23 to sin8u_table::@24 [phi:sin8u_table::@23->sin8u_table::@24] - //SEG152 sin8u_table::@24 - //SEG153 [64] call print_ln - //SEG154 [69] phi from sin8u_table::@24 to print_ln [phi:sin8u_table::@24->print_ln] - //SEG155 [69] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#1 [phi:sin8u_table::@24->print_ln#0] -- register_copy + //SEG152 [63] phi from sin8u_table::@23 to sin8u_table::@24 [phi:sin8u_table::@23->sin8u_table::@24] + //SEG153 sin8u_table::@24 + //SEG154 [64] call print_ln + //SEG155 [69] phi from sin8u_table::@24 to print_ln [phi:sin8u_table::@24->print_ln] + //SEG156 [69] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#1 [phi:sin8u_table::@24->print_ln#0] -- register_copy jsr print_ln - //SEG156 sin8u_table::@25 - //SEG157 [65] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG157 sin8u_table::@25 + //SEG158 [65] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 -- vwuz1=vwuz1_plus_vwuz2 lda x clc adc step @@ -7553,12 +7554,12 @@ sin8u_table: { lda x+1 adc step+1 sta x+1 - //SEG158 [66] (word) sin8u_table::i#1 ← ++ (word) sin8u_table::i#10 -- vwuz1=_inc_vwuz1 + //SEG159 [66] (word) sin8u_table::i#1 ← ++ (word) sin8u_table::i#10 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG159 [67] if((word) sin8u_table::i#1<(const word) main::tabsize#0) goto sin8u_table::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG160 [67] if((word) sin8u_table::i#1<(const word) main::tabsize#0) goto sin8u_table::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.tabsize bcs !b1+ @@ -7571,8 +7572,8 @@ sin8u_table: { jmp b1 !b1: !: - //SEG160 sin8u_table::@return - //SEG161 [68] return + //SEG161 sin8u_table::@return + //SEG162 [68] return rts str: .text "step:@" str1: .text " min:@" @@ -7584,14 +7585,14 @@ sin8u_table: { str7: .text " scaled: @" str8: .text " trans: @" } -//SEG162 print_ln +//SEG163 print_ln // Print a newline print_ln: { - //SEG163 [70] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG164 [70] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG165 print_ln::@1 + //SEG164 [70] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG165 [70] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG166 print_ln::@1 b1: - //SEG166 [71] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG167 [71] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -7599,7 +7600,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG167 [72] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG168 [72] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -7608,111 +7609,111 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG168 print_ln::@return - //SEG169 [73] return + //SEG169 print_ln::@return + //SEG170 [73] return rts } -//SEG170 print_byte +//SEG171 print_byte // Print a byte as HEX print_byte: { .label b = $a - //SEG171 [75] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG172 [75] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG172 [76] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG173 [76] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG173 [77] call print_char - //SEG174 [82] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG175 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy - //SEG176 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG174 [77] call print_char + //SEG175 [82] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG176 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy + //SEG177 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG177 print_byte::@1 - //SEG178 [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG178 print_byte::@1 + //SEG179 [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG179 [79] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG180 [79] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG180 [80] call print_char - //SEG181 [82] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG182 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG183 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG181 [80] call print_char + //SEG182 [82] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG183 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG184 [82] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG184 print_byte::@return - //SEG185 [81] return + //SEG185 print_byte::@return + //SEG186 [81] return rts } -//SEG186 print_char +//SEG187 print_char // Print a single char print_char: { - //SEG187 [83] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG188 [83] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG188 [84] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 + //SEG189 [84] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG189 print_char::@return - //SEG190 [85] return + //SEG190 print_char::@return + //SEG191 [85] return rts } -//SEG191 print_str +//SEG192 print_str // Print a zero-terminated string print_str: { .label str = $b - //SEG192 [87] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG193 [87] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG194 [87] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG195 print_str::@1 + //SEG193 [87] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG194 [87] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG195 [87] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG196 print_str::@1 b1: - //SEG196 [88] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG197 [88] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG197 print_str::@return - //SEG198 [89] return + //SEG198 print_str::@return + //SEG199 [89] return rts - //SEG199 print_str::@2 + //SEG200 print_str::@2 b2: - //SEG200 [90] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 + //SEG201 [90] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG201 [91] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG202 [91] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG202 [92] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + //SEG203 [92] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG203 print_sword +//SEG204 print_sword // Print a signed word as HEX print_sword: { .label w = $b - //SEG204 [93] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG205 [93] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1 - //SEG205 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG206 print_sword::@2 - //SEG207 [95] call print_char - //SEG208 [82] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG209 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG210 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG206 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG207 print_sword::@2 + //SEG208 [95] call print_char + //SEG209 [82] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG210 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG211 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG211 print_sword::@4 - //SEG212 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG212 print_sword::@4 + //SEG213 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -7722,85 +7723,85 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG213 [97] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] - //SEG214 [97] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG215 [97] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy - //SEG216 print_sword::@1 + //SEG214 [97] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG215 [97] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG216 [97] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG217 print_sword::@1 b1: - //SEG217 [98] (word~) print_word::w#5 ← (word)(signed word) print_sword::w#3 - //SEG218 [99] call print_word - //SEG219 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG220 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG221 [101] phi (word) print_word::w#3 = (word~) print_word::w#5 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG218 [98] (word~) print_word::w#5 ← (word)(signed word) print_sword::w#3 + //SEG219 [99] call print_word + //SEG220 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG221 [101] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG222 [101] phi (word) print_word::w#3 = (word~) print_word::w#5 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word - //SEG222 print_sword::@return - //SEG223 [100] return + //SEG223 print_sword::@return + //SEG224 [100] return rts } -//SEG224 print_word +//SEG225 print_word // Print a word as HEX print_word: { .label w = $b - //SEG225 [102] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 + //SEG226 [102] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG226 [103] call print_byte - //SEG227 [74] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG228 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy - //SEG229 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG227 [103] call print_byte + //SEG228 [74] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG229 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy + //SEG230 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG230 print_word::@1 - //SEG231 [104] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 + //SEG231 print_word::@1 + //SEG232 [104] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG232 [105] call print_byte - //SEG233 [74] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG234 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG235 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG233 [105] call print_byte + //SEG234 [74] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG235 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG236 [74] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG236 print_word::@return - //SEG237 [106] return + //SEG237 print_word::@return + //SEG238 [106] return rts } -//SEG238 print_sbyte +//SEG239 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = $a - //SEG239 [107] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG240 [107] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG240 [108] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG241 print_sbyte::@3 - //SEG242 [109] call print_char - //SEG243 [82] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG244 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG245 [82] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG241 [108] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG242 print_sbyte::@3 + //SEG243 [109] call print_char + //SEG244 [82] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG245 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG246 [82] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG246 [110] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] - //SEG247 [110] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy - //SEG248 print_sbyte::@2 + //SEG247 [110] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG248 [110] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG249 print_sbyte::@2 b2: - //SEG249 [111] (byte~) print_byte::b#10 ← (byte)(signed byte) print_sbyte::b#4 - //SEG250 [112] call print_byte - //SEG251 [74] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG252 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG253 [74] phi (byte) print_byte::b#8 = (byte~) print_byte::b#10 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG250 [111] (byte~) print_byte::b#10 ← (byte)(signed byte) print_sbyte::b#4 + //SEG251 [112] call print_byte + //SEG252 [74] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG253 [74] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG254 [74] phi (byte) print_byte::b#8 = (byte~) print_byte::b#10 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG254 print_sbyte::@return - //SEG255 [113] return + //SEG255 print_sbyte::@return + //SEG256 [113] return rts - //SEG256 [114] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG257 print_sbyte::@1 + //SEG257 [114] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG258 print_sbyte::@1 b1: - //SEG258 [115] call print_char - //SEG259 [82] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG260 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG261 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG259 [115] call print_char + //SEG260 [82] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG261 [82] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG262 [82] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG262 print_sbyte::@5 - //SEG263 [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG263 print_sbyte::@5 + //SEG264 [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -7808,80 +7809,79 @@ print_sbyte: { sta b jmp b2 } -//SEG264 mul8su +//SEG265 mul8su // Multiply a signed byte and an unsigned byte (into a signed word) // Fixes offsets introduced by using unsigned multiplication mul8su: { .const b = sin8u_table.amplitude+1 .label m = $f .label return = $f - //SEG265 [117] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8su::a#0 -- vbuxx=vbuyy + //SEG266 [117] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8su::a#0 -- vbuxx=vbuyy tya tax - //SEG266 [118] call mul8u - //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 + //SEG267 [118] call mul8u + //SEG268 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG269 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG270 [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 - //SEG271 mul8su::@4 - //SEG272 [120] (word) mul8su::m#0 ← (word) mul8u::return#2 - //SEG273 [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 -- vbsyy_ge_0_then_la1 + //SEG271 [119] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG272 mul8su::@4 + //SEG273 [120] (word) mul8su::m#0 ← (word) mul8u::return#2 + //SEG274 [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 -- vbsyy_ge_0_then_la1 cpy #0 bpl b1 - //SEG274 mul8su::@2 - //SEG275 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG275 mul8su::@2 + //SEG276 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //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 + //SEG277 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG278 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #b - //SEG278 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa + //SEG279 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa sta m+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 + //SEG280 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG281 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG282 mul8su::@1 b1: - //SEG282 mul8su::@return - //SEG283 [127] return + //SEG283 mul8su::@return + //SEG284 [127] return rts } -//SEG284 mul8u -// Simple binary multiplication implementation +//SEG285 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = $b .label res = $f .label return = $f - //SEG285 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG286 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //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 + //SEG287 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG288 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG289 [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 - //SEG289 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG290 mul8u::@1 + //SEG290 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG291 mul8u::@1 b1: - //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 + //SEG292 [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 - //SEG292 mul8u::@return - //SEG293 [132] return + //SEG293 mul8u::@return + //SEG294 [132] return rts - //SEG294 mul8u::@2 + //SEG295 mul8u::@2 b2: - //SEG295 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG296 [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 - //SEG296 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG297 [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 - //SEG297 mul8u::@7 - //SEG298 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG298 mul8u::@7 + //SEG299 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7889,24 +7889,24 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //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 + //SEG300 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG301 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG302 mul8u::@4 b4: - //SEG302 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG303 [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 - //SEG303 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG304 [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 - //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 + //SEG305 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG306 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG307 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG308 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG308 sin8s +//SEG309 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -7919,7 +7919,7 @@ sin8s: { .label x3 = $15 .label usinx = $16 .label isUpper = $a - //SEG309 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG310 [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 @@ -7928,8 +7928,8 @@ sin8s: { cmp #PI_u4f12 sta x+1 - //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 + //SEG313 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG314 [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 - //SEG314 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG315 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG315 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG316 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b5: - //SEG316 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG317 [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 - //SEG317 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy - //SEG318 sin8s::@1 + //SEG318 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG319 sin8s::@1 b1: - //SEG319 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG320 [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 @@ -7960,8 +7960,8 @@ sin8s: { cmp #PI_u4f12 sbc x+1 sta x+1 - //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 + //SEG323 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG324 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG325 sin8s::@2 b2: - //SEG325 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG326 [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 - //SEG326 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG327 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG327 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG328 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 tax - //SEG328 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG329 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 tay - //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 + //SEG330 [149] call mulu8_sel + //SEG331 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG332 [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 - //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 + //SEG333 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG334 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG334 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 - //SEG335 sin8s::@10 - //SEG336 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG337 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG335 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG336 sin8s::@10 + //SEG337 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG338 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG338 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG339 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //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 + //SEG340 [154] call mulu8_sel + //SEG341 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG342 [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 - //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 + //SEG343 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG344 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG344 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 - //SEG345 sin8s::@11 - //SEG346 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG345 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG346 sin8s::@11 + //SEG347 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG347 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG348 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 tax - //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 + //SEG349 [158] call mulu8_sel + //SEG350 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG351 [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 - //SEG351 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG352 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG352 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG353 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG353 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 - //SEG354 sin8s::@12 - //SEG355 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG356 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG354 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG355 sin8s::@12 + //SEG356 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG357 [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 - //SEG357 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG358 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG358 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG359 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //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 + //SEG360 [164] call mulu8_sel + //SEG361 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG362 [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 - //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 + //SEG363 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG364 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG364 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 - //SEG365 sin8s::@13 - //SEG366 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG367 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG365 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG366 sin8s::@13 + //SEG367 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG368 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG368 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG369 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //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 + //SEG370 [169] call mulu8_sel + //SEG371 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG372 [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 - //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 + //SEG373 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG374 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG374 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 - //SEG375 sin8s::@14 - //SEG376 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //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 + //SEG375 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG376 sin8s::@14 + //SEG377 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG378 [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 - //SEG378 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG379 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG379 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG380 [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 - //SEG380 sin8s::@7 - //SEG381 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG381 sin8s::@7 + //SEG382 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //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 + //SEG383 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG384 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG385 sin8s::@3 b3: - //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 + //SEG386 [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 - //SEG386 sin8s::@8 - //SEG387 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG387 sin8s::@8 + //SEG388 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //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 + //SEG389 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG390 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG391 sin8s::@4 b4: - //SEG391 sin8s::@return - //SEG392 [180] return + //SEG392 sin8s::@return + //SEG393 [180] return rts - //SEG393 sin8s::@18 + //SEG394 sin8s::@18 b18: - //SEG394 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG395 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4 } -//SEG395 mulu8_sel +//SEG396 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip mulu8_sel: { .label _0 = $f .label _1 = $f .label select = $11 - //SEG396 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - //SEG397 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG397 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + //SEG398 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //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 + //SEG399 [185] call mul8u + //SEG400 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG401 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG402 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG402 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG403 mulu8_sel::@2 - //SEG404 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - //SEG405 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG403 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG404 mulu8_sel::@2 + //SEG405 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + //SEG406 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -8132,30 +8132,30 @@ mulu8_sel: { dey bne !- !e: - //SEG406 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG407 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 - //SEG407 mulu8_sel::@return - //SEG408 [190] return + //SEG408 mulu8_sel::@return + //SEG409 [190] return rts } -//SEG409 div16u +//SEG410 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { .label return = $12 - //SEG410 [192] call divr16u - //SEG411 [196] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG411 [192] call divr16u + //SEG412 [196] phi from div16u to divr16u [phi:div16u->divr16u] jsr divr16u - //SEG412 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG413 div16u::@2 - //SEG414 [194] (word) div16u::return#0 ← (word) divr16u::return#2 - //SEG415 div16u::@return - //SEG416 [195] return + //SEG413 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG414 div16u::@2 + //SEG415 [194] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG416 div16u::@return + //SEG417 [195] return rts } -//SEG417 divr16u +//SEG418 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -8165,55 +8165,55 @@ divr16u: { .label dividend = 4 .label quotient = $12 .label return = $12 - //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 + //SEG419 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG420 [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 - //SEG420 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG421 [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 - //SEG421 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG422 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG422 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG423 [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 - //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 + //SEG424 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG425 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG426 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG427 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG428 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG429 divr16u::@1 b1: - //SEG429 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG430 [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 - //SEG430 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG431 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG431 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG432 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG432 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG433 [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 - //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 + //SEG434 divr16u::@4 + //SEG435 [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 - //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 + //SEG436 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG437 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG438 divr16u::@2 b2: - //SEG438 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [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 - //SEG439 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG440 [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 - //SEG440 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG441 [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 @@ -8222,13 +8222,13 @@ divr16u: { cmp #main.tabsize sta rem+1 - //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 + //SEG445 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG446 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG447 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG448 divr16u::@3 b3: - //SEG448 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG449 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG450 [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 - //SEG450 divr16u::@6 - //SEG451 [212] (word) rem16u#1 ← (word) divr16u::rem#10 - //SEG452 divr16u::@return - //SEG453 [213] return + //SEG451 divr16u::@6 + //SEG452 [212] (word) rem16u#1 ← (word) divr16u::rem#10 + //SEG453 divr16u::@return + //SEG454 [213] return rts } -//SEG454 print_cls +//SEG455 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //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 + //SEG456 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG457 [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 - //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 + //SEG458 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG459 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG460 print_cls::@1 b1: - //SEG460 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG461 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG461 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG462 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG463 [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 - //SEG463 print_cls::@return - //SEG464 [219] return + //SEG464 print_cls::@return + //SEG465 [219] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/summin.log b/src/test/ref/summin.log index 25606e000..49dd9e8f4 100644 --- a/src/test/ref/summin.log +++ b/src/test/ref/summin.log @@ -277,112 +277,113 @@ Allocated zp ZP_BYTE:11 [ main::s4#0 ] Allocated zp ZP_BYTE:12 [ sum::return#3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _3 = $a .label s1 = 5 .label s2 = 7 .label s3 = 9 .label s4 = $b - //SEG10 [5] call sum - //SEG11 [18] phi from main to sum [phi:main->sum] + //SEG11 [5] call sum + //SEG12 [18] phi from main to sum [phi:main->sum] sum_from_main: - //SEG12 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->sum#0] -- vbuz1=vbuc1 + //SEG13 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->sum#0] -- vbuz1=vbuc1 lda #2 sta sum.b - //SEG13 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuz1=vbuc1 + //SEG14 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuz1=vbuc1 lda #1 sta sum.a jsr sum - //SEG14 [6] (byte) sum::return#0 ← (byte) sum::return#3 -- vbuz1=vbuz2 + //SEG15 [6] (byte) sum::return#0 ← (byte) sum::return#3 -- vbuz1=vbuz2 lda sum.return_3 sta sum.return jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] (byte) main::s1#0 ← (byte) sum::return#0 -- vbuz1=vbuz2 + //SEG17 [7] (byte) main::s1#0 ← (byte) sum::return#0 -- vbuz1=vbuz2 lda sum.return sta s1 - //SEG17 [8] call sum - //SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum] + //SEG18 [8] call sum + //SEG19 [18] phi from main::@1 to sum [phi:main::@1->sum] sum_from_b1: - //SEG19 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->sum#0] -- vbuz1=vbuc1 + //SEG20 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->sum#0] -- vbuz1=vbuc1 lda #4 sta sum.b - //SEG20 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuz1=vbuc1 + //SEG21 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuz1=vbuc1 lda #3 sta sum.a jsr sum - //SEG21 [9] (byte) sum::return#1 ← (byte) sum::return#3 -- vbuz1=vbuz2 + //SEG22 [9] (byte) sum::return#1 ← (byte) sum::return#3 -- vbuz1=vbuz2 lda sum.return_3 sta sum.return_1 jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuz1=vbuz2 + //SEG24 [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuz1=vbuz2 lda sum.return_1 sta s2 - //SEG24 [11] call sum - //SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum] + //SEG25 [11] call sum + //SEG26 [18] phi from main::@2 to sum [phi:main::@2->sum] sum_from_b2: - //SEG26 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 13 [phi:main::@2->sum#0] -- vbuz1=vbuc1 + //SEG27 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 13 [phi:main::@2->sum#0] -- vbuz1=vbuc1 lda #$d sta sum.b - //SEG27 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuz1=vbuc1 + //SEG28 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuz1=vbuc1 lda #9 sta sum.a jsr sum - //SEG28 [12] (byte) sum::return#2 ← (byte) sum::return#3 -- vbuz1=vbuz2 + //SEG29 [12] (byte) sum::return#2 ← (byte) sum::return#3 -- vbuz1=vbuz2 lda sum.return_3 sta sum.return_2 jmp b3 - //SEG29 main::@3 + //SEG30 main::@3 b3: - //SEG30 [13] (byte) main::s3#0 ← (byte) sum::return#2 -- vbuz1=vbuz2 + //SEG31 [13] (byte) main::s3#0 ← (byte) sum::return#2 -- vbuz1=vbuz2 lda sum.return_2 sta s3 - //SEG31 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG32 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuz1=vbuz2_plus_vbuz3 lda s1 clc adc s2 sta _3 - //SEG32 [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG33 [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 -- vbuz1=vbuz2_plus_vbuz3 lda _3 clc adc s3 sta s4 - //SEG33 [16] *((const byte*) screen#0) ← (byte) main::s4#0 -- _deref_pbuc1=vbuz1 + //SEG34 [16] *((const byte*) screen#0) ← (byte) main::s4#0 -- _deref_pbuc1=vbuz1 lda s4 sta screen jmp breturn - //SEG34 main::@return + //SEG35 main::@return breturn: - //SEG35 [17] return + //SEG36 [17] return rts } -//SEG36 sum +//SEG37 sum sum: { .label return = 4 .label return_1 = 6 @@ -390,15 +391,15 @@ sum: { .label return_3 = $c .label a = 2 .label b = 3 - //SEG37 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuz1=vbuz2_plus_vbuz3 + //SEG38 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuz1=vbuz2_plus_vbuz3 lda a clc adc b sta return_3 jmp breturn - //SEG38 sum::@return + //SEG39 sum::@return breturn: - //SEG39 [20] return + //SEG40 [20] return rts } @@ -448,99 +449,100 @@ Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ main::s1#0 ] Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:3 [ main::s3#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label s1 = 2 .label s3 = 3 - //SEG10 [5] call sum - //SEG11 [18] phi from main to sum [phi:main->sum] + //SEG11 [5] call sum + //SEG12 [18] phi from main to sum [phi:main->sum] sum_from_main: - //SEG12 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->sum#0] -- vbuaa=vbuc1 + //SEG13 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->sum#0] -- vbuaa=vbuc1 lda #2 - //SEG13 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuyy=vbuc1 + //SEG14 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuyy=vbuc1 ldy #1 jsr sum - //SEG14 [6] (byte) sum::return#0 ← (byte) sum::return#3 + //SEG15 [6] (byte) sum::return#0 ← (byte) sum::return#3 jmp b1 - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [7] (byte) main::s1#0 ← (byte) sum::return#0 -- vbuz1=vbuaa + //SEG17 [7] (byte) main::s1#0 ← (byte) sum::return#0 -- vbuz1=vbuaa sta s1 - //SEG17 [8] call sum - //SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum] + //SEG18 [8] call sum + //SEG19 [18] phi from main::@1 to sum [phi:main::@1->sum] sum_from_b1: - //SEG19 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->sum#0] -- vbuaa=vbuc1 + //SEG20 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->sum#0] -- vbuaa=vbuc1 lda #4 - //SEG20 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuyy=vbuc1 + //SEG21 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuyy=vbuc1 ldy #3 jsr sum - //SEG21 [9] (byte) sum::return#1 ← (byte) sum::return#3 + //SEG22 [9] (byte) sum::return#1 ← (byte) sum::return#3 jmp b2 - //SEG22 main::@2 + //SEG23 main::@2 b2: - //SEG23 [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuxx=vbuaa + //SEG24 [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuxx=vbuaa tax - //SEG24 [11] call sum - //SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum] + //SEG25 [11] call sum + //SEG26 [18] phi from main::@2 to sum [phi:main::@2->sum] sum_from_b2: - //SEG26 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 13 [phi:main::@2->sum#0] -- vbuaa=vbuc1 + //SEG27 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 13 [phi:main::@2->sum#0] -- vbuaa=vbuc1 lda #$d - //SEG27 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuyy=vbuc1 + //SEG28 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuyy=vbuc1 ldy #9 jsr sum - //SEG28 [12] (byte) sum::return#2 ← (byte) sum::return#3 + //SEG29 [12] (byte) sum::return#2 ← (byte) sum::return#3 jmp b3 - //SEG29 main::@3 + //SEG30 main::@3 b3: - //SEG30 [13] (byte) main::s3#0 ← (byte) sum::return#2 -- vbuz1=vbuaa + //SEG31 [13] (byte) main::s3#0 ← (byte) sum::return#2 -- vbuz1=vbuaa sta s3 - //SEG31 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuaa=vbuz1_plus_vbuxx + //SEG32 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuaa=vbuz1_plus_vbuxx txa clc adc s1 - //SEG32 [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 -- vbuaa=vbuaa_plus_vbuz1 + //SEG33 [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 -- vbuaa=vbuaa_plus_vbuz1 clc adc s3 - //SEG33 [16] *((const byte*) screen#0) ← (byte) main::s4#0 -- _deref_pbuc1=vbuaa + //SEG34 [16] *((const byte*) screen#0) ← (byte) main::s4#0 -- _deref_pbuc1=vbuaa sta screen jmp breturn - //SEG34 main::@return + //SEG35 main::@return breturn: - //SEG35 [17] return + //SEG36 [17] return rts } -//SEG36 sum +//SEG37 sum sum: { - //SEG37 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuaa=vbuyy_plus_vbuaa + //SEG38 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuaa=vbuyy_plus_vbuaa sty $ff clc adc $ff jmp breturn - //SEG38 sum::@return + //SEG39 sum::@return breturn: - //SEG39 [20] return + //SEG40 [20] return rts } @@ -622,77 +624,78 @@ reg byte a [ sum::return#3 ] FINAL ASSEMBLER Score: 74 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label s1 = 2 .label s3 = 3 - //SEG10 [5] call sum - //SEG11 [18] phi from main to sum [phi:main->sum] - //SEG12 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->sum#0] -- vbuaa=vbuc1 + //SEG11 [5] call sum + //SEG12 [18] phi from main to sum [phi:main->sum] + //SEG13 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->sum#0] -- vbuaa=vbuc1 lda #2 - //SEG13 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuyy=vbuc1 + //SEG14 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuyy=vbuc1 ldy #1 jsr sum - //SEG14 [6] (byte) sum::return#0 ← (byte) sum::return#3 - //SEG15 main::@1 - //SEG16 [7] (byte) main::s1#0 ← (byte) sum::return#0 -- vbuz1=vbuaa + //SEG15 [6] (byte) sum::return#0 ← (byte) sum::return#3 + //SEG16 main::@1 + //SEG17 [7] (byte) main::s1#0 ← (byte) sum::return#0 -- vbuz1=vbuaa sta s1 - //SEG17 [8] call sum - //SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum] - //SEG19 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->sum#0] -- vbuaa=vbuc1 + //SEG18 [8] call sum + //SEG19 [18] phi from main::@1 to sum [phi:main::@1->sum] + //SEG20 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->sum#0] -- vbuaa=vbuc1 lda #4 - //SEG20 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuyy=vbuc1 + //SEG21 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuyy=vbuc1 ldy #3 jsr sum - //SEG21 [9] (byte) sum::return#1 ← (byte) sum::return#3 - //SEG22 main::@2 - //SEG23 [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuxx=vbuaa + //SEG22 [9] (byte) sum::return#1 ← (byte) sum::return#3 + //SEG23 main::@2 + //SEG24 [10] (byte) main::s2#0 ← (byte) sum::return#1 -- vbuxx=vbuaa tax - //SEG24 [11] call sum - //SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum] - //SEG26 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 13 [phi:main::@2->sum#0] -- vbuaa=vbuc1 + //SEG25 [11] call sum + //SEG26 [18] phi from main::@2 to sum [phi:main::@2->sum] + //SEG27 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 13 [phi:main::@2->sum#0] -- vbuaa=vbuc1 lda #$d - //SEG27 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuyy=vbuc1 + //SEG28 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuyy=vbuc1 ldy #9 jsr sum - //SEG28 [12] (byte) sum::return#2 ← (byte) sum::return#3 - //SEG29 main::@3 - //SEG30 [13] (byte) main::s3#0 ← (byte) sum::return#2 -- vbuz1=vbuaa + //SEG29 [12] (byte) sum::return#2 ← (byte) sum::return#3 + //SEG30 main::@3 + //SEG31 [13] (byte) main::s3#0 ← (byte) sum::return#2 -- vbuz1=vbuaa sta s3 - //SEG31 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuaa=vbuz1_plus_vbuxx + //SEG32 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 -- vbuaa=vbuz1_plus_vbuxx txa clc adc s1 - //SEG32 [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 -- vbuaa=vbuaa_plus_vbuz1 + //SEG33 [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 -- vbuaa=vbuaa_plus_vbuz1 clc adc s3 - //SEG33 [16] *((const byte*) screen#0) ← (byte) main::s4#0 -- _deref_pbuc1=vbuaa + //SEG34 [16] *((const byte*) screen#0) ← (byte) main::s4#0 -- _deref_pbuc1=vbuaa sta screen - //SEG34 main::@return - //SEG35 [17] return + //SEG35 main::@return + //SEG36 [17] return rts } -//SEG36 sum +//SEG37 sum sum: { - //SEG37 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuaa=vbuyy_plus_vbuaa + //SEG38 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 -- vbuaa=vbuyy_plus_vbuaa sty $ff clc adc $ff - //SEG38 sum::@return - //SEG39 [20] return + //SEG39 sum::@return + //SEG40 [20] return rts } diff --git a/src/test/ref/test-address-of-param.log b/src/test/ref/test-address-of-param.log index 5de435b1b..5972b81b9 100644 --- a/src/test/ref/test-address-of-param.log +++ b/src/test/ref/test-address-of-param.log @@ -234,116 +234,117 @@ Allocated zp ZP_BYTE:6 [ main::b2#0 ] Allocated zp ZP_BYTE:7 [ main::b3#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label SCREEN = $400 .label b1 = 5 .label b2 = 6 .label b3 = 7 - //SEG9 [4] (byte) main::b1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG10 [4] (byte) main::b1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta b1 - //SEG10 [5] (byte) main::b2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG11 [5] (byte) main::b2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta b2 - //SEG11 [6] (byte) main::b3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG12 [6] (byte) main::b3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta b3 - //SEG12 [7] call setByte - //SEG13 [16] phi from main to setByte [phi:main->setByte] + //SEG13 [7] call setByte + //SEG14 [16] phi from main to setByte [phi:main->setByte] setByte_from_main: - //SEG14 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b1#0 [phi:main->setByte#0] -- pbuz1=pbuc1 + //SEG15 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b1#0 [phi:main->setByte#0] -- pbuz1=pbuc1 lda #b1 sta setByte.ptr+1 - //SEG15 [16] phi (byte) setByte::b#3 = (byte) 'c' [phi:main->setByte#1] -- vbuz1=vbuc1 + //SEG16 [16] phi (byte) setByte::b#3 = (byte) 'c' [phi:main->setByte#1] -- vbuz1=vbuc1 lda #'c' sta setByte.b jsr setByte - //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] + //SEG17 [8] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [9] call setByte - //SEG19 [16] phi from main::@1 to setByte [phi:main::@1->setByte] + //SEG19 [9] call setByte + //SEG20 [16] phi from main::@1 to setByte [phi:main::@1->setByte] setByte_from_b1: - //SEG20 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b2#0 [phi:main::@1->setByte#0] -- pbuz1=pbuc1 + //SEG21 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b2#0 [phi:main::@1->setByte#0] -- pbuz1=pbuc1 lda #b2 sta setByte.ptr+1 - //SEG21 [16] phi (byte) setByte::b#3 = (byte) 'm' [phi:main::@1->setByte#1] -- vbuz1=vbuc1 + //SEG22 [16] phi (byte) setByte::b#3 = (byte) 'm' [phi:main::@1->setByte#1] -- vbuz1=vbuc1 lda #'m' sta setByte.b jsr setByte - //SEG22 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG23 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG23 main::@2 + //SEG24 main::@2 b2: - //SEG24 [11] call setByte - //SEG25 [16] phi from main::@2 to setByte [phi:main::@2->setByte] + //SEG25 [11] call setByte + //SEG26 [16] phi from main::@2 to setByte [phi:main::@2->setByte] setByte_from_b2: - //SEG26 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b3#0 [phi:main::@2->setByte#0] -- pbuz1=pbuc1 + //SEG27 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b3#0 [phi:main::@2->setByte#0] -- pbuz1=pbuc1 lda #b3 sta setByte.ptr+1 - //SEG27 [16] phi (byte) setByte::b#3 = (byte) 'l' [phi:main::@2->setByte#1] -- vbuz1=vbuc1 + //SEG28 [16] phi (byte) setByte::b#3 = (byte) 'l' [phi:main::@2->setByte#1] -- vbuz1=vbuc1 lda #'l' sta setByte.b jsr setByte jmp b3 - //SEG28 main::@3 + //SEG29 main::@3 b3: - //SEG29 [12] *((const byte*) main::SCREEN#0) ← (byte) main::b1#0 -- _deref_pbuc1=vbuz1 + //SEG30 [12] *((const byte*) main::SCREEN#0) ← (byte) main::b1#0 -- _deref_pbuc1=vbuz1 lda b1 sta SCREEN - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::b2#0 -- _deref_pbuc1=vbuz1 + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::b2#0 -- _deref_pbuc1=vbuz1 lda b2 sta SCREEN+1 - //SEG31 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::b3#0 -- _deref_pbuc1=vbuz1 + //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::b3#0 -- _deref_pbuc1=vbuz1 lda b3 sta SCREEN+2 jmp breturn - //SEG32 main::@return + //SEG33 main::@return breturn: - //SEG33 [15] return + //SEG34 [15] return rts } -//SEG34 setByte +//SEG35 setByte setByte: { .label b = 2 .label ptr = 3 - //SEG35 [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 -- _deref_pbuz1=vbuz2 + //SEG36 [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 -- _deref_pbuz1=vbuz2 lda b ldy #0 sta (ptr),y jmp breturn - //SEG36 setByte::@return + //SEG37 setByte::@return breturn: - //SEG37 [18] return + //SEG38 [18] return rts } @@ -379,112 +380,113 @@ Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ main::b2#0 ] Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ main::b3#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label SCREEN = $400 .label b1 = 4 .label b2 = 5 .label b3 = 6 - //SEG9 [4] (byte) main::b1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG10 [4] (byte) main::b1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta b1 - //SEG10 [5] (byte) main::b2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG11 [5] (byte) main::b2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta b2 - //SEG11 [6] (byte) main::b3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG12 [6] (byte) main::b3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta b3 - //SEG12 [7] call setByte - //SEG13 [16] phi from main to setByte [phi:main->setByte] + //SEG13 [7] call setByte + //SEG14 [16] phi from main to setByte [phi:main->setByte] setByte_from_main: - //SEG14 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b1#0 [phi:main->setByte#0] -- pbuz1=pbuc1 + //SEG15 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b1#0 [phi:main->setByte#0] -- pbuz1=pbuc1 lda #b1 sta setByte.ptr+1 - //SEG15 [16] phi (byte) setByte::b#3 = (byte) 'c' [phi:main->setByte#1] -- vbuxx=vbuc1 + //SEG16 [16] phi (byte) setByte::b#3 = (byte) 'c' [phi:main->setByte#1] -- vbuxx=vbuc1 ldx #'c' jsr setByte - //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] + //SEG17 [8] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [9] call setByte - //SEG19 [16] phi from main::@1 to setByte [phi:main::@1->setByte] + //SEG19 [9] call setByte + //SEG20 [16] phi from main::@1 to setByte [phi:main::@1->setByte] setByte_from_b1: - //SEG20 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b2#0 [phi:main::@1->setByte#0] -- pbuz1=pbuc1 + //SEG21 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b2#0 [phi:main::@1->setByte#0] -- pbuz1=pbuc1 lda #b2 sta setByte.ptr+1 - //SEG21 [16] phi (byte) setByte::b#3 = (byte) 'm' [phi:main::@1->setByte#1] -- vbuxx=vbuc1 + //SEG22 [16] phi (byte) setByte::b#3 = (byte) 'm' [phi:main::@1->setByte#1] -- vbuxx=vbuc1 ldx #'m' jsr setByte - //SEG22 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG23 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG23 main::@2 + //SEG24 main::@2 b2: - //SEG24 [11] call setByte - //SEG25 [16] phi from main::@2 to setByte [phi:main::@2->setByte] + //SEG25 [11] call setByte + //SEG26 [16] phi from main::@2 to setByte [phi:main::@2->setByte] setByte_from_b2: - //SEG26 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b3#0 [phi:main::@2->setByte#0] -- pbuz1=pbuc1 + //SEG27 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b3#0 [phi:main::@2->setByte#0] -- pbuz1=pbuc1 lda #b3 sta setByte.ptr+1 - //SEG27 [16] phi (byte) setByte::b#3 = (byte) 'l' [phi:main::@2->setByte#1] -- vbuxx=vbuc1 + //SEG28 [16] phi (byte) setByte::b#3 = (byte) 'l' [phi:main::@2->setByte#1] -- vbuxx=vbuc1 ldx #'l' jsr setByte jmp b3 - //SEG28 main::@3 + //SEG29 main::@3 b3: - //SEG29 [12] *((const byte*) main::SCREEN#0) ← (byte) main::b1#0 -- _deref_pbuc1=vbuz1 + //SEG30 [12] *((const byte*) main::SCREEN#0) ← (byte) main::b1#0 -- _deref_pbuc1=vbuz1 lda b1 sta SCREEN - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::b2#0 -- _deref_pbuc1=vbuz1 + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::b2#0 -- _deref_pbuc1=vbuz1 lda b2 sta SCREEN+1 - //SEG31 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::b3#0 -- _deref_pbuc1=vbuz1 + //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::b3#0 -- _deref_pbuc1=vbuz1 lda b3 sta SCREEN+2 jmp breturn - //SEG32 main::@return + //SEG33 main::@return breturn: - //SEG33 [15] return + //SEG34 [15] return rts } -//SEG34 setByte +//SEG35 setByte setByte: { .label ptr = 2 - //SEG35 [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 -- _deref_pbuz1=vbuxx + //SEG36 [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (ptr),y jmp breturn - //SEG36 setByte::@return + //SEG37 setByte::@return breturn: - //SEG37 [18] return + //SEG38 [18] return rts } @@ -556,87 +558,88 @@ zp ZP_BYTE:6 [ main::b3#0 ] FINAL ASSEMBLER Score: 108 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { .label SCREEN = $400 .label b1 = 4 .label b2 = 5 .label b3 = 6 - //SEG9 [4] (byte) main::b1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG10 [4] (byte) main::b1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta b1 - //SEG10 [5] (byte) main::b2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG11 [5] (byte) main::b2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 sta b2 - //SEG11 [6] (byte) main::b3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG12 [6] (byte) main::b3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 sta b3 - //SEG12 [7] call setByte - //SEG13 [16] phi from main to setByte [phi:main->setByte] - //SEG14 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b1#0 [phi:main->setByte#0] -- pbuz1=pbuc1 + //SEG13 [7] call setByte + //SEG14 [16] phi from main to setByte [phi:main->setByte] + //SEG15 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b1#0 [phi:main->setByte#0] -- pbuz1=pbuc1 lda #b1 sta setByte.ptr+1 - //SEG15 [16] phi (byte) setByte::b#3 = (byte) 'c' [phi:main->setByte#1] -- vbuxx=vbuc1 + //SEG16 [16] phi (byte) setByte::b#3 = (byte) 'c' [phi:main->setByte#1] -- vbuxx=vbuc1 ldx #'c' jsr setByte - //SEG16 [8] phi from main to main::@1 [phi:main->main::@1] - //SEG17 main::@1 - //SEG18 [9] call setByte - //SEG19 [16] phi from main::@1 to setByte [phi:main::@1->setByte] - //SEG20 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b2#0 [phi:main::@1->setByte#0] -- pbuz1=pbuc1 + //SEG17 [8] phi from main to main::@1 [phi:main->main::@1] + //SEG18 main::@1 + //SEG19 [9] call setByte + //SEG20 [16] phi from main::@1 to setByte [phi:main::@1->setByte] + //SEG21 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b2#0 [phi:main::@1->setByte#0] -- pbuz1=pbuc1 lda #b2 sta setByte.ptr+1 - //SEG21 [16] phi (byte) setByte::b#3 = (byte) 'm' [phi:main::@1->setByte#1] -- vbuxx=vbuc1 + //SEG22 [16] phi (byte) setByte::b#3 = (byte) 'm' [phi:main::@1->setByte#1] -- vbuxx=vbuc1 ldx #'m' jsr setByte - //SEG22 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG23 main::@2 - //SEG24 [11] call setByte - //SEG25 [16] phi from main::@2 to setByte [phi:main::@2->setByte] - //SEG26 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b3#0 [phi:main::@2->setByte#0] -- pbuz1=pbuc1 + //SEG23 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG24 main::@2 + //SEG25 [11] call setByte + //SEG26 [16] phi from main::@2 to setByte [phi:main::@2->setByte] + //SEG27 [16] phi (byte*) setByte::ptr#3 = &(byte) main::b3#0 [phi:main::@2->setByte#0] -- pbuz1=pbuc1 lda #b3 sta setByte.ptr+1 - //SEG27 [16] phi (byte) setByte::b#3 = (byte) 'l' [phi:main::@2->setByte#1] -- vbuxx=vbuc1 + //SEG28 [16] phi (byte) setByte::b#3 = (byte) 'l' [phi:main::@2->setByte#1] -- vbuxx=vbuc1 ldx #'l' jsr setByte - //SEG28 main::@3 - //SEG29 [12] *((const byte*) main::SCREEN#0) ← (byte) main::b1#0 -- _deref_pbuc1=vbuz1 + //SEG29 main::@3 + //SEG30 [12] *((const byte*) main::SCREEN#0) ← (byte) main::b1#0 -- _deref_pbuc1=vbuz1 lda b1 sta SCREEN - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::b2#0 -- _deref_pbuc1=vbuz1 + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::b2#0 -- _deref_pbuc1=vbuz1 lda b2 sta SCREEN+1 - //SEG31 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::b3#0 -- _deref_pbuc1=vbuz1 + //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::b3#0 -- _deref_pbuc1=vbuz1 lda b3 sta SCREEN+2 - //SEG32 main::@return - //SEG33 [15] return + //SEG33 main::@return + //SEG34 [15] return rts } -//SEG34 setByte +//SEG35 setByte setByte: { .label ptr = 2 - //SEG35 [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 -- _deref_pbuz1=vbuxx + //SEG36 [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (ptr),y - //SEG36 setByte::@return - //SEG37 [18] return + //SEG37 setByte::@return + //SEG38 [18] return rts } diff --git a/src/test/ref/test-address-of.log b/src/test/ref/test-address-of.log index 5ccc0c3c6..25f347159 100644 --- a/src/test/ref/test-address-of.log +++ b/src/test/ref/test-address-of.log @@ -133,63 +133,64 @@ Allocated zp ZP_BYTE:2 [ main::b#2 main::b#1 ] Allocated zp ZP_BYTE:3 [ main::c#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label SCREEN = $400 .label bp = b .label c = 3 .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta b jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_plus_1 + //SEG16 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_plus_1 ldy bp iny sty c - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy b sta SCREEN,y - //SEG17 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG18 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #$b bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -209,61 +210,62 @@ Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::b#2 main::b#1 ] Uplifting [main] best 443 combination zp ZP_BYTE:2 [ main::b#2 main::b#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label SCREEN = $400 .label bp = b .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta b jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_plus_1 + //SEG16 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_plus_1 lda bp clc adc #1 - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy b sta SCREEN,y - //SEG17 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG18 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #$b bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } @@ -316,46 +318,47 @@ reg byte a [ main::c#0 ] FINAL ASSEMBLER Score: 341 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 .label bp = b .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta b - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_plus_1 + //SEG16 [6] (byte) main::c#0 ← *((const byte*) main::bp#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_plus_1 lda bp clc adc #1 - //SEG16 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG17 [7] *((const byte*) main::SCREEN#0 + (byte) main::b#2) ← (byte) main::c#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy b sta SCREEN,y - //SEG17 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 inc b - //SEG18 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda b cmp #$b bne b1 - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts } diff --git a/src/test/ref/test-comments-single.asm b/src/test/ref/test-comments-single.asm new file mode 100644 index 000000000..56b008e7f --- /dev/null +++ b/src/test/ref/test-comments-single.asm @@ -0,0 +1,31 @@ +// Tests that single-line comments are compiled correctly +// Has a bunch of comments that will be moved into the generated ASM +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // The C64 screen + .label SCREEN = $400 + .const a = 'a' +// The program entry point +main: { + ldx #0 + ldy #0 + b1: + jsr sum + sta SCREEN,x + inx + iny + cpy #$b + bne b1 + rts +} +// Adds up two bytes and returns the result +// a - the first byte +// b - the second byte +// Returns the sum pf the two bytes +sum: { + tya + clc + adc #a + rts +} diff --git a/src/test/ref/test-comments-single.cfg b/src/test/ref/test-comments-single.cfg new file mode 100644 index 000000000..0b97fde48 --- /dev/null +++ b/src/test/ref/test-comments-single.cfg @@ -0,0 +1,35 @@ +@begin: scope:[] from + [0] phi() + 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] phi() + to:main::@1 +main::@1: scope:[main] from main main::@3 + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::i#1 ) + [5] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::b#1 ) + [6] (byte) sum::b#0 ← (byte) main::b#2 + [7] call sum + [8] (byte) sum::return#0 ← (byte) sum::return#1 + to:main::@3 +main::@3: scope:[main] from main::@1 + [9] (byte~) main::$0 ← (byte) sum::return#0 + [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 + [11] (byte) main::i#1 ← ++ (byte) main::i#2 + [12] (byte) main::b#1 ← ++ (byte) main::b#2 + [13] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@3 + [14] return + to:@return +sum: scope:[sum] from main::@1 + [15] (byte) sum::return#1 ← (const byte) a#0 + (byte) sum::b#0 + to:sum::@return +sum::@return: scope:[sum] from sum + [16] return + to:@return diff --git a/src/test/ref/test-comments-single.log b/src/test/ref/test-comments-single.log new file mode 100644 index 000000000..e60a1e891 --- /dev/null +++ b/src/test/ref/test-comments-single.log @@ -0,0 +1,576 @@ + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte) a#0 ← (byte) 'a' + to:@2 +main: scope:[main] from @2 + (byte) a#2 ← phi( @2/(byte) a#4 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) main::b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) + (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@3/(byte) main::b#1 ) + (byte) a#1 ← phi( main/(byte) a#2 main::@3/(byte) a#3 ) + (byte) sum::a#0 ← (byte) a#1 + (byte) sum::b#0 ← (byte) main::b#2 + call sum + (byte) sum::return#0 ← (byte) sum::return#2 + to:main::@3 +main::@3: scope:[main] from main::@1 + (byte) a#3 ← phi( main::@1/(byte) a#1 ) + (byte) main::b#3 ← phi( main::@1/(byte) main::b#2 ) + (byte) main::i#2 ← phi( main::@1/(byte) main::i#3 ) + (byte) sum::return#3 ← phi( main::@1/(byte) sum::return#0 ) + (byte~) main::$0 ← (byte) sum::return#3 + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 + (byte) main::i#1 ← ++ (byte) main::i#2 + (byte) main::b#1 ← (byte) main::b#3 + rangenext(0,10) + (bool~) main::$1 ← (byte) main::b#1 != rangelast(0,10) + if((bool~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +sum: scope:[sum] from main::@1 + (byte) sum::b#1 ← phi( main::@1/(byte) sum::b#0 ) + (byte) sum::a#1 ← phi( main::@1/(byte) sum::a#0 ) + (byte~) sum::$0 ← (byte) sum::a#1 + (byte) sum::b#1 + (byte) sum::r#0 ← (byte~) sum::$0 + (byte) sum::return#1 ← (byte) sum::r#0 + to:sum::@return +sum::@return: scope:[sum] from sum + (byte) sum::return#4 ← phi( sum/(byte) sum::return#1 ) + (byte) sum::return#2 ← (byte) sum::return#4 + return + to:@return +@2: scope:[] from @begin + (byte) a#4 ← phi( @begin/(byte) a#0 ) + call main + to:@3 +@3: scope:[] from @2 + to:@end +@end: scope:[] from @3 + +SYMBOL TABLE SSA +(label) @2 +(label) @3 +(label) @begin +(label) @end +(byte*) SCREEN +(byte*) SCREEN#0 +(byte) a +(byte) a#0 +(byte) a#1 +(byte) a#2 +(byte) a#3 +(byte) a#4 +(void()) main() +(byte~) main::$0 +(bool~) main::$1 +(label) main::@1 +(label) main::@3 +(label) main::@return +(byte) main::b +(byte) main::b#0 +(byte) main::b#1 +(byte) main::b#2 +(byte) main::b#3 +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 +(byte) main::i#2 +(byte) main::i#3 +(byte()) sum((byte) sum::a , (byte) sum::b) +(byte~) sum::$0 +(label) sum::@return +(byte) sum::a +(byte) sum::a#0 +(byte) sum::a#1 +(byte) sum::b +(byte) sum::b#0 +(byte) sum::b#1 +(byte) sum::r +(byte) sum::r#0 +(byte) sum::return +(byte) sum::return#0 +(byte) sum::return#1 +(byte) sum::return#2 +(byte) sum::return#3 +(byte) sum::return#4 + +Culled Empty Block (label) @3 +Successful SSA optimization Pass2CullEmptyBlocks +Alias (byte) sum::return#0 = (byte) sum::return#3 +Alias (byte) main::i#2 = (byte) main::i#3 +Alias (byte) main::b#2 = (byte) main::b#3 +Alias (byte) a#1 = (byte) a#3 +Alias (byte) sum::return#1 = (byte) sum::r#0 (byte~) sum::$0 (byte) sum::return#4 (byte) sum::return#2 +Alias (byte) a#0 = (byte) a#4 +Successful SSA optimization Pass2AliasElimination +Self Phi Eliminated (byte) a#1 +Successful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte) a#2 (byte) a#0 +Redundant Phi (byte) a#1 (byte) a#2 +Redundant Phi (byte) sum::a#1 (byte) sum::a#0 +Redundant Phi (byte) sum::b#1 (byte) sum::b#0 +Successful SSA optimization Pass2RedundantPhiElimination +Simple Condition (bool~) main::$1 [16] if((byte) main::b#1!=rangelast(0,10)) goto main::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte) a#0 = 'a' +Constant (const byte) main::i#0 = 0 +Constant (const byte) main::b#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) sum::a#0 = a#0 +Successful SSA optimization Pass2ConstantIdentification +Resolved ranged next value main::b#1 ← ++ main::b#2 to ++ +Resolved ranged comparison value if(main::b#1!=rangelast(0,10)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 11 +Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) main::b#0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined sum::a#0 = (const byte) a#0 +Constant inlined main::b#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting main::@4(between main::@3 and main::@1) +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 +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to sum:7 + +Created 2 initial phi equivalence classes +Coalesced [15] main::b#4 ← main::b#1 +Coalesced [16] main::i#4 ← main::i#1 +Coalesced down to 2 phi equivalence classes +Culled Empty Block (label) main::@4 +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 + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + 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] phi() + to:main::@1 +main::@1: scope:[main] from main main::@3 + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::i#1 ) + [5] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::b#1 ) + [6] (byte) sum::b#0 ← (byte) main::b#2 + [7] call sum + [8] (byte) sum::return#0 ← (byte) sum::return#1 + to:main::@3 +main::@3: scope:[main] from main::@1 + [9] (byte~) main::$0 ← (byte) sum::return#0 + [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 + [11] (byte) main::i#1 ← ++ (byte) main::i#2 + [12] (byte) main::b#1 ← ++ (byte) main::b#2 + [13] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@3 + [14] return + to:@return +sum: scope:[sum] from main::@1 + [15] (byte) sum::return#1 ← (const byte) a#0 + (byte) sum::b#0 + to:sum::@return +sum::@return: scope:[sum] from sum + [16] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte*) SCREEN +(byte) a +(void()) main() +(byte~) main::$0 22.0 +(byte) main::b +(byte) main::b#1 16.5 +(byte) main::b#2 4.714285714285714 +(byte) main::i +(byte) main::i#1 7.333333333333333 +(byte) main::i#2 5.5 +(byte()) sum((byte) sum::a , (byte) sum::b) +(byte) sum::a +(byte) sum::b +(byte) sum::b#0 13.0 +(byte) sum::r +(byte) sum::return +(byte) sum::return#0 22.0 +(byte) sum::return#1 4.333333333333333 + +Initial phi equivalence classes +[ main::b#2 main::b#1 ] +[ main::i#2 main::i#1 ] +Added variable sum::b#0 to zero page equivalence class [ sum::b#0 ] +Added variable sum::return#0 to zero page equivalence class [ sum::return#0 ] +Added variable main::$0 to zero page equivalence class [ main::$0 ] +Added variable sum::return#1 to zero page equivalence class [ sum::return#1 ] +Complete equivalence classes +[ main::b#2 main::b#1 ] +[ main::i#2 main::i#1 ] +[ sum::b#0 ] +[ sum::return#0 ] +[ main::$0 ] +[ sum::return#1 ] +Allocated zp ZP_BYTE:2 [ main::b#2 main::b#1 ] +Allocated zp ZP_BYTE:3 [ main::i#2 main::i#1 ] +Allocated zp ZP_BYTE:4 [ sum::b#0 ] +Allocated zp ZP_BYTE:5 [ sum::return#0 ] +Allocated zp ZP_BYTE:6 [ main::$0 ] +Allocated zp ZP_BYTE:7 [ sum::return#1 ] + +INITIAL ASM +//SEG0 File Comments +// Tests that single-line comments are compiled correctly +// Has a bunch of comments that will be moved into the generated ASM +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels + // The C64 screen + .label SCREEN = $400 + .const a = 'a' +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +b2_from_bbegin: + jmp b2 +//SEG5 @2 +b2: +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +main_from_b2: + jsr main +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +bend_from_b2: + jmp bend +//SEG9 @end +bend: +//SEG10 main +// The program entry point +main: { + .label _0 = 6 + .label i = 3 + .label b = 2 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG13 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta b + jmp b1 + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + b1_from_b3: + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@3->main::@1#1] -- register_copy + jmp b1 + //SEG17 main::@1 + b1: + //SEG18 [6] (byte) sum::b#0 ← (byte) main::b#2 -- vbuz1=vbuz2 + lda b + sta sum.b + //SEG19 [7] call sum + jsr sum + //SEG20 [8] (byte) sum::return#0 ← (byte) sum::return#1 -- vbuz1=vbuz2 + lda sum.return_1 + sta sum.return + jmp b3 + //SEG21 main::@3 + b3: + //SEG22 [9] (byte~) main::$0 ← (byte) sum::return#0 -- vbuz1=vbuz2 + lda sum.return + sta _0 + //SEG23 [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _0 + ldy i + sta SCREEN,y + //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + inc i + //SEG25 [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuz1=_inc_vbuz1 + inc b + //SEG26 [13] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + lda b + cmp #$b + bne b1_from_b3 + jmp breturn + //SEG27 main::@return + breturn: + //SEG28 [14] return + rts +} +//SEG29 sum +// Adds up two bytes and returns the result +// a - the first byte +// b - the second byte +// Returns the sum pf the two bytes +sum: { + .label b = 4 + .label return = 5 + .label return_1 = 7 + //SEG30 [15] (byte) sum::return#1 ← (const byte) a#0 + (byte) sum::b#0 -- vbuz1=vbuc1_plus_vbuz2 + lda #a + clc + adc b + sta return_1 + jmp breturn + //SEG31 sum::@return + breturn: + //SEG32 [16] return + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [15] (byte) sum::return#1 ← (const byte) a#0 + (byte) sum::b#0 [ sum::return#1 ] ( main:2::sum:7 [ main::b#2 main::i#2 sum::return#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::b#2 main::b#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#2 main::i#1 ] +Statement [15] (byte) sum::return#1 ← (const byte) a#0 + (byte) sum::b#0 [ sum::return#1 ] ( main:2::sum:7 [ main::b#2 main::i#2 sum::return#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::b#2 main::b#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ main::i#2 main::i#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:4 [ sum::b#0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ sum::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 [ sum::return#1 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [main] 22: zp ZP_BYTE:6 [ main::$0 ] 21.21: zp ZP_BYTE:2 [ main::b#2 main::b#1 ] 12.83: zp ZP_BYTE:3 [ main::i#2 main::i#1 ] +Uplift Scope [sum] 22: zp ZP_BYTE:5 [ sum::return#0 ] 13: zp ZP_BYTE:4 [ sum::b#0 ] 4.33: zp ZP_BYTE:7 [ sum::return#1 ] +Uplift Scope [] + +Uplifting [main] best 512 combination reg byte a [ main::$0 ] reg byte y [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [sum] best 388 combination reg byte a [ sum::return#0 ] reg byte y [ sum::b#0 ] reg byte a [ sum::return#1 ] +Uplifting [] best 388 combination + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 File Comments +// Tests that single-line comments are compiled correctly +// Has a bunch of comments that will be moved into the generated ASM +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels + // The C64 screen + .label SCREEN = $400 + .const a = 'a' +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +b2_from_bbegin: + jmp b2 +//SEG5 @2 +b2: +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +main_from_b2: + jsr main +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +bend_from_b2: + jmp bend +//SEG9 @end +bend: +//SEG10 main +// The program entry point +main: { + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG12 [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 + //SEG13 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + ldy #0 + jmp b1 + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + b1_from_b3: + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@3->main::@1#1] -- register_copy + jmp b1 + //SEG17 main::@1 + b1: + //SEG18 [6] (byte) sum::b#0 ← (byte) main::b#2 + //SEG19 [7] call sum + jsr sum + //SEG20 [8] (byte) sum::return#0 ← (byte) sum::return#1 + jmp b3 + //SEG21 main::@3 + b3: + //SEG22 [9] (byte~) main::$0 ← (byte) sum::return#0 + //SEG23 [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + inx + //SEG25 [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuyy=_inc_vbuyy + iny + //SEG26 [13] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$b + bne b1_from_b3 + jmp breturn + //SEG27 main::@return + breturn: + //SEG28 [14] return + rts +} +//SEG29 sum +// Adds up two bytes and returns the result +// a - the first byte +// b - the second byte +// Returns the sum pf the two bytes +sum: { + //SEG30 [15] (byte) sum::return#1 ← (const byte) a#0 + (byte) sum::b#0 -- vbuaa=vbuc1_plus_vbuyy + tya + clc + adc #a + jmp breturn + //SEG31 sum::@return + breturn: + //SEG32 [16] return + rts +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b2 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label b1_from_b3 with b1 +Removing instruction b2_from_bbegin: +Removing instruction b2: +Removing instruction main_from_b2: +Removing instruction bend_from_b2: +Removing instruction b1_from_b3: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bend: +Removing instruction b1_from_main: +Removing instruction b3: +Removing instruction breturn: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp b1 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @2 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte) a +(const byte) a#0 a = (byte) 'a' +(void()) main() +(byte~) main::$0 reg byte a 22.0 +(label) main::@1 +(label) main::@3 +(label) main::@return +(byte) main::b +(byte) main::b#1 reg byte y 16.5 +(byte) main::b#2 reg byte y 4.714285714285714 +(byte) main::i +(byte) main::i#1 reg byte x 7.333333333333333 +(byte) main::i#2 reg byte x 5.5 +(byte()) sum((byte) sum::a , (byte) sum::b) +(label) sum::@return +(byte) sum::a +(byte) sum::b +(byte) sum::b#0 reg byte y 13.0 +(byte) sum::r +(byte) sum::return +(byte) sum::return#0 reg byte a 22.0 +(byte) sum::return#1 reg byte a 4.333333333333333 + +reg byte y [ main::b#2 main::b#1 ] +reg byte x [ main::i#2 main::i#1 ] +reg byte y [ sum::b#0 ] +reg byte a [ sum::return#0 ] +reg byte a [ main::$0 ] +reg byte a [ sum::return#1 ] + + +FINAL ASSEMBLER +Score: 253 + +//SEG0 File Comments +// Tests that single-line comments are compiled correctly +// Has a bunch of comments that will be moved into the generated ASM +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG2 Global Constants & labels + // The C64 screen + .label SCREEN = $400 + .const a = 'a' +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main +// The program entry point +main: { + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 + //SEG13 [5] phi (byte) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + ldy #0 + //SEG14 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG16 [5] phi (byte) main::b#2 = (byte) main::b#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG17 main::@1 + b1: + //SEG18 [6] (byte) sum::b#0 ← (byte) main::b#2 + //SEG19 [7] call sum + jsr sum + //SEG20 [8] (byte) sum::return#0 ← (byte) sum::return#1 + //SEG21 main::@3 + //SEG22 [9] (byte~) main::$0 ← (byte) sum::return#0 + //SEG23 [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x + //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + inx + //SEG25 [12] (byte) main::b#1 ← ++ (byte) main::b#2 -- vbuyy=_inc_vbuyy + iny + //SEG26 [13] if((byte) main::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$b + bne b1 + //SEG27 main::@return + //SEG28 [14] return + rts +} +//SEG29 sum +// Adds up two bytes and returns the result +// a - the first byte +// b - the second byte +// Returns the sum pf the two bytes +sum: { + //SEG30 [15] (byte) sum::return#1 ← (const byte) a#0 + (byte) sum::b#0 -- vbuaa=vbuc1_plus_vbuyy + tya + clc + adc #a + //SEG31 sum::@return + //SEG32 [16] return + rts +} + diff --git a/src/test/ref/test-comments-single.sym b/src/test/ref/test-comments-single.sym new file mode 100644 index 000000000..f4ddc32dd --- /dev/null +++ b/src/test/ref/test-comments-single.sym @@ -0,0 +1,34 @@ +(label) @2 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte) a +(const byte) a#0 a = (byte) 'a' +(void()) main() +(byte~) main::$0 reg byte a 22.0 +(label) main::@1 +(label) main::@3 +(label) main::@return +(byte) main::b +(byte) main::b#1 reg byte y 16.5 +(byte) main::b#2 reg byte y 4.714285714285714 +(byte) main::i +(byte) main::i#1 reg byte x 7.333333333333333 +(byte) main::i#2 reg byte x 5.5 +(byte()) sum((byte) sum::a , (byte) sum::b) +(label) sum::@return +(byte) sum::a +(byte) sum::b +(byte) sum::b#0 reg byte y 13.0 +(byte) sum::r +(byte) sum::return +(byte) sum::return#0 reg byte a 22.0 +(byte) sum::return#1 reg byte a 4.333333333333333 + +reg byte y [ main::b#2 main::b#1 ] +reg byte x [ main::i#2 main::i#1 ] +reg byte y [ sum::b#0 ] +reg byte a [ sum::return#0 ] +reg byte a [ main::$0 ] +reg byte a [ sum::return#1 ] diff --git a/src/test/ref/test-comments-usage.asm b/src/test/ref/test-comments-usage.asm new file mode 100644 index 000000000..5e25746ed --- /dev/null +++ b/src/test/ref/test-comments-usage.asm @@ -0,0 +1,11 @@ +// Tests that single-line comments are only included once in the output +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label SCREEN = $400 +// The program entry point +main: { + lda #'a' + sta SCREEN + rts +} diff --git a/src/test/ref/test-comments-usage.cfg b/src/test/ref/test-comments-usage.cfg new file mode 100644 index 000000000..2ad1a6c23 --- /dev/null +++ b/src/test/ref/test-comments-usage.cfg @@ -0,0 +1,15 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((const byte*) SCREEN#0) ← (byte) 'a' + to:main::@return +main::@return: scope:[main] from main + [5] return + to:@return diff --git a/src/test/ref/test-comments-usage.log b/src/test/ref/test-comments-usage.log new file mode 100644 index 000000000..986079b1d --- /dev/null +++ b/src/test/ref/test-comments-usage.log @@ -0,0 +1,208 @@ + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + to:@1 +main: scope:[main] from @1 + *((byte*) SCREEN#0) ← (byte) 'a' + to:main::@return +main::@return: scope:[main] from main + return + to:@return +@1: scope:[] from @begin + call main + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +SYMBOL TABLE SSA +(label) @1 +(label) @2 +(label) @begin +(label) @end +(byte*) SCREEN +(byte*) SCREEN#0 +(void()) main() +(label) main::@return + +Culled Empty Block (label) @2 +Successful SSA optimization Pass2CullEmptyBlocks +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Successful SSA optimization Pass2ConstantIdentification +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +CALL GRAPH +Calls in [] to main:2 + +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 @1 +Adding NOP phi() at start of @end + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((const byte*) SCREEN#0) ← (byte) 'a' + to:main::@return +main::@return: scope:[main] from main + [5] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte*) SCREEN +(void()) main() + +Initial phi equivalence classes +Complete equivalence classes + +INITIAL ASM +//SEG0 File Comments +// Tests that single-line comments are only included once in the output +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels + .label SCREEN = $400 +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG5 @1 +b1: +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +// The program entry point +main: { + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + lda #'a' + sta SCREEN + jmp breturn + //SEG11 main::@return + breturn: + //SEG12 [5] return + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [4] *((const byte*) SCREEN#0) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a + +REGISTER UPLIFT SCOPES +Uplift Scope [main] +Uplift Scope [] + +Uplifting [main] best 27 combination +Uplifting [] best 27 combination + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 File Comments +// Tests that single-line comments are only included once in the output +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" +//SEG2 Global Constants & labels + .label SCREEN = $400 +//SEG3 @begin +bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG5 @1 +b1: +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +// The program entry point +main: { + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + lda #'a' + sta SCREEN + jmp breturn + //SEG11 main::@return + breturn: + //SEG12 [5] return + rts +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction b1_from_bbegin: +Removing instruction b1: +Removing instruction bend_from_b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bend: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(void()) main() +(label) main::@return + + + +FINAL ASSEMBLER +Score: 12 + +//SEG0 File Comments +// Tests that single-line comments are only included once in the output +//SEG1 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG2 Global Constants & labels + .label SCREEN = $400 +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main +// The program entry point +main: { + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + lda #'a' + sta SCREEN + //SEG11 main::@return + //SEG12 [5] return + rts +} + diff --git a/src/test/ref/test-comments-usage.sym b/src/test/ref/test-comments-usage.sym new file mode 100644 index 000000000..a5a6b884e --- /dev/null +++ b/src/test/ref/test-comments-usage.sym @@ -0,0 +1,8 @@ +(label) @1 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(void()) main() +(label) main::@return + diff --git a/src/test/ref/test-comparisons.log b/src/test/ref/test-comparisons.log index c794c49d0..0b1efbc8f 100644 --- a/src/test/ref/test-comparisons.log +++ b/src/test/ref/test-comparisons.log @@ -3063,30 +3063,31 @@ Allocated zp ZP_BYTE:40 [ print_byte::$0 ] Allocated zp ZP_BYTE:41 [ print_byte::$2 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = $20 .label print_line_cursor = $18 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] +//SEG4 [1] phi from @begin to @21 [phi:@begin->@21] b21_from_bbegin: jmp b21 -//SEG4 @21 +//SEG5 @21 b21: -//SEG5 [2] call main -//SEG6 [4] phi from @21 to main [phi:@21->main] +//SEG6 [2] call main +//SEG7 [4] phi from @21 to main [phi:@21->main] main_from_b21: jsr main -//SEG7 [3] phi from @21 to @end [phi:@21->@end] +//SEG8 [3] phi from @21 to @end [phi:@21->@end] bend_from_b21: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label b = $27 .label a = 2 @@ -3111,1104 +3112,1104 @@ main: { .label r_57 = $15 .label r_58 = $16 .label r_59 = $17 - //SEG10 [5] call print_cls - //SEG11 [199] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [199] 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] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG13 [6] phi (byte*) print_line_cursor#27 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) print_line_cursor#27 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG15 [6] phi (byte*) print_char_cursor#120 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#120 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG16 [6] phi (byte) main::a#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@1#3] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::a#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@1#3] -- vbuz1=vbuc1 lda #7 sta a jmp b1 - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [7] (byte) main::b#0 ← (byte/word/signed word/dword/signed dword) 206 - (byte) main::a#10 -- vbuz1=vbuc1_minus_vbuz2 + //SEG19 [7] (byte) main::b#0 ← (byte/word/signed word/dword/signed dword) 206 - (byte) main::a#10 -- vbuz1=vbuc1_minus_vbuz2 lda #$ce sec sbc a sta b - //SEG19 [8] if((byte) main::a#10>=(byte) main::b#0) goto main::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG20 [8] if((byte) main::a#10>=(byte) main::b#0) goto main::@2 -- vbuz1_ge_vbuz2_then_la1 lda a cmp b bcs b2_from_b1 - //SEG20 [9] phi from main::@1 to main::@23 [phi:main::@1->main::@23] + //SEG21 [9] phi from main::@1 to main::@23 [phi:main::@1->main::@23] b23_from_b1: jmp b23 - //SEG21 main::@23 + //SEG22 main::@23 b23: - //SEG22 [10] phi from main::@23 to main::@2 [phi:main::@23->main::@2] + //SEG23 [10] phi from main::@23 to main::@2 [phi:main::@23->main::@2] b2_from_b23: - //SEG23 [10] phi (byte) main::r#40 = (byte) '+' [phi:main::@23->main::@2#0] -- vbuz1=vbuc1 + //SEG24 [10] phi (byte) main::r#40 = (byte) '+' [phi:main::@23->main::@2#0] -- vbuz1=vbuc1 lda #'+' sta r jmp b2 - //SEG24 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG25 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG25 [10] phi (byte) main::r#40 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG26 [10] phi (byte) main::r#40 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #'-' sta r jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [11] (byte) printu::a#0 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG28 [11] (byte) printu::a#0 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG28 [12] (byte) printu::b#0 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG29 [12] (byte) printu::b#0 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG29 [13] (byte) printu::res#0 ← (byte) main::r#40 -- vbuz1=vbuz2 + //SEG30 [13] (byte) printu::res#0 ← (byte) main::r#40 -- vbuz1=vbuz2 lda r sta printu.res - //SEG30 [14] call printu - //SEG31 [167] phi from main::@2 to printu [phi:main::@2->printu] + //SEG31 [14] call printu + //SEG32 [167] phi from main::@2 to printu [phi:main::@2->printu] printu_from_b2: - //SEG32 [167] phi (byte) printu::res#20 = (byte) printu::res#0 [phi:main::@2->printu#0] -- register_copy - //SEG33 [167] phi (byte) printu::b#20 = (byte) printu::b#0 [phi:main::@2->printu#1] -- register_copy - //SEG34 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@2->printu#2] -- pbuz1=pbuc1 + //SEG33 [167] phi (byte) printu::res#20 = (byte) printu::res#0 [phi:main::@2->printu#0] -- register_copy + //SEG34 [167] phi (byte) printu::b#20 = (byte) printu::b#0 [phi:main::@2->printu#1] -- register_copy + //SEG35 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@2->printu#2] -- pbuz1=pbuc1 lda #op sta printu.op+1 - //SEG35 [167] phi (byte) printu::a#20 = (byte) printu::a#0 [phi:main::@2->printu#3] -- register_copy - //SEG36 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#120 [phi:main::@2->printu#4] -- register_copy + //SEG36 [167] phi (byte) printu::a#20 = (byte) printu::a#0 [phi:main::@2->printu#3] -- register_copy + //SEG37 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#120 [phi:main::@2->printu#4] -- register_copy jsr printu jmp b46 - //SEG37 main::@46 + //SEG38 main::@46 b46: - //SEG38 [15] if((byte) main::a#10>=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@3 -- vbuz1_ge_vbuc1_then_la1 + //SEG39 [15] if((byte) main::a#10>=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@3 -- vbuz1_ge_vbuc1_then_la1 lda a cmp #$37 bcs b3_from_b46 - //SEG39 [16] phi from main::@46 to main::@24 [phi:main::@46->main::@24] + //SEG40 [16] phi from main::@46 to main::@24 [phi:main::@46->main::@24] b24_from_b46: jmp b24 - //SEG40 main::@24 + //SEG41 main::@24 b24: - //SEG41 [17] phi from main::@24 to main::@3 [phi:main::@24->main::@3] + //SEG42 [17] phi from main::@24 to main::@3 [phi:main::@24->main::@3] b3_from_b24: - //SEG42 [17] phi (byte) main::r#41 = (byte) '+' [phi:main::@24->main::@3#0] -- vbuz1=vbuc1 + //SEG43 [17] phi (byte) main::r#41 = (byte) '+' [phi:main::@24->main::@3#0] -- vbuz1=vbuc1 lda #'+' sta r_41 jmp b3 - //SEG43 [17] phi from main::@46 to main::@3 [phi:main::@46->main::@3] + //SEG44 [17] phi from main::@46 to main::@3 [phi:main::@46->main::@3] b3_from_b46: - //SEG44 [17] phi (byte) main::r#41 = (byte) '-' [phi:main::@46->main::@3#0] -- vbuz1=vbuc1 + //SEG45 [17] phi (byte) main::r#41 = (byte) '-' [phi:main::@46->main::@3#0] -- vbuz1=vbuc1 lda #'-' sta r_41 jmp b3 - //SEG45 main::@3 + //SEG46 main::@3 b3: - //SEG46 [18] (byte) printu::a#1 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG47 [18] (byte) printu::a#1 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG47 [19] (byte) printu::res#1 ← (byte) main::r#41 -- vbuz1=vbuz2 + //SEG48 [19] (byte) printu::res#1 ← (byte) main::r#41 -- vbuz1=vbuz2 lda r_41 sta printu.res - //SEG48 [20] call printu - //SEG49 [167] phi from main::@3 to printu [phi:main::@3->printu] + //SEG49 [20] call printu + //SEG50 [167] phi from main::@3 to printu [phi:main::@3->printu] printu_from_b3: - //SEG50 [167] phi (byte) printu::res#20 = (byte) printu::res#1 [phi:main::@3->printu#0] -- register_copy - //SEG51 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 + //SEG51 [167] phi (byte) printu::res#20 = (byte) printu::res#1 [phi:main::@3->printu#0] -- register_copy + //SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG52 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 + //SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 lda #op1 sta printu.op+1 - //SEG53 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy - //SEG54 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy + //SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy + //SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy jsr printu jmp b47 - //SEG55 main::@47 + //SEG56 main::@47 b47: - //SEG56 [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 -- vbuz1_ge_pbuc1_derefidx_vbuz2_then_la1 + //SEG57 [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 -- vbuz1_ge_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bcs b4_from_b47 - //SEG57 [22] phi from main::@47 to main::@25 [phi:main::@47->main::@25] + //SEG58 [22] phi from main::@47 to main::@25 [phi:main::@47->main::@25] b25_from_b47: jmp b25 - //SEG58 main::@25 + //SEG59 main::@25 b25: - //SEG59 [23] phi from main::@25 to main::@4 [phi:main::@25->main::@4] + //SEG60 [23] phi from main::@25 to main::@4 [phi:main::@25->main::@4] b4_from_b25: - //SEG60 [23] phi (byte) main::r#42 = (byte) '+' [phi:main::@25->main::@4#0] -- vbuz1=vbuc1 + //SEG61 [23] phi (byte) main::r#42 = (byte) '+' [phi:main::@25->main::@4#0] -- vbuz1=vbuc1 lda #'+' sta r_42 jmp b4 - //SEG61 [23] phi from main::@47 to main::@4 [phi:main::@47->main::@4] + //SEG62 [23] phi from main::@47 to main::@4 [phi:main::@47->main::@4] b4_from_b47: - //SEG62 [23] phi (byte) main::r#42 = (byte) '-' [phi:main::@47->main::@4#0] -- vbuz1=vbuc1 + //SEG63 [23] phi (byte) main::r#42 = (byte) '-' [phi:main::@47->main::@4#0] -- vbuz1=vbuc1 lda #'-' sta r_42 jmp b4 - //SEG63 main::@4 + //SEG64 main::@4 b4: - //SEG64 [24] (byte) printu::a#2 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG65 [24] (byte) printu::a#2 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG65 [25] (byte) printu::b#2 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG66 [25] (byte) printu::b#2 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG66 [26] (byte) printu::res#2 ← (byte) main::r#42 -- vbuz1=vbuz2 + //SEG67 [26] (byte) printu::res#2 ← (byte) main::r#42 -- vbuz1=vbuz2 lda r_42 sta printu.res - //SEG67 [27] call printu - //SEG68 [167] phi from main::@4 to printu [phi:main::@4->printu] + //SEG68 [27] call printu + //SEG69 [167] phi from main::@4 to printu [phi:main::@4->printu] printu_from_b4: - //SEG69 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy - //SEG70 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy - //SEG71 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 + //SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy + //SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy + //SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 lda #op2 sta printu.op+1 - //SEG72 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy - //SEG73 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy + //SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy + //SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy jsr printu jmp b48 - //SEG74 main::@48 + //SEG75 main::@48 b48: - //SEG75 [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 -- vbuz1_ge_vbuz1_then_la1 + //SEG76 [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 -- vbuz1_ge_vbuz1_then_la1 lda a cmp a bcs b5_from_b48 - //SEG76 [29] phi from main::@48 to main::@26 [phi:main::@48->main::@26] + //SEG77 [29] phi from main::@48 to main::@26 [phi:main::@48->main::@26] b26_from_b48: jmp b26 - //SEG77 main::@26 + //SEG78 main::@26 b26: - //SEG78 [30] phi from main::@26 to main::@5 [phi:main::@26->main::@5] + //SEG79 [30] phi from main::@26 to main::@5 [phi:main::@26->main::@5] b5_from_b26: - //SEG79 [30] phi (byte) main::r#43 = (byte) '+' [phi:main::@26->main::@5#0] -- vbuz1=vbuc1 + //SEG80 [30] phi (byte) main::r#43 = (byte) '+' [phi:main::@26->main::@5#0] -- vbuz1=vbuc1 lda #'+' sta r_43 jmp b5 - //SEG80 [30] phi from main::@48 to main::@5 [phi:main::@48->main::@5] + //SEG81 [30] phi from main::@48 to main::@5 [phi:main::@48->main::@5] b5_from_b48: - //SEG81 [30] phi (byte) main::r#43 = (byte) '-' [phi:main::@48->main::@5#0] -- vbuz1=vbuc1 + //SEG82 [30] phi (byte) main::r#43 = (byte) '-' [phi:main::@48->main::@5#0] -- vbuz1=vbuc1 lda #'-' sta r_43 jmp b5 - //SEG82 main::@5 + //SEG83 main::@5 b5: - //SEG83 [31] (byte) printu::a#3 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG84 [31] (byte) printu::a#3 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG84 [32] (byte) printu::b#3 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG85 [32] (byte) printu::b#3 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG85 [33] (byte) printu::res#3 ← (byte) main::r#43 -- vbuz1=vbuz2 + //SEG86 [33] (byte) printu::res#3 ← (byte) main::r#43 -- vbuz1=vbuz2 lda r_43 sta printu.res - //SEG86 [34] call printu - //SEG87 [167] phi from main::@5 to printu [phi:main::@5->printu] + //SEG87 [34] call printu + //SEG88 [167] phi from main::@5 to printu [phi:main::@5->printu] printu_from_b5: - //SEG88 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy - //SEG89 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy - //SEG90 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 + //SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy + //SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy + //SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 lda #op3 sta printu.op+1 - //SEG91 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy - //SEG92 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy + //SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy + //SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy jsr printu - //SEG93 [35] phi from main::@5 to main::@49 [phi:main::@5->main::@49] + //SEG94 [35] phi from main::@5 to main::@49 [phi:main::@5->main::@49] b49_from_b5: jmp b49 - //SEG94 main::@49 + //SEG95 main::@49 b49: - //SEG95 [36] call print_ln - //SEG96 [162] phi from main::@49 to print_ln [phi:main::@49->print_ln] + //SEG96 [36] call print_ln + //SEG97 [162] phi from main::@49 to print_ln [phi:main::@49->print_ln] print_ln_from_b49: - //SEG97 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#27 [phi:main::@49->print_ln#0] -- register_copy + //SEG98 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#27 [phi:main::@49->print_ln#0] -- register_copy jsr print_ln jmp b50 - //SEG98 main::@50 + //SEG99 main::@50 b50: - //SEG99 [37] if((byte) main::a#10<=(byte) main::b#0) goto main::@6 -- vbuz1_le_vbuz2_then_la1 + //SEG100 [37] if((byte) main::a#10<=(byte) main::b#0) goto main::@6 -- vbuz1_le_vbuz2_then_la1 lda b cmp a bcs b6_from_b50 - //SEG100 [38] phi from main::@50 to main::@27 [phi:main::@50->main::@27] + //SEG101 [38] phi from main::@50 to main::@27 [phi:main::@50->main::@27] b27_from_b50: jmp b27 - //SEG101 main::@27 + //SEG102 main::@27 b27: - //SEG102 [39] phi from main::@27 to main::@6 [phi:main::@27->main::@6] + //SEG103 [39] phi from main::@27 to main::@6 [phi:main::@27->main::@6] b6_from_b27: - //SEG103 [39] phi (byte) main::r#44 = (byte) '+' [phi:main::@27->main::@6#0] -- vbuz1=vbuc1 + //SEG104 [39] phi (byte) main::r#44 = (byte) '+' [phi:main::@27->main::@6#0] -- vbuz1=vbuc1 lda #'+' sta r_44 jmp b6 - //SEG104 [39] phi from main::@50 to main::@6 [phi:main::@50->main::@6] + //SEG105 [39] phi from main::@50 to main::@6 [phi:main::@50->main::@6] b6_from_b50: - //SEG105 [39] phi (byte) main::r#44 = (byte) '-' [phi:main::@50->main::@6#0] -- vbuz1=vbuc1 + //SEG106 [39] phi (byte) main::r#44 = (byte) '-' [phi:main::@50->main::@6#0] -- vbuz1=vbuc1 lda #'-' sta r_44 jmp b6 - //SEG106 main::@6 + //SEG107 main::@6 b6: - //SEG107 [40] (byte) printu::a#4 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG108 [40] (byte) printu::a#4 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG108 [41] (byte) printu::b#4 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG109 [41] (byte) printu::b#4 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG109 [42] (byte) printu::res#4 ← (byte) main::r#44 -- vbuz1=vbuz2 + //SEG110 [42] (byte) printu::res#4 ← (byte) main::r#44 -- vbuz1=vbuz2 lda r_44 sta printu.res - //SEG110 [43] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG111 [43] (byte*~) print_char_cursor#159 ← (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 - //SEG111 [44] call printu - //SEG112 [167] phi from main::@6 to printu [phi:main::@6->printu] + //SEG112 [44] call printu + //SEG113 [167] phi from main::@6 to printu [phi:main::@6->printu] printu_from_b6: - //SEG113 [167] phi (byte) printu::res#20 = (byte) printu::res#4 [phi:main::@6->printu#0] -- register_copy - //SEG114 [167] phi (byte) printu::b#20 = (byte) printu::b#4 [phi:main::@6->printu#1] -- register_copy - //SEG115 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@6->printu#2] -- pbuz1=pbuc1 + //SEG114 [167] phi (byte) printu::res#20 = (byte) printu::res#4 [phi:main::@6->printu#0] -- register_copy + //SEG115 [167] phi (byte) printu::b#20 = (byte) printu::b#4 [phi:main::@6->printu#1] -- register_copy + //SEG116 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@6->printu#2] -- pbuz1=pbuc1 lda #op4 sta printu.op+1 - //SEG116 [167] phi (byte) printu::a#20 = (byte) printu::a#4 [phi:main::@6->printu#3] -- register_copy - //SEG117 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#159 [phi:main::@6->printu#4] -- register_copy + //SEG117 [167] phi (byte) printu::a#20 = (byte) printu::a#4 [phi:main::@6->printu#3] -- register_copy + //SEG118 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#159 [phi:main::@6->printu#4] -- register_copy jsr printu jmp b51 - //SEG118 main::@51 + //SEG119 main::@51 b51: - //SEG119 [45] if((byte) main::a#10<=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@7 -- vbuz1_le_vbuc1_then_la1 + //SEG120 [45] if((byte) main::a#10<=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@7 -- vbuz1_le_vbuc1_then_la1 lda #$37 cmp a bcs b7_from_b51 - //SEG120 [46] phi from main::@51 to main::@28 [phi:main::@51->main::@28] + //SEG121 [46] phi from main::@51 to main::@28 [phi:main::@51->main::@28] b28_from_b51: jmp b28 - //SEG121 main::@28 + //SEG122 main::@28 b28: - //SEG122 [47] phi from main::@28 to main::@7 [phi:main::@28->main::@7] + //SEG123 [47] phi from main::@28 to main::@7 [phi:main::@28->main::@7] b7_from_b28: - //SEG123 [47] phi (byte) main::r#45 = (byte) '+' [phi:main::@28->main::@7#0] -- vbuz1=vbuc1 + //SEG124 [47] phi (byte) main::r#45 = (byte) '+' [phi:main::@28->main::@7#0] -- vbuz1=vbuc1 lda #'+' sta r_45 jmp b7 - //SEG124 [47] phi from main::@51 to main::@7 [phi:main::@51->main::@7] + //SEG125 [47] phi from main::@51 to main::@7 [phi:main::@51->main::@7] b7_from_b51: - //SEG125 [47] phi (byte) main::r#45 = (byte) '-' [phi:main::@51->main::@7#0] -- vbuz1=vbuc1 + //SEG126 [47] phi (byte) main::r#45 = (byte) '-' [phi:main::@51->main::@7#0] -- vbuz1=vbuc1 lda #'-' sta r_45 jmp b7 - //SEG126 main::@7 + //SEG127 main::@7 b7: - //SEG127 [48] (byte) printu::a#5 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG128 [48] (byte) printu::a#5 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG128 [49] (byte) printu::res#5 ← (byte) main::r#45 -- vbuz1=vbuz2 + //SEG129 [49] (byte) printu::res#5 ← (byte) main::r#45 -- vbuz1=vbuz2 lda r_45 sta printu.res - //SEG129 [50] call printu - //SEG130 [167] phi from main::@7 to printu [phi:main::@7->printu] + //SEG130 [50] call printu + //SEG131 [167] phi from main::@7 to printu [phi:main::@7->printu] printu_from_b7: - //SEG131 [167] phi (byte) printu::res#20 = (byte) printu::res#5 [phi:main::@7->printu#0] -- register_copy - //SEG132 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 + //SEG132 [167] phi (byte) printu::res#20 = (byte) printu::res#5 [phi:main::@7->printu#0] -- register_copy + //SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG133 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 + //SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 lda #op5 sta printu.op+1 - //SEG134 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy - //SEG135 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy + //SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy + //SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy jsr printu jmp b52 - //SEG136 main::@52 + //SEG137 main::@52 b52: - //SEG137 [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 -- vbuz1_le_pbuc1_derefidx_vbuz2_then_la1 + //SEG138 [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 -- vbuz1_le_pbuc1_derefidx_vbuz2_then_la1 ldy i lda cs,y cmp a bcs b8_from_b52 - //SEG138 [52] phi from main::@52 to main::@29 [phi:main::@52->main::@29] + //SEG139 [52] phi from main::@52 to main::@29 [phi:main::@52->main::@29] b29_from_b52: jmp b29 - //SEG139 main::@29 + //SEG140 main::@29 b29: - //SEG140 [53] phi from main::@29 to main::@8 [phi:main::@29->main::@8] + //SEG141 [53] phi from main::@29 to main::@8 [phi:main::@29->main::@8] b8_from_b29: - //SEG141 [53] phi (byte) main::r#46 = (byte) '+' [phi:main::@29->main::@8#0] -- vbuz1=vbuc1 + //SEG142 [53] phi (byte) main::r#46 = (byte) '+' [phi:main::@29->main::@8#0] -- vbuz1=vbuc1 lda #'+' sta r_46 jmp b8 - //SEG142 [53] phi from main::@52 to main::@8 [phi:main::@52->main::@8] + //SEG143 [53] phi from main::@52 to main::@8 [phi:main::@52->main::@8] b8_from_b52: - //SEG143 [53] phi (byte) main::r#46 = (byte) '-' [phi:main::@52->main::@8#0] -- vbuz1=vbuc1 + //SEG144 [53] phi (byte) main::r#46 = (byte) '-' [phi:main::@52->main::@8#0] -- vbuz1=vbuc1 lda #'-' sta r_46 jmp b8 - //SEG144 main::@8 + //SEG145 main::@8 b8: - //SEG145 [54] (byte) printu::a#6 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG146 [54] (byte) printu::a#6 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG146 [55] (byte) printu::b#6 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG147 [55] (byte) printu::b#6 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG147 [56] (byte) printu::res#6 ← (byte) main::r#46 -- vbuz1=vbuz2 + //SEG148 [56] (byte) printu::res#6 ← (byte) main::r#46 -- vbuz1=vbuz2 lda r_46 sta printu.res - //SEG148 [57] call printu - //SEG149 [167] phi from main::@8 to printu [phi:main::@8->printu] + //SEG149 [57] call printu + //SEG150 [167] phi from main::@8 to printu [phi:main::@8->printu] printu_from_b8: - //SEG150 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy - //SEG151 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy - //SEG152 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 + //SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy + //SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy + //SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 lda #op6 sta printu.op+1 - //SEG153 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy - //SEG154 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy + //SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy + //SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy jsr printu jmp b53 - //SEG155 main::@53 + //SEG156 main::@53 b53: - //SEG156 [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 -- vbuz1_le_vbuz1_then_la1 + //SEG157 [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 -- vbuz1_le_vbuz1_then_la1 lda a cmp a bcs b9_from_b53 - //SEG157 [59] phi from main::@53 to main::@30 [phi:main::@53->main::@30] + //SEG158 [59] phi from main::@53 to main::@30 [phi:main::@53->main::@30] b30_from_b53: jmp b30 - //SEG158 main::@30 + //SEG159 main::@30 b30: - //SEG159 [60] phi from main::@30 to main::@9 [phi:main::@30->main::@9] + //SEG160 [60] phi from main::@30 to main::@9 [phi:main::@30->main::@9] b9_from_b30: - //SEG160 [60] phi (byte) main::r#47 = (byte) '+' [phi:main::@30->main::@9#0] -- vbuz1=vbuc1 + //SEG161 [60] phi (byte) main::r#47 = (byte) '+' [phi:main::@30->main::@9#0] -- vbuz1=vbuc1 lda #'+' sta r_47 jmp b9 - //SEG161 [60] phi from main::@53 to main::@9 [phi:main::@53->main::@9] + //SEG162 [60] phi from main::@53 to main::@9 [phi:main::@53->main::@9] b9_from_b53: - //SEG162 [60] phi (byte) main::r#47 = (byte) '-' [phi:main::@53->main::@9#0] -- vbuz1=vbuc1 + //SEG163 [60] phi (byte) main::r#47 = (byte) '-' [phi:main::@53->main::@9#0] -- vbuz1=vbuc1 lda #'-' sta r_47 jmp b9 - //SEG163 main::@9 + //SEG164 main::@9 b9: - //SEG164 [61] (byte) printu::a#7 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG165 [61] (byte) printu::a#7 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG165 [62] (byte) printu::b#7 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG166 [62] (byte) printu::b#7 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG166 [63] (byte) printu::res#7 ← (byte) main::r#47 -- vbuz1=vbuz2 + //SEG167 [63] (byte) printu::res#7 ← (byte) main::r#47 -- vbuz1=vbuz2 lda r_47 sta printu.res - //SEG167 [64] call printu - //SEG168 [167] phi from main::@9 to printu [phi:main::@9->printu] + //SEG168 [64] call printu + //SEG169 [167] phi from main::@9 to printu [phi:main::@9->printu] printu_from_b9: - //SEG169 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy - //SEG170 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy - //SEG171 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 + //SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy + //SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy + //SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 lda #op7 sta printu.op+1 - //SEG172 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy - //SEG173 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy + //SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy + //SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy jsr printu - //SEG174 [65] phi from main::@9 to main::@54 [phi:main::@9->main::@54] + //SEG175 [65] phi from main::@9 to main::@54 [phi:main::@9->main::@54] b54_from_b9: jmp b54 - //SEG175 main::@54 + //SEG176 main::@54 b54: - //SEG176 [66] call print_ln - //SEG177 [162] phi from main::@54 to print_ln [phi:main::@54->print_ln] + //SEG177 [66] call print_ln + //SEG178 [162] phi from main::@54 to print_ln [phi:main::@54->print_ln] print_ln_from_b54: - //SEG178 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@54->print_ln#0] -- register_copy + //SEG179 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@54->print_ln#0] -- register_copy jsr print_ln jmp b55 - //SEG179 main::@55 + //SEG180 main::@55 b55: - //SEG180 [67] if((byte) main::a#10>(byte) main::b#0) goto main::@10 -- vbuz1_gt_vbuz2_then_la1 + //SEG181 [67] if((byte) main::a#10>(byte) main::b#0) goto main::@10 -- vbuz1_gt_vbuz2_then_la1 lda b cmp a bcc b10_from_b55 - //SEG181 [68] phi from main::@55 to main::@31 [phi:main::@55->main::@31] + //SEG182 [68] phi from main::@55 to main::@31 [phi:main::@55->main::@31] b31_from_b55: jmp b31 - //SEG182 main::@31 + //SEG183 main::@31 b31: - //SEG183 [69] phi from main::@31 to main::@10 [phi:main::@31->main::@10] + //SEG184 [69] phi from main::@31 to main::@10 [phi:main::@31->main::@10] b10_from_b31: - //SEG184 [69] phi (byte) main::r#48 = (byte) '+' [phi:main::@31->main::@10#0] -- vbuz1=vbuc1 + //SEG185 [69] phi (byte) main::r#48 = (byte) '+' [phi:main::@31->main::@10#0] -- vbuz1=vbuc1 lda #'+' sta r_48 jmp b10 - //SEG185 [69] phi from main::@55 to main::@10 [phi:main::@55->main::@10] + //SEG186 [69] phi from main::@55 to main::@10 [phi:main::@55->main::@10] b10_from_b55: - //SEG186 [69] phi (byte) main::r#48 = (byte) '-' [phi:main::@55->main::@10#0] -- vbuz1=vbuc1 + //SEG187 [69] phi (byte) main::r#48 = (byte) '-' [phi:main::@55->main::@10#0] -- vbuz1=vbuc1 lda #'-' sta r_48 jmp b10 - //SEG187 main::@10 + //SEG188 main::@10 b10: - //SEG188 [70] (byte) printu::a#8 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG189 [70] (byte) printu::a#8 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG189 [71] (byte) printu::b#8 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG190 [71] (byte) printu::b#8 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG190 [72] (byte) printu::res#8 ← (byte) main::r#48 -- vbuz1=vbuz2 + //SEG191 [72] (byte) printu::res#8 ← (byte) main::r#48 -- vbuz1=vbuz2 lda r_48 sta printu.res - //SEG191 [73] (byte*~) print_char_cursor#143 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG192 [73] (byte*~) print_char_cursor#143 ← (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 - //SEG192 [74] call printu - //SEG193 [167] phi from main::@10 to printu [phi:main::@10->printu] + //SEG193 [74] call printu + //SEG194 [167] phi from main::@10 to printu [phi:main::@10->printu] printu_from_b10: - //SEG194 [167] phi (byte) printu::res#20 = (byte) printu::res#8 [phi:main::@10->printu#0] -- register_copy - //SEG195 [167] phi (byte) printu::b#20 = (byte) printu::b#8 [phi:main::@10->printu#1] -- register_copy - //SEG196 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@10->printu#2] -- pbuz1=pbuc1 + //SEG195 [167] phi (byte) printu::res#20 = (byte) printu::res#8 [phi:main::@10->printu#0] -- register_copy + //SEG196 [167] phi (byte) printu::b#20 = (byte) printu::b#8 [phi:main::@10->printu#1] -- register_copy + //SEG197 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@10->printu#2] -- pbuz1=pbuc1 lda #op8 sta printu.op+1 - //SEG197 [167] phi (byte) printu::a#20 = (byte) printu::a#8 [phi:main::@10->printu#3] -- register_copy - //SEG198 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#143 [phi:main::@10->printu#4] -- register_copy + //SEG198 [167] phi (byte) printu::a#20 = (byte) printu::a#8 [phi:main::@10->printu#3] -- register_copy + //SEG199 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#143 [phi:main::@10->printu#4] -- register_copy jsr printu jmp b56 - //SEG199 main::@56 + //SEG200 main::@56 b56: - //SEG200 [75] if((byte) main::a#10>(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@11 -- vbuz1_gt_vbuc1_then_la1 + //SEG201 [75] if((byte) main::a#10>(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@11 -- vbuz1_gt_vbuc1_then_la1 lda a cmp #$37 beq !+ bcs b11_from_b56 !: - //SEG201 [76] phi from main::@56 to main::@32 [phi:main::@56->main::@32] + //SEG202 [76] phi from main::@56 to main::@32 [phi:main::@56->main::@32] b32_from_b56: jmp b32 - //SEG202 main::@32 + //SEG203 main::@32 b32: - //SEG203 [77] phi from main::@32 to main::@11 [phi:main::@32->main::@11] + //SEG204 [77] phi from main::@32 to main::@11 [phi:main::@32->main::@11] b11_from_b32: - //SEG204 [77] phi (byte) main::r#49 = (byte) '+' [phi:main::@32->main::@11#0] -- vbuz1=vbuc1 + //SEG205 [77] phi (byte) main::r#49 = (byte) '+' [phi:main::@32->main::@11#0] -- vbuz1=vbuc1 lda #'+' sta r_49 jmp b11 - //SEG205 [77] phi from main::@56 to main::@11 [phi:main::@56->main::@11] + //SEG206 [77] phi from main::@56 to main::@11 [phi:main::@56->main::@11] b11_from_b56: - //SEG206 [77] phi (byte) main::r#49 = (byte) '-' [phi:main::@56->main::@11#0] -- vbuz1=vbuc1 + //SEG207 [77] phi (byte) main::r#49 = (byte) '-' [phi:main::@56->main::@11#0] -- vbuz1=vbuc1 lda #'-' sta r_49 jmp b11 - //SEG207 main::@11 + //SEG208 main::@11 b11: - //SEG208 [78] (byte) printu::a#9 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG209 [78] (byte) printu::a#9 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG209 [79] (byte) printu::res#9 ← (byte) main::r#49 -- vbuz1=vbuz2 + //SEG210 [79] (byte) printu::res#9 ← (byte) main::r#49 -- vbuz1=vbuz2 lda r_49 sta printu.res - //SEG210 [80] call printu - //SEG211 [167] phi from main::@11 to printu [phi:main::@11->printu] + //SEG211 [80] call printu + //SEG212 [167] phi from main::@11 to printu [phi:main::@11->printu] printu_from_b11: - //SEG212 [167] phi (byte) printu::res#20 = (byte) printu::res#9 [phi:main::@11->printu#0] -- register_copy - //SEG213 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 + //SEG213 [167] phi (byte) printu::res#20 = (byte) printu::res#9 [phi:main::@11->printu#0] -- register_copy + //SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG214 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 + //SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 lda #op9 sta printu.op+1 - //SEG215 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy - //SEG216 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy + //SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy + //SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy jsr printu jmp b57 - //SEG217 main::@57 + //SEG218 main::@57 b57: - //SEG218 [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 -- vbuz1_gt_pbuc1_derefidx_vbuz2_then_la1 + //SEG219 [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 -- vbuz1_gt_pbuc1_derefidx_vbuz2_then_la1 ldy i lda cs,y cmp a bcc b12_from_b57 - //SEG219 [82] phi from main::@57 to main::@33 [phi:main::@57->main::@33] + //SEG220 [82] phi from main::@57 to main::@33 [phi:main::@57->main::@33] b33_from_b57: jmp b33 - //SEG220 main::@33 + //SEG221 main::@33 b33: - //SEG221 [83] phi from main::@33 to main::@12 [phi:main::@33->main::@12] + //SEG222 [83] phi from main::@33 to main::@12 [phi:main::@33->main::@12] b12_from_b33: - //SEG222 [83] phi (byte) main::r#50 = (byte) '+' [phi:main::@33->main::@12#0] -- vbuz1=vbuc1 + //SEG223 [83] phi (byte) main::r#50 = (byte) '+' [phi:main::@33->main::@12#0] -- vbuz1=vbuc1 lda #'+' sta r_50 jmp b12 - //SEG223 [83] phi from main::@57 to main::@12 [phi:main::@57->main::@12] + //SEG224 [83] phi from main::@57 to main::@12 [phi:main::@57->main::@12] b12_from_b57: - //SEG224 [83] phi (byte) main::r#50 = (byte) '-' [phi:main::@57->main::@12#0] -- vbuz1=vbuc1 + //SEG225 [83] phi (byte) main::r#50 = (byte) '-' [phi:main::@57->main::@12#0] -- vbuz1=vbuc1 lda #'-' sta r_50 jmp b12 - //SEG225 main::@12 + //SEG226 main::@12 b12: - //SEG226 [84] (byte) printu::a#10 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG227 [84] (byte) printu::a#10 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG227 [85] (byte) printu::b#10 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG228 [85] (byte) printu::b#10 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG228 [86] (byte) printu::res#10 ← (byte) main::r#50 -- vbuz1=vbuz2 + //SEG229 [86] (byte) printu::res#10 ← (byte) main::r#50 -- vbuz1=vbuz2 lda r_50 sta printu.res - //SEG229 [87] call printu - //SEG230 [167] phi from main::@12 to printu [phi:main::@12->printu] + //SEG230 [87] call printu + //SEG231 [167] phi from main::@12 to printu [phi:main::@12->printu] printu_from_b12: - //SEG231 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy - //SEG232 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy - //SEG233 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 + //SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy + //SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy + //SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 lda #op10 sta printu.op+1 - //SEG234 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy - //SEG235 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy + //SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy + //SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy jsr printu jmp b58 - //SEG236 main::@58 + //SEG237 main::@58 b58: - //SEG237 [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 -- vbuz1_gt_vbuz1_then_la1 + //SEG238 [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 -- vbuz1_gt_vbuz1_then_la1 lda a cmp a bcc b13_from_b58 - //SEG238 [89] phi from main::@58 to main::@34 [phi:main::@58->main::@34] + //SEG239 [89] phi from main::@58 to main::@34 [phi:main::@58->main::@34] b34_from_b58: jmp b34 - //SEG239 main::@34 + //SEG240 main::@34 b34: - //SEG240 [90] phi from main::@34 to main::@13 [phi:main::@34->main::@13] + //SEG241 [90] phi from main::@34 to main::@13 [phi:main::@34->main::@13] b13_from_b34: - //SEG241 [90] phi (byte) main::r#51 = (byte) '+' [phi:main::@34->main::@13#0] -- vbuz1=vbuc1 + //SEG242 [90] phi (byte) main::r#51 = (byte) '+' [phi:main::@34->main::@13#0] -- vbuz1=vbuc1 lda #'+' sta r_51 jmp b13 - //SEG242 [90] phi from main::@58 to main::@13 [phi:main::@58->main::@13] + //SEG243 [90] phi from main::@58 to main::@13 [phi:main::@58->main::@13] b13_from_b58: - //SEG243 [90] phi (byte) main::r#51 = (byte) '-' [phi:main::@58->main::@13#0] -- vbuz1=vbuc1 + //SEG244 [90] phi (byte) main::r#51 = (byte) '-' [phi:main::@58->main::@13#0] -- vbuz1=vbuc1 lda #'-' sta r_51 jmp b13 - //SEG244 main::@13 + //SEG245 main::@13 b13: - //SEG245 [91] (byte) printu::a#11 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG246 [91] (byte) printu::a#11 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG246 [92] (byte) printu::b#11 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG247 [92] (byte) printu::b#11 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG247 [93] (byte) printu::res#11 ← (byte) main::r#51 -- vbuz1=vbuz2 + //SEG248 [93] (byte) printu::res#11 ← (byte) main::r#51 -- vbuz1=vbuz2 lda r_51 sta printu.res - //SEG248 [94] call printu - //SEG249 [167] phi from main::@13 to printu [phi:main::@13->printu] + //SEG249 [94] call printu + //SEG250 [167] phi from main::@13 to printu [phi:main::@13->printu] printu_from_b13: - //SEG250 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy - //SEG251 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy - //SEG252 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 + //SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy + //SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy + //SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 lda #op11 sta printu.op+1 - //SEG253 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy - //SEG254 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy + //SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy + //SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy jsr printu - //SEG255 [95] phi from main::@13 to main::@59 [phi:main::@13->main::@59] + //SEG256 [95] phi from main::@13 to main::@59 [phi:main::@13->main::@59] b59_from_b13: jmp b59 - //SEG256 main::@59 + //SEG257 main::@59 b59: - //SEG257 [96] call print_ln - //SEG258 [162] phi from main::@59 to print_ln [phi:main::@59->print_ln] + //SEG258 [96] call print_ln + //SEG259 [162] phi from main::@59 to print_ln [phi:main::@59->print_ln] print_ln_from_b59: - //SEG259 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@59->print_ln#0] -- register_copy + //SEG260 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@59->print_ln#0] -- register_copy jsr print_ln jmp b60 - //SEG260 main::@60 + //SEG261 main::@60 b60: - //SEG261 [97] if((byte) main::a#10<(byte) main::b#0) goto main::@14 -- vbuz1_lt_vbuz2_then_la1 + //SEG262 [97] if((byte) main::a#10<(byte) main::b#0) goto main::@14 -- vbuz1_lt_vbuz2_then_la1 lda a cmp b bcc b14_from_b60 - //SEG262 [98] phi from main::@60 to main::@35 [phi:main::@60->main::@35] + //SEG263 [98] phi from main::@60 to main::@35 [phi:main::@60->main::@35] b35_from_b60: jmp b35 - //SEG263 main::@35 + //SEG264 main::@35 b35: - //SEG264 [99] phi from main::@35 to main::@14 [phi:main::@35->main::@14] + //SEG265 [99] phi from main::@35 to main::@14 [phi:main::@35->main::@14] b14_from_b35: - //SEG265 [99] phi (byte) main::r#52 = (byte) '+' [phi:main::@35->main::@14#0] -- vbuz1=vbuc1 + //SEG266 [99] phi (byte) main::r#52 = (byte) '+' [phi:main::@35->main::@14#0] -- vbuz1=vbuc1 lda #'+' sta r_52 jmp b14 - //SEG266 [99] phi from main::@60 to main::@14 [phi:main::@60->main::@14] + //SEG267 [99] phi from main::@60 to main::@14 [phi:main::@60->main::@14] b14_from_b60: - //SEG267 [99] phi (byte) main::r#52 = (byte) '-' [phi:main::@60->main::@14#0] -- vbuz1=vbuc1 + //SEG268 [99] phi (byte) main::r#52 = (byte) '-' [phi:main::@60->main::@14#0] -- vbuz1=vbuc1 lda #'-' sta r_52 jmp b14 - //SEG268 main::@14 + //SEG269 main::@14 b14: - //SEG269 [100] (byte) printu::a#12 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG270 [100] (byte) printu::a#12 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG270 [101] (byte) printu::b#12 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG271 [101] (byte) printu::b#12 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG271 [102] (byte) printu::res#12 ← (byte) main::r#52 -- vbuz1=vbuz2 + //SEG272 [102] (byte) printu::res#12 ← (byte) main::r#52 -- vbuz1=vbuz2 lda r_52 sta printu.res - //SEG272 [103] (byte*~) print_char_cursor#147 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG273 [103] (byte*~) print_char_cursor#147 ← (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 - //SEG273 [104] call printu - //SEG274 [167] phi from main::@14 to printu [phi:main::@14->printu] + //SEG274 [104] call printu + //SEG275 [167] phi from main::@14 to printu [phi:main::@14->printu] printu_from_b14: - //SEG275 [167] phi (byte) printu::res#20 = (byte) printu::res#12 [phi:main::@14->printu#0] -- register_copy - //SEG276 [167] phi (byte) printu::b#20 = (byte) printu::b#12 [phi:main::@14->printu#1] -- register_copy - //SEG277 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@14->printu#2] -- pbuz1=pbuc1 + //SEG276 [167] phi (byte) printu::res#20 = (byte) printu::res#12 [phi:main::@14->printu#0] -- register_copy + //SEG277 [167] phi (byte) printu::b#20 = (byte) printu::b#12 [phi:main::@14->printu#1] -- register_copy + //SEG278 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@14->printu#2] -- pbuz1=pbuc1 lda #op12 sta printu.op+1 - //SEG278 [167] phi (byte) printu::a#20 = (byte) printu::a#12 [phi:main::@14->printu#3] -- register_copy - //SEG279 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#147 [phi:main::@14->printu#4] -- register_copy + //SEG279 [167] phi (byte) printu::a#20 = (byte) printu::a#12 [phi:main::@14->printu#3] -- register_copy + //SEG280 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#147 [phi:main::@14->printu#4] -- register_copy jsr printu jmp b61 - //SEG280 main::@61 + //SEG281 main::@61 b61: - //SEG281 [105] if((byte) main::a#10<(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@15 -- vbuz1_lt_vbuc1_then_la1 + //SEG282 [105] if((byte) main::a#10<(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@15 -- vbuz1_lt_vbuc1_then_la1 lda a cmp #$37 bcc b15_from_b61 - //SEG282 [106] phi from main::@61 to main::@36 [phi:main::@61->main::@36] + //SEG283 [106] phi from main::@61 to main::@36 [phi:main::@61->main::@36] b36_from_b61: jmp b36 - //SEG283 main::@36 + //SEG284 main::@36 b36: - //SEG284 [107] phi from main::@36 to main::@15 [phi:main::@36->main::@15] + //SEG285 [107] phi from main::@36 to main::@15 [phi:main::@36->main::@15] b15_from_b36: - //SEG285 [107] phi (byte) main::r#53 = (byte) '+' [phi:main::@36->main::@15#0] -- vbuz1=vbuc1 + //SEG286 [107] phi (byte) main::r#53 = (byte) '+' [phi:main::@36->main::@15#0] -- vbuz1=vbuc1 lda #'+' sta r_53 jmp b15 - //SEG286 [107] phi from main::@61 to main::@15 [phi:main::@61->main::@15] + //SEG287 [107] phi from main::@61 to main::@15 [phi:main::@61->main::@15] b15_from_b61: - //SEG287 [107] phi (byte) main::r#53 = (byte) '-' [phi:main::@61->main::@15#0] -- vbuz1=vbuc1 + //SEG288 [107] phi (byte) main::r#53 = (byte) '-' [phi:main::@61->main::@15#0] -- vbuz1=vbuc1 lda #'-' sta r_53 jmp b15 - //SEG288 main::@15 + //SEG289 main::@15 b15: - //SEG289 [108] (byte) printu::a#13 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG290 [108] (byte) printu::a#13 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG290 [109] (byte) printu::res#13 ← (byte) main::r#53 -- vbuz1=vbuz2 + //SEG291 [109] (byte) printu::res#13 ← (byte) main::r#53 -- vbuz1=vbuz2 lda r_53 sta printu.res - //SEG291 [110] call printu - //SEG292 [167] phi from main::@15 to printu [phi:main::@15->printu] + //SEG292 [110] call printu + //SEG293 [167] phi from main::@15 to printu [phi:main::@15->printu] printu_from_b15: - //SEG293 [167] phi (byte) printu::res#20 = (byte) printu::res#13 [phi:main::@15->printu#0] -- register_copy - //SEG294 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 + //SEG294 [167] phi (byte) printu::res#20 = (byte) printu::res#13 [phi:main::@15->printu#0] -- register_copy + //SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG295 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 + //SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 lda #op13 sta printu.op+1 - //SEG296 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy - //SEG297 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy + //SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy + //SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy jsr printu jmp b62 - //SEG298 main::@62 + //SEG299 main::@62 b62: - //SEG299 [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 -- vbuz1_lt_pbuc1_derefidx_vbuz2_then_la1 + //SEG300 [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 -- vbuz1_lt_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bcc b16_from_b62 - //SEG300 [112] phi from main::@62 to main::@37 [phi:main::@62->main::@37] + //SEG301 [112] phi from main::@62 to main::@37 [phi:main::@62->main::@37] b37_from_b62: jmp b37 - //SEG301 main::@37 + //SEG302 main::@37 b37: - //SEG302 [113] phi from main::@37 to main::@16 [phi:main::@37->main::@16] + //SEG303 [113] phi from main::@37 to main::@16 [phi:main::@37->main::@16] b16_from_b37: - //SEG303 [113] phi (byte) main::r#54 = (byte) '+' [phi:main::@37->main::@16#0] -- vbuz1=vbuc1 + //SEG304 [113] phi (byte) main::r#54 = (byte) '+' [phi:main::@37->main::@16#0] -- vbuz1=vbuc1 lda #'+' sta r_54 jmp b16 - //SEG304 [113] phi from main::@62 to main::@16 [phi:main::@62->main::@16] + //SEG305 [113] phi from main::@62 to main::@16 [phi:main::@62->main::@16] b16_from_b62: - //SEG305 [113] phi (byte) main::r#54 = (byte) '-' [phi:main::@62->main::@16#0] -- vbuz1=vbuc1 + //SEG306 [113] phi (byte) main::r#54 = (byte) '-' [phi:main::@62->main::@16#0] -- vbuz1=vbuc1 lda #'-' sta r_54 jmp b16 - //SEG306 main::@16 + //SEG307 main::@16 b16: - //SEG307 [114] (byte) printu::a#14 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG308 [114] (byte) printu::a#14 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG308 [115] (byte) printu::b#14 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG309 [115] (byte) printu::b#14 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG309 [116] (byte) printu::res#14 ← (byte) main::r#54 -- vbuz1=vbuz2 + //SEG310 [116] (byte) printu::res#14 ← (byte) main::r#54 -- vbuz1=vbuz2 lda r_54 sta printu.res - //SEG310 [117] call printu - //SEG311 [167] phi from main::@16 to printu [phi:main::@16->printu] + //SEG311 [117] call printu + //SEG312 [167] phi from main::@16 to printu [phi:main::@16->printu] printu_from_b16: - //SEG312 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy - //SEG313 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy - //SEG314 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 + //SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy + //SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy + //SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 lda #op14 sta printu.op+1 - //SEG315 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy - //SEG316 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy + //SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy + //SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy jsr printu jmp b63 - //SEG317 main::@63 + //SEG318 main::@63 b63: - //SEG318 [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 -- vbuz1_lt_vbuz1_then_la1 + //SEG319 [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 -- vbuz1_lt_vbuz1_then_la1 lda a cmp a bcc b17_from_b63 - //SEG319 [119] phi from main::@63 to main::@38 [phi:main::@63->main::@38] + //SEG320 [119] phi from main::@63 to main::@38 [phi:main::@63->main::@38] b38_from_b63: jmp b38 - //SEG320 main::@38 + //SEG321 main::@38 b38: - //SEG321 [120] phi from main::@38 to main::@17 [phi:main::@38->main::@17] + //SEG322 [120] phi from main::@38 to main::@17 [phi:main::@38->main::@17] b17_from_b38: - //SEG322 [120] phi (byte) main::r#55 = (byte) '+' [phi:main::@38->main::@17#0] -- vbuz1=vbuc1 + //SEG323 [120] phi (byte) main::r#55 = (byte) '+' [phi:main::@38->main::@17#0] -- vbuz1=vbuc1 lda #'+' sta r_55 jmp b17 - //SEG323 [120] phi from main::@63 to main::@17 [phi:main::@63->main::@17] + //SEG324 [120] phi from main::@63 to main::@17 [phi:main::@63->main::@17] b17_from_b63: - //SEG324 [120] phi (byte) main::r#55 = (byte) '-' [phi:main::@63->main::@17#0] -- vbuz1=vbuc1 + //SEG325 [120] phi (byte) main::r#55 = (byte) '-' [phi:main::@63->main::@17#0] -- vbuz1=vbuc1 lda #'-' sta r_55 jmp b17 - //SEG325 main::@17 + //SEG326 main::@17 b17: - //SEG326 [121] (byte) printu::a#15 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG327 [121] (byte) printu::a#15 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG327 [122] (byte) printu::b#15 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG328 [122] (byte) printu::b#15 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG328 [123] (byte) printu::res#15 ← (byte) main::r#55 -- vbuz1=vbuz2 + //SEG329 [123] (byte) printu::res#15 ← (byte) main::r#55 -- vbuz1=vbuz2 lda r_55 sta printu.res - //SEG329 [124] call printu - //SEG330 [167] phi from main::@17 to printu [phi:main::@17->printu] + //SEG330 [124] call printu + //SEG331 [167] phi from main::@17 to printu [phi:main::@17->printu] printu_from_b17: - //SEG331 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy - //SEG332 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy - //SEG333 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 + //SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy + //SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy + //SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 lda #op15 sta printu.op+1 - //SEG334 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy - //SEG335 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy + //SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy + //SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy jsr printu - //SEG336 [125] phi from main::@17 to main::@64 [phi:main::@17->main::@64] + //SEG337 [125] phi from main::@17 to main::@64 [phi:main::@17->main::@64] b64_from_b17: jmp b64 - //SEG337 main::@64 + //SEG338 main::@64 b64: - //SEG338 [126] call print_ln - //SEG339 [162] phi from main::@64 to print_ln [phi:main::@64->print_ln] + //SEG339 [126] call print_ln + //SEG340 [162] phi from main::@64 to print_ln [phi:main::@64->print_ln] print_ln_from_b64: - //SEG340 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@64->print_ln#0] -- register_copy + //SEG341 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@64->print_ln#0] -- register_copy jsr print_ln jmp b65 - //SEG341 main::@65 + //SEG342 main::@65 b65: - //SEG342 [127] if((byte) main::a#10!=(byte) main::b#0) goto main::@18 -- vbuz1_neq_vbuz2_then_la1 + //SEG343 [127] if((byte) main::a#10!=(byte) main::b#0) goto main::@18 -- vbuz1_neq_vbuz2_then_la1 lda a cmp b bne b18_from_b65 - //SEG343 [128] phi from main::@65 to main::@39 [phi:main::@65->main::@39] + //SEG344 [128] phi from main::@65 to main::@39 [phi:main::@65->main::@39] b39_from_b65: jmp b39 - //SEG344 main::@39 + //SEG345 main::@39 b39: - //SEG345 [129] phi from main::@39 to main::@18 [phi:main::@39->main::@18] + //SEG346 [129] phi from main::@39 to main::@18 [phi:main::@39->main::@18] b18_from_b39: - //SEG346 [129] phi (byte) main::r#56 = (byte) '+' [phi:main::@39->main::@18#0] -- vbuz1=vbuc1 + //SEG347 [129] phi (byte) main::r#56 = (byte) '+' [phi:main::@39->main::@18#0] -- vbuz1=vbuc1 lda #'+' sta r_56 jmp b18 - //SEG347 [129] phi from main::@65 to main::@18 [phi:main::@65->main::@18] + //SEG348 [129] phi from main::@65 to main::@18 [phi:main::@65->main::@18] b18_from_b65: - //SEG348 [129] phi (byte) main::r#56 = (byte) '-' [phi:main::@65->main::@18#0] -- vbuz1=vbuc1 + //SEG349 [129] phi (byte) main::r#56 = (byte) '-' [phi:main::@65->main::@18#0] -- vbuz1=vbuc1 lda #'-' sta r_56 jmp b18 - //SEG349 main::@18 + //SEG350 main::@18 b18: - //SEG350 [130] (byte) printu::a#16 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG351 [130] (byte) printu::a#16 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG351 [131] (byte) printu::b#16 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG352 [131] (byte) printu::b#16 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG352 [132] (byte) printu::res#16 ← (byte) main::r#56 -- vbuz1=vbuz2 + //SEG353 [132] (byte) printu::res#16 ← (byte) main::r#56 -- vbuz1=vbuz2 lda r_56 sta printu.res - //SEG353 [133] (byte*~) print_char_cursor#151 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG354 [133] (byte*~) print_char_cursor#151 ← (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 - //SEG354 [134] call printu - //SEG355 [167] phi from main::@18 to printu [phi:main::@18->printu] + //SEG355 [134] call printu + //SEG356 [167] phi from main::@18 to printu [phi:main::@18->printu] printu_from_b18: - //SEG356 [167] phi (byte) printu::res#20 = (byte) printu::res#16 [phi:main::@18->printu#0] -- register_copy - //SEG357 [167] phi (byte) printu::b#20 = (byte) printu::b#16 [phi:main::@18->printu#1] -- register_copy - //SEG358 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@18->printu#2] -- pbuz1=pbuc1 + //SEG357 [167] phi (byte) printu::res#20 = (byte) printu::res#16 [phi:main::@18->printu#0] -- register_copy + //SEG358 [167] phi (byte) printu::b#20 = (byte) printu::b#16 [phi:main::@18->printu#1] -- register_copy + //SEG359 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@18->printu#2] -- pbuz1=pbuc1 lda #op16 sta printu.op+1 - //SEG359 [167] phi (byte) printu::a#20 = (byte) printu::a#16 [phi:main::@18->printu#3] -- register_copy - //SEG360 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#151 [phi:main::@18->printu#4] -- register_copy + //SEG360 [167] phi (byte) printu::a#20 = (byte) printu::a#16 [phi:main::@18->printu#3] -- register_copy + //SEG361 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#151 [phi:main::@18->printu#4] -- register_copy jsr printu jmp b66 - //SEG361 main::@66 + //SEG362 main::@66 b66: - //SEG362 [135] if((byte) main::a#10!=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@19 -- vbuz1_neq_vbuc1_then_la1 + //SEG363 [135] if((byte) main::a#10!=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@19 -- vbuz1_neq_vbuc1_then_la1 lda a cmp #$37 bne b19_from_b66 - //SEG363 [136] phi from main::@66 to main::@40 [phi:main::@66->main::@40] + //SEG364 [136] phi from main::@66 to main::@40 [phi:main::@66->main::@40] b40_from_b66: jmp b40 - //SEG364 main::@40 + //SEG365 main::@40 b40: - //SEG365 [137] phi from main::@40 to main::@19 [phi:main::@40->main::@19] + //SEG366 [137] phi from main::@40 to main::@19 [phi:main::@40->main::@19] b19_from_b40: - //SEG366 [137] phi (byte) main::r#57 = (byte) '+' [phi:main::@40->main::@19#0] -- vbuz1=vbuc1 + //SEG367 [137] phi (byte) main::r#57 = (byte) '+' [phi:main::@40->main::@19#0] -- vbuz1=vbuc1 lda #'+' sta r_57 jmp b19 - //SEG367 [137] phi from main::@66 to main::@19 [phi:main::@66->main::@19] + //SEG368 [137] phi from main::@66 to main::@19 [phi:main::@66->main::@19] b19_from_b66: - //SEG368 [137] phi (byte) main::r#57 = (byte) '-' [phi:main::@66->main::@19#0] -- vbuz1=vbuc1 + //SEG369 [137] phi (byte) main::r#57 = (byte) '-' [phi:main::@66->main::@19#0] -- vbuz1=vbuc1 lda #'-' sta r_57 jmp b19 - //SEG369 main::@19 + //SEG370 main::@19 b19: - //SEG370 [138] (byte) printu::a#17 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG371 [138] (byte) printu::a#17 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG371 [139] (byte) printu::res#17 ← (byte) main::r#57 -- vbuz1=vbuz2 + //SEG372 [139] (byte) printu::res#17 ← (byte) main::r#57 -- vbuz1=vbuz2 lda r_57 sta printu.res - //SEG372 [140] call printu - //SEG373 [167] phi from main::@19 to printu [phi:main::@19->printu] + //SEG373 [140] call printu + //SEG374 [167] phi from main::@19 to printu [phi:main::@19->printu] printu_from_b19: - //SEG374 [167] phi (byte) printu::res#20 = (byte) printu::res#17 [phi:main::@19->printu#0] -- register_copy - //SEG375 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 + //SEG375 [167] phi (byte) printu::res#20 = (byte) printu::res#17 [phi:main::@19->printu#0] -- register_copy + //SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG376 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 + //SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 lda #op17 sta printu.op+1 - //SEG377 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy - //SEG378 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy + //SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy + //SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy jsr printu jmp b67 - //SEG379 main::@67 + //SEG380 main::@67 b67: - //SEG380 [141] if((byte) main::a#10!=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@20 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG381 [141] if((byte) main::a#10!=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@20 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bne b20_from_b67 - //SEG381 [142] phi from main::@67 to main::@41 [phi:main::@67->main::@41] + //SEG382 [142] phi from main::@67 to main::@41 [phi:main::@67->main::@41] b41_from_b67: jmp b41 - //SEG382 main::@41 + //SEG383 main::@41 b41: - //SEG383 [143] phi from main::@41 to main::@20 [phi:main::@41->main::@20] + //SEG384 [143] phi from main::@41 to main::@20 [phi:main::@41->main::@20] b20_from_b41: - //SEG384 [143] phi (byte) main::r#58 = (byte) '+' [phi:main::@41->main::@20#0] -- vbuz1=vbuc1 + //SEG385 [143] phi (byte) main::r#58 = (byte) '+' [phi:main::@41->main::@20#0] -- vbuz1=vbuc1 lda #'+' sta r_58 jmp b20 - //SEG385 [143] phi from main::@67 to main::@20 [phi:main::@67->main::@20] + //SEG386 [143] phi from main::@67 to main::@20 [phi:main::@67->main::@20] b20_from_b67: - //SEG386 [143] phi (byte) main::r#58 = (byte) '-' [phi:main::@67->main::@20#0] -- vbuz1=vbuc1 + //SEG387 [143] phi (byte) main::r#58 = (byte) '-' [phi:main::@67->main::@20#0] -- vbuz1=vbuc1 lda #'-' sta r_58 jmp b20 - //SEG387 main::@20 + //SEG388 main::@20 b20: - //SEG388 [144] (byte) printu::a#18 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG389 [144] (byte) printu::a#18 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG389 [145] (byte) printu::b#18 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG390 [145] (byte) printu::b#18 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG390 [146] (byte) printu::res#18 ← (byte) main::r#58 -- vbuz1=vbuz2 + //SEG391 [146] (byte) printu::res#18 ← (byte) main::r#58 -- vbuz1=vbuz2 lda r_58 sta printu.res - //SEG391 [147] call printu - //SEG392 [167] phi from main::@20 to printu [phi:main::@20->printu] + //SEG392 [147] call printu + //SEG393 [167] phi from main::@20 to printu [phi:main::@20->printu] printu_from_b20: - //SEG393 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy - //SEG394 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy - //SEG395 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 + //SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy + //SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy + //SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 lda #op18 sta printu.op+1 - //SEG396 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy - //SEG397 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy + //SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy + //SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy jsr printu jmp b68 - //SEG398 main::@68 + //SEG399 main::@68 b68: - //SEG399 [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 -- vbuz1_neq_vbuz1_then_la1 + //SEG400 [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 -- vbuz1_neq_vbuz1_then_la1 lda a cmp a bne b21_from_b68 - //SEG400 [149] phi from main::@68 to main::@42 [phi:main::@68->main::@42] + //SEG401 [149] phi from main::@68 to main::@42 [phi:main::@68->main::@42] b42_from_b68: jmp b42 - //SEG401 main::@42 + //SEG402 main::@42 b42: - //SEG402 [150] phi from main::@42 to main::@21 [phi:main::@42->main::@21] + //SEG403 [150] phi from main::@42 to main::@21 [phi:main::@42->main::@21] b21_from_b42: - //SEG403 [150] phi (byte) main::r#59 = (byte) '+' [phi:main::@42->main::@21#0] -- vbuz1=vbuc1 + //SEG404 [150] phi (byte) main::r#59 = (byte) '+' [phi:main::@42->main::@21#0] -- vbuz1=vbuc1 lda #'+' sta r_59 jmp b21 - //SEG404 [150] phi from main::@68 to main::@21 [phi:main::@68->main::@21] + //SEG405 [150] phi from main::@68 to main::@21 [phi:main::@68->main::@21] b21_from_b68: - //SEG405 [150] phi (byte) main::r#59 = (byte) '-' [phi:main::@68->main::@21#0] -- vbuz1=vbuc1 + //SEG406 [150] phi (byte) main::r#59 = (byte) '-' [phi:main::@68->main::@21#0] -- vbuz1=vbuc1 lda #'-' sta r_59 jmp b21 - //SEG406 main::@21 + //SEG407 main::@21 b21: - //SEG407 [151] (byte) printu::a#19 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG408 [151] (byte) printu::a#19 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.a - //SEG408 [152] (byte) printu::b#19 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG409 [152] (byte) printu::b#19 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG409 [153] (byte) printu::res#19 ← (byte) main::r#59 -- vbuz1=vbuz2 + //SEG410 [153] (byte) printu::res#19 ← (byte) main::r#59 -- vbuz1=vbuz2 lda r_59 sta printu.res - //SEG410 [154] call printu - //SEG411 [167] phi from main::@21 to printu [phi:main::@21->printu] + //SEG411 [154] call printu + //SEG412 [167] phi from main::@21 to printu [phi:main::@21->printu] printu_from_b21: - //SEG412 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy - //SEG413 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy - //SEG414 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 + //SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy + //SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy + //SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 lda #op19 sta printu.op+1 - //SEG415 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy - //SEG416 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy + //SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy + //SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy jsr printu - //SEG417 [155] phi from main::@21 to main::@69 [phi:main::@21->main::@69] + //SEG418 [155] phi from main::@21 to main::@69 [phi:main::@21->main::@69] b69_from_b21: jmp b69 - //SEG418 main::@69 + //SEG419 main::@69 b69: - //SEG419 [156] call print_ln - //SEG420 [162] phi from main::@69 to print_ln [phi:main::@69->print_ln] + //SEG420 [156] call print_ln + //SEG421 [162] phi from main::@69 to print_ln [phi:main::@69->print_ln] print_ln_from_b69: - //SEG421 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@69->print_ln#0] -- register_copy + //SEG422 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@69->print_ln#0] -- register_copy jsr print_ln jmp b70 - //SEG422 main::@70 + //SEG423 main::@70 b70: - //SEG423 [157] (byte) main::a#1 ← (byte) main::a#10 + (byte/signed byte/word/signed word/dword/signed dword) 48 -- vbuz1=vbuz1_plus_vbuc1 + //SEG424 [157] (byte) main::a#1 ← (byte) main::a#10 + (byte/signed byte/word/signed word/dword/signed dword) 48 -- vbuz1=vbuz1_plus_vbuc1 lda #$30 clc adc a sta a - //SEG424 [158] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + //SEG425 [158] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG425 [159] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@71 -- vbuz1_neq_vbuc1_then_la1 + //SEG426 [159] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@71 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #5 bne b71 - //SEG426 [160] phi from main::@22 main::@70 to main::@22 [phi:main::@22/main::@70->main::@22] + //SEG427 [160] phi from main::@22 main::@70 to main::@22 [phi:main::@22/main::@70->main::@22] b22_from_b22: b22_from_b70: jmp b22 - //SEG427 main::@22 + //SEG428 main::@22 b22: jmp b22_from_b22 - //SEG428 main::@71 + //SEG429 main::@71 b71: - //SEG429 [161] (byte*~) print_char_cursor#142 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG430 [161] (byte*~) print_char_cursor#142 ← (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 - //SEG430 [6] phi from main::@71 to main::@1 [phi:main::@71->main::@1] + //SEG431 [6] phi from main::@71 to main::@1 [phi:main::@71->main::@1] b1_from_b71: - //SEG431 [6] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#1 [phi:main::@71->main::@1#0] -- register_copy - //SEG432 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@71->main::@1#1] -- register_copy - //SEG433 [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#142 [phi:main::@71->main::@1#2] -- register_copy - //SEG434 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy + //SEG432 [6] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#1 [phi:main::@71->main::@1#0] -- register_copy + //SEG433 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@71->main::@1#1] -- register_copy + //SEG434 [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#142 [phi:main::@71->main::@1#2] -- register_copy + //SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy jmp b1 op: .text "< @" op1: .text "< @" @@ -4232,17 +4233,17 @@ main: { op19: .text "==@" cs: .byte 7, $c7, $37, $97, $67 } -//SEG435 print_ln +//SEG436 print_ln // Print a newline print_ln: { - //SEG436 [163] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG437 [163] 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: - //SEG437 [163] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#25 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG438 [163] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#25 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG438 print_ln::@1 + //SEG439 print_ln::@1 b1: - //SEG439 [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG440 [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -4250,7 +4251,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG440 [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG441 [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -4260,226 +4261,226 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG441 print_ln::@return + //SEG442 print_ln::@return breturn: - //SEG442 [166] return + //SEG443 [166] return rts } -//SEG443 printu +//SEG444 printu printu: { .label a = $1a .label b = $1d .label res = $1e .label op = $1b - //SEG444 [168] call print_char - //SEG445 [180] phi from printu to print_char [phi:printu->print_char] + //SEG445 [168] call print_char + //SEG446 [180] phi from printu to print_char [phi:printu->print_char] print_char_from_printu: - //SEG446 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#95 [phi:printu->print_char#0] -- register_copy - //SEG447 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu->print_char#1] -- vbuz1=vbuc1 + //SEG447 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#95 [phi:printu->print_char#0] -- register_copy + //SEG448 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b1 - //SEG448 printu::@1 + //SEG449 printu::@1 b1: - //SEG449 [169] (byte) print_byte::b#0 ← (byte) printu::a#20 -- vbuz1=vbuz2 + //SEG450 [169] (byte) print_byte::b#0 ← (byte) printu::a#20 -- vbuz1=vbuz2 lda a sta print_byte.b - //SEG450 [170] call print_byte - //SEG451 [184] phi from printu::@1 to print_byte [phi:printu::@1->print_byte] + //SEG451 [170] call print_byte + //SEG452 [184] phi from printu::@1 to print_byte [phi:printu::@1->print_byte] print_byte_from_b1: - //SEG452 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#55 [phi:printu::@1->print_byte#0] -- register_copy - //SEG453 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:printu::@1->print_byte#1] -- register_copy + //SEG453 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#55 [phi:printu::@1->print_byte#0] -- register_copy + //SEG454 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:printu::@1->print_byte#1] -- register_copy jsr print_byte jmp b2 - //SEG454 printu::@2 + //SEG455 printu::@2 b2: - //SEG455 [171] (byte*) print_str::str#1 ← (byte[]) printu::op#20 -- pbuz1=pbuz2 + //SEG456 [171] (byte*) print_str::str#1 ← (byte[]) printu::op#20 -- pbuz1=pbuz2 lda op sta print_str.str lda op+1 sta print_str.str+1 - //SEG456 [172] call print_str - //SEG457 [192] phi from printu::@2 to print_str [phi:printu::@2->print_str] + //SEG457 [172] call print_str + //SEG458 [192] phi from printu::@2 to print_str [phi:printu::@2->print_str] print_str_from_b2: jsr print_str jmp b3 - //SEG458 printu::@3 + //SEG459 printu::@3 b3: - //SEG459 [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuz1=vbuz2 + //SEG460 [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG460 [174] call print_byte - //SEG461 [184] phi from printu::@3 to print_byte [phi:printu::@3->print_byte] + //SEG461 [174] call print_byte + //SEG462 [184] phi from printu::@3 to print_byte [phi:printu::@3->print_byte] print_byte_from_b3: - //SEG462 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:printu::@3->print_byte#0] -- register_copy - //SEG463 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:printu::@3->print_byte#1] -- register_copy + //SEG463 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:printu::@3->print_byte#0] -- register_copy + //SEG464 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:printu::@3->print_byte#1] -- register_copy jsr print_byte - //SEG464 [175] phi from printu::@3 to printu::@4 [phi:printu::@3->printu::@4] + //SEG465 [175] phi from printu::@3 to printu::@4 [phi:printu::@3->printu::@4] b4_from_b3: jmp b4 - //SEG465 printu::@4 + //SEG466 printu::@4 b4: - //SEG466 [176] call print_char - //SEG467 [180] phi from printu::@4 to print_char [phi:printu::@4->print_char] + //SEG467 [176] call print_char + //SEG468 [180] phi from printu::@4 to print_char [phi:printu::@4->print_char] print_char_from_b4: - //SEG468 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@4->print_char#0] -- register_copy - //SEG469 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu::@4->print_char#1] -- vbuz1=vbuc1 + //SEG469 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@4->print_char#0] -- register_copy + //SEG470 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b5 - //SEG470 printu::@5 + //SEG471 printu::@5 b5: - //SEG471 [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuz1=vbuz2 + //SEG472 [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuz1=vbuz2 lda res sta print_char.ch - //SEG472 [178] call print_char - //SEG473 [180] phi from printu::@5 to print_char [phi:printu::@5->print_char] + //SEG473 [178] call print_char + //SEG474 [180] phi from printu::@5 to print_char [phi:printu::@5->print_char] print_char_from_b5: - //SEG474 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@5->print_char#0] -- register_copy - //SEG475 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:printu::@5->print_char#1] -- register_copy + //SEG475 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@5->print_char#0] -- register_copy + //SEG476 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:printu::@5->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG476 printu::@return + //SEG477 printu::@return breturn: - //SEG477 [179] return + //SEG478 [179] return rts } -//SEG478 print_char +//SEG479 print_char // Print a single char print_char: { .label ch = $1f - //SEG479 [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 + //SEG480 [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG480 [182] (byte*) print_char_cursor#55 ← ++ (byte*) print_char_cursor#54 -- pbuz1=_inc_pbuz1 + //SEG481 [182] (byte*) print_char_cursor#55 ← ++ (byte*) print_char_cursor#54 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG481 print_char::@return + //SEG482 print_char::@return breturn: - //SEG482 [183] return + //SEG483 [183] return rts } -//SEG483 print_byte +//SEG484 print_byte // Print a byte as HEX print_byte: { .label _0 = $28 .label _2 = $29 .label b = $22 - //SEG484 [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG485 [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG485 [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG486 [186] (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 - //SEG486 [187] call print_char - //SEG487 [180] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG487 [187] call print_char + //SEG488 [180] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG488 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#94 [phi:print_byte->print_char#0] -- register_copy - //SEG489 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG489 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#94 [phi:print_byte->print_char#0] -- register_copy + //SEG490 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG490 print_byte::@1 + //SEG491 print_byte::@1 b1: - //SEG491 [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG492 [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG492 [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG493 [189] (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 - //SEG493 [190] call print_char - //SEG494 [180] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG494 [190] call print_char + //SEG495 [180] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG495 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG496 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG496 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG497 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG497 print_byte::@return + //SEG498 print_byte::@return breturn: - //SEG498 [191] return + //SEG499 [191] return rts } -//SEG499 print_str +//SEG500 print_str // Print a zero-terminated string print_str: { .label str = $23 - //SEG500 [193] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG501 [193] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG501 [193] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#55 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG502 [193] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG502 [193] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#55 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG503 [193] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG503 print_str::@1 + //SEG504 print_str::@1 b1: - //SEG504 [194] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG505 [194] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG505 print_str::@return + //SEG506 print_str::@return breturn: - //SEG506 [195] return + //SEG507 [195] return rts - //SEG507 print_str::@2 + //SEG508 print_str::@2 b2: - //SEG508 [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG509 [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG509 [197] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG510 [197] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG510 [198] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG511 [198] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG511 print_cls +//SEG512 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $25 - //SEG512 [200] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG513 [200] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG513 [200] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG514 [200] 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 - //SEG514 [200] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG515 [200] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG515 [200] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG516 [200] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG516 print_cls::@1 + //SEG517 print_cls::@1 b1: - //SEG517 [201] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG518 [201] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG518 [202] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG519 [202] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG519 [203] 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 + //SEG520 [203] 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 @@ -4487,9 +4488,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG520 print_cls::@return + //SEG521 print_cls::@return breturn: - //SEG521 [204] return + //SEG522 [204] return rts } print_hextab: .text "0123456789abcdef" @@ -4727,1012 +4728,1013 @@ Allocated (was zp ZP_BYTE:34) zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 pr Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:12 [ main::b#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 9 .label print_line_cursor = 4 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] +//SEG4 [1] phi from @begin to @21 [phi:@begin->@21] b21_from_bbegin: jmp b21 -//SEG4 @21 +//SEG5 @21 b21: -//SEG5 [2] call main -//SEG6 [4] phi from @21 to main [phi:@21->main] +//SEG6 [2] call main +//SEG7 [4] phi from @21 to main [phi:@21->main] main_from_b21: jsr main -//SEG7 [3] phi from @21 to @end [phi:@21->@end] +//SEG8 [3] phi from @21 to @end [phi:@21->@end] bend_from_b21: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label b = $c .label a = 2 .label i = 3 - //SEG10 [5] call print_cls - //SEG11 [199] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [199] 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] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG13 [6] phi (byte*) print_line_cursor#27 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) print_line_cursor#27 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG15 [6] phi (byte*) print_char_cursor#120 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#120 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG16 [6] phi (byte) main::a#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@1#3] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::a#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@1#3] -- vbuz1=vbuc1 lda #7 sta a jmp b1 - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [7] (byte) main::b#0 ← (byte/word/signed word/dword/signed dword) 206 - (byte) main::a#10 -- vbuz1=vbuc1_minus_vbuz2 + //SEG19 [7] (byte) main::b#0 ← (byte/word/signed word/dword/signed dword) 206 - (byte) main::a#10 -- vbuz1=vbuc1_minus_vbuz2 lda #$ce sec sbc a sta b - //SEG19 [8] if((byte) main::a#10>=(byte) main::b#0) goto main::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG20 [8] if((byte) main::a#10>=(byte) main::b#0) goto main::@2 -- vbuz1_ge_vbuz2_then_la1 lda a cmp b bcs b2_from_b1 - //SEG20 [9] phi from main::@1 to main::@23 [phi:main::@1->main::@23] + //SEG21 [9] phi from main::@1 to main::@23 [phi:main::@1->main::@23] b23_from_b1: jmp b23 - //SEG21 main::@23 + //SEG22 main::@23 b23: - //SEG22 [10] phi from main::@23 to main::@2 [phi:main::@23->main::@2] + //SEG23 [10] phi from main::@23 to main::@2 [phi:main::@23->main::@2] b2_from_b23: - //SEG23 [10] phi (byte) main::r#40 = (byte) '+' [phi:main::@23->main::@2#0] -- vbuxx=vbuc1 + //SEG24 [10] phi (byte) main::r#40 = (byte) '+' [phi:main::@23->main::@2#0] -- vbuxx=vbuc1 ldx #'+' jmp b2 - //SEG24 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG25 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG25 [10] phi (byte) main::r#40 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG26 [10] phi (byte) main::r#40 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #'-' jmp b2 - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [11] (byte) printu::a#0 ← (byte) main::a#10 - //SEG28 [12] (byte) printu::b#0 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG28 [11] (byte) printu::a#0 ← (byte) main::a#10 + //SEG29 [12] (byte) printu::b#0 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG29 [13] (byte) printu::res#0 ← (byte) main::r#40 - //SEG30 [14] call printu - //SEG31 [167] phi from main::@2 to printu [phi:main::@2->printu] + //SEG30 [13] (byte) printu::res#0 ← (byte) main::r#40 + //SEG31 [14] call printu + //SEG32 [167] phi from main::@2 to printu [phi:main::@2->printu] printu_from_b2: - //SEG32 [167] phi (byte) printu::res#20 = (byte) printu::res#0 [phi:main::@2->printu#0] -- register_copy - //SEG33 [167] phi (byte) printu::b#20 = (byte) printu::b#0 [phi:main::@2->printu#1] -- register_copy - //SEG34 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@2->printu#2] -- pbuz1=pbuc1 + //SEG33 [167] phi (byte) printu::res#20 = (byte) printu::res#0 [phi:main::@2->printu#0] -- register_copy + //SEG34 [167] phi (byte) printu::b#20 = (byte) printu::b#0 [phi:main::@2->printu#1] -- register_copy + //SEG35 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@2->printu#2] -- pbuz1=pbuc1 lda #op sta printu.op+1 - //SEG35 [167] phi (byte) printu::a#20 = (byte) printu::a#0 [phi:main::@2->printu#3] -- register_copy - //SEG36 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#120 [phi:main::@2->printu#4] -- register_copy + //SEG36 [167] phi (byte) printu::a#20 = (byte) printu::a#0 [phi:main::@2->printu#3] -- register_copy + //SEG37 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#120 [phi:main::@2->printu#4] -- register_copy jsr printu jmp b46 - //SEG37 main::@46 + //SEG38 main::@46 b46: - //SEG38 [15] if((byte) main::a#10>=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@3 -- vbuz1_ge_vbuc1_then_la1 + //SEG39 [15] if((byte) main::a#10>=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@3 -- vbuz1_ge_vbuc1_then_la1 lda a cmp #$37 bcs b3_from_b46 - //SEG39 [16] phi from main::@46 to main::@24 [phi:main::@46->main::@24] + //SEG40 [16] phi from main::@46 to main::@24 [phi:main::@46->main::@24] b24_from_b46: jmp b24 - //SEG40 main::@24 + //SEG41 main::@24 b24: - //SEG41 [17] phi from main::@24 to main::@3 [phi:main::@24->main::@3] + //SEG42 [17] phi from main::@24 to main::@3 [phi:main::@24->main::@3] b3_from_b24: - //SEG42 [17] phi (byte) main::r#41 = (byte) '+' [phi:main::@24->main::@3#0] -- vbuxx=vbuc1 + //SEG43 [17] phi (byte) main::r#41 = (byte) '+' [phi:main::@24->main::@3#0] -- vbuxx=vbuc1 ldx #'+' jmp b3 - //SEG43 [17] phi from main::@46 to main::@3 [phi:main::@46->main::@3] + //SEG44 [17] phi from main::@46 to main::@3 [phi:main::@46->main::@3] b3_from_b46: - //SEG44 [17] phi (byte) main::r#41 = (byte) '-' [phi:main::@46->main::@3#0] -- vbuxx=vbuc1 + //SEG45 [17] phi (byte) main::r#41 = (byte) '-' [phi:main::@46->main::@3#0] -- vbuxx=vbuc1 ldx #'-' jmp b3 - //SEG45 main::@3 + //SEG46 main::@3 b3: - //SEG46 [18] (byte) printu::a#1 ← (byte) main::a#10 - //SEG47 [19] (byte) printu::res#1 ← (byte) main::r#41 - //SEG48 [20] call printu - //SEG49 [167] phi from main::@3 to printu [phi:main::@3->printu] + //SEG47 [18] (byte) printu::a#1 ← (byte) main::a#10 + //SEG48 [19] (byte) printu::res#1 ← (byte) main::r#41 + //SEG49 [20] call printu + //SEG50 [167] phi from main::@3 to printu [phi:main::@3->printu] printu_from_b3: - //SEG50 [167] phi (byte) printu::res#20 = (byte) printu::res#1 [phi:main::@3->printu#0] -- register_copy - //SEG51 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 + //SEG51 [167] phi (byte) printu::res#20 = (byte) printu::res#1 [phi:main::@3->printu#0] -- register_copy + //SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG52 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 + //SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 lda #op1 sta printu.op+1 - //SEG53 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy - //SEG54 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy + //SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy + //SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy jsr printu jmp b47 - //SEG55 main::@47 + //SEG56 main::@47 b47: - //SEG56 [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 -- vbuz1_ge_pbuc1_derefidx_vbuz2_then_la1 + //SEG57 [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 -- vbuz1_ge_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bcs b4_from_b47 - //SEG57 [22] phi from main::@47 to main::@25 [phi:main::@47->main::@25] + //SEG58 [22] phi from main::@47 to main::@25 [phi:main::@47->main::@25] b25_from_b47: jmp b25 - //SEG58 main::@25 + //SEG59 main::@25 b25: - //SEG59 [23] phi from main::@25 to main::@4 [phi:main::@25->main::@4] + //SEG60 [23] phi from main::@25 to main::@4 [phi:main::@25->main::@4] b4_from_b25: - //SEG60 [23] phi (byte) main::r#42 = (byte) '+' [phi:main::@25->main::@4#0] -- vbuxx=vbuc1 + //SEG61 [23] phi (byte) main::r#42 = (byte) '+' [phi:main::@25->main::@4#0] -- vbuxx=vbuc1 ldx #'+' jmp b4 - //SEG61 [23] phi from main::@47 to main::@4 [phi:main::@47->main::@4] + //SEG62 [23] phi from main::@47 to main::@4 [phi:main::@47->main::@4] b4_from_b47: - //SEG62 [23] phi (byte) main::r#42 = (byte) '-' [phi:main::@47->main::@4#0] -- vbuxx=vbuc1 + //SEG63 [23] phi (byte) main::r#42 = (byte) '-' [phi:main::@47->main::@4#0] -- vbuxx=vbuc1 ldx #'-' jmp b4 - //SEG63 main::@4 + //SEG64 main::@4 b4: - //SEG64 [24] (byte) printu::a#2 ← (byte) main::a#10 - //SEG65 [25] (byte) printu::b#2 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG65 [24] (byte) printu::a#2 ← (byte) main::a#10 + //SEG66 [25] (byte) printu::b#2 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG66 [26] (byte) printu::res#2 ← (byte) main::r#42 - //SEG67 [27] call printu - //SEG68 [167] phi from main::@4 to printu [phi:main::@4->printu] + //SEG67 [26] (byte) printu::res#2 ← (byte) main::r#42 + //SEG68 [27] call printu + //SEG69 [167] phi from main::@4 to printu [phi:main::@4->printu] printu_from_b4: - //SEG69 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy - //SEG70 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy - //SEG71 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 + //SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy + //SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy + //SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 lda #op2 sta printu.op+1 - //SEG72 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy - //SEG73 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy + //SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy + //SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy jsr printu jmp b48 - //SEG74 main::@48 + //SEG75 main::@48 b48: - //SEG75 [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 -- vbuz1_ge_vbuz1_then_la1 + //SEG76 [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 -- vbuz1_ge_vbuz1_then_la1 lda a cmp a bcs b5_from_b48 - //SEG76 [29] phi from main::@48 to main::@26 [phi:main::@48->main::@26] + //SEG77 [29] phi from main::@48 to main::@26 [phi:main::@48->main::@26] b26_from_b48: jmp b26 - //SEG77 main::@26 + //SEG78 main::@26 b26: - //SEG78 [30] phi from main::@26 to main::@5 [phi:main::@26->main::@5] + //SEG79 [30] phi from main::@26 to main::@5 [phi:main::@26->main::@5] b5_from_b26: - //SEG79 [30] phi (byte) main::r#43 = (byte) '+' [phi:main::@26->main::@5#0] -- vbuxx=vbuc1 + //SEG80 [30] phi (byte) main::r#43 = (byte) '+' [phi:main::@26->main::@5#0] -- vbuxx=vbuc1 ldx #'+' jmp b5 - //SEG80 [30] phi from main::@48 to main::@5 [phi:main::@48->main::@5] + //SEG81 [30] phi from main::@48 to main::@5 [phi:main::@48->main::@5] b5_from_b48: - //SEG81 [30] phi (byte) main::r#43 = (byte) '-' [phi:main::@48->main::@5#0] -- vbuxx=vbuc1 + //SEG82 [30] phi (byte) main::r#43 = (byte) '-' [phi:main::@48->main::@5#0] -- vbuxx=vbuc1 ldx #'-' jmp b5 - //SEG82 main::@5 + //SEG83 main::@5 b5: - //SEG83 [31] (byte) printu::a#3 ← (byte) main::a#10 - //SEG84 [32] (byte) printu::b#3 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG84 [31] (byte) printu::a#3 ← (byte) main::a#10 + //SEG85 [32] (byte) printu::b#3 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG85 [33] (byte) printu::res#3 ← (byte) main::r#43 - //SEG86 [34] call printu - //SEG87 [167] phi from main::@5 to printu [phi:main::@5->printu] + //SEG86 [33] (byte) printu::res#3 ← (byte) main::r#43 + //SEG87 [34] call printu + //SEG88 [167] phi from main::@5 to printu [phi:main::@5->printu] printu_from_b5: - //SEG88 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy - //SEG89 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy - //SEG90 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 + //SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy + //SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy + //SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 lda #op3 sta printu.op+1 - //SEG91 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy - //SEG92 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy + //SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy + //SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy jsr printu - //SEG93 [35] phi from main::@5 to main::@49 [phi:main::@5->main::@49] + //SEG94 [35] phi from main::@5 to main::@49 [phi:main::@5->main::@49] b49_from_b5: jmp b49 - //SEG94 main::@49 + //SEG95 main::@49 b49: - //SEG95 [36] call print_ln - //SEG96 [162] phi from main::@49 to print_ln [phi:main::@49->print_ln] + //SEG96 [36] call print_ln + //SEG97 [162] phi from main::@49 to print_ln [phi:main::@49->print_ln] print_ln_from_b49: - //SEG97 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#27 [phi:main::@49->print_ln#0] -- register_copy + //SEG98 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#27 [phi:main::@49->print_ln#0] -- register_copy jsr print_ln jmp b50 - //SEG98 main::@50 + //SEG99 main::@50 b50: - //SEG99 [37] if((byte) main::a#10<=(byte) main::b#0) goto main::@6 -- vbuz1_le_vbuz2_then_la1 + //SEG100 [37] if((byte) main::a#10<=(byte) main::b#0) goto main::@6 -- vbuz1_le_vbuz2_then_la1 lda b cmp a bcs b6_from_b50 - //SEG100 [38] phi from main::@50 to main::@27 [phi:main::@50->main::@27] + //SEG101 [38] phi from main::@50 to main::@27 [phi:main::@50->main::@27] b27_from_b50: jmp b27 - //SEG101 main::@27 + //SEG102 main::@27 b27: - //SEG102 [39] phi from main::@27 to main::@6 [phi:main::@27->main::@6] + //SEG103 [39] phi from main::@27 to main::@6 [phi:main::@27->main::@6] b6_from_b27: - //SEG103 [39] phi (byte) main::r#44 = (byte) '+' [phi:main::@27->main::@6#0] -- vbuxx=vbuc1 + //SEG104 [39] phi (byte) main::r#44 = (byte) '+' [phi:main::@27->main::@6#0] -- vbuxx=vbuc1 ldx #'+' jmp b6 - //SEG104 [39] phi from main::@50 to main::@6 [phi:main::@50->main::@6] + //SEG105 [39] phi from main::@50 to main::@6 [phi:main::@50->main::@6] b6_from_b50: - //SEG105 [39] phi (byte) main::r#44 = (byte) '-' [phi:main::@50->main::@6#0] -- vbuxx=vbuc1 + //SEG106 [39] phi (byte) main::r#44 = (byte) '-' [phi:main::@50->main::@6#0] -- vbuxx=vbuc1 ldx #'-' jmp b6 - //SEG106 main::@6 + //SEG107 main::@6 b6: - //SEG107 [40] (byte) printu::a#4 ← (byte) main::a#10 - //SEG108 [41] (byte) printu::b#4 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG108 [40] (byte) printu::a#4 ← (byte) main::a#10 + //SEG109 [41] (byte) printu::b#4 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG109 [42] (byte) printu::res#4 ← (byte) main::r#44 - //SEG110 [43] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG110 [42] (byte) printu::res#4 ← (byte) main::r#44 + //SEG111 [43] (byte*~) print_char_cursor#159 ← (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 - //SEG111 [44] call printu - //SEG112 [167] phi from main::@6 to printu [phi:main::@6->printu] + //SEG112 [44] call printu + //SEG113 [167] phi from main::@6 to printu [phi:main::@6->printu] printu_from_b6: - //SEG113 [167] phi (byte) printu::res#20 = (byte) printu::res#4 [phi:main::@6->printu#0] -- register_copy - //SEG114 [167] phi (byte) printu::b#20 = (byte) printu::b#4 [phi:main::@6->printu#1] -- register_copy - //SEG115 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@6->printu#2] -- pbuz1=pbuc1 + //SEG114 [167] phi (byte) printu::res#20 = (byte) printu::res#4 [phi:main::@6->printu#0] -- register_copy + //SEG115 [167] phi (byte) printu::b#20 = (byte) printu::b#4 [phi:main::@6->printu#1] -- register_copy + //SEG116 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@6->printu#2] -- pbuz1=pbuc1 lda #op4 sta printu.op+1 - //SEG116 [167] phi (byte) printu::a#20 = (byte) printu::a#4 [phi:main::@6->printu#3] -- register_copy - //SEG117 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#159 [phi:main::@6->printu#4] -- register_copy + //SEG117 [167] phi (byte) printu::a#20 = (byte) printu::a#4 [phi:main::@6->printu#3] -- register_copy + //SEG118 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#159 [phi:main::@6->printu#4] -- register_copy jsr printu jmp b51 - //SEG118 main::@51 + //SEG119 main::@51 b51: - //SEG119 [45] if((byte) main::a#10<=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@7 -- vbuz1_le_vbuc1_then_la1 + //SEG120 [45] if((byte) main::a#10<=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@7 -- vbuz1_le_vbuc1_then_la1 lda #$37 cmp a bcs b7_from_b51 - //SEG120 [46] phi from main::@51 to main::@28 [phi:main::@51->main::@28] + //SEG121 [46] phi from main::@51 to main::@28 [phi:main::@51->main::@28] b28_from_b51: jmp b28 - //SEG121 main::@28 + //SEG122 main::@28 b28: - //SEG122 [47] phi from main::@28 to main::@7 [phi:main::@28->main::@7] + //SEG123 [47] phi from main::@28 to main::@7 [phi:main::@28->main::@7] b7_from_b28: - //SEG123 [47] phi (byte) main::r#45 = (byte) '+' [phi:main::@28->main::@7#0] -- vbuxx=vbuc1 + //SEG124 [47] phi (byte) main::r#45 = (byte) '+' [phi:main::@28->main::@7#0] -- vbuxx=vbuc1 ldx #'+' jmp b7 - //SEG124 [47] phi from main::@51 to main::@7 [phi:main::@51->main::@7] + //SEG125 [47] phi from main::@51 to main::@7 [phi:main::@51->main::@7] b7_from_b51: - //SEG125 [47] phi (byte) main::r#45 = (byte) '-' [phi:main::@51->main::@7#0] -- vbuxx=vbuc1 + //SEG126 [47] phi (byte) main::r#45 = (byte) '-' [phi:main::@51->main::@7#0] -- vbuxx=vbuc1 ldx #'-' jmp b7 - //SEG126 main::@7 + //SEG127 main::@7 b7: - //SEG127 [48] (byte) printu::a#5 ← (byte) main::a#10 - //SEG128 [49] (byte) printu::res#5 ← (byte) main::r#45 - //SEG129 [50] call printu - //SEG130 [167] phi from main::@7 to printu [phi:main::@7->printu] + //SEG128 [48] (byte) printu::a#5 ← (byte) main::a#10 + //SEG129 [49] (byte) printu::res#5 ← (byte) main::r#45 + //SEG130 [50] call printu + //SEG131 [167] phi from main::@7 to printu [phi:main::@7->printu] printu_from_b7: - //SEG131 [167] phi (byte) printu::res#20 = (byte) printu::res#5 [phi:main::@7->printu#0] -- register_copy - //SEG132 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 + //SEG132 [167] phi (byte) printu::res#20 = (byte) printu::res#5 [phi:main::@7->printu#0] -- register_copy + //SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG133 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 + //SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 lda #op5 sta printu.op+1 - //SEG134 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy - //SEG135 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy + //SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy + //SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy jsr printu jmp b52 - //SEG136 main::@52 + //SEG137 main::@52 b52: - //SEG137 [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 -- vbuz1_le_pbuc1_derefidx_vbuz2_then_la1 + //SEG138 [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 -- vbuz1_le_pbuc1_derefidx_vbuz2_then_la1 ldy i lda cs,y cmp a bcs b8_from_b52 - //SEG138 [52] phi from main::@52 to main::@29 [phi:main::@52->main::@29] + //SEG139 [52] phi from main::@52 to main::@29 [phi:main::@52->main::@29] b29_from_b52: jmp b29 - //SEG139 main::@29 + //SEG140 main::@29 b29: - //SEG140 [53] phi from main::@29 to main::@8 [phi:main::@29->main::@8] + //SEG141 [53] phi from main::@29 to main::@8 [phi:main::@29->main::@8] b8_from_b29: - //SEG141 [53] phi (byte) main::r#46 = (byte) '+' [phi:main::@29->main::@8#0] -- vbuxx=vbuc1 + //SEG142 [53] phi (byte) main::r#46 = (byte) '+' [phi:main::@29->main::@8#0] -- vbuxx=vbuc1 ldx #'+' jmp b8 - //SEG142 [53] phi from main::@52 to main::@8 [phi:main::@52->main::@8] + //SEG143 [53] phi from main::@52 to main::@8 [phi:main::@52->main::@8] b8_from_b52: - //SEG143 [53] phi (byte) main::r#46 = (byte) '-' [phi:main::@52->main::@8#0] -- vbuxx=vbuc1 + //SEG144 [53] phi (byte) main::r#46 = (byte) '-' [phi:main::@52->main::@8#0] -- vbuxx=vbuc1 ldx #'-' jmp b8 - //SEG144 main::@8 + //SEG145 main::@8 b8: - //SEG145 [54] (byte) printu::a#6 ← (byte) main::a#10 - //SEG146 [55] (byte) printu::b#6 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG146 [54] (byte) printu::a#6 ← (byte) main::a#10 + //SEG147 [55] (byte) printu::b#6 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG147 [56] (byte) printu::res#6 ← (byte) main::r#46 - //SEG148 [57] call printu - //SEG149 [167] phi from main::@8 to printu [phi:main::@8->printu] + //SEG148 [56] (byte) printu::res#6 ← (byte) main::r#46 + //SEG149 [57] call printu + //SEG150 [167] phi from main::@8 to printu [phi:main::@8->printu] printu_from_b8: - //SEG150 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy - //SEG151 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy - //SEG152 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 + //SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy + //SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy + //SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 lda #op6 sta printu.op+1 - //SEG153 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy - //SEG154 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy + //SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy + //SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy jsr printu jmp b53 - //SEG155 main::@53 + //SEG156 main::@53 b53: - //SEG156 [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 -- vbuz1_le_vbuz1_then_la1 + //SEG157 [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 -- vbuz1_le_vbuz1_then_la1 lda a cmp a bcs b9_from_b53 - //SEG157 [59] phi from main::@53 to main::@30 [phi:main::@53->main::@30] + //SEG158 [59] phi from main::@53 to main::@30 [phi:main::@53->main::@30] b30_from_b53: jmp b30 - //SEG158 main::@30 + //SEG159 main::@30 b30: - //SEG159 [60] phi from main::@30 to main::@9 [phi:main::@30->main::@9] + //SEG160 [60] phi from main::@30 to main::@9 [phi:main::@30->main::@9] b9_from_b30: - //SEG160 [60] phi (byte) main::r#47 = (byte) '+' [phi:main::@30->main::@9#0] -- vbuxx=vbuc1 + //SEG161 [60] phi (byte) main::r#47 = (byte) '+' [phi:main::@30->main::@9#0] -- vbuxx=vbuc1 ldx #'+' jmp b9 - //SEG161 [60] phi from main::@53 to main::@9 [phi:main::@53->main::@9] + //SEG162 [60] phi from main::@53 to main::@9 [phi:main::@53->main::@9] b9_from_b53: - //SEG162 [60] phi (byte) main::r#47 = (byte) '-' [phi:main::@53->main::@9#0] -- vbuxx=vbuc1 + //SEG163 [60] phi (byte) main::r#47 = (byte) '-' [phi:main::@53->main::@9#0] -- vbuxx=vbuc1 ldx #'-' jmp b9 - //SEG163 main::@9 + //SEG164 main::@9 b9: - //SEG164 [61] (byte) printu::a#7 ← (byte) main::a#10 - //SEG165 [62] (byte) printu::b#7 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG165 [61] (byte) printu::a#7 ← (byte) main::a#10 + //SEG166 [62] (byte) printu::b#7 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG166 [63] (byte) printu::res#7 ← (byte) main::r#47 - //SEG167 [64] call printu - //SEG168 [167] phi from main::@9 to printu [phi:main::@9->printu] + //SEG167 [63] (byte) printu::res#7 ← (byte) main::r#47 + //SEG168 [64] call printu + //SEG169 [167] phi from main::@9 to printu [phi:main::@9->printu] printu_from_b9: - //SEG169 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy - //SEG170 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy - //SEG171 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 + //SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy + //SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy + //SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 lda #op7 sta printu.op+1 - //SEG172 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy - //SEG173 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy + //SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy + //SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy jsr printu - //SEG174 [65] phi from main::@9 to main::@54 [phi:main::@9->main::@54] + //SEG175 [65] phi from main::@9 to main::@54 [phi:main::@9->main::@54] b54_from_b9: jmp b54 - //SEG175 main::@54 + //SEG176 main::@54 b54: - //SEG176 [66] call print_ln - //SEG177 [162] phi from main::@54 to print_ln [phi:main::@54->print_ln] + //SEG177 [66] call print_ln + //SEG178 [162] phi from main::@54 to print_ln [phi:main::@54->print_ln] print_ln_from_b54: - //SEG178 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@54->print_ln#0] -- register_copy + //SEG179 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@54->print_ln#0] -- register_copy jsr print_ln jmp b55 - //SEG179 main::@55 + //SEG180 main::@55 b55: - //SEG180 [67] if((byte) main::a#10>(byte) main::b#0) goto main::@10 -- vbuz1_gt_vbuz2_then_la1 + //SEG181 [67] if((byte) main::a#10>(byte) main::b#0) goto main::@10 -- vbuz1_gt_vbuz2_then_la1 lda b cmp a bcc b10_from_b55 - //SEG181 [68] phi from main::@55 to main::@31 [phi:main::@55->main::@31] + //SEG182 [68] phi from main::@55 to main::@31 [phi:main::@55->main::@31] b31_from_b55: jmp b31 - //SEG182 main::@31 + //SEG183 main::@31 b31: - //SEG183 [69] phi from main::@31 to main::@10 [phi:main::@31->main::@10] + //SEG184 [69] phi from main::@31 to main::@10 [phi:main::@31->main::@10] b10_from_b31: - //SEG184 [69] phi (byte) main::r#48 = (byte) '+' [phi:main::@31->main::@10#0] -- vbuxx=vbuc1 + //SEG185 [69] phi (byte) main::r#48 = (byte) '+' [phi:main::@31->main::@10#0] -- vbuxx=vbuc1 ldx #'+' jmp b10 - //SEG185 [69] phi from main::@55 to main::@10 [phi:main::@55->main::@10] + //SEG186 [69] phi from main::@55 to main::@10 [phi:main::@55->main::@10] b10_from_b55: - //SEG186 [69] phi (byte) main::r#48 = (byte) '-' [phi:main::@55->main::@10#0] -- vbuxx=vbuc1 + //SEG187 [69] phi (byte) main::r#48 = (byte) '-' [phi:main::@55->main::@10#0] -- vbuxx=vbuc1 ldx #'-' jmp b10 - //SEG187 main::@10 + //SEG188 main::@10 b10: - //SEG188 [70] (byte) printu::a#8 ← (byte) main::a#10 - //SEG189 [71] (byte) printu::b#8 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG189 [70] (byte) printu::a#8 ← (byte) main::a#10 + //SEG190 [71] (byte) printu::b#8 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG190 [72] (byte) printu::res#8 ← (byte) main::r#48 - //SEG191 [73] (byte*~) print_char_cursor#143 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG191 [72] (byte) printu::res#8 ← (byte) main::r#48 + //SEG192 [73] (byte*~) print_char_cursor#143 ← (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 - //SEG192 [74] call printu - //SEG193 [167] phi from main::@10 to printu [phi:main::@10->printu] + //SEG193 [74] call printu + //SEG194 [167] phi from main::@10 to printu [phi:main::@10->printu] printu_from_b10: - //SEG194 [167] phi (byte) printu::res#20 = (byte) printu::res#8 [phi:main::@10->printu#0] -- register_copy - //SEG195 [167] phi (byte) printu::b#20 = (byte) printu::b#8 [phi:main::@10->printu#1] -- register_copy - //SEG196 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@10->printu#2] -- pbuz1=pbuc1 + //SEG195 [167] phi (byte) printu::res#20 = (byte) printu::res#8 [phi:main::@10->printu#0] -- register_copy + //SEG196 [167] phi (byte) printu::b#20 = (byte) printu::b#8 [phi:main::@10->printu#1] -- register_copy + //SEG197 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@10->printu#2] -- pbuz1=pbuc1 lda #op8 sta printu.op+1 - //SEG197 [167] phi (byte) printu::a#20 = (byte) printu::a#8 [phi:main::@10->printu#3] -- register_copy - //SEG198 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#143 [phi:main::@10->printu#4] -- register_copy + //SEG198 [167] phi (byte) printu::a#20 = (byte) printu::a#8 [phi:main::@10->printu#3] -- register_copy + //SEG199 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#143 [phi:main::@10->printu#4] -- register_copy jsr printu jmp b56 - //SEG199 main::@56 + //SEG200 main::@56 b56: - //SEG200 [75] if((byte) main::a#10>(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@11 -- vbuz1_gt_vbuc1_then_la1 + //SEG201 [75] if((byte) main::a#10>(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@11 -- vbuz1_gt_vbuc1_then_la1 lda a cmp #$37 beq !+ bcs b11_from_b56 !: - //SEG201 [76] phi from main::@56 to main::@32 [phi:main::@56->main::@32] + //SEG202 [76] phi from main::@56 to main::@32 [phi:main::@56->main::@32] b32_from_b56: jmp b32 - //SEG202 main::@32 + //SEG203 main::@32 b32: - //SEG203 [77] phi from main::@32 to main::@11 [phi:main::@32->main::@11] + //SEG204 [77] phi from main::@32 to main::@11 [phi:main::@32->main::@11] b11_from_b32: - //SEG204 [77] phi (byte) main::r#49 = (byte) '+' [phi:main::@32->main::@11#0] -- vbuxx=vbuc1 + //SEG205 [77] phi (byte) main::r#49 = (byte) '+' [phi:main::@32->main::@11#0] -- vbuxx=vbuc1 ldx #'+' jmp b11 - //SEG205 [77] phi from main::@56 to main::@11 [phi:main::@56->main::@11] + //SEG206 [77] phi from main::@56 to main::@11 [phi:main::@56->main::@11] b11_from_b56: - //SEG206 [77] phi (byte) main::r#49 = (byte) '-' [phi:main::@56->main::@11#0] -- vbuxx=vbuc1 + //SEG207 [77] phi (byte) main::r#49 = (byte) '-' [phi:main::@56->main::@11#0] -- vbuxx=vbuc1 ldx #'-' jmp b11 - //SEG207 main::@11 + //SEG208 main::@11 b11: - //SEG208 [78] (byte) printu::a#9 ← (byte) main::a#10 - //SEG209 [79] (byte) printu::res#9 ← (byte) main::r#49 - //SEG210 [80] call printu - //SEG211 [167] phi from main::@11 to printu [phi:main::@11->printu] + //SEG209 [78] (byte) printu::a#9 ← (byte) main::a#10 + //SEG210 [79] (byte) printu::res#9 ← (byte) main::r#49 + //SEG211 [80] call printu + //SEG212 [167] phi from main::@11 to printu [phi:main::@11->printu] printu_from_b11: - //SEG212 [167] phi (byte) printu::res#20 = (byte) printu::res#9 [phi:main::@11->printu#0] -- register_copy - //SEG213 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 + //SEG213 [167] phi (byte) printu::res#20 = (byte) printu::res#9 [phi:main::@11->printu#0] -- register_copy + //SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG214 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 + //SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 lda #op9 sta printu.op+1 - //SEG215 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy - //SEG216 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy + //SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy + //SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy jsr printu jmp b57 - //SEG217 main::@57 + //SEG218 main::@57 b57: - //SEG218 [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 -- vbuz1_gt_pbuc1_derefidx_vbuz2_then_la1 + //SEG219 [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 -- vbuz1_gt_pbuc1_derefidx_vbuz2_then_la1 ldy i lda cs,y cmp a bcc b12_from_b57 - //SEG219 [82] phi from main::@57 to main::@33 [phi:main::@57->main::@33] + //SEG220 [82] phi from main::@57 to main::@33 [phi:main::@57->main::@33] b33_from_b57: jmp b33 - //SEG220 main::@33 + //SEG221 main::@33 b33: - //SEG221 [83] phi from main::@33 to main::@12 [phi:main::@33->main::@12] + //SEG222 [83] phi from main::@33 to main::@12 [phi:main::@33->main::@12] b12_from_b33: - //SEG222 [83] phi (byte) main::r#50 = (byte) '+' [phi:main::@33->main::@12#0] -- vbuxx=vbuc1 + //SEG223 [83] phi (byte) main::r#50 = (byte) '+' [phi:main::@33->main::@12#0] -- vbuxx=vbuc1 ldx #'+' jmp b12 - //SEG223 [83] phi from main::@57 to main::@12 [phi:main::@57->main::@12] + //SEG224 [83] phi from main::@57 to main::@12 [phi:main::@57->main::@12] b12_from_b57: - //SEG224 [83] phi (byte) main::r#50 = (byte) '-' [phi:main::@57->main::@12#0] -- vbuxx=vbuc1 + //SEG225 [83] phi (byte) main::r#50 = (byte) '-' [phi:main::@57->main::@12#0] -- vbuxx=vbuc1 ldx #'-' jmp b12 - //SEG225 main::@12 + //SEG226 main::@12 b12: - //SEG226 [84] (byte) printu::a#10 ← (byte) main::a#10 - //SEG227 [85] (byte) printu::b#10 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG227 [84] (byte) printu::a#10 ← (byte) main::a#10 + //SEG228 [85] (byte) printu::b#10 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG228 [86] (byte) printu::res#10 ← (byte) main::r#50 - //SEG229 [87] call printu - //SEG230 [167] phi from main::@12 to printu [phi:main::@12->printu] + //SEG229 [86] (byte) printu::res#10 ← (byte) main::r#50 + //SEG230 [87] call printu + //SEG231 [167] phi from main::@12 to printu [phi:main::@12->printu] printu_from_b12: - //SEG231 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy - //SEG232 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy - //SEG233 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 + //SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy + //SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy + //SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 lda #op10 sta printu.op+1 - //SEG234 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy - //SEG235 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy + //SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy + //SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy jsr printu jmp b58 - //SEG236 main::@58 + //SEG237 main::@58 b58: - //SEG237 [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 -- vbuz1_gt_vbuz1_then_la1 + //SEG238 [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 -- vbuz1_gt_vbuz1_then_la1 lda a cmp a bcc b13_from_b58 - //SEG238 [89] phi from main::@58 to main::@34 [phi:main::@58->main::@34] + //SEG239 [89] phi from main::@58 to main::@34 [phi:main::@58->main::@34] b34_from_b58: jmp b34 - //SEG239 main::@34 + //SEG240 main::@34 b34: - //SEG240 [90] phi from main::@34 to main::@13 [phi:main::@34->main::@13] + //SEG241 [90] phi from main::@34 to main::@13 [phi:main::@34->main::@13] b13_from_b34: - //SEG241 [90] phi (byte) main::r#51 = (byte) '+' [phi:main::@34->main::@13#0] -- vbuxx=vbuc1 + //SEG242 [90] phi (byte) main::r#51 = (byte) '+' [phi:main::@34->main::@13#0] -- vbuxx=vbuc1 ldx #'+' jmp b13 - //SEG242 [90] phi from main::@58 to main::@13 [phi:main::@58->main::@13] + //SEG243 [90] phi from main::@58 to main::@13 [phi:main::@58->main::@13] b13_from_b58: - //SEG243 [90] phi (byte) main::r#51 = (byte) '-' [phi:main::@58->main::@13#0] -- vbuxx=vbuc1 + //SEG244 [90] phi (byte) main::r#51 = (byte) '-' [phi:main::@58->main::@13#0] -- vbuxx=vbuc1 ldx #'-' jmp b13 - //SEG244 main::@13 + //SEG245 main::@13 b13: - //SEG245 [91] (byte) printu::a#11 ← (byte) main::a#10 - //SEG246 [92] (byte) printu::b#11 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG246 [91] (byte) printu::a#11 ← (byte) main::a#10 + //SEG247 [92] (byte) printu::b#11 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG247 [93] (byte) printu::res#11 ← (byte) main::r#51 - //SEG248 [94] call printu - //SEG249 [167] phi from main::@13 to printu [phi:main::@13->printu] + //SEG248 [93] (byte) printu::res#11 ← (byte) main::r#51 + //SEG249 [94] call printu + //SEG250 [167] phi from main::@13 to printu [phi:main::@13->printu] printu_from_b13: - //SEG250 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy - //SEG251 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy - //SEG252 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 + //SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy + //SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy + //SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 lda #op11 sta printu.op+1 - //SEG253 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy - //SEG254 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy + //SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy + //SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy jsr printu - //SEG255 [95] phi from main::@13 to main::@59 [phi:main::@13->main::@59] + //SEG256 [95] phi from main::@13 to main::@59 [phi:main::@13->main::@59] b59_from_b13: jmp b59 - //SEG256 main::@59 + //SEG257 main::@59 b59: - //SEG257 [96] call print_ln - //SEG258 [162] phi from main::@59 to print_ln [phi:main::@59->print_ln] + //SEG258 [96] call print_ln + //SEG259 [162] phi from main::@59 to print_ln [phi:main::@59->print_ln] print_ln_from_b59: - //SEG259 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@59->print_ln#0] -- register_copy + //SEG260 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@59->print_ln#0] -- register_copy jsr print_ln jmp b60 - //SEG260 main::@60 + //SEG261 main::@60 b60: - //SEG261 [97] if((byte) main::a#10<(byte) main::b#0) goto main::@14 -- vbuz1_lt_vbuz2_then_la1 + //SEG262 [97] if((byte) main::a#10<(byte) main::b#0) goto main::@14 -- vbuz1_lt_vbuz2_then_la1 lda a cmp b bcc b14_from_b60 - //SEG262 [98] phi from main::@60 to main::@35 [phi:main::@60->main::@35] + //SEG263 [98] phi from main::@60 to main::@35 [phi:main::@60->main::@35] b35_from_b60: jmp b35 - //SEG263 main::@35 + //SEG264 main::@35 b35: - //SEG264 [99] phi from main::@35 to main::@14 [phi:main::@35->main::@14] + //SEG265 [99] phi from main::@35 to main::@14 [phi:main::@35->main::@14] b14_from_b35: - //SEG265 [99] phi (byte) main::r#52 = (byte) '+' [phi:main::@35->main::@14#0] -- vbuxx=vbuc1 + //SEG266 [99] phi (byte) main::r#52 = (byte) '+' [phi:main::@35->main::@14#0] -- vbuxx=vbuc1 ldx #'+' jmp b14 - //SEG266 [99] phi from main::@60 to main::@14 [phi:main::@60->main::@14] + //SEG267 [99] phi from main::@60 to main::@14 [phi:main::@60->main::@14] b14_from_b60: - //SEG267 [99] phi (byte) main::r#52 = (byte) '-' [phi:main::@60->main::@14#0] -- vbuxx=vbuc1 + //SEG268 [99] phi (byte) main::r#52 = (byte) '-' [phi:main::@60->main::@14#0] -- vbuxx=vbuc1 ldx #'-' jmp b14 - //SEG268 main::@14 + //SEG269 main::@14 b14: - //SEG269 [100] (byte) printu::a#12 ← (byte) main::a#10 - //SEG270 [101] (byte) printu::b#12 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG270 [100] (byte) printu::a#12 ← (byte) main::a#10 + //SEG271 [101] (byte) printu::b#12 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG271 [102] (byte) printu::res#12 ← (byte) main::r#52 - //SEG272 [103] (byte*~) print_char_cursor#147 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG272 [102] (byte) printu::res#12 ← (byte) main::r#52 + //SEG273 [103] (byte*~) print_char_cursor#147 ← (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 - //SEG273 [104] call printu - //SEG274 [167] phi from main::@14 to printu [phi:main::@14->printu] + //SEG274 [104] call printu + //SEG275 [167] phi from main::@14 to printu [phi:main::@14->printu] printu_from_b14: - //SEG275 [167] phi (byte) printu::res#20 = (byte) printu::res#12 [phi:main::@14->printu#0] -- register_copy - //SEG276 [167] phi (byte) printu::b#20 = (byte) printu::b#12 [phi:main::@14->printu#1] -- register_copy - //SEG277 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@14->printu#2] -- pbuz1=pbuc1 + //SEG276 [167] phi (byte) printu::res#20 = (byte) printu::res#12 [phi:main::@14->printu#0] -- register_copy + //SEG277 [167] phi (byte) printu::b#20 = (byte) printu::b#12 [phi:main::@14->printu#1] -- register_copy + //SEG278 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@14->printu#2] -- pbuz1=pbuc1 lda #op12 sta printu.op+1 - //SEG278 [167] phi (byte) printu::a#20 = (byte) printu::a#12 [phi:main::@14->printu#3] -- register_copy - //SEG279 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#147 [phi:main::@14->printu#4] -- register_copy + //SEG279 [167] phi (byte) printu::a#20 = (byte) printu::a#12 [phi:main::@14->printu#3] -- register_copy + //SEG280 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#147 [phi:main::@14->printu#4] -- register_copy jsr printu jmp b61 - //SEG280 main::@61 + //SEG281 main::@61 b61: - //SEG281 [105] if((byte) main::a#10<(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@15 -- vbuz1_lt_vbuc1_then_la1 + //SEG282 [105] if((byte) main::a#10<(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@15 -- vbuz1_lt_vbuc1_then_la1 lda a cmp #$37 bcc b15_from_b61 - //SEG282 [106] phi from main::@61 to main::@36 [phi:main::@61->main::@36] + //SEG283 [106] phi from main::@61 to main::@36 [phi:main::@61->main::@36] b36_from_b61: jmp b36 - //SEG283 main::@36 + //SEG284 main::@36 b36: - //SEG284 [107] phi from main::@36 to main::@15 [phi:main::@36->main::@15] + //SEG285 [107] phi from main::@36 to main::@15 [phi:main::@36->main::@15] b15_from_b36: - //SEG285 [107] phi (byte) main::r#53 = (byte) '+' [phi:main::@36->main::@15#0] -- vbuxx=vbuc1 + //SEG286 [107] phi (byte) main::r#53 = (byte) '+' [phi:main::@36->main::@15#0] -- vbuxx=vbuc1 ldx #'+' jmp b15 - //SEG286 [107] phi from main::@61 to main::@15 [phi:main::@61->main::@15] + //SEG287 [107] phi from main::@61 to main::@15 [phi:main::@61->main::@15] b15_from_b61: - //SEG287 [107] phi (byte) main::r#53 = (byte) '-' [phi:main::@61->main::@15#0] -- vbuxx=vbuc1 + //SEG288 [107] phi (byte) main::r#53 = (byte) '-' [phi:main::@61->main::@15#0] -- vbuxx=vbuc1 ldx #'-' jmp b15 - //SEG288 main::@15 + //SEG289 main::@15 b15: - //SEG289 [108] (byte) printu::a#13 ← (byte) main::a#10 - //SEG290 [109] (byte) printu::res#13 ← (byte) main::r#53 - //SEG291 [110] call printu - //SEG292 [167] phi from main::@15 to printu [phi:main::@15->printu] + //SEG290 [108] (byte) printu::a#13 ← (byte) main::a#10 + //SEG291 [109] (byte) printu::res#13 ← (byte) main::r#53 + //SEG292 [110] call printu + //SEG293 [167] phi from main::@15 to printu [phi:main::@15->printu] printu_from_b15: - //SEG293 [167] phi (byte) printu::res#20 = (byte) printu::res#13 [phi:main::@15->printu#0] -- register_copy - //SEG294 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 + //SEG294 [167] phi (byte) printu::res#20 = (byte) printu::res#13 [phi:main::@15->printu#0] -- register_copy + //SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG295 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 + //SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 lda #op13 sta printu.op+1 - //SEG296 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy - //SEG297 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy + //SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy + //SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy jsr printu jmp b62 - //SEG298 main::@62 + //SEG299 main::@62 b62: - //SEG299 [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 -- vbuz1_lt_pbuc1_derefidx_vbuz2_then_la1 + //SEG300 [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 -- vbuz1_lt_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bcc b16_from_b62 - //SEG300 [112] phi from main::@62 to main::@37 [phi:main::@62->main::@37] + //SEG301 [112] phi from main::@62 to main::@37 [phi:main::@62->main::@37] b37_from_b62: jmp b37 - //SEG301 main::@37 + //SEG302 main::@37 b37: - //SEG302 [113] phi from main::@37 to main::@16 [phi:main::@37->main::@16] + //SEG303 [113] phi from main::@37 to main::@16 [phi:main::@37->main::@16] b16_from_b37: - //SEG303 [113] phi (byte) main::r#54 = (byte) '+' [phi:main::@37->main::@16#0] -- vbuxx=vbuc1 + //SEG304 [113] phi (byte) main::r#54 = (byte) '+' [phi:main::@37->main::@16#0] -- vbuxx=vbuc1 ldx #'+' jmp b16 - //SEG304 [113] phi from main::@62 to main::@16 [phi:main::@62->main::@16] + //SEG305 [113] phi from main::@62 to main::@16 [phi:main::@62->main::@16] b16_from_b62: - //SEG305 [113] phi (byte) main::r#54 = (byte) '-' [phi:main::@62->main::@16#0] -- vbuxx=vbuc1 + //SEG306 [113] phi (byte) main::r#54 = (byte) '-' [phi:main::@62->main::@16#0] -- vbuxx=vbuc1 ldx #'-' jmp b16 - //SEG306 main::@16 + //SEG307 main::@16 b16: - //SEG307 [114] (byte) printu::a#14 ← (byte) main::a#10 - //SEG308 [115] (byte) printu::b#14 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG308 [114] (byte) printu::a#14 ← (byte) main::a#10 + //SEG309 [115] (byte) printu::b#14 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG309 [116] (byte) printu::res#14 ← (byte) main::r#54 - //SEG310 [117] call printu - //SEG311 [167] phi from main::@16 to printu [phi:main::@16->printu] + //SEG310 [116] (byte) printu::res#14 ← (byte) main::r#54 + //SEG311 [117] call printu + //SEG312 [167] phi from main::@16 to printu [phi:main::@16->printu] printu_from_b16: - //SEG312 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy - //SEG313 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy - //SEG314 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 + //SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy + //SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy + //SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 lda #op14 sta printu.op+1 - //SEG315 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy - //SEG316 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy + //SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy + //SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy jsr printu jmp b63 - //SEG317 main::@63 + //SEG318 main::@63 b63: - //SEG318 [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 -- vbuz1_lt_vbuz1_then_la1 + //SEG319 [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 -- vbuz1_lt_vbuz1_then_la1 lda a cmp a bcc b17_from_b63 - //SEG319 [119] phi from main::@63 to main::@38 [phi:main::@63->main::@38] + //SEG320 [119] phi from main::@63 to main::@38 [phi:main::@63->main::@38] b38_from_b63: jmp b38 - //SEG320 main::@38 + //SEG321 main::@38 b38: - //SEG321 [120] phi from main::@38 to main::@17 [phi:main::@38->main::@17] + //SEG322 [120] phi from main::@38 to main::@17 [phi:main::@38->main::@17] b17_from_b38: - //SEG322 [120] phi (byte) main::r#55 = (byte) '+' [phi:main::@38->main::@17#0] -- vbuxx=vbuc1 + //SEG323 [120] phi (byte) main::r#55 = (byte) '+' [phi:main::@38->main::@17#0] -- vbuxx=vbuc1 ldx #'+' jmp b17 - //SEG323 [120] phi from main::@63 to main::@17 [phi:main::@63->main::@17] + //SEG324 [120] phi from main::@63 to main::@17 [phi:main::@63->main::@17] b17_from_b63: - //SEG324 [120] phi (byte) main::r#55 = (byte) '-' [phi:main::@63->main::@17#0] -- vbuxx=vbuc1 + //SEG325 [120] phi (byte) main::r#55 = (byte) '-' [phi:main::@63->main::@17#0] -- vbuxx=vbuc1 ldx #'-' jmp b17 - //SEG325 main::@17 + //SEG326 main::@17 b17: - //SEG326 [121] (byte) printu::a#15 ← (byte) main::a#10 - //SEG327 [122] (byte) printu::b#15 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG327 [121] (byte) printu::a#15 ← (byte) main::a#10 + //SEG328 [122] (byte) printu::b#15 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG328 [123] (byte) printu::res#15 ← (byte) main::r#55 - //SEG329 [124] call printu - //SEG330 [167] phi from main::@17 to printu [phi:main::@17->printu] + //SEG329 [123] (byte) printu::res#15 ← (byte) main::r#55 + //SEG330 [124] call printu + //SEG331 [167] phi from main::@17 to printu [phi:main::@17->printu] printu_from_b17: - //SEG331 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy - //SEG332 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy - //SEG333 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 + //SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy + //SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy + //SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 lda #op15 sta printu.op+1 - //SEG334 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy - //SEG335 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy + //SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy + //SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy jsr printu - //SEG336 [125] phi from main::@17 to main::@64 [phi:main::@17->main::@64] + //SEG337 [125] phi from main::@17 to main::@64 [phi:main::@17->main::@64] b64_from_b17: jmp b64 - //SEG337 main::@64 + //SEG338 main::@64 b64: - //SEG338 [126] call print_ln - //SEG339 [162] phi from main::@64 to print_ln [phi:main::@64->print_ln] + //SEG339 [126] call print_ln + //SEG340 [162] phi from main::@64 to print_ln [phi:main::@64->print_ln] print_ln_from_b64: - //SEG340 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@64->print_ln#0] -- register_copy + //SEG341 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@64->print_ln#0] -- register_copy jsr print_ln jmp b65 - //SEG341 main::@65 + //SEG342 main::@65 b65: - //SEG342 [127] if((byte) main::a#10!=(byte) main::b#0) goto main::@18 -- vbuz1_neq_vbuz2_then_la1 + //SEG343 [127] if((byte) main::a#10!=(byte) main::b#0) goto main::@18 -- vbuz1_neq_vbuz2_then_la1 lda a cmp b bne b18_from_b65 - //SEG343 [128] phi from main::@65 to main::@39 [phi:main::@65->main::@39] + //SEG344 [128] phi from main::@65 to main::@39 [phi:main::@65->main::@39] b39_from_b65: jmp b39 - //SEG344 main::@39 + //SEG345 main::@39 b39: - //SEG345 [129] phi from main::@39 to main::@18 [phi:main::@39->main::@18] + //SEG346 [129] phi from main::@39 to main::@18 [phi:main::@39->main::@18] b18_from_b39: - //SEG346 [129] phi (byte) main::r#56 = (byte) '+' [phi:main::@39->main::@18#0] -- vbuxx=vbuc1 + //SEG347 [129] phi (byte) main::r#56 = (byte) '+' [phi:main::@39->main::@18#0] -- vbuxx=vbuc1 ldx #'+' jmp b18 - //SEG347 [129] phi from main::@65 to main::@18 [phi:main::@65->main::@18] + //SEG348 [129] phi from main::@65 to main::@18 [phi:main::@65->main::@18] b18_from_b65: - //SEG348 [129] phi (byte) main::r#56 = (byte) '-' [phi:main::@65->main::@18#0] -- vbuxx=vbuc1 + //SEG349 [129] phi (byte) main::r#56 = (byte) '-' [phi:main::@65->main::@18#0] -- vbuxx=vbuc1 ldx #'-' jmp b18 - //SEG349 main::@18 + //SEG350 main::@18 b18: - //SEG350 [130] (byte) printu::a#16 ← (byte) main::a#10 - //SEG351 [131] (byte) printu::b#16 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG351 [130] (byte) printu::a#16 ← (byte) main::a#10 + //SEG352 [131] (byte) printu::b#16 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG352 [132] (byte) printu::res#16 ← (byte) main::r#56 - //SEG353 [133] (byte*~) print_char_cursor#151 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG353 [132] (byte) printu::res#16 ← (byte) main::r#56 + //SEG354 [133] (byte*~) print_char_cursor#151 ← (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 - //SEG354 [134] call printu - //SEG355 [167] phi from main::@18 to printu [phi:main::@18->printu] + //SEG355 [134] call printu + //SEG356 [167] phi from main::@18 to printu [phi:main::@18->printu] printu_from_b18: - //SEG356 [167] phi (byte) printu::res#20 = (byte) printu::res#16 [phi:main::@18->printu#0] -- register_copy - //SEG357 [167] phi (byte) printu::b#20 = (byte) printu::b#16 [phi:main::@18->printu#1] -- register_copy - //SEG358 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@18->printu#2] -- pbuz1=pbuc1 + //SEG357 [167] phi (byte) printu::res#20 = (byte) printu::res#16 [phi:main::@18->printu#0] -- register_copy + //SEG358 [167] phi (byte) printu::b#20 = (byte) printu::b#16 [phi:main::@18->printu#1] -- register_copy + //SEG359 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@18->printu#2] -- pbuz1=pbuc1 lda #op16 sta printu.op+1 - //SEG359 [167] phi (byte) printu::a#20 = (byte) printu::a#16 [phi:main::@18->printu#3] -- register_copy - //SEG360 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#151 [phi:main::@18->printu#4] -- register_copy + //SEG360 [167] phi (byte) printu::a#20 = (byte) printu::a#16 [phi:main::@18->printu#3] -- register_copy + //SEG361 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#151 [phi:main::@18->printu#4] -- register_copy jsr printu jmp b66 - //SEG361 main::@66 + //SEG362 main::@66 b66: - //SEG362 [135] if((byte) main::a#10!=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@19 -- vbuz1_neq_vbuc1_then_la1 + //SEG363 [135] if((byte) main::a#10!=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@19 -- vbuz1_neq_vbuc1_then_la1 lda a cmp #$37 bne b19_from_b66 - //SEG363 [136] phi from main::@66 to main::@40 [phi:main::@66->main::@40] + //SEG364 [136] phi from main::@66 to main::@40 [phi:main::@66->main::@40] b40_from_b66: jmp b40 - //SEG364 main::@40 + //SEG365 main::@40 b40: - //SEG365 [137] phi from main::@40 to main::@19 [phi:main::@40->main::@19] + //SEG366 [137] phi from main::@40 to main::@19 [phi:main::@40->main::@19] b19_from_b40: - //SEG366 [137] phi (byte) main::r#57 = (byte) '+' [phi:main::@40->main::@19#0] -- vbuxx=vbuc1 + //SEG367 [137] phi (byte) main::r#57 = (byte) '+' [phi:main::@40->main::@19#0] -- vbuxx=vbuc1 ldx #'+' jmp b19 - //SEG367 [137] phi from main::@66 to main::@19 [phi:main::@66->main::@19] + //SEG368 [137] phi from main::@66 to main::@19 [phi:main::@66->main::@19] b19_from_b66: - //SEG368 [137] phi (byte) main::r#57 = (byte) '-' [phi:main::@66->main::@19#0] -- vbuxx=vbuc1 + //SEG369 [137] phi (byte) main::r#57 = (byte) '-' [phi:main::@66->main::@19#0] -- vbuxx=vbuc1 ldx #'-' jmp b19 - //SEG369 main::@19 + //SEG370 main::@19 b19: - //SEG370 [138] (byte) printu::a#17 ← (byte) main::a#10 - //SEG371 [139] (byte) printu::res#17 ← (byte) main::r#57 - //SEG372 [140] call printu - //SEG373 [167] phi from main::@19 to printu [phi:main::@19->printu] + //SEG371 [138] (byte) printu::a#17 ← (byte) main::a#10 + //SEG372 [139] (byte) printu::res#17 ← (byte) main::r#57 + //SEG373 [140] call printu + //SEG374 [167] phi from main::@19 to printu [phi:main::@19->printu] printu_from_b19: - //SEG374 [167] phi (byte) printu::res#20 = (byte) printu::res#17 [phi:main::@19->printu#0] -- register_copy - //SEG375 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 + //SEG375 [167] phi (byte) printu::res#20 = (byte) printu::res#17 [phi:main::@19->printu#0] -- register_copy + //SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG376 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 + //SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 lda #op17 sta printu.op+1 - //SEG377 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy - //SEG378 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy + //SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy + //SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy jsr printu jmp b67 - //SEG379 main::@67 + //SEG380 main::@67 b67: - //SEG380 [141] if((byte) main::a#10!=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@20 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG381 [141] if((byte) main::a#10!=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@20 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bne b20_from_b67 - //SEG381 [142] phi from main::@67 to main::@41 [phi:main::@67->main::@41] + //SEG382 [142] phi from main::@67 to main::@41 [phi:main::@67->main::@41] b41_from_b67: jmp b41 - //SEG382 main::@41 + //SEG383 main::@41 b41: - //SEG383 [143] phi from main::@41 to main::@20 [phi:main::@41->main::@20] + //SEG384 [143] phi from main::@41 to main::@20 [phi:main::@41->main::@20] b20_from_b41: - //SEG384 [143] phi (byte) main::r#58 = (byte) '+' [phi:main::@41->main::@20#0] -- vbuxx=vbuc1 + //SEG385 [143] phi (byte) main::r#58 = (byte) '+' [phi:main::@41->main::@20#0] -- vbuxx=vbuc1 ldx #'+' jmp b20 - //SEG385 [143] phi from main::@67 to main::@20 [phi:main::@67->main::@20] + //SEG386 [143] phi from main::@67 to main::@20 [phi:main::@67->main::@20] b20_from_b67: - //SEG386 [143] phi (byte) main::r#58 = (byte) '-' [phi:main::@67->main::@20#0] -- vbuxx=vbuc1 + //SEG387 [143] phi (byte) main::r#58 = (byte) '-' [phi:main::@67->main::@20#0] -- vbuxx=vbuc1 ldx #'-' jmp b20 - //SEG387 main::@20 + //SEG388 main::@20 b20: - //SEG388 [144] (byte) printu::a#18 ← (byte) main::a#10 - //SEG389 [145] (byte) printu::b#18 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG389 [144] (byte) printu::a#18 ← (byte) main::a#10 + //SEG390 [145] (byte) printu::b#18 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG390 [146] (byte) printu::res#18 ← (byte) main::r#58 - //SEG391 [147] call printu - //SEG392 [167] phi from main::@20 to printu [phi:main::@20->printu] + //SEG391 [146] (byte) printu::res#18 ← (byte) main::r#58 + //SEG392 [147] call printu + //SEG393 [167] phi from main::@20 to printu [phi:main::@20->printu] printu_from_b20: - //SEG393 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy - //SEG394 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy - //SEG395 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 + //SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy + //SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy + //SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 lda #op18 sta printu.op+1 - //SEG396 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy - //SEG397 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy + //SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy + //SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy jsr printu jmp b68 - //SEG398 main::@68 + //SEG399 main::@68 b68: - //SEG399 [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 -- vbuz1_neq_vbuz1_then_la1 + //SEG400 [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 -- vbuz1_neq_vbuz1_then_la1 lda a cmp a bne b21_from_b68 - //SEG400 [149] phi from main::@68 to main::@42 [phi:main::@68->main::@42] + //SEG401 [149] phi from main::@68 to main::@42 [phi:main::@68->main::@42] b42_from_b68: jmp b42 - //SEG401 main::@42 + //SEG402 main::@42 b42: - //SEG402 [150] phi from main::@42 to main::@21 [phi:main::@42->main::@21] + //SEG403 [150] phi from main::@42 to main::@21 [phi:main::@42->main::@21] b21_from_b42: - //SEG403 [150] phi (byte) main::r#59 = (byte) '+' [phi:main::@42->main::@21#0] -- vbuxx=vbuc1 + //SEG404 [150] phi (byte) main::r#59 = (byte) '+' [phi:main::@42->main::@21#0] -- vbuxx=vbuc1 ldx #'+' jmp b21 - //SEG404 [150] phi from main::@68 to main::@21 [phi:main::@68->main::@21] + //SEG405 [150] phi from main::@68 to main::@21 [phi:main::@68->main::@21] b21_from_b68: - //SEG405 [150] phi (byte) main::r#59 = (byte) '-' [phi:main::@68->main::@21#0] -- vbuxx=vbuc1 + //SEG406 [150] phi (byte) main::r#59 = (byte) '-' [phi:main::@68->main::@21#0] -- vbuxx=vbuc1 ldx #'-' jmp b21 - //SEG406 main::@21 + //SEG407 main::@21 b21: - //SEG407 [151] (byte) printu::a#19 ← (byte) main::a#10 - //SEG408 [152] (byte) printu::b#19 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG408 [151] (byte) printu::a#19 ← (byte) main::a#10 + //SEG409 [152] (byte) printu::b#19 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG409 [153] (byte) printu::res#19 ← (byte) main::r#59 - //SEG410 [154] call printu - //SEG411 [167] phi from main::@21 to printu [phi:main::@21->printu] + //SEG410 [153] (byte) printu::res#19 ← (byte) main::r#59 + //SEG411 [154] call printu + //SEG412 [167] phi from main::@21 to printu [phi:main::@21->printu] printu_from_b21: - //SEG412 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy - //SEG413 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy - //SEG414 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 + //SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy + //SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy + //SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 lda #op19 sta printu.op+1 - //SEG415 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy - //SEG416 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy + //SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy + //SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy jsr printu - //SEG417 [155] phi from main::@21 to main::@69 [phi:main::@21->main::@69] + //SEG418 [155] phi from main::@21 to main::@69 [phi:main::@21->main::@69] b69_from_b21: jmp b69 - //SEG418 main::@69 + //SEG419 main::@69 b69: - //SEG419 [156] call print_ln - //SEG420 [162] phi from main::@69 to print_ln [phi:main::@69->print_ln] + //SEG420 [156] call print_ln + //SEG421 [162] phi from main::@69 to print_ln [phi:main::@69->print_ln] print_ln_from_b69: - //SEG421 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@69->print_ln#0] -- register_copy + //SEG422 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@69->print_ln#0] -- register_copy jsr print_ln jmp b70 - //SEG422 main::@70 + //SEG423 main::@70 b70: - //SEG423 [157] (byte) main::a#1 ← (byte) main::a#10 + (byte/signed byte/word/signed word/dword/signed dword) 48 -- vbuz1=vbuz1_plus_vbuc1 + //SEG424 [157] (byte) main::a#1 ← (byte) main::a#10 + (byte/signed byte/word/signed word/dword/signed dword) 48 -- vbuz1=vbuz1_plus_vbuc1 lda #$30 clc adc a sta a - //SEG424 [158] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + //SEG425 [158] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG425 [159] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@71 -- vbuz1_neq_vbuc1_then_la1 + //SEG426 [159] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@71 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #5 bne b71 - //SEG426 [160] phi from main::@22 main::@70 to main::@22 [phi:main::@22/main::@70->main::@22] + //SEG427 [160] phi from main::@22 main::@70 to main::@22 [phi:main::@22/main::@70->main::@22] b22_from_b22: b22_from_b70: jmp b22 - //SEG427 main::@22 + //SEG428 main::@22 b22: jmp b22_from_b22 - //SEG428 main::@71 + //SEG429 main::@71 b71: - //SEG429 [161] (byte*~) print_char_cursor#142 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG430 [161] (byte*~) print_char_cursor#142 ← (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 - //SEG430 [6] phi from main::@71 to main::@1 [phi:main::@71->main::@1] + //SEG431 [6] phi from main::@71 to main::@1 [phi:main::@71->main::@1] b1_from_b71: - //SEG431 [6] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#1 [phi:main::@71->main::@1#0] -- register_copy - //SEG432 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@71->main::@1#1] -- register_copy - //SEG433 [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#142 [phi:main::@71->main::@1#2] -- register_copy - //SEG434 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy + //SEG432 [6] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#1 [phi:main::@71->main::@1#0] -- register_copy + //SEG433 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@71->main::@1#1] -- register_copy + //SEG434 [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#142 [phi:main::@71->main::@1#2] -- register_copy + //SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy jmp b1 op: .text "< @" op1: .text "< @" @@ -5756,17 +5758,17 @@ main: { op19: .text "==@" cs: .byte 7, $c7, $37, $97, $67 } -//SEG435 print_ln +//SEG436 print_ln // Print a newline print_ln: { - //SEG436 [163] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG437 [163] 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: - //SEG437 [163] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#25 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG438 [163] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#25 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG438 print_ln::@1 + //SEG439 print_ln::@1 b1: - //SEG439 [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG440 [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -5774,7 +5776,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG440 [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG441 [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5784,210 +5786,210 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG441 print_ln::@return + //SEG442 print_ln::@return breturn: - //SEG442 [166] return + //SEG443 [166] return rts } -//SEG443 printu +//SEG444 printu printu: { .label a = 2 .label b = 8 .label op = 6 - //SEG444 [168] call print_char - //SEG445 [180] phi from printu to print_char [phi:printu->print_char] + //SEG445 [168] call print_char + //SEG446 [180] phi from printu to print_char [phi:printu->print_char] print_char_from_printu: - //SEG446 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#95 [phi:printu->print_char#0] -- register_copy - //SEG447 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu->print_char#1] -- vbuaa=vbuc1 + //SEG447 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#95 [phi:printu->print_char#0] -- register_copy + //SEG448 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b1 - //SEG448 printu::@1 + //SEG449 printu::@1 b1: - //SEG449 [169] (byte) print_byte::b#0 ← (byte) printu::a#20 -- vbuz1=vbuz2 + //SEG450 [169] (byte) print_byte::b#0 ← (byte) printu::a#20 -- vbuz1=vbuz2 lda a sta print_byte.b - //SEG450 [170] call print_byte - //SEG451 [184] phi from printu::@1 to print_byte [phi:printu::@1->print_byte] + //SEG451 [170] call print_byte + //SEG452 [184] phi from printu::@1 to print_byte [phi:printu::@1->print_byte] print_byte_from_b1: - //SEG452 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#55 [phi:printu::@1->print_byte#0] -- register_copy - //SEG453 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:printu::@1->print_byte#1] -- register_copy + //SEG453 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#55 [phi:printu::@1->print_byte#0] -- register_copy + //SEG454 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:printu::@1->print_byte#1] -- register_copy jsr print_byte jmp b2 - //SEG454 printu::@2 + //SEG455 printu::@2 b2: - //SEG455 [171] (byte*) print_str::str#1 ← (byte[]) printu::op#20 - //SEG456 [172] call print_str - //SEG457 [192] phi from printu::@2 to print_str [phi:printu::@2->print_str] + //SEG456 [171] (byte*) print_str::str#1 ← (byte[]) printu::op#20 + //SEG457 [172] call print_str + //SEG458 [192] phi from printu::@2 to print_str [phi:printu::@2->print_str] print_str_from_b2: jsr print_str jmp b3 - //SEG458 printu::@3 + //SEG459 printu::@3 b3: - //SEG459 [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuz1=vbuz2 + //SEG460 [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG460 [174] call print_byte - //SEG461 [184] phi from printu::@3 to print_byte [phi:printu::@3->print_byte] + //SEG461 [174] call print_byte + //SEG462 [184] phi from printu::@3 to print_byte [phi:printu::@3->print_byte] print_byte_from_b3: - //SEG462 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:printu::@3->print_byte#0] -- register_copy - //SEG463 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:printu::@3->print_byte#1] -- register_copy + //SEG463 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:printu::@3->print_byte#0] -- register_copy + //SEG464 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:printu::@3->print_byte#1] -- register_copy jsr print_byte - //SEG464 [175] phi from printu::@3 to printu::@4 [phi:printu::@3->printu::@4] + //SEG465 [175] phi from printu::@3 to printu::@4 [phi:printu::@3->printu::@4] b4_from_b3: jmp b4 - //SEG465 printu::@4 + //SEG466 printu::@4 b4: - //SEG466 [176] call print_char - //SEG467 [180] phi from printu::@4 to print_char [phi:printu::@4->print_char] + //SEG467 [176] call print_char + //SEG468 [180] phi from printu::@4 to print_char [phi:printu::@4->print_char] print_char_from_b4: - //SEG468 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@4->print_char#0] -- register_copy - //SEG469 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu::@4->print_char#1] -- vbuaa=vbuc1 + //SEG469 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@4->print_char#0] -- register_copy + //SEG470 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b5 - //SEG470 printu::@5 + //SEG471 printu::@5 b5: - //SEG471 [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuaa=vbuxx + //SEG472 [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuaa=vbuxx txa - //SEG472 [178] call print_char - //SEG473 [180] phi from printu::@5 to print_char [phi:printu::@5->print_char] + //SEG473 [178] call print_char + //SEG474 [180] phi from printu::@5 to print_char [phi:printu::@5->print_char] print_char_from_b5: - //SEG474 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@5->print_char#0] -- register_copy - //SEG475 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:printu::@5->print_char#1] -- register_copy + //SEG475 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@5->print_char#0] -- register_copy + //SEG476 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:printu::@5->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG476 printu::@return + //SEG477 printu::@return breturn: - //SEG477 [179] return + //SEG478 [179] return rts } -//SEG478 print_char +//SEG479 print_char // Print a single char print_char: { - //SEG479 [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG480 [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG480 [182] (byte*) print_char_cursor#55 ← ++ (byte*) print_char_cursor#54 -- pbuz1=_inc_pbuz1 + //SEG481 [182] (byte*) print_char_cursor#55 ← ++ (byte*) print_char_cursor#54 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG481 print_char::@return + //SEG482 print_char::@return breturn: - //SEG482 [183] return + //SEG483 [183] return rts } -//SEG483 print_byte +//SEG484 print_byte // Print a byte as HEX print_byte: { .label b = $b - //SEG484 [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG485 [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG485 [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG486 [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG486 [187] call print_char - //SEG487 [180] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG487 [187] call print_char + //SEG488 [180] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG488 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#94 [phi:print_byte->print_char#0] -- register_copy - //SEG489 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG489 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#94 [phi:print_byte->print_char#0] -- register_copy + //SEG490 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG490 print_byte::@1 + //SEG491 print_byte::@1 b1: - //SEG491 [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG492 [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG492 [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG493 [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG493 [190] call print_char - //SEG494 [180] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG494 [190] call print_char + //SEG495 [180] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG495 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG496 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG496 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG497 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG497 print_byte::@return + //SEG498 print_byte::@return breturn: - //SEG498 [191] return + //SEG499 [191] return rts } -//SEG499 print_str +//SEG500 print_str // Print a zero-terminated string print_str: { .label str = 6 - //SEG500 [193] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG501 [193] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG501 [193] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#55 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG502 [193] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG502 [193] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#55 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG503 [193] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG503 print_str::@1 + //SEG504 print_str::@1 b1: - //SEG504 [194] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG505 [194] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG505 print_str::@return + //SEG506 print_str::@return breturn: - //SEG506 [195] return + //SEG507 [195] return rts - //SEG507 print_str::@2 + //SEG508 print_str::@2 b2: - //SEG508 [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG509 [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG509 [197] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG510 [197] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG510 [198] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG511 [198] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG511 print_cls +//SEG512 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 4 - //SEG512 [200] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG513 [200] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG513 [200] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG514 [200] 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 - //SEG514 [200] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG515 [200] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG515 [200] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG516 [200] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG516 print_cls::@1 + //SEG517 print_cls::@1 b1: - //SEG517 [201] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG518 [201] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG518 [202] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG519 [202] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG519 [203] 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 + //SEG520 [203] 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 @@ -5995,9 +5997,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG520 print_cls::@return + //SEG521 print_cls::@return breturn: - //SEG521 [204] return + //SEG522 [204] return rts } print_hextab: .text "0123456789abcdef" @@ -6565,816 +6567,817 @@ reg byte a [ print_byte::$2 ] FINAL ASSEMBLER Score: 15766 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 9 .label print_line_cursor = 4 -//SEG2 @begin -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] -//SEG4 @21 -//SEG5 [2] call main -//SEG6 [4] phi from @21 to main [phi:@21->main] -//SEG7 [3] phi from @21 to @end [phi:@21->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @21 [phi:@begin->@21] +//SEG5 @21 +//SEG6 [2] call main +//SEG7 [4] phi from @21 to main [phi:@21->main] +//SEG8 [3] phi from @21 to @end [phi:@21->@end] +//SEG9 @end +//SEG10 main main: { .label b = $c .label a = 2 .label i = 3 - //SEG10 [5] call print_cls - //SEG11 [199] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [199] 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#27 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi (byte*) print_line_cursor#27 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG15 [6] phi (byte*) print_char_cursor#120 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#120 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG16 [6] phi (byte) main::a#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@1#3] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::a#10 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:main->main::@1#3] -- vbuz1=vbuc1 lda #7 sta a - //SEG17 main::@1 + //SEG18 main::@1 b1: - //SEG18 [7] (byte) main::b#0 ← (byte/word/signed word/dword/signed dword) 206 - (byte) main::a#10 -- vbuz1=vbuc1_minus_vbuz2 + //SEG19 [7] (byte) main::b#0 ← (byte/word/signed word/dword/signed dword) 206 - (byte) main::a#10 -- vbuz1=vbuc1_minus_vbuz2 lda #$ce sec sbc a sta b - //SEG19 [8] if((byte) main::a#10>=(byte) main::b#0) goto main::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG20 [8] if((byte) main::a#10>=(byte) main::b#0) goto main::@2 -- vbuz1_ge_vbuz2_then_la1 lda a cmp b bcs b23 - //SEG20 [9] phi from main::@1 to main::@23 [phi:main::@1->main::@23] - //SEG21 main::@23 - //SEG22 [10] phi from main::@23 to main::@2 [phi:main::@23->main::@2] - //SEG23 [10] phi (byte) main::r#40 = (byte) '+' [phi:main::@23->main::@2#0] -- vbuxx=vbuc1 + //SEG21 [9] phi from main::@1 to main::@23 [phi:main::@1->main::@23] + //SEG22 main::@23 + //SEG23 [10] phi from main::@23 to main::@2 [phi:main::@23->main::@2] + //SEG24 [10] phi (byte) main::r#40 = (byte) '+' [phi:main::@23->main::@2#0] -- vbuxx=vbuc1 ldx #'+' jmp b2 - //SEG24 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG25 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b23: - //SEG25 [10] phi (byte) main::r#40 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG26 [10] phi (byte) main::r#40 = (byte) '-' [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #'-' - //SEG26 main::@2 + //SEG27 main::@2 b2: - //SEG27 [11] (byte) printu::a#0 ← (byte) main::a#10 - //SEG28 [12] (byte) printu::b#0 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG28 [11] (byte) printu::a#0 ← (byte) main::a#10 + //SEG29 [12] (byte) printu::b#0 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG29 [13] (byte) printu::res#0 ← (byte) main::r#40 - //SEG30 [14] call printu - //SEG31 [167] phi from main::@2 to printu [phi:main::@2->printu] - //SEG32 [167] phi (byte) printu::res#20 = (byte) printu::res#0 [phi:main::@2->printu#0] -- register_copy - //SEG33 [167] phi (byte) printu::b#20 = (byte) printu::b#0 [phi:main::@2->printu#1] -- register_copy - //SEG34 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@2->printu#2] -- pbuz1=pbuc1 + //SEG30 [13] (byte) printu::res#0 ← (byte) main::r#40 + //SEG31 [14] call printu + //SEG32 [167] phi from main::@2 to printu [phi:main::@2->printu] + //SEG33 [167] phi (byte) printu::res#20 = (byte) printu::res#0 [phi:main::@2->printu#0] -- register_copy + //SEG34 [167] phi (byte) printu::b#20 = (byte) printu::b#0 [phi:main::@2->printu#1] -- register_copy + //SEG35 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@2->printu#2] -- pbuz1=pbuc1 lda #op sta printu.op+1 - //SEG35 [167] phi (byte) printu::a#20 = (byte) printu::a#0 [phi:main::@2->printu#3] -- register_copy - //SEG36 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#120 [phi:main::@2->printu#4] -- register_copy + //SEG36 [167] phi (byte) printu::a#20 = (byte) printu::a#0 [phi:main::@2->printu#3] -- register_copy + //SEG37 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#120 [phi:main::@2->printu#4] -- register_copy jsr printu - //SEG37 main::@46 - //SEG38 [15] if((byte) main::a#10>=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@3 -- vbuz1_ge_vbuc1_then_la1 + //SEG38 main::@46 + //SEG39 [15] if((byte) main::a#10>=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@3 -- vbuz1_ge_vbuc1_then_la1 lda a cmp #$37 bcs b24 - //SEG39 [16] phi from main::@46 to main::@24 [phi:main::@46->main::@24] - //SEG40 main::@24 - //SEG41 [17] phi from main::@24 to main::@3 [phi:main::@24->main::@3] - //SEG42 [17] phi (byte) main::r#41 = (byte) '+' [phi:main::@24->main::@3#0] -- vbuxx=vbuc1 + //SEG40 [16] phi from main::@46 to main::@24 [phi:main::@46->main::@24] + //SEG41 main::@24 + //SEG42 [17] phi from main::@24 to main::@3 [phi:main::@24->main::@3] + //SEG43 [17] phi (byte) main::r#41 = (byte) '+' [phi:main::@24->main::@3#0] -- vbuxx=vbuc1 ldx #'+' jmp b3 - //SEG43 [17] phi from main::@46 to main::@3 [phi:main::@46->main::@3] + //SEG44 [17] phi from main::@46 to main::@3 [phi:main::@46->main::@3] b24: - //SEG44 [17] phi (byte) main::r#41 = (byte) '-' [phi:main::@46->main::@3#0] -- vbuxx=vbuc1 + //SEG45 [17] phi (byte) main::r#41 = (byte) '-' [phi:main::@46->main::@3#0] -- vbuxx=vbuc1 ldx #'-' - //SEG45 main::@3 + //SEG46 main::@3 b3: - //SEG46 [18] (byte) printu::a#1 ← (byte) main::a#10 - //SEG47 [19] (byte) printu::res#1 ← (byte) main::r#41 - //SEG48 [20] call printu - //SEG49 [167] phi from main::@3 to printu [phi:main::@3->printu] - //SEG50 [167] phi (byte) printu::res#20 = (byte) printu::res#1 [phi:main::@3->printu#0] -- register_copy - //SEG51 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 + //SEG47 [18] (byte) printu::a#1 ← (byte) main::a#10 + //SEG48 [19] (byte) printu::res#1 ← (byte) main::r#41 + //SEG49 [20] call printu + //SEG50 [167] phi from main::@3 to printu [phi:main::@3->printu] + //SEG51 [167] phi (byte) printu::res#20 = (byte) printu::res#1 [phi:main::@3->printu#0] -- register_copy + //SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG52 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 + //SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 lda #op1 sta printu.op+1 - //SEG53 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy - //SEG54 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy + //SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy + //SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy jsr printu - //SEG55 main::@47 - //SEG56 [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 -- vbuz1_ge_pbuc1_derefidx_vbuz2_then_la1 + //SEG56 main::@47 + //SEG57 [21] if((byte) main::a#10>=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@4 -- vbuz1_ge_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bcs b25 - //SEG57 [22] phi from main::@47 to main::@25 [phi:main::@47->main::@25] - //SEG58 main::@25 - //SEG59 [23] phi from main::@25 to main::@4 [phi:main::@25->main::@4] - //SEG60 [23] phi (byte) main::r#42 = (byte) '+' [phi:main::@25->main::@4#0] -- vbuxx=vbuc1 + //SEG58 [22] phi from main::@47 to main::@25 [phi:main::@47->main::@25] + //SEG59 main::@25 + //SEG60 [23] phi from main::@25 to main::@4 [phi:main::@25->main::@4] + //SEG61 [23] phi (byte) main::r#42 = (byte) '+' [phi:main::@25->main::@4#0] -- vbuxx=vbuc1 ldx #'+' jmp b4 - //SEG61 [23] phi from main::@47 to main::@4 [phi:main::@47->main::@4] + //SEG62 [23] phi from main::@47 to main::@4 [phi:main::@47->main::@4] b25: - //SEG62 [23] phi (byte) main::r#42 = (byte) '-' [phi:main::@47->main::@4#0] -- vbuxx=vbuc1 + //SEG63 [23] phi (byte) main::r#42 = (byte) '-' [phi:main::@47->main::@4#0] -- vbuxx=vbuc1 ldx #'-' - //SEG63 main::@4 + //SEG64 main::@4 b4: - //SEG64 [24] (byte) printu::a#2 ← (byte) main::a#10 - //SEG65 [25] (byte) printu::b#2 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG65 [24] (byte) printu::a#2 ← (byte) main::a#10 + //SEG66 [25] (byte) printu::b#2 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG66 [26] (byte) printu::res#2 ← (byte) main::r#42 - //SEG67 [27] call printu - //SEG68 [167] phi from main::@4 to printu [phi:main::@4->printu] - //SEG69 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy - //SEG70 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy - //SEG71 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 + //SEG67 [26] (byte) printu::res#2 ← (byte) main::r#42 + //SEG68 [27] call printu + //SEG69 [167] phi from main::@4 to printu [phi:main::@4->printu] + //SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy + //SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy + //SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 lda #op2 sta printu.op+1 - //SEG72 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy - //SEG73 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy + //SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy + //SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy jsr printu - //SEG74 main::@48 - //SEG75 [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 -- vbuz1_ge_vbuz1_then_la1 + //SEG75 main::@48 + //SEG76 [28] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 -- vbuz1_ge_vbuz1_then_la1 lda a cmp a bcs b26 - //SEG76 [29] phi from main::@48 to main::@26 [phi:main::@48->main::@26] - //SEG77 main::@26 - //SEG78 [30] phi from main::@26 to main::@5 [phi:main::@26->main::@5] - //SEG79 [30] phi (byte) main::r#43 = (byte) '+' [phi:main::@26->main::@5#0] -- vbuxx=vbuc1 + //SEG77 [29] phi from main::@48 to main::@26 [phi:main::@48->main::@26] + //SEG78 main::@26 + //SEG79 [30] phi from main::@26 to main::@5 [phi:main::@26->main::@5] + //SEG80 [30] phi (byte) main::r#43 = (byte) '+' [phi:main::@26->main::@5#0] -- vbuxx=vbuc1 ldx #'+' jmp b5 - //SEG80 [30] phi from main::@48 to main::@5 [phi:main::@48->main::@5] + //SEG81 [30] phi from main::@48 to main::@5 [phi:main::@48->main::@5] b26: - //SEG81 [30] phi (byte) main::r#43 = (byte) '-' [phi:main::@48->main::@5#0] -- vbuxx=vbuc1 + //SEG82 [30] phi (byte) main::r#43 = (byte) '-' [phi:main::@48->main::@5#0] -- vbuxx=vbuc1 ldx #'-' - //SEG82 main::@5 + //SEG83 main::@5 b5: - //SEG83 [31] (byte) printu::a#3 ← (byte) main::a#10 - //SEG84 [32] (byte) printu::b#3 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG84 [31] (byte) printu::a#3 ← (byte) main::a#10 + //SEG85 [32] (byte) printu::b#3 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG85 [33] (byte) printu::res#3 ← (byte) main::r#43 - //SEG86 [34] call printu - //SEG87 [167] phi from main::@5 to printu [phi:main::@5->printu] - //SEG88 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy - //SEG89 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy - //SEG90 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 + //SEG86 [33] (byte) printu::res#3 ← (byte) main::r#43 + //SEG87 [34] call printu + //SEG88 [167] phi from main::@5 to printu [phi:main::@5->printu] + //SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy + //SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy + //SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 lda #op3 sta printu.op+1 - //SEG91 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy - //SEG92 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy + //SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy + //SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy jsr printu - //SEG93 [35] phi from main::@5 to main::@49 [phi:main::@5->main::@49] - //SEG94 main::@49 - //SEG95 [36] call print_ln - //SEG96 [162] phi from main::@49 to print_ln [phi:main::@49->print_ln] - //SEG97 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#27 [phi:main::@49->print_ln#0] -- register_copy + //SEG94 [35] phi from main::@5 to main::@49 [phi:main::@5->main::@49] + //SEG95 main::@49 + //SEG96 [36] call print_ln + //SEG97 [162] phi from main::@49 to print_ln [phi:main::@49->print_ln] + //SEG98 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#27 [phi:main::@49->print_ln#0] -- register_copy jsr print_ln - //SEG98 main::@50 - //SEG99 [37] if((byte) main::a#10<=(byte) main::b#0) goto main::@6 -- vbuz1_le_vbuz2_then_la1 + //SEG99 main::@50 + //SEG100 [37] if((byte) main::a#10<=(byte) main::b#0) goto main::@6 -- vbuz1_le_vbuz2_then_la1 lda b cmp a bcs b27 - //SEG100 [38] phi from main::@50 to main::@27 [phi:main::@50->main::@27] - //SEG101 main::@27 - //SEG102 [39] phi from main::@27 to main::@6 [phi:main::@27->main::@6] - //SEG103 [39] phi (byte) main::r#44 = (byte) '+' [phi:main::@27->main::@6#0] -- vbuxx=vbuc1 + //SEG101 [38] phi from main::@50 to main::@27 [phi:main::@50->main::@27] + //SEG102 main::@27 + //SEG103 [39] phi from main::@27 to main::@6 [phi:main::@27->main::@6] + //SEG104 [39] phi (byte) main::r#44 = (byte) '+' [phi:main::@27->main::@6#0] -- vbuxx=vbuc1 ldx #'+' jmp b6 - //SEG104 [39] phi from main::@50 to main::@6 [phi:main::@50->main::@6] + //SEG105 [39] phi from main::@50 to main::@6 [phi:main::@50->main::@6] b27: - //SEG105 [39] phi (byte) main::r#44 = (byte) '-' [phi:main::@50->main::@6#0] -- vbuxx=vbuc1 + //SEG106 [39] phi (byte) main::r#44 = (byte) '-' [phi:main::@50->main::@6#0] -- vbuxx=vbuc1 ldx #'-' - //SEG106 main::@6 + //SEG107 main::@6 b6: - //SEG107 [40] (byte) printu::a#4 ← (byte) main::a#10 - //SEG108 [41] (byte) printu::b#4 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG108 [40] (byte) printu::a#4 ← (byte) main::a#10 + //SEG109 [41] (byte) printu::b#4 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG109 [42] (byte) printu::res#4 ← (byte) main::r#44 - //SEG110 [43] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG110 [42] (byte) printu::res#4 ← (byte) main::r#44 + //SEG111 [43] (byte*~) print_char_cursor#159 ← (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 - //SEG111 [44] call printu - //SEG112 [167] phi from main::@6 to printu [phi:main::@6->printu] - //SEG113 [167] phi (byte) printu::res#20 = (byte) printu::res#4 [phi:main::@6->printu#0] -- register_copy - //SEG114 [167] phi (byte) printu::b#20 = (byte) printu::b#4 [phi:main::@6->printu#1] -- register_copy - //SEG115 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@6->printu#2] -- pbuz1=pbuc1 + //SEG112 [44] call printu + //SEG113 [167] phi from main::@6 to printu [phi:main::@6->printu] + //SEG114 [167] phi (byte) printu::res#20 = (byte) printu::res#4 [phi:main::@6->printu#0] -- register_copy + //SEG115 [167] phi (byte) printu::b#20 = (byte) printu::b#4 [phi:main::@6->printu#1] -- register_copy + //SEG116 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@6->printu#2] -- pbuz1=pbuc1 lda #op4 sta printu.op+1 - //SEG116 [167] phi (byte) printu::a#20 = (byte) printu::a#4 [phi:main::@6->printu#3] -- register_copy - //SEG117 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#159 [phi:main::@6->printu#4] -- register_copy + //SEG117 [167] phi (byte) printu::a#20 = (byte) printu::a#4 [phi:main::@6->printu#3] -- register_copy + //SEG118 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#159 [phi:main::@6->printu#4] -- register_copy jsr printu - //SEG118 main::@51 - //SEG119 [45] if((byte) main::a#10<=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@7 -- vbuz1_le_vbuc1_then_la1 + //SEG119 main::@51 + //SEG120 [45] if((byte) main::a#10<=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@7 -- vbuz1_le_vbuc1_then_la1 lda #$37 cmp a bcs b28 - //SEG120 [46] phi from main::@51 to main::@28 [phi:main::@51->main::@28] - //SEG121 main::@28 - //SEG122 [47] phi from main::@28 to main::@7 [phi:main::@28->main::@7] - //SEG123 [47] phi (byte) main::r#45 = (byte) '+' [phi:main::@28->main::@7#0] -- vbuxx=vbuc1 + //SEG121 [46] phi from main::@51 to main::@28 [phi:main::@51->main::@28] + //SEG122 main::@28 + //SEG123 [47] phi from main::@28 to main::@7 [phi:main::@28->main::@7] + //SEG124 [47] phi (byte) main::r#45 = (byte) '+' [phi:main::@28->main::@7#0] -- vbuxx=vbuc1 ldx #'+' jmp b7 - //SEG124 [47] phi from main::@51 to main::@7 [phi:main::@51->main::@7] + //SEG125 [47] phi from main::@51 to main::@7 [phi:main::@51->main::@7] b28: - //SEG125 [47] phi (byte) main::r#45 = (byte) '-' [phi:main::@51->main::@7#0] -- vbuxx=vbuc1 + //SEG126 [47] phi (byte) main::r#45 = (byte) '-' [phi:main::@51->main::@7#0] -- vbuxx=vbuc1 ldx #'-' - //SEG126 main::@7 + //SEG127 main::@7 b7: - //SEG127 [48] (byte) printu::a#5 ← (byte) main::a#10 - //SEG128 [49] (byte) printu::res#5 ← (byte) main::r#45 - //SEG129 [50] call printu - //SEG130 [167] phi from main::@7 to printu [phi:main::@7->printu] - //SEG131 [167] phi (byte) printu::res#20 = (byte) printu::res#5 [phi:main::@7->printu#0] -- register_copy - //SEG132 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 + //SEG128 [48] (byte) printu::a#5 ← (byte) main::a#10 + //SEG129 [49] (byte) printu::res#5 ← (byte) main::r#45 + //SEG130 [50] call printu + //SEG131 [167] phi from main::@7 to printu [phi:main::@7->printu] + //SEG132 [167] phi (byte) printu::res#20 = (byte) printu::res#5 [phi:main::@7->printu#0] -- register_copy + //SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG133 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 + //SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 lda #op5 sta printu.op+1 - //SEG134 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy - //SEG135 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy + //SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy + //SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy jsr printu - //SEG136 main::@52 - //SEG137 [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 -- vbuz1_le_pbuc1_derefidx_vbuz2_then_la1 + //SEG137 main::@52 + //SEG138 [51] if((byte) main::a#10<=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@8 -- vbuz1_le_pbuc1_derefidx_vbuz2_then_la1 ldy i lda cs,y cmp a bcs b29 - //SEG138 [52] phi from main::@52 to main::@29 [phi:main::@52->main::@29] - //SEG139 main::@29 - //SEG140 [53] phi from main::@29 to main::@8 [phi:main::@29->main::@8] - //SEG141 [53] phi (byte) main::r#46 = (byte) '+' [phi:main::@29->main::@8#0] -- vbuxx=vbuc1 + //SEG139 [52] phi from main::@52 to main::@29 [phi:main::@52->main::@29] + //SEG140 main::@29 + //SEG141 [53] phi from main::@29 to main::@8 [phi:main::@29->main::@8] + //SEG142 [53] phi (byte) main::r#46 = (byte) '+' [phi:main::@29->main::@8#0] -- vbuxx=vbuc1 ldx #'+' jmp b8 - //SEG142 [53] phi from main::@52 to main::@8 [phi:main::@52->main::@8] + //SEG143 [53] phi from main::@52 to main::@8 [phi:main::@52->main::@8] b29: - //SEG143 [53] phi (byte) main::r#46 = (byte) '-' [phi:main::@52->main::@8#0] -- vbuxx=vbuc1 + //SEG144 [53] phi (byte) main::r#46 = (byte) '-' [phi:main::@52->main::@8#0] -- vbuxx=vbuc1 ldx #'-' - //SEG144 main::@8 + //SEG145 main::@8 b8: - //SEG145 [54] (byte) printu::a#6 ← (byte) main::a#10 - //SEG146 [55] (byte) printu::b#6 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG146 [54] (byte) printu::a#6 ← (byte) main::a#10 + //SEG147 [55] (byte) printu::b#6 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG147 [56] (byte) printu::res#6 ← (byte) main::r#46 - //SEG148 [57] call printu - //SEG149 [167] phi from main::@8 to printu [phi:main::@8->printu] - //SEG150 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy - //SEG151 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy - //SEG152 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 + //SEG148 [56] (byte) printu::res#6 ← (byte) main::r#46 + //SEG149 [57] call printu + //SEG150 [167] phi from main::@8 to printu [phi:main::@8->printu] + //SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy + //SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy + //SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 lda #op6 sta printu.op+1 - //SEG153 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy - //SEG154 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy + //SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy + //SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy jsr printu - //SEG155 main::@53 - //SEG156 [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 -- vbuz1_le_vbuz1_then_la1 + //SEG156 main::@53 + //SEG157 [58] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 -- vbuz1_le_vbuz1_then_la1 lda a cmp a bcs b30 - //SEG157 [59] phi from main::@53 to main::@30 [phi:main::@53->main::@30] - //SEG158 main::@30 - //SEG159 [60] phi from main::@30 to main::@9 [phi:main::@30->main::@9] - //SEG160 [60] phi (byte) main::r#47 = (byte) '+' [phi:main::@30->main::@9#0] -- vbuxx=vbuc1 + //SEG158 [59] phi from main::@53 to main::@30 [phi:main::@53->main::@30] + //SEG159 main::@30 + //SEG160 [60] phi from main::@30 to main::@9 [phi:main::@30->main::@9] + //SEG161 [60] phi (byte) main::r#47 = (byte) '+' [phi:main::@30->main::@9#0] -- vbuxx=vbuc1 ldx #'+' jmp b9 - //SEG161 [60] phi from main::@53 to main::@9 [phi:main::@53->main::@9] + //SEG162 [60] phi from main::@53 to main::@9 [phi:main::@53->main::@9] b30: - //SEG162 [60] phi (byte) main::r#47 = (byte) '-' [phi:main::@53->main::@9#0] -- vbuxx=vbuc1 + //SEG163 [60] phi (byte) main::r#47 = (byte) '-' [phi:main::@53->main::@9#0] -- vbuxx=vbuc1 ldx #'-' - //SEG163 main::@9 + //SEG164 main::@9 b9: - //SEG164 [61] (byte) printu::a#7 ← (byte) main::a#10 - //SEG165 [62] (byte) printu::b#7 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG165 [61] (byte) printu::a#7 ← (byte) main::a#10 + //SEG166 [62] (byte) printu::b#7 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG166 [63] (byte) printu::res#7 ← (byte) main::r#47 - //SEG167 [64] call printu - //SEG168 [167] phi from main::@9 to printu [phi:main::@9->printu] - //SEG169 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy - //SEG170 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy - //SEG171 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 + //SEG167 [63] (byte) printu::res#7 ← (byte) main::r#47 + //SEG168 [64] call printu + //SEG169 [167] phi from main::@9 to printu [phi:main::@9->printu] + //SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy + //SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy + //SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 lda #op7 sta printu.op+1 - //SEG172 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy - //SEG173 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy + //SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy + //SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy jsr printu - //SEG174 [65] phi from main::@9 to main::@54 [phi:main::@9->main::@54] - //SEG175 main::@54 - //SEG176 [66] call print_ln - //SEG177 [162] phi from main::@54 to print_ln [phi:main::@54->print_ln] - //SEG178 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@54->print_ln#0] -- register_copy + //SEG175 [65] phi from main::@9 to main::@54 [phi:main::@9->main::@54] + //SEG176 main::@54 + //SEG177 [66] call print_ln + //SEG178 [162] phi from main::@54 to print_ln [phi:main::@54->print_ln] + //SEG179 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@54->print_ln#0] -- register_copy jsr print_ln - //SEG179 main::@55 - //SEG180 [67] if((byte) main::a#10>(byte) main::b#0) goto main::@10 -- vbuz1_gt_vbuz2_then_la1 + //SEG180 main::@55 + //SEG181 [67] if((byte) main::a#10>(byte) main::b#0) goto main::@10 -- vbuz1_gt_vbuz2_then_la1 lda b cmp a bcc b31 - //SEG181 [68] phi from main::@55 to main::@31 [phi:main::@55->main::@31] - //SEG182 main::@31 - //SEG183 [69] phi from main::@31 to main::@10 [phi:main::@31->main::@10] - //SEG184 [69] phi (byte) main::r#48 = (byte) '+' [phi:main::@31->main::@10#0] -- vbuxx=vbuc1 + //SEG182 [68] phi from main::@55 to main::@31 [phi:main::@55->main::@31] + //SEG183 main::@31 + //SEG184 [69] phi from main::@31 to main::@10 [phi:main::@31->main::@10] + //SEG185 [69] phi (byte) main::r#48 = (byte) '+' [phi:main::@31->main::@10#0] -- vbuxx=vbuc1 ldx #'+' jmp b10 - //SEG185 [69] phi from main::@55 to main::@10 [phi:main::@55->main::@10] + //SEG186 [69] phi from main::@55 to main::@10 [phi:main::@55->main::@10] b31: - //SEG186 [69] phi (byte) main::r#48 = (byte) '-' [phi:main::@55->main::@10#0] -- vbuxx=vbuc1 + //SEG187 [69] phi (byte) main::r#48 = (byte) '-' [phi:main::@55->main::@10#0] -- vbuxx=vbuc1 ldx #'-' - //SEG187 main::@10 + //SEG188 main::@10 b10: - //SEG188 [70] (byte) printu::a#8 ← (byte) main::a#10 - //SEG189 [71] (byte) printu::b#8 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG189 [70] (byte) printu::a#8 ← (byte) main::a#10 + //SEG190 [71] (byte) printu::b#8 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG190 [72] (byte) printu::res#8 ← (byte) main::r#48 - //SEG191 [73] (byte*~) print_char_cursor#143 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG191 [72] (byte) printu::res#8 ← (byte) main::r#48 + //SEG192 [73] (byte*~) print_char_cursor#143 ← (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 - //SEG192 [74] call printu - //SEG193 [167] phi from main::@10 to printu [phi:main::@10->printu] - //SEG194 [167] phi (byte) printu::res#20 = (byte) printu::res#8 [phi:main::@10->printu#0] -- register_copy - //SEG195 [167] phi (byte) printu::b#20 = (byte) printu::b#8 [phi:main::@10->printu#1] -- register_copy - //SEG196 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@10->printu#2] -- pbuz1=pbuc1 + //SEG193 [74] call printu + //SEG194 [167] phi from main::@10 to printu [phi:main::@10->printu] + //SEG195 [167] phi (byte) printu::res#20 = (byte) printu::res#8 [phi:main::@10->printu#0] -- register_copy + //SEG196 [167] phi (byte) printu::b#20 = (byte) printu::b#8 [phi:main::@10->printu#1] -- register_copy + //SEG197 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@10->printu#2] -- pbuz1=pbuc1 lda #op8 sta printu.op+1 - //SEG197 [167] phi (byte) printu::a#20 = (byte) printu::a#8 [phi:main::@10->printu#3] -- register_copy - //SEG198 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#143 [phi:main::@10->printu#4] -- register_copy + //SEG198 [167] phi (byte) printu::a#20 = (byte) printu::a#8 [phi:main::@10->printu#3] -- register_copy + //SEG199 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#143 [phi:main::@10->printu#4] -- register_copy jsr printu - //SEG199 main::@56 - //SEG200 [75] if((byte) main::a#10>(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@11 -- vbuz1_gt_vbuc1_then_la1 + //SEG200 main::@56 + //SEG201 [75] if((byte) main::a#10>(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@11 -- vbuz1_gt_vbuc1_then_la1 lda a cmp #$37 beq !+ bcs b32 !: - //SEG201 [76] phi from main::@56 to main::@32 [phi:main::@56->main::@32] - //SEG202 main::@32 - //SEG203 [77] phi from main::@32 to main::@11 [phi:main::@32->main::@11] - //SEG204 [77] phi (byte) main::r#49 = (byte) '+' [phi:main::@32->main::@11#0] -- vbuxx=vbuc1 + //SEG202 [76] phi from main::@56 to main::@32 [phi:main::@56->main::@32] + //SEG203 main::@32 + //SEG204 [77] phi from main::@32 to main::@11 [phi:main::@32->main::@11] + //SEG205 [77] phi (byte) main::r#49 = (byte) '+' [phi:main::@32->main::@11#0] -- vbuxx=vbuc1 ldx #'+' jmp b11 - //SEG205 [77] phi from main::@56 to main::@11 [phi:main::@56->main::@11] + //SEG206 [77] phi from main::@56 to main::@11 [phi:main::@56->main::@11] b32: - //SEG206 [77] phi (byte) main::r#49 = (byte) '-' [phi:main::@56->main::@11#0] -- vbuxx=vbuc1 + //SEG207 [77] phi (byte) main::r#49 = (byte) '-' [phi:main::@56->main::@11#0] -- vbuxx=vbuc1 ldx #'-' - //SEG207 main::@11 + //SEG208 main::@11 b11: - //SEG208 [78] (byte) printu::a#9 ← (byte) main::a#10 - //SEG209 [79] (byte) printu::res#9 ← (byte) main::r#49 - //SEG210 [80] call printu - //SEG211 [167] phi from main::@11 to printu [phi:main::@11->printu] - //SEG212 [167] phi (byte) printu::res#20 = (byte) printu::res#9 [phi:main::@11->printu#0] -- register_copy - //SEG213 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 + //SEG209 [78] (byte) printu::a#9 ← (byte) main::a#10 + //SEG210 [79] (byte) printu::res#9 ← (byte) main::r#49 + //SEG211 [80] call printu + //SEG212 [167] phi from main::@11 to printu [phi:main::@11->printu] + //SEG213 [167] phi (byte) printu::res#20 = (byte) printu::res#9 [phi:main::@11->printu#0] -- register_copy + //SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG214 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 + //SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 lda #op9 sta printu.op+1 - //SEG215 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy - //SEG216 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy + //SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy + //SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy jsr printu - //SEG217 main::@57 - //SEG218 [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 -- vbuz1_gt_pbuc1_derefidx_vbuz2_then_la1 + //SEG218 main::@57 + //SEG219 [81] if((byte) main::a#10>*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@12 -- vbuz1_gt_pbuc1_derefidx_vbuz2_then_la1 ldy i lda cs,y cmp a bcc b33 - //SEG219 [82] phi from main::@57 to main::@33 [phi:main::@57->main::@33] - //SEG220 main::@33 - //SEG221 [83] phi from main::@33 to main::@12 [phi:main::@33->main::@12] - //SEG222 [83] phi (byte) main::r#50 = (byte) '+' [phi:main::@33->main::@12#0] -- vbuxx=vbuc1 + //SEG220 [82] phi from main::@57 to main::@33 [phi:main::@57->main::@33] + //SEG221 main::@33 + //SEG222 [83] phi from main::@33 to main::@12 [phi:main::@33->main::@12] + //SEG223 [83] phi (byte) main::r#50 = (byte) '+' [phi:main::@33->main::@12#0] -- vbuxx=vbuc1 ldx #'+' jmp b12 - //SEG223 [83] phi from main::@57 to main::@12 [phi:main::@57->main::@12] + //SEG224 [83] phi from main::@57 to main::@12 [phi:main::@57->main::@12] b33: - //SEG224 [83] phi (byte) main::r#50 = (byte) '-' [phi:main::@57->main::@12#0] -- vbuxx=vbuc1 + //SEG225 [83] phi (byte) main::r#50 = (byte) '-' [phi:main::@57->main::@12#0] -- vbuxx=vbuc1 ldx #'-' - //SEG225 main::@12 + //SEG226 main::@12 b12: - //SEG226 [84] (byte) printu::a#10 ← (byte) main::a#10 - //SEG227 [85] (byte) printu::b#10 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG227 [84] (byte) printu::a#10 ← (byte) main::a#10 + //SEG228 [85] (byte) printu::b#10 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG228 [86] (byte) printu::res#10 ← (byte) main::r#50 - //SEG229 [87] call printu - //SEG230 [167] phi from main::@12 to printu [phi:main::@12->printu] - //SEG231 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy - //SEG232 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy - //SEG233 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 + //SEG229 [86] (byte) printu::res#10 ← (byte) main::r#50 + //SEG230 [87] call printu + //SEG231 [167] phi from main::@12 to printu [phi:main::@12->printu] + //SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy + //SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy + //SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 lda #op10 sta printu.op+1 - //SEG234 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy - //SEG235 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy + //SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy + //SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy jsr printu - //SEG236 main::@58 - //SEG237 [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 -- vbuz1_gt_vbuz1_then_la1 + //SEG237 main::@58 + //SEG238 [88] if((byte) main::a#10>(byte) main::a#10) goto main::@13 -- vbuz1_gt_vbuz1_then_la1 lda a cmp a bcc b34 - //SEG238 [89] phi from main::@58 to main::@34 [phi:main::@58->main::@34] - //SEG239 main::@34 - //SEG240 [90] phi from main::@34 to main::@13 [phi:main::@34->main::@13] - //SEG241 [90] phi (byte) main::r#51 = (byte) '+' [phi:main::@34->main::@13#0] -- vbuxx=vbuc1 + //SEG239 [89] phi from main::@58 to main::@34 [phi:main::@58->main::@34] + //SEG240 main::@34 + //SEG241 [90] phi from main::@34 to main::@13 [phi:main::@34->main::@13] + //SEG242 [90] phi (byte) main::r#51 = (byte) '+' [phi:main::@34->main::@13#0] -- vbuxx=vbuc1 ldx #'+' jmp b13 - //SEG242 [90] phi from main::@58 to main::@13 [phi:main::@58->main::@13] + //SEG243 [90] phi from main::@58 to main::@13 [phi:main::@58->main::@13] b34: - //SEG243 [90] phi (byte) main::r#51 = (byte) '-' [phi:main::@58->main::@13#0] -- vbuxx=vbuc1 + //SEG244 [90] phi (byte) main::r#51 = (byte) '-' [phi:main::@58->main::@13#0] -- vbuxx=vbuc1 ldx #'-' - //SEG244 main::@13 + //SEG245 main::@13 b13: - //SEG245 [91] (byte) printu::a#11 ← (byte) main::a#10 - //SEG246 [92] (byte) printu::b#11 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG246 [91] (byte) printu::a#11 ← (byte) main::a#10 + //SEG247 [92] (byte) printu::b#11 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG247 [93] (byte) printu::res#11 ← (byte) main::r#51 - //SEG248 [94] call printu - //SEG249 [167] phi from main::@13 to printu [phi:main::@13->printu] - //SEG250 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy - //SEG251 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy - //SEG252 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 + //SEG248 [93] (byte) printu::res#11 ← (byte) main::r#51 + //SEG249 [94] call printu + //SEG250 [167] phi from main::@13 to printu [phi:main::@13->printu] + //SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy + //SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy + //SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 lda #op11 sta printu.op+1 - //SEG253 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy - //SEG254 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy + //SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy + //SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy jsr printu - //SEG255 [95] phi from main::@13 to main::@59 [phi:main::@13->main::@59] - //SEG256 main::@59 - //SEG257 [96] call print_ln - //SEG258 [162] phi from main::@59 to print_ln [phi:main::@59->print_ln] - //SEG259 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@59->print_ln#0] -- register_copy + //SEG256 [95] phi from main::@13 to main::@59 [phi:main::@13->main::@59] + //SEG257 main::@59 + //SEG258 [96] call print_ln + //SEG259 [162] phi from main::@59 to print_ln [phi:main::@59->print_ln] + //SEG260 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@59->print_ln#0] -- register_copy jsr print_ln - //SEG260 main::@60 - //SEG261 [97] if((byte) main::a#10<(byte) main::b#0) goto main::@14 -- vbuz1_lt_vbuz2_then_la1 + //SEG261 main::@60 + //SEG262 [97] if((byte) main::a#10<(byte) main::b#0) goto main::@14 -- vbuz1_lt_vbuz2_then_la1 lda a cmp b bcc b35 - //SEG262 [98] phi from main::@60 to main::@35 [phi:main::@60->main::@35] - //SEG263 main::@35 - //SEG264 [99] phi from main::@35 to main::@14 [phi:main::@35->main::@14] - //SEG265 [99] phi (byte) main::r#52 = (byte) '+' [phi:main::@35->main::@14#0] -- vbuxx=vbuc1 + //SEG263 [98] phi from main::@60 to main::@35 [phi:main::@60->main::@35] + //SEG264 main::@35 + //SEG265 [99] phi from main::@35 to main::@14 [phi:main::@35->main::@14] + //SEG266 [99] phi (byte) main::r#52 = (byte) '+' [phi:main::@35->main::@14#0] -- vbuxx=vbuc1 ldx #'+' jmp b14 - //SEG266 [99] phi from main::@60 to main::@14 [phi:main::@60->main::@14] + //SEG267 [99] phi from main::@60 to main::@14 [phi:main::@60->main::@14] b35: - //SEG267 [99] phi (byte) main::r#52 = (byte) '-' [phi:main::@60->main::@14#0] -- vbuxx=vbuc1 + //SEG268 [99] phi (byte) main::r#52 = (byte) '-' [phi:main::@60->main::@14#0] -- vbuxx=vbuc1 ldx #'-' - //SEG268 main::@14 + //SEG269 main::@14 b14: - //SEG269 [100] (byte) printu::a#12 ← (byte) main::a#10 - //SEG270 [101] (byte) printu::b#12 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG270 [100] (byte) printu::a#12 ← (byte) main::a#10 + //SEG271 [101] (byte) printu::b#12 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG271 [102] (byte) printu::res#12 ← (byte) main::r#52 - //SEG272 [103] (byte*~) print_char_cursor#147 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG272 [102] (byte) printu::res#12 ← (byte) main::r#52 + //SEG273 [103] (byte*~) print_char_cursor#147 ← (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 - //SEG273 [104] call printu - //SEG274 [167] phi from main::@14 to printu [phi:main::@14->printu] - //SEG275 [167] phi (byte) printu::res#20 = (byte) printu::res#12 [phi:main::@14->printu#0] -- register_copy - //SEG276 [167] phi (byte) printu::b#20 = (byte) printu::b#12 [phi:main::@14->printu#1] -- register_copy - //SEG277 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@14->printu#2] -- pbuz1=pbuc1 + //SEG274 [104] call printu + //SEG275 [167] phi from main::@14 to printu [phi:main::@14->printu] + //SEG276 [167] phi (byte) printu::res#20 = (byte) printu::res#12 [phi:main::@14->printu#0] -- register_copy + //SEG277 [167] phi (byte) printu::b#20 = (byte) printu::b#12 [phi:main::@14->printu#1] -- register_copy + //SEG278 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@14->printu#2] -- pbuz1=pbuc1 lda #op12 sta printu.op+1 - //SEG278 [167] phi (byte) printu::a#20 = (byte) printu::a#12 [phi:main::@14->printu#3] -- register_copy - //SEG279 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#147 [phi:main::@14->printu#4] -- register_copy + //SEG279 [167] phi (byte) printu::a#20 = (byte) printu::a#12 [phi:main::@14->printu#3] -- register_copy + //SEG280 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#147 [phi:main::@14->printu#4] -- register_copy jsr printu - //SEG280 main::@61 - //SEG281 [105] if((byte) main::a#10<(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@15 -- vbuz1_lt_vbuc1_then_la1 + //SEG281 main::@61 + //SEG282 [105] if((byte) main::a#10<(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@15 -- vbuz1_lt_vbuc1_then_la1 lda a cmp #$37 bcc b36 - //SEG282 [106] phi from main::@61 to main::@36 [phi:main::@61->main::@36] - //SEG283 main::@36 - //SEG284 [107] phi from main::@36 to main::@15 [phi:main::@36->main::@15] - //SEG285 [107] phi (byte) main::r#53 = (byte) '+' [phi:main::@36->main::@15#0] -- vbuxx=vbuc1 + //SEG283 [106] phi from main::@61 to main::@36 [phi:main::@61->main::@36] + //SEG284 main::@36 + //SEG285 [107] phi from main::@36 to main::@15 [phi:main::@36->main::@15] + //SEG286 [107] phi (byte) main::r#53 = (byte) '+' [phi:main::@36->main::@15#0] -- vbuxx=vbuc1 ldx #'+' jmp b15 - //SEG286 [107] phi from main::@61 to main::@15 [phi:main::@61->main::@15] + //SEG287 [107] phi from main::@61 to main::@15 [phi:main::@61->main::@15] b36: - //SEG287 [107] phi (byte) main::r#53 = (byte) '-' [phi:main::@61->main::@15#0] -- vbuxx=vbuc1 + //SEG288 [107] phi (byte) main::r#53 = (byte) '-' [phi:main::@61->main::@15#0] -- vbuxx=vbuc1 ldx #'-' - //SEG288 main::@15 + //SEG289 main::@15 b15: - //SEG289 [108] (byte) printu::a#13 ← (byte) main::a#10 - //SEG290 [109] (byte) printu::res#13 ← (byte) main::r#53 - //SEG291 [110] call printu - //SEG292 [167] phi from main::@15 to printu [phi:main::@15->printu] - //SEG293 [167] phi (byte) printu::res#20 = (byte) printu::res#13 [phi:main::@15->printu#0] -- register_copy - //SEG294 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 + //SEG290 [108] (byte) printu::a#13 ← (byte) main::a#10 + //SEG291 [109] (byte) printu::res#13 ← (byte) main::r#53 + //SEG292 [110] call printu + //SEG293 [167] phi from main::@15 to printu [phi:main::@15->printu] + //SEG294 [167] phi (byte) printu::res#20 = (byte) printu::res#13 [phi:main::@15->printu#0] -- register_copy + //SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG295 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 + //SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 lda #op13 sta printu.op+1 - //SEG296 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy - //SEG297 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy + //SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy + //SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy jsr printu - //SEG298 main::@62 - //SEG299 [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 -- vbuz1_lt_pbuc1_derefidx_vbuz2_then_la1 + //SEG299 main::@62 + //SEG300 [111] if((byte) main::a#10<*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@16 -- vbuz1_lt_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bcc b37 - //SEG300 [112] phi from main::@62 to main::@37 [phi:main::@62->main::@37] - //SEG301 main::@37 - //SEG302 [113] phi from main::@37 to main::@16 [phi:main::@37->main::@16] - //SEG303 [113] phi (byte) main::r#54 = (byte) '+' [phi:main::@37->main::@16#0] -- vbuxx=vbuc1 + //SEG301 [112] phi from main::@62 to main::@37 [phi:main::@62->main::@37] + //SEG302 main::@37 + //SEG303 [113] phi from main::@37 to main::@16 [phi:main::@37->main::@16] + //SEG304 [113] phi (byte) main::r#54 = (byte) '+' [phi:main::@37->main::@16#0] -- vbuxx=vbuc1 ldx #'+' jmp b16 - //SEG304 [113] phi from main::@62 to main::@16 [phi:main::@62->main::@16] + //SEG305 [113] phi from main::@62 to main::@16 [phi:main::@62->main::@16] b37: - //SEG305 [113] phi (byte) main::r#54 = (byte) '-' [phi:main::@62->main::@16#0] -- vbuxx=vbuc1 + //SEG306 [113] phi (byte) main::r#54 = (byte) '-' [phi:main::@62->main::@16#0] -- vbuxx=vbuc1 ldx #'-' - //SEG306 main::@16 + //SEG307 main::@16 b16: - //SEG307 [114] (byte) printu::a#14 ← (byte) main::a#10 - //SEG308 [115] (byte) printu::b#14 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG308 [114] (byte) printu::a#14 ← (byte) main::a#10 + //SEG309 [115] (byte) printu::b#14 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG309 [116] (byte) printu::res#14 ← (byte) main::r#54 - //SEG310 [117] call printu - //SEG311 [167] phi from main::@16 to printu [phi:main::@16->printu] - //SEG312 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy - //SEG313 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy - //SEG314 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 + //SEG310 [116] (byte) printu::res#14 ← (byte) main::r#54 + //SEG311 [117] call printu + //SEG312 [167] phi from main::@16 to printu [phi:main::@16->printu] + //SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy + //SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy + //SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 lda #op14 sta printu.op+1 - //SEG315 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy - //SEG316 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy + //SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy + //SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy jsr printu - //SEG317 main::@63 - //SEG318 [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 -- vbuz1_lt_vbuz1_then_la1 + //SEG318 main::@63 + //SEG319 [118] if((byte) main::a#10<(byte) main::a#10) goto main::@17 -- vbuz1_lt_vbuz1_then_la1 lda a cmp a bcc b38 - //SEG319 [119] phi from main::@63 to main::@38 [phi:main::@63->main::@38] - //SEG320 main::@38 - //SEG321 [120] phi from main::@38 to main::@17 [phi:main::@38->main::@17] - //SEG322 [120] phi (byte) main::r#55 = (byte) '+' [phi:main::@38->main::@17#0] -- vbuxx=vbuc1 + //SEG320 [119] phi from main::@63 to main::@38 [phi:main::@63->main::@38] + //SEG321 main::@38 + //SEG322 [120] phi from main::@38 to main::@17 [phi:main::@38->main::@17] + //SEG323 [120] phi (byte) main::r#55 = (byte) '+' [phi:main::@38->main::@17#0] -- vbuxx=vbuc1 ldx #'+' jmp b17 - //SEG323 [120] phi from main::@63 to main::@17 [phi:main::@63->main::@17] + //SEG324 [120] phi from main::@63 to main::@17 [phi:main::@63->main::@17] b38: - //SEG324 [120] phi (byte) main::r#55 = (byte) '-' [phi:main::@63->main::@17#0] -- vbuxx=vbuc1 + //SEG325 [120] phi (byte) main::r#55 = (byte) '-' [phi:main::@63->main::@17#0] -- vbuxx=vbuc1 ldx #'-' - //SEG325 main::@17 + //SEG326 main::@17 b17: - //SEG326 [121] (byte) printu::a#15 ← (byte) main::a#10 - //SEG327 [122] (byte) printu::b#15 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG327 [121] (byte) printu::a#15 ← (byte) main::a#10 + //SEG328 [122] (byte) printu::b#15 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG328 [123] (byte) printu::res#15 ← (byte) main::r#55 - //SEG329 [124] call printu - //SEG330 [167] phi from main::@17 to printu [phi:main::@17->printu] - //SEG331 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy - //SEG332 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy - //SEG333 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 + //SEG329 [123] (byte) printu::res#15 ← (byte) main::r#55 + //SEG330 [124] call printu + //SEG331 [167] phi from main::@17 to printu [phi:main::@17->printu] + //SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy + //SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy + //SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 lda #op15 sta printu.op+1 - //SEG334 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy - //SEG335 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy + //SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy + //SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy jsr printu - //SEG336 [125] phi from main::@17 to main::@64 [phi:main::@17->main::@64] - //SEG337 main::@64 - //SEG338 [126] call print_ln - //SEG339 [162] phi from main::@64 to print_ln [phi:main::@64->print_ln] - //SEG340 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@64->print_ln#0] -- register_copy + //SEG337 [125] phi from main::@17 to main::@64 [phi:main::@17->main::@64] + //SEG338 main::@64 + //SEG339 [126] call print_ln + //SEG340 [162] phi from main::@64 to print_ln [phi:main::@64->print_ln] + //SEG341 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@64->print_ln#0] -- register_copy jsr print_ln - //SEG341 main::@65 - //SEG342 [127] if((byte) main::a#10!=(byte) main::b#0) goto main::@18 -- vbuz1_neq_vbuz2_then_la1 + //SEG342 main::@65 + //SEG343 [127] if((byte) main::a#10!=(byte) main::b#0) goto main::@18 -- vbuz1_neq_vbuz2_then_la1 lda a cmp b bne b39 - //SEG343 [128] phi from main::@65 to main::@39 [phi:main::@65->main::@39] - //SEG344 main::@39 - //SEG345 [129] phi from main::@39 to main::@18 [phi:main::@39->main::@18] - //SEG346 [129] phi (byte) main::r#56 = (byte) '+' [phi:main::@39->main::@18#0] -- vbuxx=vbuc1 + //SEG344 [128] phi from main::@65 to main::@39 [phi:main::@65->main::@39] + //SEG345 main::@39 + //SEG346 [129] phi from main::@39 to main::@18 [phi:main::@39->main::@18] + //SEG347 [129] phi (byte) main::r#56 = (byte) '+' [phi:main::@39->main::@18#0] -- vbuxx=vbuc1 ldx #'+' jmp b18 - //SEG347 [129] phi from main::@65 to main::@18 [phi:main::@65->main::@18] + //SEG348 [129] phi from main::@65 to main::@18 [phi:main::@65->main::@18] b39: - //SEG348 [129] phi (byte) main::r#56 = (byte) '-' [phi:main::@65->main::@18#0] -- vbuxx=vbuc1 + //SEG349 [129] phi (byte) main::r#56 = (byte) '-' [phi:main::@65->main::@18#0] -- vbuxx=vbuc1 ldx #'-' - //SEG349 main::@18 + //SEG350 main::@18 b18: - //SEG350 [130] (byte) printu::a#16 ← (byte) main::a#10 - //SEG351 [131] (byte) printu::b#16 ← (byte) main::b#0 -- vbuz1=vbuz2 + //SEG351 [130] (byte) printu::a#16 ← (byte) main::a#10 + //SEG352 [131] (byte) printu::b#16 ← (byte) main::b#0 -- vbuz1=vbuz2 lda b sta printu.b - //SEG352 [132] (byte) printu::res#16 ← (byte) main::r#56 - //SEG353 [133] (byte*~) print_char_cursor#151 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG353 [132] (byte) printu::res#16 ← (byte) main::r#56 + //SEG354 [133] (byte*~) print_char_cursor#151 ← (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 - //SEG354 [134] call printu - //SEG355 [167] phi from main::@18 to printu [phi:main::@18->printu] - //SEG356 [167] phi (byte) printu::res#20 = (byte) printu::res#16 [phi:main::@18->printu#0] -- register_copy - //SEG357 [167] phi (byte) printu::b#20 = (byte) printu::b#16 [phi:main::@18->printu#1] -- register_copy - //SEG358 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@18->printu#2] -- pbuz1=pbuc1 + //SEG355 [134] call printu + //SEG356 [167] phi from main::@18 to printu [phi:main::@18->printu] + //SEG357 [167] phi (byte) printu::res#20 = (byte) printu::res#16 [phi:main::@18->printu#0] -- register_copy + //SEG358 [167] phi (byte) printu::b#20 = (byte) printu::b#16 [phi:main::@18->printu#1] -- register_copy + //SEG359 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@18->printu#2] -- pbuz1=pbuc1 lda #op16 sta printu.op+1 - //SEG359 [167] phi (byte) printu::a#20 = (byte) printu::a#16 [phi:main::@18->printu#3] -- register_copy - //SEG360 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#151 [phi:main::@18->printu#4] -- register_copy + //SEG360 [167] phi (byte) printu::a#20 = (byte) printu::a#16 [phi:main::@18->printu#3] -- register_copy + //SEG361 [167] phi (byte*) print_char_cursor#95 = (byte*~) print_char_cursor#151 [phi:main::@18->printu#4] -- register_copy jsr printu - //SEG361 main::@66 - //SEG362 [135] if((byte) main::a#10!=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@19 -- vbuz1_neq_vbuc1_then_la1 + //SEG362 main::@66 + //SEG363 [135] if((byte) main::a#10!=(byte/signed byte/word/signed word/dword/signed dword) 55) goto main::@19 -- vbuz1_neq_vbuc1_then_la1 lda a cmp #$37 bne b40 - //SEG363 [136] phi from main::@66 to main::@40 [phi:main::@66->main::@40] - //SEG364 main::@40 - //SEG365 [137] phi from main::@40 to main::@19 [phi:main::@40->main::@19] - //SEG366 [137] phi (byte) main::r#57 = (byte) '+' [phi:main::@40->main::@19#0] -- vbuxx=vbuc1 + //SEG364 [136] phi from main::@66 to main::@40 [phi:main::@66->main::@40] + //SEG365 main::@40 + //SEG366 [137] phi from main::@40 to main::@19 [phi:main::@40->main::@19] + //SEG367 [137] phi (byte) main::r#57 = (byte) '+' [phi:main::@40->main::@19#0] -- vbuxx=vbuc1 ldx #'+' jmp b19 - //SEG367 [137] phi from main::@66 to main::@19 [phi:main::@66->main::@19] + //SEG368 [137] phi from main::@66 to main::@19 [phi:main::@66->main::@19] b40: - //SEG368 [137] phi (byte) main::r#57 = (byte) '-' [phi:main::@66->main::@19#0] -- vbuxx=vbuc1 + //SEG369 [137] phi (byte) main::r#57 = (byte) '-' [phi:main::@66->main::@19#0] -- vbuxx=vbuc1 ldx #'-' - //SEG369 main::@19 + //SEG370 main::@19 b19: - //SEG370 [138] (byte) printu::a#17 ← (byte) main::a#10 - //SEG371 [139] (byte) printu::res#17 ← (byte) main::r#57 - //SEG372 [140] call printu - //SEG373 [167] phi from main::@19 to printu [phi:main::@19->printu] - //SEG374 [167] phi (byte) printu::res#20 = (byte) printu::res#17 [phi:main::@19->printu#0] -- register_copy - //SEG375 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 + //SEG371 [138] (byte) printu::a#17 ← (byte) main::a#10 + //SEG372 [139] (byte) printu::res#17 ← (byte) main::r#57 + //SEG373 [140] call printu + //SEG374 [167] phi from main::@19 to printu [phi:main::@19->printu] + //SEG375 [167] phi (byte) printu::res#20 = (byte) printu::res#17 [phi:main::@19->printu#0] -- register_copy + //SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 lda #$37 sta printu.b - //SEG376 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 + //SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 lda #op17 sta printu.op+1 - //SEG377 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy - //SEG378 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy + //SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy + //SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy jsr printu - //SEG379 main::@67 - //SEG380 [141] if((byte) main::a#10!=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@20 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG380 main::@67 + //SEG381 [141] if((byte) main::a#10!=*((const byte[5]) main::cs#0 + (byte) main::i#10)) goto main::@20 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda a ldy i cmp cs,y bne b41 - //SEG381 [142] phi from main::@67 to main::@41 [phi:main::@67->main::@41] - //SEG382 main::@41 - //SEG383 [143] phi from main::@41 to main::@20 [phi:main::@41->main::@20] - //SEG384 [143] phi (byte) main::r#58 = (byte) '+' [phi:main::@41->main::@20#0] -- vbuxx=vbuc1 + //SEG382 [142] phi from main::@67 to main::@41 [phi:main::@67->main::@41] + //SEG383 main::@41 + //SEG384 [143] phi from main::@41 to main::@20 [phi:main::@41->main::@20] + //SEG385 [143] phi (byte) main::r#58 = (byte) '+' [phi:main::@41->main::@20#0] -- vbuxx=vbuc1 ldx #'+' jmp b20 - //SEG385 [143] phi from main::@67 to main::@20 [phi:main::@67->main::@20] + //SEG386 [143] phi from main::@67 to main::@20 [phi:main::@67->main::@20] b41: - //SEG386 [143] phi (byte) main::r#58 = (byte) '-' [phi:main::@67->main::@20#0] -- vbuxx=vbuc1 + //SEG387 [143] phi (byte) main::r#58 = (byte) '-' [phi:main::@67->main::@20#0] -- vbuxx=vbuc1 ldx #'-' - //SEG387 main::@20 + //SEG388 main::@20 b20: - //SEG388 [144] (byte) printu::a#18 ← (byte) main::a#10 - //SEG389 [145] (byte) printu::b#18 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG389 [144] (byte) printu::a#18 ← (byte) main::a#10 + //SEG390 [145] (byte) printu::b#18 ← *((const byte[5]) main::cs#0 + (byte) main::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cs,y sta printu.b - //SEG390 [146] (byte) printu::res#18 ← (byte) main::r#58 - //SEG391 [147] call printu - //SEG392 [167] phi from main::@20 to printu [phi:main::@20->printu] - //SEG393 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy - //SEG394 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy - //SEG395 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 + //SEG391 [146] (byte) printu::res#18 ← (byte) main::r#58 + //SEG392 [147] call printu + //SEG393 [167] phi from main::@20 to printu [phi:main::@20->printu] + //SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy + //SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy + //SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 lda #op18 sta printu.op+1 - //SEG396 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy - //SEG397 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy + //SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy + //SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy jsr printu - //SEG398 main::@68 - //SEG399 [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 -- vbuz1_neq_vbuz1_then_la1 + //SEG399 main::@68 + //SEG400 [148] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 -- vbuz1_neq_vbuz1_then_la1 lda a cmp a bne b42 - //SEG400 [149] phi from main::@68 to main::@42 [phi:main::@68->main::@42] - //SEG401 main::@42 - //SEG402 [150] phi from main::@42 to main::@21 [phi:main::@42->main::@21] - //SEG403 [150] phi (byte) main::r#59 = (byte) '+' [phi:main::@42->main::@21#0] -- vbuxx=vbuc1 + //SEG401 [149] phi from main::@68 to main::@42 [phi:main::@68->main::@42] + //SEG402 main::@42 + //SEG403 [150] phi from main::@42 to main::@21 [phi:main::@42->main::@21] + //SEG404 [150] phi (byte) main::r#59 = (byte) '+' [phi:main::@42->main::@21#0] -- vbuxx=vbuc1 ldx #'+' jmp b21 - //SEG404 [150] phi from main::@68 to main::@21 [phi:main::@68->main::@21] + //SEG405 [150] phi from main::@68 to main::@21 [phi:main::@68->main::@21] b42: - //SEG405 [150] phi (byte) main::r#59 = (byte) '-' [phi:main::@68->main::@21#0] -- vbuxx=vbuc1 + //SEG406 [150] phi (byte) main::r#59 = (byte) '-' [phi:main::@68->main::@21#0] -- vbuxx=vbuc1 ldx #'-' - //SEG406 main::@21 + //SEG407 main::@21 b21: - //SEG407 [151] (byte) printu::a#19 ← (byte) main::a#10 - //SEG408 [152] (byte) printu::b#19 ← (byte) main::a#10 -- vbuz1=vbuz2 + //SEG408 [151] (byte) printu::a#19 ← (byte) main::a#10 + //SEG409 [152] (byte) printu::b#19 ← (byte) main::a#10 -- vbuz1=vbuz2 lda a sta printu.b - //SEG409 [153] (byte) printu::res#19 ← (byte) main::r#59 - //SEG410 [154] call printu - //SEG411 [167] phi from main::@21 to printu [phi:main::@21->printu] - //SEG412 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy - //SEG413 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy - //SEG414 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 + //SEG410 [153] (byte) printu::res#19 ← (byte) main::r#59 + //SEG411 [154] call printu + //SEG412 [167] phi from main::@21 to printu [phi:main::@21->printu] + //SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy + //SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy + //SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 lda #op19 sta printu.op+1 - //SEG415 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy - //SEG416 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy + //SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy + //SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy jsr printu - //SEG417 [155] phi from main::@21 to main::@69 [phi:main::@21->main::@69] - //SEG418 main::@69 - //SEG419 [156] call print_ln - //SEG420 [162] phi from main::@69 to print_ln [phi:main::@69->print_ln] - //SEG421 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@69->print_ln#0] -- register_copy + //SEG418 [155] phi from main::@21 to main::@69 [phi:main::@21->main::@69] + //SEG419 main::@69 + //SEG420 [156] call print_ln + //SEG421 [162] phi from main::@69 to print_ln [phi:main::@69->print_ln] + //SEG422 [162] phi (byte*) print_line_cursor#25 = (byte*) print_line_cursor#1 [phi:main::@69->print_ln#0] -- register_copy jsr print_ln - //SEG422 main::@70 - //SEG423 [157] (byte) main::a#1 ← (byte) main::a#10 + (byte/signed byte/word/signed word/dword/signed dword) 48 -- vbuz1=vbuz1_plus_vbuc1 + //SEG423 main::@70 + //SEG424 [157] (byte) main::a#1 ← (byte) main::a#10 + (byte/signed byte/word/signed word/dword/signed dword) 48 -- vbuz1=vbuz1_plus_vbuc1 lda #$30 clc adc a sta a - //SEG424 [158] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + //SEG425 [158] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG425 [159] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@71 -- vbuz1_neq_vbuc1_then_la1 + //SEG426 [159] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@71 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #5 bne b71 - //SEG426 [160] phi from main::@22 main::@70 to main::@22 [phi:main::@22/main::@70->main::@22] - //SEG427 main::@22 + //SEG427 [160] phi from main::@22 main::@70 to main::@22 [phi:main::@22/main::@70->main::@22] + //SEG428 main::@22 b22: jmp b22 - //SEG428 main::@71 + //SEG429 main::@71 b71: - //SEG429 [161] (byte*~) print_char_cursor#142 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG430 [161] (byte*~) print_char_cursor#142 ← (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 - //SEG430 [6] phi from main::@71 to main::@1 [phi:main::@71->main::@1] - //SEG431 [6] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#1 [phi:main::@71->main::@1#0] -- register_copy - //SEG432 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@71->main::@1#1] -- register_copy - //SEG433 [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#142 [phi:main::@71->main::@1#2] -- register_copy - //SEG434 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy + //SEG431 [6] phi from main::@71 to main::@1 [phi:main::@71->main::@1] + //SEG432 [6] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#1 [phi:main::@71->main::@1#0] -- register_copy + //SEG433 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@71->main::@1#1] -- register_copy + //SEG434 [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#142 [phi:main::@71->main::@1#2] -- register_copy + //SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy jmp b1 op: .text "< @" op1: .text "< @" @@ -7398,14 +7401,14 @@ main: { op19: .text "==@" cs: .byte 7, $c7, $37, $97, $67 } -//SEG435 print_ln +//SEG436 print_ln // Print a newline print_ln: { - //SEG436 [163] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG437 [163] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#25 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG438 print_ln::@1 + //SEG437 [163] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG438 [163] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#25 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG439 print_ln::@1 b1: - //SEG439 [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG440 [164] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -7413,7 +7416,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG440 [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG441 [165] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -7422,180 +7425,180 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG441 print_ln::@return - //SEG442 [166] return + //SEG442 print_ln::@return + //SEG443 [166] return rts } -//SEG443 printu +//SEG444 printu printu: { .label a = 2 .label b = 8 .label op = 6 - //SEG444 [168] call print_char - //SEG445 [180] phi from printu to print_char [phi:printu->print_char] - //SEG446 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#95 [phi:printu->print_char#0] -- register_copy - //SEG447 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu->print_char#1] -- vbuaa=vbuc1 + //SEG445 [168] call print_char + //SEG446 [180] phi from printu to print_char [phi:printu->print_char] + //SEG447 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#95 [phi:printu->print_char#0] -- register_copy + //SEG448 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG448 printu::@1 - //SEG449 [169] (byte) print_byte::b#0 ← (byte) printu::a#20 -- vbuz1=vbuz2 + //SEG449 printu::@1 + //SEG450 [169] (byte) print_byte::b#0 ← (byte) printu::a#20 -- vbuz1=vbuz2 lda a sta print_byte.b - //SEG450 [170] call print_byte - //SEG451 [184] phi from printu::@1 to print_byte [phi:printu::@1->print_byte] - //SEG452 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#55 [phi:printu::@1->print_byte#0] -- register_copy - //SEG453 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:printu::@1->print_byte#1] -- register_copy + //SEG451 [170] call print_byte + //SEG452 [184] phi from printu::@1 to print_byte [phi:printu::@1->print_byte] + //SEG453 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#55 [phi:printu::@1->print_byte#0] -- register_copy + //SEG454 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:printu::@1->print_byte#1] -- register_copy jsr print_byte - //SEG454 printu::@2 - //SEG455 [171] (byte*) print_str::str#1 ← (byte[]) printu::op#20 - //SEG456 [172] call print_str - //SEG457 [192] phi from printu::@2 to print_str [phi:printu::@2->print_str] + //SEG455 printu::@2 + //SEG456 [171] (byte*) print_str::str#1 ← (byte[]) printu::op#20 + //SEG457 [172] call print_str + //SEG458 [192] phi from printu::@2 to print_str [phi:printu::@2->print_str] jsr print_str - //SEG458 printu::@3 - //SEG459 [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuz1=vbuz2 + //SEG459 printu::@3 + //SEG460 [173] (byte) print_byte::b#1 ← (byte) printu::b#20 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG460 [174] call print_byte - //SEG461 [184] phi from printu::@3 to print_byte [phi:printu::@3->print_byte] - //SEG462 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:printu::@3->print_byte#0] -- register_copy - //SEG463 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:printu::@3->print_byte#1] -- register_copy + //SEG461 [174] call print_byte + //SEG462 [184] phi from printu::@3 to print_byte [phi:printu::@3->print_byte] + //SEG463 [184] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:printu::@3->print_byte#0] -- register_copy + //SEG464 [184] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:printu::@3->print_byte#1] -- register_copy jsr print_byte - //SEG464 [175] phi from printu::@3 to printu::@4 [phi:printu::@3->printu::@4] - //SEG465 printu::@4 - //SEG466 [176] call print_char - //SEG467 [180] phi from printu::@4 to print_char [phi:printu::@4->print_char] - //SEG468 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@4->print_char#0] -- register_copy - //SEG469 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu::@4->print_char#1] -- vbuaa=vbuc1 + //SEG465 [175] phi from printu::@3 to printu::@4 [phi:printu::@3->printu::@4] + //SEG466 printu::@4 + //SEG467 [176] call print_char + //SEG468 [180] phi from printu::@4 to print_char [phi:printu::@4->print_char] + //SEG469 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@4->print_char#0] -- register_copy + //SEG470 [180] phi (byte) print_char::ch#5 = (byte) ' ' [phi:printu::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG470 printu::@5 - //SEG471 [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuaa=vbuxx + //SEG471 printu::@5 + //SEG472 [177] (byte) print_char::ch#4 ← (byte) printu::res#20 -- vbuaa=vbuxx txa - //SEG472 [178] call print_char - //SEG473 [180] phi from printu::@5 to print_char [phi:printu::@5->print_char] - //SEG474 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@5->print_char#0] -- register_copy - //SEG475 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:printu::@5->print_char#1] -- register_copy + //SEG473 [178] call print_char + //SEG474 [180] phi from printu::@5 to print_char [phi:printu::@5->print_char] + //SEG475 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:printu::@5->print_char#0] -- register_copy + //SEG476 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:printu::@5->print_char#1] -- register_copy jsr print_char - //SEG476 printu::@return - //SEG477 [179] return + //SEG477 printu::@return + //SEG478 [179] return rts } -//SEG478 print_char +//SEG479 print_char // Print a single char print_char: { - //SEG479 [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG480 [181] *((byte*) print_char_cursor#54) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG480 [182] (byte*) print_char_cursor#55 ← ++ (byte*) print_char_cursor#54 -- pbuz1=_inc_pbuz1 + //SEG481 [182] (byte*) print_char_cursor#55 ← ++ (byte*) print_char_cursor#54 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG481 print_char::@return - //SEG482 [183] return + //SEG482 print_char::@return + //SEG483 [183] return rts } -//SEG483 print_byte +//SEG484 print_byte // Print a byte as HEX print_byte: { .label b = $b - //SEG484 [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG485 [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG485 [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG486 [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG486 [187] call print_char - //SEG487 [180] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG488 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#94 [phi:print_byte->print_char#0] -- register_copy - //SEG489 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG487 [187] call print_char + //SEG488 [180] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG489 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#94 [phi:print_byte->print_char#0] -- register_copy + //SEG490 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG490 print_byte::@1 - //SEG491 [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG491 print_byte::@1 + //SEG492 [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG492 [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG493 [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG493 [190] call print_char - //SEG494 [180] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG495 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG496 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG494 [190] call print_char + //SEG495 [180] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG496 [180] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#55 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG497 [180] phi (byte) print_char::ch#5 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG497 print_byte::@return - //SEG498 [191] return + //SEG498 print_byte::@return + //SEG499 [191] return rts } -//SEG499 print_str +//SEG500 print_str // Print a zero-terminated string print_str: { .label str = 6 - //SEG500 [193] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG501 [193] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#55 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG502 [193] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG503 print_str::@1 + //SEG501 [193] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG502 [193] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#55 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG503 [193] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG504 print_str::@1 b1: - //SEG504 [194] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG505 [194] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG505 print_str::@return - //SEG506 [195] return + //SEG506 print_str::@return + //SEG507 [195] return rts - //SEG507 print_str::@2 + //SEG508 print_str::@2 b2: - //SEG508 [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG509 [196] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG509 [197] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG510 [197] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG510 [198] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG511 [198] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG511 print_cls +//SEG512 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 4 - //SEG512 [200] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG513 [200] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG513 [200] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG514 [200] 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 - //SEG514 [200] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG515 [200] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG516 print_cls::@1 + //SEG515 [200] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG516 [200] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG517 print_cls::@1 b1: - //SEG517 [201] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG518 [201] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG518 [202] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG519 [202] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG519 [203] 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 + //SEG520 [203] 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 - //SEG520 print_cls::@return - //SEG521 [204] return + //SEG521 print_cls::@return + //SEG522 [204] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-division.asm b/src/test/ref/test-division.asm index 1b6974e12..4459b9db7 100644 --- a/src/test/ref/test-division.asm +++ b/src/test/ref/test-division.asm @@ -1,3 +1,4 @@ +// Test the binary division library .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log index 169426a1f..605f627a4 100644 --- a/src/test/ref/test-division.log +++ b/src/test/ref/test-division.log @@ -4474,262 +4474,264 @@ Allocated zp ZP_BYTE:119 [ div8u::return#3 ] Allocated zp ZP_BYTE:120 [ test_8u::res#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test the binary division library +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = $b .label print_line_cursor = 3 .label rem16u = $54 .label rem8s = $29 .label rem16s = $18 .label rem8u = $64 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @32 [phi:@begin->@32] +//SEG4 [1] phi from @begin to @32 [phi:@begin->@32] b32_from_bbegin: jmp b32 -//SEG4 @32 +//SEG5 @32 b32: -//SEG5 [2] call main -//SEG6 [4] phi from @32 to main [phi:@32->main] +//SEG6 [2] call main +//SEG7 [4] phi from @32 to main [phi:@32->main] main_from_b32: jsr main -//SEG7 [3] phi from @32 to @end [phi:@32->@end] +//SEG8 [3] phi from @32 to @end [phi:@32->@end] bend_from_b32: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [282] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [282] 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] + //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 test_8u - //SEG15 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG15 [7] call test_8u + //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] test_8u_from_b1: jsr test_8u - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call test_16u - //SEG19 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG19 [9] call test_16u + //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] test_16u_from_b2: jsr test_16u - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [11] call test_8s - //SEG23 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG23 [11] call test_8s + //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] test_8s_from_b3: jsr test_8s - //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG25 main::@4 + //SEG26 main::@4 b4: - //SEG26 [13] call test_16s - //SEG27 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s] + //SEG27 [13] call test_16s + //SEG28 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s] test_16s_from_b4: jsr test_16s jmp breturn - //SEG28 main::@return + //SEG29 main::@return breturn: - //SEG29 [14] return + //SEG30 [14] return rts } -//SEG30 test_16s +//SEG31 test_16s test_16s: { .label dividend = $34 .label divisor = $36 .label res = $3e .label i = 2 - //SEG31 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1] + //SEG32 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1] b1_from_test_16s: - //SEG32 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 + //SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG33 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1] + //SEG34 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1] b1_from_b11: - //SEG34 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy + //SEG35 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy jmp b1 - //SEG35 test_16s::@1 + //SEG36 test_16s::@1 b1: - //SEG36 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 + //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG37 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 + //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG38 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 + //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta div16s.dividend lda dividend+1 sta div16s.dividend+1 - //SEG39 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 + //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta div16s.divisor lda divisor+1 sta div16s.divisor+1 - //SEG40 [21] call div16s + //SEG41 [21] call div16s jsr div16s - //SEG41 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 -- vwsz1=vwsz2 + //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 -- vwsz1=vwsz2 lda div16s.return sta div16s.return_2 lda div16s.return+1 sta div16s.return_2+1 jmp b3 - //SEG42 test_16s::@3 + //SEG43 test_16s::@3 b3: - //SEG43 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 -- vwsz1=vwsz2 + //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 -- vwsz1=vwsz2 lda div16s.return_2 sta res lda div16s.return_2+1 sta res+1 - //SEG44 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 + //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta print_sword.w lda dividend+1 sta print_sword.w+1 - //SEG45 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG46 [25] (byte*~) print_char_cursor#159 ← (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 - //SEG46 [26] call print_sword - //SEG47 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword] + //SEG47 [26] call print_sword + //SEG48 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword] print_sword_from_b3: - //SEG48 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy - //SEG49 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy + //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy + //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy jsr print_sword - //SEG50 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4] + //SEG51 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4] b4_from_b3: jmp b4 - //SEG51 test_16s::@4 + //SEG52 test_16s::@4 b4: - //SEG52 [28] call print_str - //SEG53 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] + //SEG53 [28] call print_str + //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] print_str_from_b4: - //SEG54 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 + //SEG55 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG55 test_16s::@5 + //SEG56 test_16s::@5 b5: - //SEG56 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 + //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta print_sword.w lda divisor+1 sta print_sword.w+1 - //SEG57 [30] call print_sword - //SEG58 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword] + //SEG58 [30] call print_sword + //SEG59 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword] print_sword_from_b5: - //SEG59 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy - //SEG60 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy + //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy + //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy jsr print_sword - //SEG61 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6] + //SEG62 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6] b6_from_b5: jmp b6 - //SEG62 test_16s::@6 + //SEG63 test_16s::@6 b6: - //SEG63 [32] call print_str - //SEG64 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] + //SEG64 [32] call print_str + //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] print_str_from_b6: - //SEG65 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 + //SEG66 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG66 test_16s::@7 + //SEG67 test_16s::@7 b7: - //SEG67 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 + //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 lda res sta print_sword.w lda res+1 sta print_sword.w+1 - //SEG68 [34] call print_sword - //SEG69 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword] + //SEG69 [34] call print_sword + //SEG70 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword] print_sword_from_b7: - //SEG70 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy - //SEG71 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy + //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy + //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy jsr print_sword - //SEG72 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8] + //SEG73 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8] b8_from_b7: jmp b8 - //SEG73 test_16s::@8 + //SEG74 test_16s::@8 b8: - //SEG74 [36] call print_str - //SEG75 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] + //SEG75 [36] call print_str + //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] print_str_from_b8: - //SEG76 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 + //SEG77 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b9 - //SEG77 test_16s::@9 + //SEG78 test_16s::@9 b9: - //SEG78 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 + //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 lda rem16s sta print_sword.w lda rem16s+1 sta print_sword.w+1 - //SEG79 [38] call print_sword - //SEG80 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword] + //SEG80 [38] call print_sword + //SEG81 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword] print_sword_from_b9: - //SEG81 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy - //SEG82 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy + //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy + //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy jsr print_sword - //SEG83 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10] + //SEG84 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10] b10_from_b9: jmp b10 - //SEG84 test_16s::@10 + //SEG85 test_16s::@10 b10: - //SEG85 [40] call print_ln - //SEG86 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln] + //SEG86 [40] call print_ln + //SEG87 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln] print_ln_from_b10: - //SEG87 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy + //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy jsr print_ln jmp b11 - //SEG88 test_16s::@11 + //SEG89 test_16s::@11 b11: - //SEG89 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG90 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$c bne b1_from_b11 jmp breturn - //SEG91 test_16s::@return + //SEG92 test_16s::@return breturn: - //SEG92 [43] return + //SEG93 [43] return rts str: .text " / @" str1: .text " = @" @@ -4737,17 +4739,17 @@ test_16s: { dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff divisors: .word 5, -7, $b, -$d, -$11, $13 } -//SEG93 print_ln +//SEG94 print_ln // Print a newline print_ln: { - //SEG94 [45] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG95 [45] 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: - //SEG95 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG96 print_ln::@1 + //SEG97 print_ln::@1 b1: - //SEG97 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -4755,7 +4757,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG98 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -4765,35 +4767,35 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG99 print_ln::@return + //SEG100 print_ln::@return breturn: - //SEG100 [48] return + //SEG101 [48] return rts } -//SEG101 print_sword +//SEG102 print_sword // Print a signed word as HEX print_sword: { .label w = 5 - //SEG102 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG103 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG104 print_sword::@2 + //SEG105 print_sword::@2 b2: - //SEG105 [52] call print_char - //SEG106 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG106 [52] call print_char + //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG107 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG108 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG109 print_sword::@4 + //SEG110 print_sword::@4 b4: - //SEG110 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -4803,169 +4805,169 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG111 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG112 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG112 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG113 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG114 print_sword::@1 + //SEG115 print_sword::@1 b1: - //SEG115 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 + //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 lda w sta print_word.w lda w+1 sta print_word.w+1 - //SEG116 [56] call print_word - //SEG117 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG117 [56] call print_word + //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG118 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG119 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG120 print_sword::@return + //SEG121 print_sword::@return breturn: - //SEG121 [57] return + //SEG122 [57] return rts } -//SEG122 print_word +//SEG123 print_word // Print a word as HEX print_word: { .label w = 7 - //SEG123 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG124 [60] call print_byte - //SEG125 [64] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG125 [60] call print_byte + //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG126 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG127 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy + //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG128 print_word::@1 + //SEG129 print_word::@1 b1: - //SEG129 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG130 [62] call print_byte - //SEG131 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG131 [62] call print_byte + //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG132 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG133 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG134 print_word::@return + //SEG135 print_word::@return breturn: - //SEG135 [63] return + //SEG136 [63] return rts } -//SEG136 print_byte +//SEG137 print_byte // Print a byte as HEX print_byte: { .label _0 = $40 .label _2 = $41 .label b = 9 - //SEG137 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG138 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG139 [67] call print_char - //SEG140 [72] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG140 [67] call print_char + //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG141 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG142 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG143 print_byte::@1 + //SEG144 print_byte::@1 b1: - //SEG144 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG145 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG146 [70] call print_char - //SEG147 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG147 [70] call print_char + //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG148 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG149 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG150 print_byte::@return + //SEG151 print_byte::@return breturn: - //SEG151 [71] return + //SEG152 [71] return rts } -//SEG152 print_char +//SEG153 print_char // Print a single char print_char: { .label ch = $a - //SEG153 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 + //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG154 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 + //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG155 print_char::@return + //SEG156 print_char::@return breturn: - //SEG156 [75] return + //SEG157 [75] return rts } -//SEG157 print_str +//SEG158 print_str // Print a zero-terminated string print_str: { .label str = $d - //SEG158 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG159 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG159 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG160 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG161 print_str::@1 + //SEG162 print_str::@1 b1: - //SEG162 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG163 print_str::@return + //SEG164 print_str::@return breturn: - //SEG164 [79] return + //SEG165 [79] return rts - //SEG165 print_str::@2 + //SEG166 print_str::@2 b2: - //SEG166 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG167 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG168 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG169 div16s +//SEG170 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. @@ -4977,38 +4979,38 @@ div16s: { .label dividend = $38 .label divisor = $3a .label return_2 = $3c - //SEG170 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG171 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG172 [85] call divr16s + //SEG173 [85] call divr16s jsr divr16s - //SEG173 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 + //SEG174 [86] (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 b2 - //SEG174 div16s::@2 + //SEG175 div16s::@2 b2: - //SEG175 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 + //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 lda divr16s.return_3 sta return lda divr16s.return_3+1 sta return+1 jmp breturn - //SEG176 div16s::@return + //SEG177 div16s::@return breturn: - //SEG177 [88] return + //SEG178 [88] return rts } -//SEG178 divr16s +//SEG179 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -5027,93 +5029,93 @@ divr16s: { .label dividendu = $f .label divisoru = $13 .label remu = $11 - //SEG179 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 jmp b17 - //SEG180 divr16s::@17 + //SEG181 divr16s::@17 b17: - //SEG181 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 -- vwuz1=vwuz2 + //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 -- vwuz1=vwuz2 lda dividend sta dividendu lda dividend+1 sta dividendu+1 - //SEG182 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG183 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] b2_from_b17: - //SEG183 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 lda #rem sta remu+1 - //SEG184 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy - //SEG185 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuz1=vbuc1 + //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy + //SEG186 [91] 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 - //SEG186 divr16s::@2 + //SEG187 divr16s::@2 b2: - //SEG187 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG188 [92] 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 - //SEG188 divr16s::@18 + //SEG189 divr16s::@18 b18: - //SEG189 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 + //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 lda divisor sta divisoru lda divisor+1 sta divisoru+1 - //SEG190 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG191 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] b4_from_b18: b4_from_b3: - //SEG191 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy - //SEG192 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy + //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy jmp b4 - //SEG193 divr16s::@4 + //SEG194 divr16s::@4 b4: - //SEG194 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 + //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 lda dividendu sta divr16u.dividend lda dividendu+1 sta divr16u.dividend+1 - //SEG195 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 + //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 lda divisoru sta divr16u.divisor lda divisoru+1 sta divr16u.divisor+1 - //SEG196 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 + //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 lda remu sta divr16u.rem lda remu+1 sta divr16u.rem+1 - //SEG197 [98] call divr16u - //SEG198 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG198 [98] call divr16u + //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: - //SEG199 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG200 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy - //SEG201 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy + //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy jsr divr16u - //SEG202 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG203 [99] (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 b15 - //SEG203 divr16s::@15 + //SEG204 divr16s::@15 b15: - //SEG204 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta resultu lda divr16u.return_3+1 sta resultu+1 - //SEG205 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuz1_eq_0_then_la1 + //SEG206 [101] 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 - //SEG206 divr16s::@11 + //SEG207 divr16s::@11 b11: - //SEG207 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz2 + //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz2 sec lda rem16u eor #$ff @@ -5123,7 +5125,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG208 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 + //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 sec lda resultu eor #$ff @@ -5133,32 +5135,32 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG209 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG210 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] breturn_from_b11: breturn_from_b19: - //SEG210 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy - //SEG211 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy + //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy jmp breturn - //SEG212 divr16s::@return + //SEG213 divr16s::@return breturn: - //SEG213 [105] return + //SEG214 [105] return rts - //SEG214 divr16s::@19 + //SEG215 divr16s::@19 b19: - //SEG215 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 + //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 lda resultu sta return lda resultu+1 sta return+1 - //SEG216 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 + //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 lda rem16u sta rem16s lda rem16u+1 sta rem16s+1 jmp breturn_from_b19 - //SEG217 divr16s::@3 + //SEG218 divr16s::@3 b3: - //SEG218 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 + //SEG219 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 sec lda divisor eor #$ff @@ -5168,19 +5170,19 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG219 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG220 [109] (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 - //SEG220 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 -- vwuz1=vwuz2 + //SEG221 [110] (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 - //SEG221 divr16s::@1 + //SEG222 divr16s::@1 b1: - //SEG222 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz2 + //SEG223 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz2 sec lda dividend eor #$ff @@ -5190,25 +5192,25 @@ divr16s: { eor #$ff adc #0 sta _5+1 - //SEG223 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 -- vwuz1=vwuz2 + //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 -- vwuz1=vwuz2 lda _5 sta dividendu lda _5+1 sta dividendu+1 - //SEG224 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG225 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 lda #<-rem sta remu lda #>-rem sta remu+1 - //SEG226 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy - //SEG227 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 + //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy + //SEG228 [91] 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 } -//SEG228 divr16u +//SEG229 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5224,63 +5226,63 @@ divr16u: { .label divisor = $1a .label return_2 = $71 .label return_3 = $4a - //SEG229 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG230 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG231 [114] 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 - //SEG231 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG232 [114] 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 - //SEG232 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG233 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG234 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG235 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG236 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG237 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG238 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG239 divr16u::@1 + //SEG240 divr16u::@1 b1: - //SEG240 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG241 [115] (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 - //SEG241 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG242 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG243 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG244 [118] 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 - //SEG244 divr16u::@4 + //SEG245 divr16u::@4 b4: - //SEG245 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG246 [119] (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 - //SEG246 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG247 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG248 divr16u::@2 + //SEG249 divr16u::@2 b2: - //SEG249 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG250 [121] (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 - //SEG250 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG251 [122] (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 - //SEG251 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -5290,14 +5292,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG252 divr16u::@5 + //SEG253 divr16u::@5 b5: - //SEG253 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG254 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -5305,192 +5307,192 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG255 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG256 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG257 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG258 divr16u::@3 + //SEG259 divr16u::@3 b3: - //SEG259 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG260 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG261 [128] 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 - //SEG261 divr16u::@6 + //SEG262 divr16u::@6 b6: - //SEG262 [129] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG263 divr16u::@return + //SEG264 divr16u::@return breturn: - //SEG264 [130] return + //SEG265 [130] return rts } -//SEG265 test_8s +//SEG266 test_8s test_8s: { .label dividend = $56 .label divisor = $57 .label res = $5b .label i = $23 - //SEG266 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] b1_from_test_8s: - //SEG267 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG268 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1] + //SEG269 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1] b1_from_b11: - //SEG269 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy + //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy jmp b1 - //SEG270 test_8s::@1 + //SEG271 test_8s::@1 b1: - //SEG271 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG272 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG273 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 + //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 lda dividend sta div8s.dividend - //SEG274 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta div8s.divisor - //SEG275 [137] call div8s + //SEG276 [137] call div8s jsr div8s - //SEG276 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 -- vbsz1=vbsz2 + //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 -- vbsz1=vbsz2 lda div8s.return sta div8s.return_3 jmp b3 - //SEG277 test_8s::@3 + //SEG278 test_8s::@3 b3: - //SEG278 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsz2 + //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsz2 lda div8s.return_3 sta res - //SEG279 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 + //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 lda dividend sta print_sbyte.b - //SEG280 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG281 [141] (byte*~) print_char_cursor#184 ← (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 - //SEG281 [142] call print_sbyte - //SEG282 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte] + //SEG282 [142] call print_sbyte + //SEG283 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte] print_sbyte_from_b3: - //SEG283 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy - //SEG284 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy + //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy + //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG285 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4] + //SEG286 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4] b4_from_b3: jmp b4 - //SEG286 test_8s::@4 + //SEG287 test_8s::@4 b4: - //SEG287 [144] call print_str - //SEG288 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] + //SEG288 [144] call print_str + //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] print_str_from_b4: - //SEG289 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 + //SEG290 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG290 test_8s::@5 + //SEG291 test_8s::@5 b5: - //SEG291 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG292 [146] call print_sbyte - //SEG293 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte] + //SEG293 [146] call print_sbyte + //SEG294 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte] print_sbyte_from_b5: - //SEG294 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy - //SEG295 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy + //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy + //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG296 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6] + //SEG297 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6] b6_from_b5: jmp b6 - //SEG297 test_8s::@6 + //SEG298 test_8s::@6 b6: - //SEG298 [148] call print_str - //SEG299 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] + //SEG299 [148] call print_str + //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] print_str_from_b6: - //SEG300 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 + //SEG301 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG301 test_8s::@7 + //SEG302 test_8s::@7 b7: - //SEG302 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG303 [150] call print_sbyte - //SEG304 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte] + //SEG304 [150] call print_sbyte + //SEG305 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte] print_sbyte_from_b7: - //SEG305 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy - //SEG306 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy + //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy + //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG307 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8] + //SEG308 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8] b8_from_b7: jmp b8 - //SEG308 test_8s::@8 + //SEG309 test_8s::@8 b8: - //SEG309 [152] call print_str - //SEG310 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] + //SEG310 [152] call print_str + //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] print_str_from_b8: - //SEG311 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 + //SEG312 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b9 - //SEG312 test_8s::@9 + //SEG313 test_8s::@9 b9: - //SEG313 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsz2 + //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsz2 lda rem8s sta print_sbyte.b - //SEG314 [154] call print_sbyte - //SEG315 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte] + //SEG315 [154] call print_sbyte + //SEG316 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte] print_sbyte_from_b9: - //SEG316 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy - //SEG317 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy + //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy + //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG318 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10] + //SEG319 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10] b10_from_b9: jmp b10 - //SEG319 test_8s::@10 + //SEG320 test_8s::@10 b10: - //SEG320 [156] call print_ln - //SEG321 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln] + //SEG321 [156] call print_ln + //SEG322 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln] print_ln_from_b10: - //SEG322 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy + //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy jsr print_ln jmp b11 - //SEG323 test_8s::@11 + //SEG324 test_8s::@11 b11: - //SEG324 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG325 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #6 bne b1_from_b11 jmp breturn - //SEG326 test_8s::@return + //SEG327 test_8s::@return breturn: - //SEG327 [159] return + //SEG328 [159] return rts str: .text " / @" str1: .text " = @" @@ -5498,64 +5500,64 @@ test_8s: { dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG328 print_sbyte +//SEG329 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = $24 - //SEG329 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG330 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG331 print_sbyte::@3 + //SEG332 print_sbyte::@3 b3: - //SEG332 [163] call print_char - //SEG333 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG333 [163] call print_char + //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG334 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG335 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG336 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG337 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG338 print_sbyte::@2 + //SEG339 print_sbyte::@2 b2: - //SEG339 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 -- vbuz1=vbuz2 + //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG340 [166] call print_byte - //SEG341 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG341 [166] call print_byte + //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG342 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG343 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG344 print_sbyte::@return + //SEG345 print_sbyte::@return breturn: - //SEG345 [167] return + //SEG346 [167] return rts - //SEG346 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG347 print_sbyte::@1 + //SEG348 print_sbyte::@1 b1: - //SEG348 [169] call print_char - //SEG349 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG349 [169] call print_char + //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG350 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG351 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b5 - //SEG352 print_sbyte::@5 + //SEG353 print_sbyte::@5 b5: - //SEG353 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -5563,7 +5565,7 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG354 div8s +//SEG355 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. @@ -5581,136 +5583,136 @@ div8s: { .label return_3 = $5a .label dividendu = $25 .label divisoru = $26 - //SEG355 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsz1_lt_0_then_la1 + //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsz1_lt_0_then_la1 lda dividend bmi b1 jmp b16 - //SEG356 div8s::@16 + //SEG357 div8s::@16 b16: - //SEG357 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 -- vbuz1=vbuz2 + //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 -- vbuz1=vbuz2 lda dividend sta dividendu - //SEG358 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2] + //SEG359 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2] b2_from_b16: - //SEG359 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy - //SEG360 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 + //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy + //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG361 div8s::@2 + //SEG362 div8s::@2 b2: - //SEG362 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsz1_lt_0_then_la1 + //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsz1_lt_0_then_la1 lda divisor bmi b3 jmp b17 - //SEG363 div8s::@17 + //SEG364 div8s::@17 b17: - //SEG364 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuz1=vbuz2 + //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuz1=vbuz2 lda divisor sta divisoru - //SEG365 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4] + //SEG366 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4] b4_from_b17: b4_from_b3: - //SEG366 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy - //SEG367 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy + //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy + //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy jmp b4 - //SEG368 div8s::@4 + //SEG369 div8s::@4 b4: - //SEG369 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuz1=vbuz2 + //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuz1=vbuz2 lda dividendu sta div8u.dividend - //SEG370 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 -- vbuz1=vbuz2 + //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 -- vbuz1=vbuz2 lda divisoru sta div8u.divisor - //SEG371 [179] call div8u - //SEG372 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG372 [179] call div8u + //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] div8u_from_b4: - //SEG373 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG374 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG375 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 -- vbuz1=vbuz2 + //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 -- vbuz1=vbuz2 lda div8u.return sta div8u.return_2 jmp b15 - //SEG376 div8s::@15 + //SEG377 div8s::@15 b15: - //SEG377 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuz1=vbuz2 + //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuz1=vbuz2 lda div8u.return_2 sta resultu - //SEG378 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 + //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b18 jmp b11 - //SEG379 div8s::@11 + //SEG380 div8s::@11 b11: - //SEG380 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsz1=_neg_vbsz2 + //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsz1=_neg_vbsz2 lda rem8u eor #$ff clc adc #1 sta rem8s - //SEG381 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsz1=_neg_vbsz2 + //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsz1=_neg_vbsz2 lda resultu eor #$ff clc adc #1 sta return - //SEG382 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return] + //SEG383 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return] breturn_from_b11: breturn_from_b18: - //SEG383 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy - //SEG384 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy + //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy + //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy jmp breturn - //SEG385 div8s::@return + //SEG386 div8s::@return breturn: - //SEG386 [186] return + //SEG387 [186] return rts - //SEG387 div8s::@18 + //SEG388 div8s::@18 b18: - //SEG388 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsz1=vbsz2 + //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsz1=vbsz2 lda resultu sta return - //SEG389 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 + //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 lda rem8u sta rem8s jmp breturn_from_b18 - //SEG390 div8s::@3 + //SEG391 div8s::@3 b3: - //SEG391 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsz1=_neg_vbsz2 + //SEG392 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsz1=_neg_vbsz2 lda divisor eor #$ff clc adc #1 sta _6 - //SEG392 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda neg eor #1 sta neg - //SEG393 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6 -- vbuz1=vbuz2 + //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6 -- vbuz1=vbuz2 lda _6 sta divisoru jmp b4_from_b3 - //SEG394 div8s::@1 + //SEG395 div8s::@1 b1: - //SEG395 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsz1=_neg_vbsz2 + //SEG396 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsz1=_neg_vbsz2 lda dividend eor #$ff clc adc #1 sta _2 - //SEG396 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuz1=vbuz2 + //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuz1=vbuz2 lda _2 sta dividendu - //SEG397 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] b2_from_b1: - //SEG398 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG399 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG400 div8u +//SEG401 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u @@ -5721,32 +5723,32 @@ div8u: { .label divisor = $2b .label return_2 = $5c .label return_3 = $77 - //SEG401 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuz2 + //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuz2 lda dividend sta divr8u.dividend - //SEG402 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuz2 + //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuz2 lda divisor sta divr8u.divisor - //SEG403 [197] call divr8u - //SEG404 [201] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG404 [197] call divr8u + //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u] divr8u_from_div8u: jsr divr8u - //SEG405 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuz1=vbuz2 + //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuz1=vbuz2 lda divr8u.return_1 sta divr8u.return jmp b2 - //SEG406 div8u::@2 + //SEG407 div8u::@2 b2: - //SEG407 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 -- vbuz1=vbuz2 + //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 -- vbuz1=vbuz2 lda divr8u.return sta return jmp breturn - //SEG408 div8u::@return + //SEG409 div8u::@return breturn: - //SEG409 [200] return + //SEG410 [200] return rts } -//SEG410 divr8u +//SEG411 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u @@ -5760,277 +5762,277 @@ divr8u: { .label quotient = $2e .label i = $2f .label return_1 = $2e - //SEG411 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] b1_from_divr8u: - //SEG412 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1 + //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG413 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 lda #0 sta quotient - //SEG414 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG415 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuz1=vbuc1 + //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuz1=vbuc1 lda #0 sta rem jmp b1 - //SEG416 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] b1_from_b3: - //SEG417 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG418 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG419 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG420 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy jmp b1 - //SEG421 divr8u::@1 + //SEG422 divr8u::@1 b1: - //SEG422 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl rem - //SEG423 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and dividend sta _1 - //SEG424 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuz1_eq_0_then_la1 + //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b2_from_b1 jmp b4 - //SEG425 divr8u::@4 + //SEG426 divr8u::@4 b4: - //SEG426 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bor_vbuc1 + //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG427 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] b2_from_b1: b2_from_b4: - //SEG428 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy jmp b2 - //SEG429 divr8u::@2 + //SEG430 divr8u::@2 b2: - //SEG430 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG431 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG432 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuz1_lt_vbuz2_then_la1 lda rem cmp divisor bcc b3_from_b2 jmp b5 - //SEG433 divr8u::@5 + //SEG434 divr8u::@5 b5: - //SEG434 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG435 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuz1=vbuz1_minus_vbuz2 + //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuz1=vbuz1_minus_vbuz2 lda rem sec sbc divisor sta rem - //SEG436 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] b3_from_b2: b3_from_b5: - //SEG437 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG438 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy jmp b3 - //SEG439 divr8u::@3 + //SEG440 divr8u::@3 b3: - //SEG440 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuz1=_inc_vbuz1 + //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG441 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b3 jmp b6 - //SEG442 divr8u::@6 + //SEG443 divr8u::@6 b6: - //SEG443 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuz1=vbuz2 + //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuz1=vbuz2 lda rem sta rem8u jmp breturn - //SEG444 divr8u::@return + //SEG445 divr8u::@return breturn: - //SEG445 [217] return + //SEG446 [217] return rts } -//SEG446 test_16u +//SEG447 test_16u test_16u: { .label dividend = $65 .label divisor = $67 .label res = $6f .label i = $30 - //SEG447 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] b1_from_test_16u: - //SEG448 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG449 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] + //SEG450 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] b1_from_b11: - //SEG450 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy + //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy jmp b1 - //SEG451 test_16u::@1 + //SEG452 test_16u::@1 b1: - //SEG452 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG453 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG454 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 + //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta div16u.dividend lda dividend+1 sta div16u.dividend+1 - //SEG455 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta div16u.divisor lda divisor+1 sta div16u.divisor+1 - //SEG456 [224] call div16u + //SEG457 [224] call div16u jsr div16u - //SEG457 [225] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 + //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 lda div16u.return sta div16u.return_2 lda div16u.return+1 sta div16u.return_2+1 jmp b3 - //SEG458 test_16u::@3 + //SEG459 test_16u::@3 b3: - //SEG459 [226] (word) test_16u::res#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 + //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 lda div16u.return_2 sta res lda div16u.return_2+1 sta res+1 - //SEG460 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 + //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta print_word.w lda dividend+1 sta print_word.w+1 - //SEG461 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG462 [228] (byte*~) print_char_cursor#166 ← (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 - //SEG462 [229] call print_word - //SEG463 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] + //SEG463 [229] call print_word + //SEG464 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] print_word_from_b3: - //SEG464 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy - //SEG465 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy + //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy + //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy jsr print_word - //SEG466 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] + //SEG467 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] b4_from_b3: jmp b4 - //SEG467 test_16u::@4 + //SEG468 test_16u::@4 b4: - //SEG468 [231] call print_str - //SEG469 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] + //SEG469 [231] call print_str + //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] print_str_from_b4: - //SEG470 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 + //SEG471 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG471 test_16u::@5 + //SEG472 test_16u::@5 b5: - //SEG472 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG473 [233] call print_word - //SEG474 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] + //SEG474 [233] call print_word + //SEG475 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] print_word_from_b5: - //SEG475 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy - //SEG476 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy + //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy + //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy jsr print_word - //SEG477 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] + //SEG478 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] b6_from_b5: jmp b6 - //SEG478 test_16u::@6 + //SEG479 test_16u::@6 b6: - //SEG479 [235] call print_str - //SEG480 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] + //SEG480 [235] call print_str + //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] print_str_from_b6: - //SEG481 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 + //SEG482 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG482 test_16u::@7 + //SEG483 test_16u::@7 b7: - //SEG483 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG484 [237] call print_word - //SEG485 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] + //SEG485 [237] call print_word + //SEG486 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] print_word_from_b7: - //SEG486 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy - //SEG487 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy + //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy + //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy jsr print_word - //SEG488 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] + //SEG489 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] b8_from_b7: jmp b8 - //SEG489 test_16u::@8 + //SEG490 test_16u::@8 b8: - //SEG490 [239] call print_str - //SEG491 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] + //SEG491 [239] call print_str + //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] print_str_from_b8: - //SEG492 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 + //SEG493 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b9 - //SEG493 test_16u::@9 + //SEG494 test_16u::@9 b9: - //SEG494 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG495 [241] call print_word - //SEG496 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] + //SEG496 [241] call print_word + //SEG497 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] print_word_from_b9: - //SEG497 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy - //SEG498 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy + //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy + //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy jsr print_word - //SEG499 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] + //SEG500 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] b10_from_b9: jmp b10 - //SEG500 test_16u::@10 + //SEG501 test_16u::@10 b10: - //SEG501 [243] call print_ln - //SEG502 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] + //SEG502 [243] call print_ln + //SEG503 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] print_ln_from_b10: - //SEG503 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy + //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy jsr print_ln jmp b11 - //SEG504 test_16u::@11 + //SEG505 test_16u::@11 b11: - //SEG505 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG506 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$c bne b1_from_b11 jmp breturn - //SEG507 test_16u::@return + //SEG508 test_16u::@return breturn: - //SEG508 [246] return + //SEG509 [246] return rts str: .text " / @" str1: .text " = @" @@ -6038,7 +6040,7 @@ test_16u: { dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG509 div16u +//SEG510 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -6048,222 +6050,222 @@ div16u: { .label dividend = $69 .label divisor = $6b .label return_2 = $6d - //SEG510 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG511 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 -- vwuz1=vwuz2 + //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta divr16u.divisor lda divisor+1 sta divr16u.divisor+1 - //SEG512 [249] call divr16u - //SEG513 [113] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG513 [249] call divr16u + //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: - //SEG514 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG515 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy - //SEG516 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 + //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG517 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG518 [250] (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 - //SEG518 div16u::@2 + //SEG519 div16u::@2 b2: - //SEG519 [251] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG520 [251] (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 - //SEG520 div16u::@return + //SEG521 div16u::@return breturn: - //SEG521 [252] return + //SEG522 [252] return rts } -//SEG522 test_8u +//SEG523 test_8u test_8u: { .label dividend = $75 .label divisor = $76 .label res = $78 .label i = $31 - //SEG523 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] b1_from_test_8u: - //SEG524 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG525 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG526 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG527 test_8u::@1 + //SEG528 test_8u::@1 b1: - //SEG528 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG529 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG530 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 + //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 lda dividend sta div8u.dividend - //SEG531 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta div8u.divisor - //SEG532 [259] call div8u - //SEG533 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG533 [259] call div8u + //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] div8u_from_b1: - //SEG534 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG535 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG536 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 -- vbuz1=vbuz2 + //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 -- vbuz1=vbuz2 lda div8u.return sta div8u.return_3 jmp b3 - //SEG537 test_8u::@3 + //SEG538 test_8u::@3 b3: - //SEG538 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuz2 + //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuz2 lda div8u.return_3 sta res - //SEG539 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 + //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 lda dividend sta print_byte.b - //SEG540 [263] call print_byte - //SEG541 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] + //SEG541 [263] call print_byte + //SEG542 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] print_byte_from_b3: - //SEG542 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy - //SEG543 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy + //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy + //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy jsr print_byte - //SEG544 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] + //SEG545 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] b4_from_b3: jmp b4 - //SEG545 test_8u::@4 + //SEG546 test_8u::@4 b4: - //SEG546 [265] call print_str - //SEG547 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] + //SEG547 [265] call print_str + //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] print_str_from_b4: - //SEG548 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 + //SEG549 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG549 test_8u::@5 + //SEG550 test_8u::@5 b5: - //SEG550 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG551 [267] call print_byte - //SEG552 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] + //SEG552 [267] call print_byte + //SEG553 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] print_byte_from_b5: - //SEG553 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy - //SEG554 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy + //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy + //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy jsr print_byte - //SEG555 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] + //SEG556 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] b6_from_b5: jmp b6 - //SEG556 test_8u::@6 + //SEG557 test_8u::@6 b6: - //SEG557 [269] call print_str - //SEG558 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] + //SEG558 [269] call print_str + //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] print_str_from_b6: - //SEG559 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 + //SEG560 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG560 test_8u::@7 + //SEG561 test_8u::@7 b7: - //SEG561 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG562 [271] call print_byte - //SEG563 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] + //SEG563 [271] call print_byte + //SEG564 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] print_byte_from_b7: - //SEG564 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy - //SEG565 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy + //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy + //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy jsr print_byte - //SEG566 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] + //SEG567 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] b8_from_b7: jmp b8 - //SEG567 test_8u::@8 + //SEG568 test_8u::@8 b8: - //SEG568 [273] call print_str - //SEG569 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] + //SEG569 [273] call print_str + //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] print_str_from_b8: - //SEG570 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 + //SEG571 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b9 - //SEG571 test_8u::@9 + //SEG572 test_8u::@9 b9: - //SEG572 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuz2 + //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuz2 lda rem8u sta print_byte.b - //SEG573 [275] call print_byte - //SEG574 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] + //SEG574 [275] call print_byte + //SEG575 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] print_byte_from_b9: - //SEG575 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy - //SEG576 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy + //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy + //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy jsr print_byte - //SEG577 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] + //SEG578 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] b10_from_b9: jmp b10 - //SEG578 test_8u::@10 + //SEG579 test_8u::@10 b10: - //SEG579 [277] call print_ln - //SEG580 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] + //SEG580 [277] call print_ln + //SEG581 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] print_ln_from_b10: - //SEG581 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy + //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy jsr print_ln jmp b11 - //SEG582 test_8u::@11 + //SEG583 test_8u::@11 b11: - //SEG583 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG584 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 + //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #6 bne b12 jmp breturn - //SEG585 test_8u::@return + //SEG586 test_8u::@return breturn: - //SEG586 [280] return + //SEG587 [280] return rts - //SEG587 test_8u::@12 + //SEG588 test_8u::@12 b12: - //SEG588 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG589 [281] (byte*~) print_char_cursor#188 ← (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 - //SEG589 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] + //SEG590 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] b1_from_b12: - //SEG590 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy - //SEG591 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy - //SEG592 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy + //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy + //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy + //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy jmp b1 str: .text " / @" str1: .text " = @" @@ -6271,34 +6273,34 @@ test_8u: { dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG593 print_cls +//SEG594 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $32 - //SEG594 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG595 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG596 [283] 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 - //SEG596 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG597 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG598 print_cls::@1 + //SEG599 print_cls::@1 b1: - //SEG599 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG600 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG601 [286] 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 + //SEG602 [286] 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 @@ -6306,9 +6308,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG602 print_cls::@return + //SEG603 print_cls::@return breturn: - //SEG603 [287] return + //SEG604 [287] return rts } print_hextab: .text "0123456789abcdef" @@ -6744,240 +6746,242 @@ Allocated (was zp ZP_BYTE:87) zp ZP_BYTE:21 [ test_8s::divisor#0 ] Allocated (was zp ZP_BYTE:96) zp ZP_BYTE:22 [ divr8u::divisor#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test the binary division library +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 8 .label print_line_cursor = 3 .label rem16u = $a .label rem16s = $a -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @32 [phi:@begin->@32] +//SEG4 [1] phi from @begin to @32 [phi:@begin->@32] b32_from_bbegin: jmp b32 -//SEG4 @32 +//SEG5 @32 b32: -//SEG5 [2] call main -//SEG6 [4] phi from @32 to main [phi:@32->main] +//SEG6 [2] call main +//SEG7 [4] phi from @32 to main [phi:@32->main] main_from_b32: jsr main -//SEG7 [3] phi from @32 to @end [phi:@32->@end] +//SEG8 [3] phi from @32 to @end [phi:@32->@end] bend_from_b32: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [282] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [282] 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] + //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 test_8u - //SEG15 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG15 [7] call test_8u + //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] test_8u_from_b1: jsr test_8u - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call test_16u - //SEG19 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG19 [9] call test_16u + //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] test_16u_from_b2: jsr test_16u - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [11] call test_8s - //SEG23 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG23 [11] call test_8s + //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] test_8s_from_b3: jsr test_8s - //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG25 main::@4 + //SEG26 main::@4 b4: - //SEG26 [13] call test_16s - //SEG27 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s] + //SEG27 [13] call test_16s + //SEG28 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s] test_16s_from_b4: jsr test_16s jmp breturn - //SEG28 main::@return + //SEG29 main::@return breturn: - //SEG29 [14] return + //SEG30 [14] return rts } -//SEG30 test_16s +//SEG31 test_16s test_16s: { .label dividend = 5 .label divisor = $13 .label res = $e .label i = 2 - //SEG31 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1] + //SEG32 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1] b1_from_test_16s: - //SEG32 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 + //SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG33 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1] + //SEG34 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1] b1_from_b11: - //SEG34 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy + //SEG35 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy jmp b1 - //SEG35 test_16s::@1 + //SEG36 test_16s::@1 b1: - //SEG36 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 + //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG37 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 + //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG38 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 - //SEG39 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 - //SEG40 [21] call div16s + //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 + //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 + //SEG41 [21] call div16s jsr div16s - //SEG41 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 + //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 jmp b3 - //SEG42 test_16s::@3 + //SEG43 test_16s::@3 b3: - //SEG43 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 - //SEG44 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - //SEG45 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 + //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 + //SEG46 [25] (byte*~) print_char_cursor#159 ← (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 - //SEG46 [26] call print_sword - //SEG47 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword] + //SEG47 [26] call print_sword + //SEG48 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword] print_sword_from_b3: - //SEG48 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy - //SEG49 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy + //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy + //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy jsr print_sword - //SEG50 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4] + //SEG51 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4] b4_from_b3: jmp b4 - //SEG51 test_16s::@4 + //SEG52 test_16s::@4 b4: - //SEG52 [28] call print_str - //SEG53 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] + //SEG53 [28] call print_str + //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] print_str_from_b4: - //SEG54 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 + //SEG55 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG55 test_16s::@5 + //SEG56 test_16s::@5 b5: - //SEG56 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 + //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta print_sword.w lda divisor+1 sta print_sword.w+1 - //SEG57 [30] call print_sword - //SEG58 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword] + //SEG58 [30] call print_sword + //SEG59 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword] print_sword_from_b5: - //SEG59 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy - //SEG60 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy + //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy + //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy jsr print_sword - //SEG61 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6] + //SEG62 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6] b6_from_b5: jmp b6 - //SEG62 test_16s::@6 + //SEG63 test_16s::@6 b6: - //SEG63 [32] call print_str - //SEG64 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] + //SEG64 [32] call print_str + //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] print_str_from_b6: - //SEG65 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 + //SEG66 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG66 test_16s::@7 + //SEG67 test_16s::@7 b7: - //SEG67 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 + //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 lda res sta print_sword.w lda res+1 sta print_sword.w+1 - //SEG68 [34] call print_sword - //SEG69 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword] + //SEG69 [34] call print_sword + //SEG70 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword] print_sword_from_b7: - //SEG70 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy - //SEG71 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy + //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy + //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy jsr print_sword - //SEG72 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8] + //SEG73 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8] b8_from_b7: jmp b8 - //SEG73 test_16s::@8 + //SEG74 test_16s::@8 b8: - //SEG74 [36] call print_str - //SEG75 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] + //SEG75 [36] call print_str + //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] print_str_from_b8: - //SEG76 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 + //SEG77 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b9 - //SEG77 test_16s::@9 + //SEG78 test_16s::@9 b9: - //SEG78 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 + //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 lda rem16s sta print_sword.w lda rem16s+1 sta print_sword.w+1 - //SEG79 [38] call print_sword - //SEG80 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword] + //SEG80 [38] call print_sword + //SEG81 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword] print_sword_from_b9: - //SEG81 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy - //SEG82 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy + //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy + //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy jsr print_sword - //SEG83 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10] + //SEG84 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10] b10_from_b9: jmp b10 - //SEG84 test_16s::@10 + //SEG85 test_16s::@10 b10: - //SEG85 [40] call print_ln - //SEG86 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln] + //SEG86 [40] call print_ln + //SEG87 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln] print_ln_from_b10: - //SEG87 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy + //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy jsr print_ln jmp b11 - //SEG88 test_16s::@11 + //SEG89 test_16s::@11 b11: - //SEG89 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG90 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$c bne b1_from_b11 jmp breturn - //SEG91 test_16s::@return + //SEG92 test_16s::@return breturn: - //SEG92 [43] return + //SEG93 [43] return rts str: .text " / @" str1: .text " = @" @@ -6985,17 +6989,17 @@ test_16s: { dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff divisors: .word 5, -7, $b, -$d, -$11, $13 } -//SEG93 print_ln +//SEG94 print_ln // Print a newline print_ln: { - //SEG94 [45] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG95 [45] 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: - //SEG95 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG96 print_ln::@1 + //SEG97 print_ln::@1 b1: - //SEG97 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -7003,7 +7007,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG98 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -7013,34 +7017,34 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG99 print_ln::@return + //SEG100 print_ln::@return breturn: - //SEG100 [48] return + //SEG101 [48] return rts } -//SEG101 print_sword +//SEG102 print_sword // Print a signed word as HEX print_sword: { .label w = 5 - //SEG102 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG103 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG104 print_sword::@2 + //SEG105 print_sword::@2 b2: - //SEG105 [52] call print_char - //SEG106 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG106 [52] call print_char + //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG107 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG108 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG109 print_sword::@4 + //SEG110 print_sword::@4 b4: - //SEG110 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -7050,157 +7054,157 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG111 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG112 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG112 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG113 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG114 print_sword::@1 + //SEG115 print_sword::@1 b1: - //SEG115 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 - //SEG116 [56] call print_word - //SEG117 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 + //SEG117 [56] call print_word + //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG118 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG119 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG120 print_sword::@return + //SEG121 print_sword::@return breturn: - //SEG121 [57] return + //SEG122 [57] return rts } -//SEG122 print_word +//SEG123 print_word // Print a word as HEX print_word: { .label w = 5 - //SEG123 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG124 [60] call print_byte - //SEG125 [64] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG125 [60] call print_byte + //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG126 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG127 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy + //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG128 print_word::@1 + //SEG129 print_word::@1 b1: - //SEG129 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG130 [62] call print_byte - //SEG131 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG131 [62] call print_byte + //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG132 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG133 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG134 print_word::@return + //SEG135 print_word::@return breturn: - //SEG135 [63] return + //SEG136 [63] return rts } -//SEG136 print_byte +//SEG137 print_byte // Print a byte as HEX print_byte: { .label b = 7 - //SEG137 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG138 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG139 [67] call print_char - //SEG140 [72] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG140 [67] call print_char + //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG141 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG142 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG143 print_byte::@1 + //SEG144 print_byte::@1 b1: - //SEG144 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG145 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG146 [70] call print_char - //SEG147 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG147 [70] call print_char + //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG148 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG149 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG150 print_byte::@return + //SEG151 print_byte::@return breturn: - //SEG151 [71] return + //SEG152 [71] return rts } -//SEG152 print_char +//SEG153 print_char // Print a single char print_char: { - //SEG153 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG154 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 + //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG155 print_char::@return + //SEG156 print_char::@return breturn: - //SEG156 [75] return + //SEG157 [75] return rts } -//SEG157 print_str +//SEG158 print_str // Print a zero-terminated string print_str: { .label str = 5 - //SEG158 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG159 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG159 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG160 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG161 print_str::@1 + //SEG162 print_str::@1 b1: - //SEG162 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG163 print_str::@return + //SEG164 print_str::@return breturn: - //SEG164 [79] return + //SEG165 [79] return rts - //SEG165 print_str::@2 + //SEG166 print_str::@2 b2: - //SEG166 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG167 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG168 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG169 div16s +//SEG170 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. @@ -7211,30 +7215,30 @@ div16s: { .label return = $e .label dividend = 5 .label divisor = $13 - //SEG170 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG171 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG172 [85] call divr16s + //SEG173 [85] call divr16s jsr divr16s - //SEG173 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG174 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 jmp b2 - //SEG174 div16s::@2 + //SEG175 div16s::@2 b2: - //SEG175 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 jmp breturn - //SEG176 div16s::@return + //SEG177 div16s::@return breturn: - //SEG177 [88] return + //SEG178 [88] return rts } -//SEG178 divr16s +//SEG179 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -7251,63 +7255,63 @@ divr16s: { .label dividendu = 8 .label divisoru = $c .label remu = $a - //SEG179 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 jmp b17 - //SEG180 divr16s::@17 + //SEG181 divr16s::@17 b17: - //SEG181 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 - //SEG182 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + //SEG183 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] b2_from_b17: - //SEG183 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 lda #rem sta remu+1 - //SEG184 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy - //SEG185 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy + //SEG186 [91] 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 - //SEG186 divr16s::@2 + //SEG187 divr16s::@2 b2: - //SEG187 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG188 [92] 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 - //SEG188 divr16s::@18 + //SEG189 divr16s::@18 b18: - //SEG189 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG190 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG191 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] b4_from_b18: b4_from_b3: - //SEG191 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy - //SEG192 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy + //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy jmp b4 - //SEG193 divr16s::@4 + //SEG194 divr16s::@4 b4: - //SEG194 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - //SEG195 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - //SEG196 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 - //SEG197 [98] call divr16u - //SEG198 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 + //SEG198 [98] call divr16u + //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: - //SEG199 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG200 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy - //SEG201 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy + //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy jsr divr16u - //SEG202 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG203 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b15 - //SEG203 divr16s::@15 + //SEG204 divr16s::@15 b15: - //SEG204 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - //SEG205 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 + //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + //SEG206 [101] 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 - //SEG206 divr16s::@11 + //SEG207 divr16s::@11 b11: - //SEG207 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 + //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 sec lda rem16s eor #$ff @@ -7317,7 +7321,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG208 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -7327,24 +7331,24 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG209 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG210 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] breturn_from_b11: breturn_from_b19: - //SEG210 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy - //SEG211 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy + //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy jmp breturn - //SEG212 divr16s::@return + //SEG213 divr16s::@return breturn: - //SEG213 [105] return + //SEG214 [105] return rts - //SEG214 divr16s::@19 + //SEG215 divr16s::@19 b19: - //SEG215 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG216 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 jmp breturn_from_b19 - //SEG217 divr16s::@3 + //SEG218 divr16s::@3 b3: - //SEG218 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG219 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _11 eor #$ff @@ -7354,15 +7358,15 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG219 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG220 [109] (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 - //SEG220 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 + //SEG221 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 jmp b4_from_b3 - //SEG221 divr16s::@1 + //SEG222 divr16s::@1 b1: - //SEG222 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 + //SEG223 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 sec lda _5 eor #$ff @@ -7372,20 +7376,20 @@ divr16s: { eor #$ff adc #0 sta _5+1 - //SEG223 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 - //SEG224 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 + //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG225 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 lda #<-rem sta remu lda #>-rem sta remu+1 - //SEG226 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy - //SEG227 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy + //SEG228 [91] 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 } -//SEG228 divr16u +//SEG229 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -7396,58 +7400,58 @@ divr16u: { .label quotient = $e .label return = $e .label divisor = $c - //SEG229 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG230 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG231 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG231 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG232 [114] 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 - //SEG232 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG233 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG234 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG235 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG236 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG237 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG238 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG239 divr16u::@1 + //SEG240 divr16u::@1 b1: - //SEG240 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG241 [115] (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 - //SEG241 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG242 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG243 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG244 [118] 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 - //SEG244 divr16u::@4 + //SEG245 divr16u::@4 b4: - //SEG245 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG246 [119] (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 - //SEG246 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG247 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG248 divr16u::@2 + //SEG249 divr16u::@2 b2: - //SEG249 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG250 [121] (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 - //SEG250 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG251 [122] (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 - //SEG251 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -7457,14 +7461,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG252 divr16u::@5 + //SEG253 divr16u::@5 b5: - //SEG253 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG254 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -7472,179 +7476,179 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG255 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG256 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG257 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG258 divr16u::@3 + //SEG259 divr16u::@3 b3: - //SEG259 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG260 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG261 [128] 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 - //SEG261 divr16u::@6 + //SEG262 divr16u::@6 b6: - //SEG262 [129] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG263 divr16u::@return + //SEG264 divr16u::@return breturn: - //SEG264 [130] return + //SEG265 [130] return rts } -//SEG265 test_8s +//SEG266 test_8s test_8s: { .label dividend = 7 .label divisor = $15 .label res = $10 .label i = 2 - //SEG266 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] b1_from_test_8s: - //SEG267 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG268 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1] + //SEG269 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1] b1_from_b11: - //SEG269 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy + //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy jmp b1 - //SEG270 test_8s::@1 + //SEG271 test_8s::@1 b1: - //SEG271 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG272 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG273 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 + //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 ldy dividend - //SEG274 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 + //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 ldx divisor - //SEG275 [137] call div8s + //SEG276 [137] call div8s jsr div8s - //SEG276 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 jmp b3 - //SEG277 test_8s::@3 + //SEG278 test_8s::@3 b3: - //SEG278 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa + //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa sta res - //SEG279 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - //SEG280 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + //SEG281 [141] (byte*~) print_char_cursor#184 ← (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 - //SEG281 [142] call print_sbyte - //SEG282 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte] + //SEG282 [142] call print_sbyte + //SEG283 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte] print_sbyte_from_b3: - //SEG283 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy - //SEG284 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy + //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy + //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG285 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4] + //SEG286 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4] b4_from_b3: jmp b4 - //SEG286 test_8s::@4 + //SEG287 test_8s::@4 b4: - //SEG287 [144] call print_str - //SEG288 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] + //SEG288 [144] call print_str + //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] print_str_from_b4: - //SEG289 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 + //SEG290 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG290 test_8s::@5 + //SEG291 test_8s::@5 b5: - //SEG291 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG292 [146] call print_sbyte - //SEG293 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte] + //SEG293 [146] call print_sbyte + //SEG294 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte] print_sbyte_from_b5: - //SEG294 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy - //SEG295 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy + //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy + //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG296 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6] + //SEG297 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6] b6_from_b5: jmp b6 - //SEG297 test_8s::@6 + //SEG298 test_8s::@6 b6: - //SEG298 [148] call print_str - //SEG299 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] + //SEG299 [148] call print_str + //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] print_str_from_b6: - //SEG300 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 + //SEG301 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG301 test_8s::@7 + //SEG302 test_8s::@7 b7: - //SEG302 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG303 [150] call print_sbyte - //SEG304 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte] + //SEG304 [150] call print_sbyte + //SEG305 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte] print_sbyte_from_b7: - //SEG305 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy - //SEG306 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy + //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy + //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG307 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8] + //SEG308 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8] b8_from_b7: jmp b8 - //SEG308 test_8s::@8 + //SEG309 test_8s::@8 b8: - //SEG309 [152] call print_str - //SEG310 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] + //SEG310 [152] call print_str + //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] print_str_from_b8: - //SEG311 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 + //SEG312 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b9 - //SEG312 test_8s::@9 + //SEG313 test_8s::@9 b9: - //SEG313 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx + //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx stx print_sbyte.b - //SEG314 [154] call print_sbyte - //SEG315 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte] + //SEG315 [154] call print_sbyte + //SEG316 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte] print_sbyte_from_b9: - //SEG316 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy - //SEG317 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy + //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy + //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG318 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10] + //SEG319 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10] b10_from_b9: jmp b10 - //SEG319 test_8s::@10 + //SEG320 test_8s::@10 b10: - //SEG320 [156] call print_ln - //SEG321 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln] + //SEG321 [156] call print_ln + //SEG322 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln] print_ln_from_b10: - //SEG322 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy + //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy jsr print_ln jmp b11 - //SEG323 test_8s::@11 + //SEG324 test_8s::@11 b11: - //SEG324 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG325 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #6 bne b1_from_b11 jmp breturn - //SEG326 test_8s::@return + //SEG327 test_8s::@return breturn: - //SEG327 [159] return + //SEG328 [159] return rts str: .text " / @" str1: .text " = @" @@ -7652,60 +7656,60 @@ test_8s: { dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG328 print_sbyte +//SEG329 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = 7 - //SEG329 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG330 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG331 print_sbyte::@3 + //SEG332 print_sbyte::@3 b3: - //SEG332 [163] call print_char - //SEG333 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG333 [163] call print_char + //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG334 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG335 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG336 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG337 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG338 print_sbyte::@2 + //SEG339 print_sbyte::@2 b2: - //SEG339 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 - //SEG340 [166] call print_byte - //SEG341 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 + //SEG341 [166] call print_byte + //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG342 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG343 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG344 print_sbyte::@return + //SEG345 print_sbyte::@return breturn: - //SEG345 [167] return + //SEG346 [167] return rts - //SEG346 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG347 print_sbyte::@1 + //SEG348 print_sbyte::@1 b1: - //SEG348 [169] call print_char - //SEG349 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG349 [169] call print_char + //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG350 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG351 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b5 - //SEG352 print_sbyte::@5 + //SEG353 print_sbyte::@5 b5: - //SEG353 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -7713,7 +7717,7 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG354 div8s +//SEG355 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. @@ -7722,144 +7726,144 @@ print_sbyte: { // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 div8s: { .label neg = $10 - //SEG355 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 + //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 cpy #0 bmi b1 jmp b16 - //SEG356 div8s::@16 + //SEG357 div8s::@16 b16: - //SEG357 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 - //SEG358 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2] + //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + //SEG359 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2] b2_from_b16: - //SEG359 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy - //SEG360 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 + //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy + //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG361 div8s::@2 + //SEG362 div8s::@2 b2: - //SEG362 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 + //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 cpx #0 bmi b3 jmp b17 - //SEG363 div8s::@17 + //SEG364 div8s::@17 b17: - //SEG364 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 - //SEG365 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4] + //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + //SEG366 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4] b4_from_b17: b4_from_b3: - //SEG366 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy - //SEG367 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy + //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy + //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy jmp b4 - //SEG368 div8s::@4 + //SEG369 div8s::@4 b4: - //SEG369 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy + //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy tya - //SEG370 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - //SEG371 [179] call div8u - //SEG372 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + //SEG372 [179] call div8u + //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] div8u_from_b4: - //SEG373 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG374 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG375 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 + //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 jmp b15 - //SEG376 div8s::@15 + //SEG377 div8s::@15 b15: - //SEG377 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa + //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa tay - //SEG378 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 + //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b18 jmp b11 - //SEG379 div8s::@11 + //SEG380 div8s::@11 b11: - //SEG380 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx + //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG381 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy + //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG382 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return] + //SEG383 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return] breturn_from_b11: breturn_from_b18: - //SEG383 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy - //SEG384 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy + //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy + //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy jmp breturn - //SEG385 div8s::@return + //SEG386 div8s::@return breturn: - //SEG386 [186] return + //SEG387 [186] return rts - //SEG387 div8s::@18 + //SEG388 div8s::@18 b18: - //SEG388 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy + //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy tya - //SEG389 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 jmp breturn_from_b18 - //SEG390 div8s::@3 + //SEG391 div8s::@3 b3: - //SEG391 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx + //SEG392 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG392 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda neg eor #1 sta neg - //SEG393 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6 + //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6 jmp b4_from_b3 - //SEG394 div8s::@1 + //SEG395 div8s::@1 b1: - //SEG395 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy + //SEG396 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG396 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuyy=vbuaa + //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuyy=vbuaa tay - //SEG397 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] b2_from_b1: - //SEG398 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG399 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG400 div8u +//SEG401 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division div8u: { - //SEG401 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa + //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa sta divr8u.dividend - //SEG402 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx + //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx stx divr8u.divisor - //SEG403 [197] call divr8u - //SEG404 [201] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG404 [197] call divr8u + //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u] divr8u_from_div8u: jsr divr8u - //SEG405 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 + //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 lda divr8u.return jmp b2 - //SEG406 div8u::@2 + //SEG407 div8u::@2 b2: - //SEG407 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 + //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 jmp breturn - //SEG408 div8u::@return + //SEG409 div8u::@return breturn: - //SEG409 [200] return + //SEG410 [200] return rts } -//SEG410 divr8u +//SEG411 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u @@ -7869,253 +7873,253 @@ divr8u: { .label divisor = $16 .label quotient = $12 .label return = $12 - //SEG411 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] b1_from_divr8u: - //SEG412 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 + //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG413 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 lda #0 sta quotient - //SEG414 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG415 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 + //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG416 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] b1_from_b3: - //SEG417 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG418 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG419 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG420 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy jmp b1 - //SEG421 divr8u::@1 + //SEG422 divr8u::@1 b1: - //SEG422 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 + //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG423 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and dividend - //SEG424 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 + //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG425 divr8u::@4 + //SEG426 divr8u::@4 b4: - //SEG426 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 + //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 tya ora #1 tay - //SEG427 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] b2_from_b1: b2_from_b4: - //SEG428 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy jmp b2 - //SEG429 divr8u::@2 + //SEG430 divr8u::@2 b2: - //SEG430 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG431 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG432 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 + //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 cpy divisor bcc b3_from_b2 jmp b5 - //SEG433 divr8u::@5 + //SEG434 divr8u::@5 b5: - //SEG434 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG435 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 + //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 tya sec sbc divisor tay - //SEG436 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] b3_from_b2: b3_from_b5: - //SEG437 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG438 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy jmp b3 - //SEG439 divr8u::@3 + //SEG440 divr8u::@3 b3: - //SEG440 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx + //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG441 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b3 jmp b6 - //SEG442 divr8u::@6 + //SEG443 divr8u::@6 b6: - //SEG443 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy + //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy tya tax jmp breturn - //SEG444 divr8u::@return + //SEG445 divr8u::@return breturn: - //SEG445 [217] return + //SEG446 [217] return rts } -//SEG446 test_16u +//SEG447 test_16u test_16u: { .label dividend = 5 .label divisor = $c .label res = $e .label i = 2 - //SEG447 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] b1_from_test_16u: - //SEG448 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG449 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] + //SEG450 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] b1_from_b11: - //SEG450 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy + //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy jmp b1 - //SEG451 test_16u::@1 + //SEG452 test_16u::@1 b1: - //SEG452 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG453 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG454 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - //SEG455 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - //SEG456 [224] call div16u + //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + //SEG457 [224] call div16u jsr div16u - //SEG457 [225] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0 jmp b3 - //SEG458 test_16u::@3 + //SEG459 test_16u::@3 b3: - //SEG459 [226] (word) test_16u::res#0 ← (word) div16u::return#2 - //SEG460 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 - //SEG461 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2 + //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 + //SEG462 [228] (byte*~) print_char_cursor#166 ← (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 - //SEG462 [229] call print_word - //SEG463 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] + //SEG463 [229] call print_word + //SEG464 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] print_word_from_b3: - //SEG464 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy - //SEG465 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy + //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy + //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy jsr print_word - //SEG466 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] + //SEG467 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] b4_from_b3: jmp b4 - //SEG467 test_16u::@4 + //SEG468 test_16u::@4 b4: - //SEG468 [231] call print_str - //SEG469 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] + //SEG469 [231] call print_str + //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] print_str_from_b4: - //SEG470 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 + //SEG471 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG471 test_16u::@5 + //SEG472 test_16u::@5 b5: - //SEG472 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG473 [233] call print_word - //SEG474 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] + //SEG474 [233] call print_word + //SEG475 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] print_word_from_b5: - //SEG475 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy - //SEG476 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy + //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy + //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy jsr print_word - //SEG477 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] + //SEG478 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] b6_from_b5: jmp b6 - //SEG478 test_16u::@6 + //SEG479 test_16u::@6 b6: - //SEG479 [235] call print_str - //SEG480 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] + //SEG480 [235] call print_str + //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] print_str_from_b6: - //SEG481 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 + //SEG482 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG482 test_16u::@7 + //SEG483 test_16u::@7 b7: - //SEG483 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG484 [237] call print_word - //SEG485 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] + //SEG485 [237] call print_word + //SEG486 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] print_word_from_b7: - //SEG486 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy - //SEG487 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy + //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy + //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy jsr print_word - //SEG488 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] + //SEG489 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] b8_from_b7: jmp b8 - //SEG489 test_16u::@8 + //SEG490 test_16u::@8 b8: - //SEG490 [239] call print_str - //SEG491 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] + //SEG491 [239] call print_str + //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] print_str_from_b8: - //SEG492 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 + //SEG493 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b9 - //SEG493 test_16u::@9 + //SEG494 test_16u::@9 b9: - //SEG494 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG495 [241] call print_word - //SEG496 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] + //SEG496 [241] call print_word + //SEG497 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] print_word_from_b9: - //SEG497 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy - //SEG498 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy + //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy + //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy jsr print_word - //SEG499 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] + //SEG500 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] b10_from_b9: jmp b10 - //SEG500 test_16u::@10 + //SEG501 test_16u::@10 b10: - //SEG501 [243] call print_ln - //SEG502 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] + //SEG502 [243] call print_ln + //SEG503 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] print_ln_from_b10: - //SEG503 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy + //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy jsr print_ln jmp b11 - //SEG504 test_16u::@11 + //SEG505 test_16u::@11 b11: - //SEG505 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG506 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$c bne b1_from_b11 jmp breturn - //SEG507 test_16u::@return + //SEG508 test_16u::@return breturn: - //SEG508 [246] return + //SEG509 [246] return rts str: .text " / @" str1: .text " = @" @@ -8123,7 +8127,7 @@ test_16u: { dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG509 div16u +//SEG510 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -8132,202 +8136,202 @@ div16u: { .label return = $e .label dividend = 5 .label divisor = $c - //SEG510 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG511 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - //SEG512 [249] call divr16u - //SEG513 [113] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + //SEG513 [249] call divr16u + //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: - //SEG514 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG515 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy - //SEG516 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 + //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG517 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG518 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG518 div16u::@2 + //SEG519 div16u::@2 b2: - //SEG519 [251] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG520 [251] (word) div16u::return#0 ← (word) divr16u::return#2 jmp breturn - //SEG520 div16u::@return + //SEG521 div16u::@return breturn: - //SEG521 [252] return + //SEG522 [252] return rts } -//SEG522 test_8u +//SEG523 test_8u test_8u: { .label dividend = 7 .label divisor = $10 .label res = $11 .label i = 2 - //SEG523 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] b1_from_test_8u: - //SEG524 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG525 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG526 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG527 test_8u::@1 + //SEG528 test_8u::@1 b1: - //SEG528 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG529 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG530 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 + //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 lda dividend - //SEG531 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 + //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 ldx divisor - //SEG532 [259] call div8u - //SEG533 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG533 [259] call div8u + //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] div8u_from_b1: - //SEG534 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG535 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG536 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 + //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 jmp b3 - //SEG537 test_8u::@3 + //SEG538 test_8u::@3 b3: - //SEG538 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa + //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa sta res - //SEG539 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - //SEG540 [263] call print_byte - //SEG541 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] + //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + //SEG541 [263] call print_byte + //SEG542 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] print_byte_from_b3: - //SEG542 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy - //SEG543 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy + //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy + //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy jsr print_byte - //SEG544 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] + //SEG545 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] b4_from_b3: jmp b4 - //SEG545 test_8u::@4 + //SEG546 test_8u::@4 b4: - //SEG546 [265] call print_str - //SEG547 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] + //SEG547 [265] call print_str + //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] print_str_from_b4: - //SEG548 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 + //SEG549 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG549 test_8u::@5 + //SEG550 test_8u::@5 b5: - //SEG550 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG551 [267] call print_byte - //SEG552 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] + //SEG552 [267] call print_byte + //SEG553 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] print_byte_from_b5: - //SEG553 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy - //SEG554 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy + //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy + //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy jsr print_byte - //SEG555 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] + //SEG556 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] b6_from_b5: jmp b6 - //SEG556 test_8u::@6 + //SEG557 test_8u::@6 b6: - //SEG557 [269] call print_str - //SEG558 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] + //SEG558 [269] call print_str + //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] print_str_from_b6: - //SEG559 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 + //SEG560 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG560 test_8u::@7 + //SEG561 test_8u::@7 b7: - //SEG561 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG562 [271] call print_byte - //SEG563 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] + //SEG563 [271] call print_byte + //SEG564 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] print_byte_from_b7: - //SEG564 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy - //SEG565 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy + //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy + //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy jsr print_byte - //SEG566 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] + //SEG567 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] b8_from_b7: jmp b8 - //SEG567 test_8u::@8 + //SEG568 test_8u::@8 b8: - //SEG568 [273] call print_str - //SEG569 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] + //SEG569 [273] call print_str + //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] print_str_from_b8: - //SEG570 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 + //SEG571 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b9 - //SEG571 test_8u::@9 + //SEG572 test_8u::@9 b9: - //SEG572 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx + //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx stx print_byte.b - //SEG573 [275] call print_byte - //SEG574 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] + //SEG574 [275] call print_byte + //SEG575 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] print_byte_from_b9: - //SEG575 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy - //SEG576 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy + //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy + //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy jsr print_byte - //SEG577 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] + //SEG578 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] b10_from_b9: jmp b10 - //SEG578 test_8u::@10 + //SEG579 test_8u::@10 b10: - //SEG579 [277] call print_ln - //SEG580 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] + //SEG580 [277] call print_ln + //SEG581 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] print_ln_from_b10: - //SEG581 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy + //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy jsr print_ln jmp b11 - //SEG582 test_8u::@11 + //SEG583 test_8u::@11 b11: - //SEG583 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG584 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 + //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #6 bne b12 jmp breturn - //SEG585 test_8u::@return + //SEG586 test_8u::@return breturn: - //SEG586 [280] return + //SEG587 [280] return rts - //SEG587 test_8u::@12 + //SEG588 test_8u::@12 b12: - //SEG588 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG589 [281] (byte*~) print_char_cursor#188 ← (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 - //SEG589 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] + //SEG590 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] b1_from_b12: - //SEG590 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy - //SEG591 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy - //SEG592 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy + //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy + //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy + //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy jmp b1 str: .text " / @" str1: .text " = @" @@ -8335,34 +8339,34 @@ test_8u: { dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG593 print_cls +//SEG594 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG594 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG595 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG596 [283] 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 - //SEG596 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG597 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG598 print_cls::@1 + //SEG599 print_cls::@1 b1: - //SEG599 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG600 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG601 [286] 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 + //SEG602 [286] 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 @@ -8370,9 +8374,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG602 print_cls::@return + //SEG603 print_cls::@return breturn: - //SEG603 [287] return + //SEG604 [287] return rts } print_hextab: .text "0123456789abcdef" @@ -9205,174 +9209,176 @@ reg byte a [ div8u::return#3 ] FINAL ASSEMBLER Score: 32561 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test the binary division library +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_char_cursor = 8 .label print_line_cursor = 3 .label rem16u = $a .label rem16s = $a -//SEG2 @begin -//SEG3 [1] phi from @begin to @32 [phi:@begin->@32] -//SEG4 @32 -//SEG5 [2] call main -//SEG6 [4] phi from @32 to main [phi:@32->main] -//SEG7 [3] phi from @32 to @end [phi:@32->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @32 [phi:@begin->@32] +//SEG5 @32 +//SEG6 [2] call main +//SEG7 [4] phi from @32 to main [phi:@32->main] +//SEG8 [3] phi from @32 to @end [phi:@32->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call print_cls - //SEG11 [282] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [282] 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 test_8u - //SEG15 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call test_8u + //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] jsr test_8u - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 main::@2 - //SEG18 [9] call test_16u - //SEG19 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [9] call test_16u + //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] jsr test_16u - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG21 main::@3 - //SEG22 [11] call test_8s - //SEG23 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG22 main::@3 + //SEG23 [11] call test_8s + //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] jsr test_8s - //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG25 main::@4 - //SEG26 [13] call test_16s - //SEG27 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s] + //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG26 main::@4 + //SEG27 [13] call test_16s + //SEG28 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s] jsr test_16s - //SEG28 main::@return - //SEG29 [14] return + //SEG29 main::@return + //SEG30 [14] return rts } -//SEG30 test_16s +//SEG31 test_16s test_16s: { .label dividend = 5 .label divisor = $13 .label res = $e .label i = 2 - //SEG31 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1] - //SEG32 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 + //SEG32 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1] + //SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG33 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1] - //SEG34 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy - //SEG35 test_16s::@1 + //SEG34 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1] + //SEG35 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy + //SEG36 test_16s::@1 b1: - //SEG36 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 + //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG37 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 + //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG38 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 - //SEG39 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 - //SEG40 [21] call div16s + //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 + //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 + //SEG41 [21] call div16s jsr div16s - //SEG41 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 - //SEG42 test_16s::@3 - //SEG43 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 - //SEG44 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - //SEG45 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 + //SEG43 test_16s::@3 + //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 + //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 + //SEG46 [25] (byte*~) print_char_cursor#159 ← (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 - //SEG46 [26] call print_sword - //SEG47 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword] - //SEG48 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy - //SEG49 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy + //SEG47 [26] call print_sword + //SEG48 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword] + //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy + //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy jsr print_sword - //SEG50 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4] - //SEG51 test_16s::@4 - //SEG52 [28] call print_str - //SEG53 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] - //SEG54 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 + //SEG51 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4] + //SEG52 test_16s::@4 + //SEG53 [28] call print_str + //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] + //SEG55 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG55 test_16s::@5 - //SEG56 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 + //SEG56 test_16s::@5 + //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta print_sword.w lda divisor+1 sta print_sword.w+1 - //SEG57 [30] call print_sword - //SEG58 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword] - //SEG59 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy - //SEG60 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy + //SEG58 [30] call print_sword + //SEG59 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword] + //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy + //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy jsr print_sword - //SEG61 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6] - //SEG62 test_16s::@6 - //SEG63 [32] call print_str - //SEG64 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] - //SEG65 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 + //SEG62 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6] + //SEG63 test_16s::@6 + //SEG64 [32] call print_str + //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] + //SEG66 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG66 test_16s::@7 - //SEG67 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 + //SEG67 test_16s::@7 + //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 lda res sta print_sword.w lda res+1 sta print_sword.w+1 - //SEG68 [34] call print_sword - //SEG69 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword] - //SEG70 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy - //SEG71 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy + //SEG69 [34] call print_sword + //SEG70 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword] + //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy + //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy jsr print_sword - //SEG72 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8] - //SEG73 test_16s::@8 - //SEG74 [36] call print_str - //SEG75 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] - //SEG76 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 + //SEG73 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8] + //SEG74 test_16s::@8 + //SEG75 [36] call print_str + //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] + //SEG77 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG77 test_16s::@9 - //SEG78 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 + //SEG78 test_16s::@9 + //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 lda rem16s sta print_sword.w lda rem16s+1 sta print_sword.w+1 - //SEG79 [38] call print_sword - //SEG80 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword] - //SEG81 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy - //SEG82 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy + //SEG80 [38] call print_sword + //SEG81 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword] + //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy + //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy jsr print_sword - //SEG83 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10] - //SEG84 test_16s::@10 - //SEG85 [40] call print_ln - //SEG86 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln] - //SEG87 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy + //SEG84 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10] + //SEG85 test_16s::@10 + //SEG86 [40] call print_ln + //SEG87 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln] + //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy jsr print_ln - //SEG88 test_16s::@11 - //SEG89 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG89 test_16s::@11 + //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG90 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 cmp #$c bne b1 - //SEG91 test_16s::@return - //SEG92 [43] return + //SEG92 test_16s::@return + //SEG93 [43] return rts str: .text " / @" str1: .text " = @" @@ -9380,14 +9386,14 @@ test_16s: { dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff divisors: .word 5, -7, $b, -$d, -$11, $13 } -//SEG93 print_ln +//SEG94 print_ln // Print a newline print_ln: { - //SEG94 [45] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG95 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG96 print_ln::@1 + //SEG95 [45] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG97 print_ln::@1 b1: - //SEG97 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -9395,7 +9401,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG98 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -9404,27 +9410,27 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG99 print_ln::@return - //SEG100 [48] return + //SEG100 print_ln::@return + //SEG101 [48] return rts } -//SEG101 print_sword +//SEG102 print_sword // Print a signed word as HEX print_sword: { .label w = 5 - //SEG102 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1 - //SEG103 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG104 print_sword::@2 - //SEG105 [52] call print_char - //SEG106 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG107 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG108 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG105 print_sword::@2 + //SEG106 [52] call print_char + //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG109 print_sword::@4 - //SEG110 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + //SEG110 print_sword::@4 + //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -9434,131 +9440,131 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG111 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] - //SEG112 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG113 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy - //SEG114 print_sword::@1 + //SEG112 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG115 print_sword::@1 b1: - //SEG115 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 - //SEG116 [56] call print_word - //SEG117 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG118 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG119 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 + //SEG117 [56] call print_word + //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word - //SEG120 print_sword::@return - //SEG121 [57] return + //SEG121 print_sword::@return + //SEG122 [57] return rts } -//SEG122 print_word +//SEG123 print_word // Print a word as HEX print_word: { .label w = 5 - //SEG123 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG124 [60] call print_byte - //SEG125 [64] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG126 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG127 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG125 [60] call print_byte + //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy + //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG128 print_word::@1 - //SEG129 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG129 print_word::@1 + //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG130 [62] call print_byte - //SEG131 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG132 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG133 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG131 [62] call print_byte + //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG134 print_word::@return - //SEG135 [63] return + //SEG135 print_word::@return + //SEG136 [63] return rts } -//SEG136 print_byte +//SEG137 print_byte // Print a byte as HEX print_byte: { .label b = 7 - //SEG137 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG138 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG139 [67] call print_char - //SEG140 [72] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG141 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG142 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG140 [67] call print_char + //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG143 print_byte::@1 - //SEG144 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG144 print_byte::@1 + //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG145 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG146 [70] call print_char - //SEG147 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG148 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG149 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG147 [70] call print_char + //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG150 print_byte::@return - //SEG151 [71] return + //SEG151 print_byte::@return + //SEG152 [71] return rts } -//SEG152 print_char +//SEG153 print_char // Print a single char print_char: { - //SEG153 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG154 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 + //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG155 print_char::@return - //SEG156 [75] return + //SEG156 print_char::@return + //SEG157 [75] return rts } -//SEG157 print_str +//SEG158 print_str // Print a zero-terminated string print_str: { .label str = 5 - //SEG158 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG159 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG160 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG161 print_str::@1 + //SEG159 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG162 print_str::@1 b1: - //SEG162 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG163 print_str::@return - //SEG164 [79] return + //SEG164 print_str::@return + //SEG165 [79] return rts - //SEG165 print_str::@2 + //SEG166 print_str::@2 b2: - //SEG166 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG167 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG168 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG169 div16s +//SEG170 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. @@ -9569,26 +9575,26 @@ div16s: { .label return = $e .label dividend = 5 .label divisor = $13 - //SEG170 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG171 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG172 [85] call divr16s + //SEG173 [85] call divr16s jsr divr16s - //SEG173 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 - //SEG174 div16s::@2 - //SEG175 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 - //SEG176 div16s::@return - //SEG177 [88] return + //SEG174 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG175 div16s::@2 + //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + //SEG177 div16s::@return + //SEG178 [88] return rts } -//SEG178 divr16s +//SEG179 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -9605,49 +9611,49 @@ divr16s: { .label dividendu = 8 .label divisoru = $c .label remu = $a - //SEG179 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 - //SEG180 divr16s::@17 - //SEG181 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 - //SEG182 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] - //SEG183 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG181 divr16s::@17 + //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + //SEG183 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 lda #rem sta remu+1 - //SEG184 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy - //SEG185 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy + //SEG186 [91] 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 - //SEG186 divr16s::@2 + //SEG187 divr16s::@2 b2: - //SEG187 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG188 [92] 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 - //SEG188 divr16s::@18 - //SEG189 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG190 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] - //SEG191 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy - //SEG192 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy - //SEG193 divr16s::@4 + //SEG189 divr16s::@18 + //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG191 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy + //SEG194 divr16s::@4 b4: - //SEG194 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - //SEG195 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - //SEG196 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 - //SEG197 [98] call divr16u - //SEG198 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] - //SEG199 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG200 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy - //SEG201 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy + //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 + //SEG198 [98] call divr16u + //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy jsr divr16u - //SEG202 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG203 divr16s::@15 - //SEG204 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - //SEG205 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 + //SEG203 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG204 divr16s::@15 + //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + //SEG206 [101] 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 - //SEG206 divr16s::@11 - //SEG207 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 + //SEG207 divr16s::@11 + //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 sec lda rem16s eor #$ff @@ -9657,7 +9663,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG208 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -9667,19 +9673,19 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG209 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] - //SEG210 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy - //SEG211 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy - //SEG212 divr16s::@return + //SEG210 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy + //SEG213 divr16s::@return breturn: - //SEG213 [105] return + //SEG214 [105] return rts - //SEG214 divr16s::@19 - //SEG215 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG216 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 - //SEG217 divr16s::@3 + //SEG215 divr16s::@19 + //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + //SEG218 divr16s::@3 b3: - //SEG218 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG219 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _11 eor #$ff @@ -9689,15 +9695,15 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG219 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG220 [109] (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 - //SEG220 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 + //SEG221 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 jmp b4 - //SEG221 divr16s::@1 + //SEG222 divr16s::@1 b1: - //SEG222 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 + //SEG223 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 sec lda _5 eor #$ff @@ -9707,19 +9713,19 @@ divr16s: { eor #$ff adc #0 sta _5+1 - //SEG223 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 - //SEG224 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] - //SEG225 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 + //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 lda #<-rem sta remu lda #>-rem sta remu+1 - //SEG226 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy - //SEG227 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy + //SEG228 [91] 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 } -//SEG228 divr16u +//SEG229 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -9730,48 +9736,48 @@ divr16u: { .label quotient = $e .label return = $e .label divisor = $c - //SEG229 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG230 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG231 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG231 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG232 [114] 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 - //SEG232 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG233 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG234 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG235 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG236 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG237 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG238 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG239 divr16u::@1 + //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG240 divr16u::@1 b1: - //SEG240 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG241 [115] (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 - //SEG241 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG242 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG243 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG244 [118] 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 - //SEG244 divr16u::@4 - //SEG245 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG245 divr16u::@4 + //SEG246 [119] (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 - //SEG246 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG247 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG248 divr16u::@2 + //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG249 divr16u::@2 b2: - //SEG249 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG250 [121] (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 - //SEG250 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG251 [122] (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 - //SEG251 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3 @@ -9780,13 +9786,13 @@ divr16u: { cmp divisor bcc b3 !: - //SEG252 divr16u::@5 - //SEG253 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG253 divr16u::@5 + //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG254 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -9794,135 +9800,135 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG255 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG256 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG257 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG258 divr16u::@3 + //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG259 divr16u::@3 b3: - //SEG259 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG260 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG261 [128] 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 - //SEG261 divr16u::@6 - //SEG262 [129] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG263 divr16u::@return - //SEG264 [130] return + //SEG262 divr16u::@6 + //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG264 divr16u::@return + //SEG265 [130] return rts } -//SEG265 test_8s +//SEG266 test_8s test_8s: { .label dividend = 7 .label divisor = $15 .label res = $10 .label i = 2 - //SEG266 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] - //SEG267 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG268 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1] - //SEG269 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy - //SEG270 test_8s::@1 + //SEG269 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1] + //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy + //SEG271 test_8s::@1 b1: - //SEG271 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG272 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 lda divisors,y sta divisor - //SEG273 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 + //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 ldy dividend - //SEG274 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 + //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 tax - //SEG275 [137] call div8s + //SEG276 [137] call div8s jsr div8s - //SEG276 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 - //SEG277 test_8s::@3 - //SEG278 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa + //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + //SEG278 test_8s::@3 + //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa sta res - //SEG279 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - //SEG280 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + //SEG281 [141] (byte*~) print_char_cursor#184 ← (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 - //SEG281 [142] call print_sbyte - //SEG282 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte] - //SEG283 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy - //SEG284 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy + //SEG282 [142] call print_sbyte + //SEG283 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte] + //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy + //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG285 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4] - //SEG286 test_8s::@4 - //SEG287 [144] call print_str - //SEG288 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] - //SEG289 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 + //SEG286 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4] + //SEG287 test_8s::@4 + //SEG288 [144] call print_str + //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] + //SEG290 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG290 test_8s::@5 - //SEG291 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG291 test_8s::@5 + //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG292 [146] call print_sbyte - //SEG293 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte] - //SEG294 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy - //SEG295 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy + //SEG293 [146] call print_sbyte + //SEG294 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte] + //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy + //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG296 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6] - //SEG297 test_8s::@6 - //SEG298 [148] call print_str - //SEG299 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] - //SEG300 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 + //SEG297 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6] + //SEG298 test_8s::@6 + //SEG299 [148] call print_str + //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] + //SEG301 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG301 test_8s::@7 - //SEG302 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG302 test_8s::@7 + //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG303 [150] call print_sbyte - //SEG304 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte] - //SEG305 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy - //SEG306 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy + //SEG304 [150] call print_sbyte + //SEG305 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte] + //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy + //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG307 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8] - //SEG308 test_8s::@8 - //SEG309 [152] call print_str - //SEG310 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] - //SEG311 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 + //SEG308 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8] + //SEG309 test_8s::@8 + //SEG310 [152] call print_str + //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] + //SEG312 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG312 test_8s::@9 - //SEG313 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx + //SEG313 test_8s::@9 + //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx stx print_sbyte.b - //SEG314 [154] call print_sbyte - //SEG315 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte] - //SEG316 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy - //SEG317 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy + //SEG315 [154] call print_sbyte + //SEG316 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte] + //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy + //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG318 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10] - //SEG319 test_8s::@10 - //SEG320 [156] call print_ln - //SEG321 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln] - //SEG322 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy + //SEG319 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10] + //SEG320 test_8s::@10 + //SEG321 [156] call print_ln + //SEG322 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln] + //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy jsr print_ln - //SEG323 test_8s::@11 - //SEG324 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG324 test_8s::@11 + //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG325 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #6 bne b1 - //SEG326 test_8s::@return - //SEG327 [159] return + //SEG327 test_8s::@return + //SEG328 [159] return rts str: .text " / @" str1: .text " = @" @@ -9930,45 +9936,45 @@ test_8s: { dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG328 print_sbyte +//SEG329 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = 7 - //SEG329 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG330 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG331 print_sbyte::@3 - //SEG332 [163] call print_char - //SEG333 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG334 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG335 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG332 print_sbyte::@3 + //SEG333 [163] call print_char + //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG336 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] - //SEG337 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy - //SEG338 print_sbyte::@2 + //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG339 print_sbyte::@2 b2: - //SEG339 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 - //SEG340 [166] call print_byte - //SEG341 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG342 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG343 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 + //SEG341 [166] call print_byte + //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG344 print_sbyte::@return - //SEG345 [167] return + //SEG345 print_sbyte::@return + //SEG346 [167] return rts - //SEG346 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG347 print_sbyte::@1 + //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG348 print_sbyte::@1 b1: - //SEG348 [169] call print_char - //SEG349 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG350 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG351 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG349 [169] call print_char + //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG352 print_sbyte::@5 - //SEG353 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG353 print_sbyte::@5 + //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -9976,7 +9982,7 @@ print_sbyte: { sta b jmp b2 } -//SEG354 div8s +//SEG355 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. @@ -9985,121 +9991,121 @@ print_sbyte: { // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 div8s: { .label neg = $10 - //SEG355 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 + //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 cpy #0 bmi b1 - //SEG356 div8s::@16 - //SEG357 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 - //SEG358 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2] - //SEG359 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy - //SEG360 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 + //SEG357 div8s::@16 + //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + //SEG359 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2] + //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy + //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg - //SEG361 div8s::@2 + //SEG362 div8s::@2 b2: - //SEG362 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 + //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 cpx #0 bmi b3 - //SEG363 div8s::@17 - //SEG364 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 - //SEG365 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4] - //SEG366 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy - //SEG367 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy - //SEG368 div8s::@4 + //SEG364 div8s::@17 + //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + //SEG366 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4] + //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy + //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy + //SEG369 div8s::@4 b4: - //SEG369 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy + //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy tya - //SEG370 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - //SEG371 [179] call div8u - //SEG372 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] - //SEG373 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG374 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + //SEG372 [179] call div8u + //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG375 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 - //SEG376 div8s::@15 - //SEG377 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa + //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 + //SEG377 div8s::@15 + //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa tay - //SEG378 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 + //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b18 - //SEG379 div8s::@11 - //SEG380 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx + //SEG380 div8s::@11 + //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG381 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy + //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG382 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return] - //SEG383 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy - //SEG384 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy - //SEG385 div8s::@return + //SEG383 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return] + //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy + //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy + //SEG386 div8s::@return breturn: - //SEG386 [186] return + //SEG387 [186] return rts - //SEG387 div8s::@18 + //SEG388 div8s::@18 b18: - //SEG388 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy + //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy tya - //SEG389 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 jmp breturn - //SEG390 div8s::@3 + //SEG391 div8s::@3 b3: - //SEG391 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx + //SEG392 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG392 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda neg eor #1 sta neg - //SEG393 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6 + //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6 jmp b4 - //SEG394 div8s::@1 + //SEG395 div8s::@1 b1: - //SEG395 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy + //SEG396 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG396 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuyy=vbuaa + //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuyy=vbuaa tay - //SEG397 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] - //SEG398 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG399 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG400 div8u +//SEG401 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division div8u: { - //SEG401 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa + //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa sta divr8u.dividend - //SEG402 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx + //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx stx divr8u.divisor - //SEG403 [197] call divr8u - //SEG404 [201] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG404 [197] call divr8u + //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u] jsr divr8u - //SEG405 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 + //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 lda divr8u.return - //SEG406 div8u::@2 - //SEG407 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 - //SEG408 div8u::@return - //SEG409 [200] return + //SEG407 div8u::@2 + //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 + //SEG409 div8u::@return + //SEG410 [200] return rts } -//SEG410 divr8u +//SEG411 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u @@ -10109,197 +10115,197 @@ divr8u: { .label divisor = $16 .label quotient = $12 .label return = $12 - //SEG411 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] - //SEG412 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 + //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG413 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 txa sta quotient - //SEG414 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG415 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 + //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 tay - //SEG416 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] - //SEG417 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG418 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG419 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG420 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy - //SEG421 divr8u::@1 + //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG422 divr8u::@1 b1: - //SEG422 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 + //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG423 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and dividend - //SEG424 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 + //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG425 divr8u::@4 - //SEG426 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 + //SEG426 divr8u::@4 + //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 tya ora #1 tay - //SEG427 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] - //SEG428 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy - //SEG429 divr8u::@2 + //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG430 divr8u::@2 b2: - //SEG430 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG431 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG432 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 + //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 cpy divisor bcc b3 - //SEG433 divr8u::@5 - //SEG434 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG434 divr8u::@5 + //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG435 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 + //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 tya sec sbc divisor tay - //SEG436 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] - //SEG437 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG438 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy - //SEG439 divr8u::@3 + //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG440 divr8u::@3 b3: - //SEG440 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx + //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG441 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG442 divr8u::@6 - //SEG443 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy + //SEG443 divr8u::@6 + //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy tya tax - //SEG444 divr8u::@return - //SEG445 [217] return + //SEG445 divr8u::@return + //SEG446 [217] return rts } -//SEG446 test_16u +//SEG447 test_16u test_16u: { .label dividend = 5 .label divisor = $c .label res = $e .label i = 2 - //SEG447 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] - //SEG448 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG449 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] - //SEG450 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy - //SEG451 test_16u::@1 + //SEG450 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] + //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy + //SEG452 test_16u::@1 b1: - //SEG452 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG453 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG454 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - //SEG455 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - //SEG456 [224] call div16u + //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + //SEG457 [224] call div16u jsr div16u - //SEG457 [225] (word) div16u::return#2 ← (word) div16u::return#0 - //SEG458 test_16u::@3 - //SEG459 [226] (word) test_16u::res#0 ← (word) div16u::return#2 - //SEG460 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 - //SEG461 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG459 test_16u::@3 + //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2 + //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 + //SEG462 [228] (byte*~) print_char_cursor#166 ← (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 - //SEG462 [229] call print_word - //SEG463 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] - //SEG464 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy - //SEG465 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy + //SEG463 [229] call print_word + //SEG464 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] + //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy + //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy jsr print_word - //SEG466 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] - //SEG467 test_16u::@4 - //SEG468 [231] call print_str - //SEG469 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] - //SEG470 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 + //SEG467 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] + //SEG468 test_16u::@4 + //SEG469 [231] call print_str + //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] + //SEG471 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG471 test_16u::@5 - //SEG472 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG472 test_16u::@5 + //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG473 [233] call print_word - //SEG474 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] - //SEG475 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy - //SEG476 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy + //SEG474 [233] call print_word + //SEG475 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] + //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy + //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy jsr print_word - //SEG477 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] - //SEG478 test_16u::@6 - //SEG479 [235] call print_str - //SEG480 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] - //SEG481 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 + //SEG478 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] + //SEG479 test_16u::@6 + //SEG480 [235] call print_str + //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] + //SEG482 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG482 test_16u::@7 - //SEG483 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG483 test_16u::@7 + //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG484 [237] call print_word - //SEG485 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] - //SEG486 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy - //SEG487 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy + //SEG485 [237] call print_word + //SEG486 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] + //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy + //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy jsr print_word - //SEG488 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] - //SEG489 test_16u::@8 - //SEG490 [239] call print_str - //SEG491 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] - //SEG492 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 + //SEG489 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] + //SEG490 test_16u::@8 + //SEG491 [239] call print_str + //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] + //SEG493 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG493 test_16u::@9 - //SEG494 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG494 test_16u::@9 + //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG495 [241] call print_word - //SEG496 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] - //SEG497 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy - //SEG498 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy + //SEG496 [241] call print_word + //SEG497 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] + //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy + //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy jsr print_word - //SEG499 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] - //SEG500 test_16u::@10 - //SEG501 [243] call print_ln - //SEG502 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] - //SEG503 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy + //SEG500 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] + //SEG501 test_16u::@10 + //SEG502 [243] call print_ln + //SEG503 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] + //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy jsr print_ln - //SEG504 test_16u::@11 - //SEG505 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG505 test_16u::@11 + //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG506 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 cmp #$c bne b1 - //SEG507 test_16u::@return - //SEG508 [246] return + //SEG508 test_16u::@return + //SEG509 [246] return rts str: .text " / @" str1: .text " = @" @@ -10307,7 +10313,7 @@ test_16u: { dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG509 div16u +//SEG510 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -10316,159 +10322,159 @@ div16u: { .label return = $e .label dividend = 5 .label divisor = $c - //SEG510 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG511 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - //SEG512 [249] call divr16u - //SEG513 [113] phi from div16u to divr16u [phi:div16u->divr16u] - //SEG514 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG515 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy - //SEG516 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 + //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + //SEG513 [249] call divr16u + //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG517 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG518 div16u::@2 - //SEG519 [251] (word) div16u::return#0 ← (word) divr16u::return#2 - //SEG520 div16u::@return - //SEG521 [252] return + //SEG518 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG519 div16u::@2 + //SEG520 [251] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG521 div16u::@return + //SEG522 [252] return rts } -//SEG522 test_8u +//SEG523 test_8u test_8u: { .label dividend = 7 .label divisor = $10 .label res = $11 .label i = 2 - //SEG523 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] - //SEG524 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG525 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG526 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i - //SEG527 test_8u::@1 + //SEG528 test_8u::@1 b1: - //SEG528 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG529 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 lda divisors,y sta divisor - //SEG530 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 + //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 lda dividend - //SEG531 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 + //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 ldx divisor - //SEG532 [259] call div8u - //SEG533 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] - //SEG534 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG535 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG533 [259] call div8u + //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG536 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 - //SEG537 test_8u::@3 - //SEG538 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa + //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 + //SEG538 test_8u::@3 + //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa sta res - //SEG539 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - //SEG540 [263] call print_byte - //SEG541 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] - //SEG542 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy - //SEG543 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy + //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + //SEG541 [263] call print_byte + //SEG542 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] + //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy + //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy jsr print_byte - //SEG544 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] - //SEG545 test_8u::@4 - //SEG546 [265] call print_str - //SEG547 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] - //SEG548 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 + //SEG545 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] + //SEG546 test_8u::@4 + //SEG547 [265] call print_str + //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] + //SEG549 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG549 test_8u::@5 - //SEG550 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG550 test_8u::@5 + //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG551 [267] call print_byte - //SEG552 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] - //SEG553 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy - //SEG554 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy + //SEG552 [267] call print_byte + //SEG553 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] + //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy + //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy jsr print_byte - //SEG555 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] - //SEG556 test_8u::@6 - //SEG557 [269] call print_str - //SEG558 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] - //SEG559 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 + //SEG556 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] + //SEG557 test_8u::@6 + //SEG558 [269] call print_str + //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] + //SEG560 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG560 test_8u::@7 - //SEG561 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG561 test_8u::@7 + //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG562 [271] call print_byte - //SEG563 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] - //SEG564 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy - //SEG565 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy + //SEG563 [271] call print_byte + //SEG564 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] + //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy + //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy jsr print_byte - //SEG566 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] - //SEG567 test_8u::@8 - //SEG568 [273] call print_str - //SEG569 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] - //SEG570 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 + //SEG567 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] + //SEG568 test_8u::@8 + //SEG569 [273] call print_str + //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] + //SEG571 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG571 test_8u::@9 - //SEG572 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx + //SEG572 test_8u::@9 + //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx stx print_byte.b - //SEG573 [275] call print_byte - //SEG574 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] - //SEG575 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy - //SEG576 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy + //SEG574 [275] call print_byte + //SEG575 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] + //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy + //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy jsr print_byte - //SEG577 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] - //SEG578 test_8u::@10 - //SEG579 [277] call print_ln - //SEG580 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] - //SEG581 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy + //SEG578 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] + //SEG579 test_8u::@10 + //SEG580 [277] call print_ln + //SEG581 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] + //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy jsr print_ln - //SEG582 test_8u::@11 - //SEG583 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG583 test_8u::@11 + //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG584 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 + //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #6 bne b12 - //SEG585 test_8u::@return - //SEG586 [280] return + //SEG586 test_8u::@return + //SEG587 [280] return rts - //SEG587 test_8u::@12 + //SEG588 test_8u::@12 b12: - //SEG588 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG589 [281] (byte*~) print_char_cursor#188 ← (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 - //SEG589 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] - //SEG590 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy - //SEG591 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy - //SEG592 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy + //SEG590 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] + //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy + //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy + //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy jmp b1 str: .text " / @" str1: .text " = @" @@ -10476,38 +10482,38 @@ test_8u: { dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG593 print_cls +//SEG594 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG594 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG595 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG596 [283] 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 - //SEG596 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG597 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG598 print_cls::@1 + //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG599 print_cls::@1 b1: - //SEG599 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG600 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG601 [286] 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 + //SEG602 [286] 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 - //SEG602 print_cls::@return - //SEG603 [287] return + //SEG603 print_cls::@return + //SEG604 [287] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-interrupt-notype.log b/src/test/ref/test-interrupt-notype.log index 09fd7bf79..7496478ee 100644 --- a/src/test/ref/test-interrupt-notype.log +++ b/src/test/ref/test-interrupt-notype.log @@ -115,53 +115,54 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label FGCOL = $d021 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG12 irq +//SEG13 irq irq: { - //SEG13 entry interrupt(KERNEL_MIN) - //SEG14 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG14 entry interrupt(KERNEL_MIN) + //SEG15 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG15 asm { lda$dc0d } + //SEG16 asm { lda$dc0d } lda $dc0d jmp breturn - //SEG16 irq::@return + //SEG17 irq::@return breturn: - //SEG17 [8] return - exit interrupt(KERNEL_MIN) + //SEG18 [8] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -179,53 +180,54 @@ Uplifting [irq] best 133 combination Uplifting [] best 133 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label FGCOL = $d021 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG12 irq +//SEG13 irq irq: { - //SEG13 entry interrupt(KERNEL_MIN) - //SEG14 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG14 entry interrupt(KERNEL_MIN) + //SEG15 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG15 asm { lda$dc0d } + //SEG16 asm { lda$dc0d } lda $dc0d jmp breturn - //SEG16 irq::@return + //SEG17 irq::@return breturn: - //SEG17 [8] return - exit interrupt(KERNEL_MIN) + //SEG18 [8] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -268,42 +270,43 @@ interrupt(KERNEL_MIN)(void()) irq() FINAL ASSEMBLER Score: 115 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label FGCOL = $d021 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG12 irq +//SEG13 irq irq: { - //SEG13 entry interrupt(KERNEL_MIN) - //SEG14 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG14 entry interrupt(KERNEL_MIN) + //SEG15 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG15 asm { lda$dc0d } + //SEG16 asm { lda$dc0d } lda $dc0d - //SEG16 irq::@return - //SEG17 [8] return - exit interrupt(KERNEL_MIN) + //SEG17 irq::@return + //SEG18 [8] return - exit interrupt(KERNEL_MIN) jmp $ea81 } diff --git a/src/test/ref/test-interrupt-volatile-write.asm b/src/test/ref/test-interrupt-volatile-write.asm index a1eb856a3..95ddaf361 100644 --- a/src/test/ref/test-interrupt-volatile-write.asm +++ b/src/test/ref/test-interrupt-volatile-write.asm @@ -1,8 +1,8 @@ +// Tests that volatile variables can be both read & written inside & outside interrupts +// Currently fails because the modification is optimized away .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" - // Tests that volatile variables can be both read & written inside & outside interrupts - // Currently fails because the modification is optimized away .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 diff --git a/src/test/ref/test-interrupt-volatile-write.log b/src/test/ref/test-interrupt-volatile-write.log index 3db91a9ba..66aff1d24 100644 --- a/src/test/ref/test-interrupt-volatile-write.log +++ b/src/test/ref/test-interrupt-volatile-write.log @@ -211,95 +211,96 @@ Allocated zp ZP_BYTE:3 [ col#4 ] Allocated zp ZP_BYTE:4 [ col#3 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that volatile variables can be both read & written inside & outside interrupts +// Currently fails because the modification is optimized away +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Tests that volatile variables can be both read & written inside & outside interrupts - // Currently fails because the modification is optimized away +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 .label col_3 = 4 .label col_4 = 3 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG5 @2 +//SEG6 @2 b2: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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 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 + //SEG13 [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] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b2 - //SEG15 main::@2 + //SEG16 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 + //SEG17 [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 + //SEG18 main::@7 b7: - //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG19 [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 +//SEG20 irq irq: { - //SEG20 entry interrupt(KERNEL_MIN) - //SEG21 asm { lda$dc0d } + //SEG21 entry interrupt(KERNEL_MIN) + //SEG22 asm { lda$dc0d } lda $dc0d - //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG23 [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 + //SEG24 [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 + //SEG25 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 + //SEG26 [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 + //SEG27 irq::@return breturn: - //SEG27 [12] return - exit interrupt(KERNEL_MIN) + //SEG28 [12] return - exit interrupt(KERNEL_MIN) jmp $ea81 - //SEG28 irq::@1 + //SEG29 irq::@1 b1: - //SEG29 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz2 + //SEG30 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz2 ldy col iny sty col_3 @@ -338,93 +339,94 @@ Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ col#14 col 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 +//SEG0 File Comments +// Tests that volatile variables can be both read & written inside & outside interrupts +// Currently fails because the modification is optimized away +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Tests that volatile variables can be both read & written inside & outside interrupts - // Currently fails because the modification is optimized away +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG5 @2 +//SEG6 @2 b2: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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 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 + //SEG13 [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] + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b2 - //SEG15 main::@2 + //SEG16 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 + //SEG17 [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 + //SEG18 main::@7 b7: - //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + //SEG19 [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 +//SEG20 irq irq: { - //SEG20 entry interrupt(KERNEL_MIN) - //SEG21 asm { lda$dc0d } + //SEG21 entry interrupt(KERNEL_MIN) + //SEG22 asm { lda$dc0d } lda $dc0d - //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG23 [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 + //SEG24 [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 + //SEG25 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 + //SEG26 [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 + //SEG27 irq::@return breturn: - //SEG27 [12] return - exit interrupt(KERNEL_MIN) + //SEG28 [12] return - exit interrupt(KERNEL_MIN) jmp $ea81 - //SEG28 irq::@1 + //SEG29 irq::@1 b1: - //SEG29 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 + //SEG30 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 inc col jmp breturn } @@ -494,73 +496,74 @@ zp ZP_BYTE:2 [ col#14 col#0 col#1 col#4 col#3 ] FINAL ASSEMBLER Score: 889 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests that volatile variables can be both read & written inside & outside interrupts +// Currently fails because the modification is optimized away +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Tests that volatile variables can be both read & written inside & outside interrupts - // Currently fails because the modification is optimized away +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 +//SEG5 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG6 @2 +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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 + //SEG12 [5] phi from main main::@7 to main::@1 [phi:main/main::@7->main::@1] + //SEG13 [5] phi (byte) col#14 = (byte) col#0 [phi:main/main::@7->main::@1#0] -- register_copy + //SEG14 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG15 main::@1 + //SEG16 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 + //SEG17 [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 + //SEG18 main::@7 + //SEG19 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta col jmp b2 } -//SEG19 irq +//SEG20 irq irq: { - //SEG20 entry interrupt(KERNEL_MIN) - //SEG21 asm { lda$dc0d } + //SEG21 entry interrupt(KERNEL_MIN) + //SEG22 asm { lda$dc0d } lda $dc0d - //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG23 [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 + //SEG24 [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 + //SEG25 irq::@3 + //SEG26 [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) + //SEG27 irq::@return + //SEG28 [12] return - exit interrupt(KERNEL_MIN) jmp $ea81 - //SEG28 irq::@1 + //SEG29 irq::@1 b1: - //SEG29 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 + //SEG30 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 inc col jmp $ea81 } diff --git a/src/test/ref/test-interrupt-volatile.log b/src/test/ref/test-interrupt-volatile.log index 60d4f7e42..b297c53d6 100644 --- a/src/test/ref/test-interrupt-volatile.log +++ b/src/test/ref/test-interrupt-volatile.log @@ -148,64 +148,65 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ col#2 col#0 col#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG5 @2 +//SEG6 @2 b2: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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::@2 to main::@1 [phi:main/main::@2->main::@1] + //SEG12 [5] phi from main main::@2 to main::@1 [phi:main/main::@2->main::@1] b1_from_main: b1_from_b2: - //SEG12 [5] phi (byte) col#2 = (byte) col#0 [phi:main/main::@2->main::@1#0] -- register_copy + //SEG13 [5] phi (byte) col#2 = (byte) col#0 [phi:main/main::@2->main::@1#0] -- register_copy jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: jmp b2 - //SEG14 main::@2 + //SEG15 main::@2 b2: - //SEG15 [6] (byte) col#1 ← ++ (byte) col#2 -- vbuz1=_inc_vbuz1 + //SEG16 [6] (byte) col#1 ← ++ (byte) col#2 -- vbuz1=_inc_vbuz1 inc col jmp b1_from_b2 } -//SEG16 irq +//SEG17 irq irq: { - //SEG17 entry interrupt(KERNEL_MIN) - //SEG18 asm { lda$dc0d } + //SEG18 entry interrupt(KERNEL_MIN) + //SEG19 asm { lda$dc0d } lda $dc0d - //SEG19 [8] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG20 [8] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 lda col sta BGCOL jmp breturn - //SEG20 irq::@return + //SEG21 irq::@return breturn: - //SEG21 [9] return - exit interrupt(KERNEL_MIN) + //SEG22 [9] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -228,64 +229,65 @@ Attempting to uplift remaining variables inzp ZP_BYTE:2 [ col#2 col#0 col#1 ] Uplifting [] best 186 combination zp ZP_BYTE:2 [ col#2 col#0 col#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG5 @2 +//SEG6 @2 b2: -//SEG6 [2] call main +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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::@2 to main::@1 [phi:main/main::@2->main::@1] + //SEG12 [5] phi from main main::@2 to main::@1 [phi:main/main::@2->main::@1] b1_from_main: b1_from_b2: - //SEG12 [5] phi (byte) col#2 = (byte) col#0 [phi:main/main::@2->main::@1#0] -- register_copy + //SEG13 [5] phi (byte) col#2 = (byte) col#0 [phi:main/main::@2->main::@1#0] -- register_copy jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: jmp b2 - //SEG14 main::@2 + //SEG15 main::@2 b2: - //SEG15 [6] (byte) col#1 ← ++ (byte) col#2 -- vbuz1=_inc_vbuz1 + //SEG16 [6] (byte) col#1 ← ++ (byte) col#2 -- vbuz1=_inc_vbuz1 inc col jmp b1_from_b2 } -//SEG16 irq +//SEG17 irq irq: { - //SEG17 entry interrupt(KERNEL_MIN) - //SEG18 asm { lda$dc0d } + //SEG18 entry interrupt(KERNEL_MIN) + //SEG19 asm { lda$dc0d } lda $dc0d - //SEG19 [8] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG20 [8] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 lda col sta BGCOL jmp breturn - //SEG20 irq::@return + //SEG21 irq::@return breturn: - //SEG21 [9] return - exit interrupt(KERNEL_MIN) + //SEG22 [9] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -332,51 +334,52 @@ zp ZP_BYTE:2 [ col#2 col#0 col#1 ] FINAL ASSEMBLER Score: 117 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label col = 2 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG4 [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 +//SEG5 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG6 @2 +//SEG7 [2] call main jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG11 [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::@2 to main::@1 [phi:main/main::@2->main::@1] - //SEG12 [5] phi (byte) col#2 = (byte) col#0 [phi:main/main::@2->main::@1#0] -- register_copy - //SEG13 main::@1 - //SEG14 main::@2 + //SEG12 [5] phi from main main::@2 to main::@1 [phi:main/main::@2->main::@1] + //SEG13 [5] phi (byte) col#2 = (byte) col#0 [phi:main/main::@2->main::@1#0] -- register_copy + //SEG14 main::@1 + //SEG15 main::@2 b2: - //SEG15 [6] (byte) col#1 ← ++ (byte) col#2 -- vbuz1=_inc_vbuz1 + //SEG16 [6] (byte) col#1 ← ++ (byte) col#2 -- vbuz1=_inc_vbuz1 inc col jmp b2 } -//SEG16 irq +//SEG17 irq irq: { - //SEG17 entry interrupt(KERNEL_MIN) - //SEG18 asm { lda$dc0d } + //SEG18 entry interrupt(KERNEL_MIN) + //SEG19 asm { lda$dc0d } lda $dc0d - //SEG19 [8] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + //SEG20 [8] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 lda col sta BGCOL - //SEG20 irq::@return - //SEG21 [9] return - exit interrupt(KERNEL_MIN) + //SEG21 irq::@return + //SEG22 [9] return - exit interrupt(KERNEL_MIN) jmp $ea81 } diff --git a/src/test/ref/test-interrupt.log b/src/test/ref/test-interrupt.log index 09fd7bf79..7496478ee 100644 --- a/src/test/ref/test-interrupt.log +++ b/src/test/ref/test-interrupt.log @@ -115,53 +115,54 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label FGCOL = $d021 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG12 irq +//SEG13 irq irq: { - //SEG13 entry interrupt(KERNEL_MIN) - //SEG14 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG14 entry interrupt(KERNEL_MIN) + //SEG15 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG15 asm { lda$dc0d } + //SEG16 asm { lda$dc0d } lda $dc0d jmp breturn - //SEG16 irq::@return + //SEG17 irq::@return breturn: - //SEG17 [8] return - exit interrupt(KERNEL_MIN) + //SEG18 [8] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -179,53 +180,54 @@ Uplifting [irq] best 133 combination Uplifting [] best 133 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label FGCOL = $d021 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG12 irq +//SEG13 irq irq: { - //SEG13 entry interrupt(KERNEL_MIN) - //SEG14 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG14 entry interrupt(KERNEL_MIN) + //SEG15 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG15 asm { lda$dc0d } + //SEG16 asm { lda$dc0d } lda $dc0d jmp breturn - //SEG16 irq::@return + //SEG17 irq::@return breturn: - //SEG17 [8] return - exit interrupt(KERNEL_MIN) + //SEG18 [8] return - exit interrupt(KERNEL_MIN) jmp $ea81 } @@ -268,42 +270,43 @@ interrupt(KERNEL_MIN)(void()) irq() FINAL ASSEMBLER Score: 115 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label KERNEL_IRQ = $314 .label BGCOL = $d020 .label FGCOL = $d021 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 lda #irq sta KERNEL_IRQ+1 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) FGCOL#0) ← ++ *((const byte*) FGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc FGCOL jmp b2 } -//SEG12 irq +//SEG13 irq irq: { - //SEG13 entry interrupt(KERNEL_MIN) - //SEG14 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG14 entry interrupt(KERNEL_MIN) + //SEG15 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL - //SEG15 asm { lda$dc0d } + //SEG16 asm { lda$dc0d } lda $dc0d - //SEG16 irq::@return - //SEG17 [8] return - exit interrupt(KERNEL_MIN) + //SEG17 irq::@return + //SEG18 [8] return - exit interrupt(KERNEL_MIN) jmp $ea81 } diff --git a/src/test/ref/test-kasm-pc.asm b/src/test/ref/test-kasm-pc.asm index 3d22d2832..2a0b629a3 100644 --- a/src/test/ref/test-kasm-pc.asm +++ b/src/test/ref/test-kasm-pc.asm @@ -1,3 +1,4 @@ +// Test inline KickAssembler code with PC location specification .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/test-kasm-pc.log b/src/test/ref/test-kasm-pc.log index 78ffc4c9b..93e3608ad 100644 --- a/src/test/ref/test-kasm-pc.log +++ b/src/test/ref/test-kasm-pc.log @@ -135,51 +135,53 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline KickAssembler code with PC location specification +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label TABLE = $2000 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b1 -//SEG3 @1 +//SEG4 @1 b1: -//SEG4 kickasm(location (const byte*) TABLE#0) {{ .byte 1, 2, 3 }} -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG5 kickasm(location (const byte*) TABLE#0) {{ .byte 1, 2, 3 }} +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label BORDERCOL = $d020 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: jmp b2 - //SEG13 main::@2 + //SEG14 main::@2 b2: - //SEG14 [6] *((const byte*) main::BORDERCOL#0) ← *((const byte*) TABLE#0 + (byte) main::i#2) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG15 [6] *((const byte*) main::BORDERCOL#0) ← *((const byte*) TABLE#0 + (byte) main::i#2) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy i lda TABLE,y sta BORDERCOL - //SEG15 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG17 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG18 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } .pc = TABLE "TABLE" @@ -200,48 +202,50 @@ Uplifting [main] best 2814 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 2814 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline KickAssembler code with PC location specification +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label TABLE = $2000 -//SEG2 @begin +//SEG3 @begin bbegin: jmp b1 -//SEG3 @1 +//SEG4 @1 b1: -//SEG4 kickasm(location (const byte*) TABLE#0) {{ .byte 1, 2, 3 }} -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG5 kickasm(location (const byte*) TABLE#0) {{ .byte 1, 2, 3 }} +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label BORDERCOL = $d020 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: jmp b2 - //SEG13 main::@2 + //SEG14 main::@2 b2: - //SEG14 [6] *((const byte*) main::BORDERCOL#0) ← *((const byte*) TABLE#0 + (byte) main::i#2) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG15 [6] *((const byte*) main::BORDERCOL#0) ← *((const byte*) TABLE#0 + (byte) main::i#2) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda TABLE,x sta BORDERCOL - //SEG15 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG17 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG18 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } .pc = TABLE "TABLE" @@ -291,35 +295,37 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 2715 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline KickAssembler code with PC location specification +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label TABLE = $2000 -//SEG2 @begin -//SEG3 @1 -//SEG4 kickasm(location (const byte*) TABLE#0) {{ .byte 1, 2, 3 }} -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 @1 +//SEG5 kickasm(location (const byte*) TABLE#0) {{ .byte 1, 2, 3 }} +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label BORDERCOL = $d020 - //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 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 main::@1 - //SEG13 main::@2 + //SEG13 main::@1 + //SEG14 main::@2 b2: - //SEG14 [6] *((const byte*) main::BORDERCOL#0) ← *((const byte*) TABLE#0 + (byte) main::i#2) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG15 [6] *((const byte*) main::BORDERCOL#0) ← *((const byte*) TABLE#0 + (byte) main::i#2) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda TABLE,x sta BORDERCOL - //SEG15 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG17 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG18 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b2 } .pc = TABLE "TABLE" diff --git a/src/test/ref/test-kasm.asm b/src/test/ref/test-kasm.asm index c93ac3be3..4cb753491 100644 --- a/src/test/ref/test-kasm.asm +++ b/src/test/ref/test-kasm.asm @@ -1,9 +1,9 @@ +// Test inline KickAssembler code .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" .byte 1, 2, 3 -// Test inline KickAssembler code main: { b2: inc $d020 diff --git a/src/test/ref/test-kasm.log b/src/test/ref/test-kasm.log index a8923855e..00ab2dd32 100644 --- a/src/test/ref/test-kasm.log +++ b/src/test/ref/test-kasm.log @@ -80,35 +80,36 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline KickAssembler code +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: jmp b1 -//SEG3 @1 +//SEG4 @1 b1: -//SEG4 kickasm {{ .byte 1, 2, 3 }} +//SEG5 kickasm {{ .byte 1, 2, 3 }} .byte 1, 2, 3 -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test inline KickAssembler code +//SEG10 main main: { jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 kickasm {{ inc $d020 }} + //SEG12 kickasm {{ inc $d020 }} inc $d020 jmp b2 @@ -124,35 +125,36 @@ Uplifting [main] best 2915 combination Uplifting [] best 2915 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline KickAssembler code +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: jmp b1 -//SEG3 @1 +//SEG4 @1 b1: -//SEG4 kickasm {{ .byte 1, 2, 3 }} +//SEG5 kickasm {{ .byte 1, 2, 3 }} .byte 1, 2, 3 -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Test inline KickAssembler code +//SEG10 main main: { jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 kickasm {{ inc $d020 }} + //SEG12 kickasm {{ inc $d020 }} inc $d020 jmp b2 @@ -187,26 +189,27 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 2846 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test inline KickAssembler code +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 @1 -//SEG4 kickasm {{ .byte 1, 2, 3 }} +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 @1 +//SEG5 kickasm {{ .byte 1, 2, 3 }} .byte 1, 2, 3 -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Test inline KickAssembler code +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 kickasm {{ inc $d020 }} + //SEG12 kickasm {{ inc $d020 }} inc $d020 jmp b2 diff --git a/src/test/ref/test-keyboard-space.asm b/src/test/ref/test-keyboard-space.asm index 52aa881b0..34259d17d 100644 --- a/src/test/ref/test-keyboard-space.asm +++ b/src/test/ref/test-keyboard-space.asm @@ -1,3 +1,4 @@ +// Test keyboard input - test the space bar .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/test-keyboard-space.log b/src/test/ref/test-keyboard-space.log index 4f95e8978..d2580dc3d 100644 --- a/src/test/ref/test-keyboard-space.log +++ b/src/test/ref/test-keyboard-space.log @@ -1087,11 +1087,13 @@ Allocated zp ZP_BYTE:6 [ keyboard_key_pressed::return#0 ] Allocated zp ZP_BYTE:7 [ keyboard_matrix_read::return#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test keyboard input - test the space bar +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BGCOL = $d021 // CIA#1 Port A: keyboard matrix columns and joystick #2 @@ -1105,71 +1107,71 @@ INITIAL ASM .const GREEN = 5 .const BLUE = 6 .const KEY_SPACE = $3c -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +//SEG4 [1] phi from @begin to @12 [phi:@begin->@12] b12_from_bbegin: jmp b12 -//SEG4 @12 +//SEG5 @12 b12: -//SEG5 [2] call main -//SEG6 [4] phi from @12 to main [phi:@12->main] +//SEG6 [2] call main +//SEG7 [4] phi from @12 to main [phi:@12->main] main_from_b12: jsr main -//SEG7 [3] phi from @12 to @end [phi:@12->@end] +//SEG8 [3] phi from @12 to @end [phi:@12->@end] bend_from_b12: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _2 = 3 - //SEG10 [5] call keyboard_init + //SEG11 [5] call keyboard_init jsr keyboard_init jmp b4 - //SEG11 main::@4 + //SEG12 main::@4 b4: - //SEG12 [6] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG13 [6] 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 - //SEG13 [7] phi from main::@4 to main::@9 [phi:main::@4->main::@9] + //SEG14 [7] phi from main::@4 to main::@9 [phi:main::@4->main::@9] b9_from_b4: jmp b9 - //SEG14 main::@9 + //SEG15 main::@9 b9: - //SEG15 [8] call keyboard_key_pressed - //SEG16 [14] phi from main::@9 to keyboard_key_pressed [phi:main::@9->keyboard_key_pressed] + //SEG16 [8] call keyboard_key_pressed + //SEG17 [14] phi from main::@9 to keyboard_key_pressed [phi:main::@9->keyboard_key_pressed] keyboard_key_pressed_from_b9: jsr keyboard_key_pressed - //SEG17 [9] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG18 [9] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_2 jmp b14 - //SEG18 main::@14 + //SEG19 main::@14 b14: - //SEG19 [10] (byte~) main::$2 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 + //SEG20 [10] (byte~) main::$2 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_2 sta _2 - //SEG20 [11] if((byte~) main::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5 -- vbuz1_neq_0_then_la1 + //SEG21 [11] if((byte~) main::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5 -- vbuz1_neq_0_then_la1 lda _2 cmp #0 bne b5 jmp b10 - //SEG21 main::@10 + //SEG22 main::@10 b10: - //SEG22 [12] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG23 [12] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL jmp b4 - //SEG23 main::@5 + //SEG24 main::@5 b5: - //SEG24 [13] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL jmp b4 } -//SEG25 keyboard_key_pressed +//SEG26 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. @@ -1180,28 +1182,28 @@ keyboard_key_pressed: { .label _2 = 5 .label return = 6 .label return_2 = 2 - //SEG26 [15] call keyboard_matrix_read + //SEG27 [15] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG27 [16] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG28 [16] (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 b2 - //SEG28 keyboard_key_pressed::@2 + //SEG29 keyboard_key_pressed::@2 b2: - //SEG29 [17] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG30 [17] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta _2 - //SEG30 [18] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band__deref_pbuc1 + //SEG31 [18] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band__deref_pbuc1 lda keyboard_matrix_col_bitmask+colidx and _2 sta return jmp breturn - //SEG31 keyboard_key_pressed::@return + //SEG32 keyboard_key_pressed::@return breturn: - //SEG32 [19] return + //SEG33 [19] return rts } -//SEG33 keyboard_matrix_read +//SEG34 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -1210,32 +1212,32 @@ keyboard_key_pressed: { keyboard_matrix_read: { .label return = 7 .label return_2 = 4 - //SEG34 [20] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG35 [20] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 lda keyboard_matrix_row_bitmask+keyboard_key_pressed.rowidx sta CIA1_PORT_A - //SEG35 [21] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG36 [21] (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 - //SEG36 keyboard_matrix_read::@return + //SEG37 keyboard_matrix_read::@return breturn: - //SEG37 [22] return + //SEG38 [22] return rts } -//SEG38 keyboard_init +//SEG39 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG39 [23] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG40 [23] *((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 - //SEG40 [24] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((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 - //SEG41 keyboard_init::@return + //SEG42 keyboard_init::@return breturn: - //SEG42 [25] return + //SEG43 [25] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) @@ -1273,11 +1275,13 @@ Uplifting [keyboard_init] best 1258 combination Uplifting [] best 1258 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test keyboard input - test the space bar +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BGCOL = $d021 // CIA#1 Port A: keyboard matrix columns and joystick #2 @@ -1291,65 +1295,65 @@ ASSEMBLER BEFORE OPTIMIZATION .const GREEN = 5 .const BLUE = 6 .const KEY_SPACE = $3c -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +//SEG4 [1] phi from @begin to @12 [phi:@begin->@12] b12_from_bbegin: jmp b12 -//SEG4 @12 +//SEG5 @12 b12: -//SEG5 [2] call main -//SEG6 [4] phi from @12 to main [phi:@12->main] +//SEG6 [2] call main +//SEG7 [4] phi from @12 to main [phi:@12->main] main_from_b12: jsr main -//SEG7 [3] phi from @12 to @end [phi:@12->@end] +//SEG8 [3] phi from @12 to @end [phi:@12->@end] bend_from_b12: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call keyboard_init + //SEG11 [5] call keyboard_init jsr keyboard_init jmp b4 - //SEG11 main::@4 + //SEG12 main::@4 b4: - //SEG12 [6] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG13 [6] 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 - //SEG13 [7] phi from main::@4 to main::@9 [phi:main::@4->main::@9] + //SEG14 [7] phi from main::@4 to main::@9 [phi:main::@4->main::@9] b9_from_b4: jmp b9 - //SEG14 main::@9 + //SEG15 main::@9 b9: - //SEG15 [8] call keyboard_key_pressed - //SEG16 [14] phi from main::@9 to keyboard_key_pressed [phi:main::@9->keyboard_key_pressed] + //SEG16 [8] call keyboard_key_pressed + //SEG17 [14] phi from main::@9 to keyboard_key_pressed [phi:main::@9->keyboard_key_pressed] keyboard_key_pressed_from_b9: jsr keyboard_key_pressed - //SEG17 [9] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG18 [9] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 jmp b14 - //SEG18 main::@14 + //SEG19 main::@14 b14: - //SEG19 [10] (byte~) main::$2 ← (byte) keyboard_key_pressed::return#2 - //SEG20 [11] if((byte~) main::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5 -- vbuaa_neq_0_then_la1 + //SEG20 [10] (byte~) main::$2 ← (byte) keyboard_key_pressed::return#2 + //SEG21 [11] if((byte~) main::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5 -- vbuaa_neq_0_then_la1 cmp #0 bne b5 jmp b10 - //SEG21 main::@10 + //SEG22 main::@10 b10: - //SEG22 [12] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG23 [12] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL jmp b4 - //SEG23 main::@5 + //SEG24 main::@5 b5: - //SEG24 [13] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL jmp b4 } -//SEG25 keyboard_key_pressed +//SEG26 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. @@ -1357,53 +1361,53 @@ main: { keyboard_key_pressed: { .const colidx = KEY_SPACE&7 .label rowidx = KEY_SPACE>>3 - //SEG26 [15] call keyboard_matrix_read + //SEG27 [15] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG27 [16] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG28 [16] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b2 - //SEG28 keyboard_key_pressed::@2 + //SEG29 keyboard_key_pressed::@2 b2: - //SEG29 [17] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG30 [18] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band__deref_pbuc1 + //SEG30 [17] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG31 [18] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band__deref_pbuc1 and keyboard_matrix_col_bitmask+colidx jmp breturn - //SEG31 keyboard_key_pressed::@return + //SEG32 keyboard_key_pressed::@return breturn: - //SEG32 [19] return + //SEG33 [19] return rts } -//SEG33 keyboard_matrix_read +//SEG34 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG34 [20] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG35 [20] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 lda keyboard_matrix_row_bitmask+keyboard_key_pressed.rowidx sta CIA1_PORT_A - //SEG35 [21] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG36 [21] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG36 keyboard_matrix_read::@return + //SEG37 keyboard_matrix_read::@return breturn: - //SEG37 [22] return + //SEG38 [22] return rts } -//SEG38 keyboard_init +//SEG39 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG39 [23] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG40 [23] *((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 - //SEG40 [24] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((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 - //SEG41 keyboard_init::@return + //SEG42 keyboard_init::@return breturn: - //SEG42 [25] return + //SEG43 [25] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) @@ -1655,11 +1659,13 @@ reg byte a [ keyboard_matrix_read::return#0 ] FINAL ASSEMBLER Score: 1141 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test keyboard input - test the space bar +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 .label BGCOL = $d021 // CIA#1 Port A: keyboard matrix columns and joystick #2 @@ -1673,47 +1679,47 @@ Score: 1141 .const GREEN = 5 .const BLUE = 6 .const KEY_SPACE = $3c -//SEG2 @begin -//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] -//SEG4 @12 -//SEG5 [2] call main -//SEG6 [4] phi from @12 to main [phi:@12->main] -//SEG7 [3] phi from @12 to @end [phi:@12->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @12 [phi:@begin->@12] +//SEG5 @12 +//SEG6 [2] call main +//SEG7 [4] phi from @12 to main [phi:@12->main] +//SEG8 [3] phi from @12 to @end [phi:@12->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call keyboard_init + //SEG11 [5] call keyboard_init jsr keyboard_init - //SEG11 main::@4 + //SEG12 main::@4 b4: - //SEG12 [6] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG13 [6] 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 - //SEG13 [7] phi from main::@4 to main::@9 [phi:main::@4->main::@9] - //SEG14 main::@9 - //SEG15 [8] call keyboard_key_pressed - //SEG16 [14] phi from main::@9 to keyboard_key_pressed [phi:main::@9->keyboard_key_pressed] + //SEG14 [7] phi from main::@4 to main::@9 [phi:main::@4->main::@9] + //SEG15 main::@9 + //SEG16 [8] call keyboard_key_pressed + //SEG17 [14] phi from main::@9 to keyboard_key_pressed [phi:main::@9->keyboard_key_pressed] jsr keyboard_key_pressed - //SEG17 [9] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 - //SEG18 main::@14 - //SEG19 [10] (byte~) main::$2 ← (byte) keyboard_key_pressed::return#2 - //SEG20 [11] if((byte~) main::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5 -- vbuaa_neq_0_then_la1 + //SEG18 [9] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG19 main::@14 + //SEG20 [10] (byte~) main::$2 ← (byte) keyboard_key_pressed::return#2 + //SEG21 [11] if((byte~) main::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5 -- vbuaa_neq_0_then_la1 cmp #0 bne b5 - //SEG21 main::@10 - //SEG22 [12] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG22 main::@10 + //SEG23 [12] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 lda #BLUE sta BGCOL jmp b4 - //SEG23 main::@5 + //SEG24 main::@5 b5: - //SEG24 [13] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 -- _deref_pbuc1=vbuc2 lda #GREEN sta BGCOL jmp b4 } -//SEG25 keyboard_key_pressed +//SEG26 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. @@ -1721,45 +1727,45 @@ main: { keyboard_key_pressed: { .const colidx = KEY_SPACE&7 .label rowidx = KEY_SPACE>>3 - //SEG26 [15] call keyboard_matrix_read + //SEG27 [15] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG27 [16] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG28 keyboard_key_pressed::@2 - //SEG29 [17] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG30 [18] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band__deref_pbuc1 + //SEG28 [16] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG29 keyboard_key_pressed::@2 + //SEG30 [17] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG31 [18] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band__deref_pbuc1 and keyboard_matrix_col_bitmask+colidx - //SEG31 keyboard_key_pressed::@return - //SEG32 [19] return + //SEG32 keyboard_key_pressed::@return + //SEG33 [19] return rts } -//SEG33 keyboard_matrix_read +//SEG34 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG34 [20] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG35 [20] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_key_pressed::rowidx#0) -- _deref_pbuc1=_deref_pbuc2 lda keyboard_matrix_row_bitmask+keyboard_key_pressed.rowidx sta CIA1_PORT_A - //SEG35 [21] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG36 [21] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG36 keyboard_matrix_read::@return - //SEG37 [22] return + //SEG37 keyboard_matrix_read::@return + //SEG38 [22] return rts } -//SEG38 keyboard_init +//SEG39 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG39 [23] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG40 [23] *((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 - //SEG40 [24] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG41 [24] *((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 - //SEG41 keyboard_init::@return - //SEG42 [25] return + //SEG42 keyboard_init::@return + //SEG43 [25] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) diff --git a/src/test/ref/test-keyboard.asm b/src/test/ref/test-keyboard.asm index 593314709..d036656d4 100644 --- a/src/test/ref/test-keyboard.asm +++ b/src/test/ref/test-keyboard.asm @@ -1,3 +1,4 @@ +// Test keyboard input - in the keyboard matrix and mapping screen codes to key codes .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/test-keyboard.log b/src/test/ref/test-keyboard.log index 2127e1fb8..ca15e7934 100644 --- a/src/test/ref/test-keyboard.log +++ b/src/test/ref/test-keyboard.log @@ -1603,11 +1603,13 @@ Allocated zp ZP_BYTE:27 [ keyboard_matrix_read::return#0 ] Allocated zp ZP_BYTE:28 [ keyboard_get_keycode::return#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Test keyboard input - in the keyboard matrix and mapping screen codes to key codes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 // CIA#1 Port A: keyboard matrix columns and joystick #2 .label CIA1_PORT_A = $dc00 @@ -1667,23 +1669,23 @@ INITIAL ASM .const KEY_2 = $3b .const KEY_SPACE = $3c .const KEY_Q = $3e -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +//SEG4 [1] phi from @begin to @12 [phi:@begin->@12] b12_from_bbegin: jmp b12 -//SEG4 @12 +//SEG5 @12 b12: -//SEG5 [2] call main -//SEG6 [4] phi from @12 to main [phi:@12->main] +//SEG6 [2] call main +//SEG7 [4] phi from @12 to main [phi:@12->main] main_from_b12: jsr main -//SEG7 [3] phi from @12 to @end [phi:@12->@end] +//SEG8 [3] phi from @12 to @end [phi:@12->@end] bend_from_b12: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _5 = $d .label _15 = $15 @@ -1696,30 +1698,30 @@ main: { .label key = $12 .label ch = 9 .label i = $a - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bcc b1_from_b1 @@ -1728,99 +1730,99 @@ main: { cmp #<$400+$3e8 bcc b1_from_b1 !: - //SEG18 [9] phi from main::@1 to main::@14 [phi:main::@1->main::@14] + //SEG19 [9] phi from main::@1 to main::@14 [phi:main::@1->main::@14] b14_from_b1: jmp b14 - //SEG19 main::@14 + //SEG20 main::@14 b14: - //SEG20 [10] call keyboard_init + //SEG21 [10] call keyboard_init jsr keyboard_init jmp b5 - //SEG21 main::@5 + //SEG22 main::@5 b5: - //SEG22 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG23 [11] 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 - //SEG23 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG24 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: - //SEG24 [12] phi (byte*) main::screen#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@5->main::@6#0] -- pbuz1=pbuc1 + //SEG25 [12] phi (byte*) main::screen#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@5->main::@6#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG25 [12] phi (byte) main::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#1] -- vbuz1=vbuc1 + //SEG26 [12] phi (byte) main::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#1] -- vbuz1=vbuc1 lda #0 sta row jmp b6 - //SEG26 [12] phi from main::@20 to main::@6 [phi:main::@20->main::@6] + //SEG27 [12] phi from main::@20 to main::@6 [phi:main::@20->main::@6] b6_from_b20: - //SEG27 [12] phi (byte*) main::screen#13 = (byte*) main::screen#1 [phi:main::@20->main::@6#0] -- register_copy - //SEG28 [12] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@20->main::@6#1] -- register_copy + //SEG28 [12] phi (byte*) main::screen#13 = (byte*) main::screen#1 [phi:main::@20->main::@6#0] -- register_copy + //SEG29 [12] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@20->main::@6#1] -- register_copy jmp b6 - //SEG29 main::@6 + //SEG30 main::@6 b6: - //SEG30 [13] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuz1=vbuz2 + //SEG31 [13] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG31 [14] call keyboard_matrix_read - //SEG32 [57] phi from main::@6 to keyboard_matrix_read [phi:main::@6->keyboard_matrix_read] + //SEG32 [14] call keyboard_matrix_read + //SEG33 [57] phi from main::@6 to keyboard_matrix_read [phi:main::@6->keyboard_matrix_read] keyboard_matrix_read_from_b6: - //SEG33 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#1 [phi:main::@6->keyboard_matrix_read#0] -- register_copy + //SEG34 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#1 [phi:main::@6->keyboard_matrix_read#0] -- register_copy jsr keyboard_matrix_read - //SEG34 [15] (byte) keyboard_matrix_read::return#3 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG35 [15] (byte) keyboard_matrix_read::return#3 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 lda keyboard_matrix_read.return sta keyboard_matrix_read.return_3 jmp b28 - //SEG35 main::@28 + //SEG36 main::@28 b28: - //SEG36 [16] (byte) main::row_pressed_bits#0 ← (byte) keyboard_matrix_read::return#3 -- vbuz1=vbuz2 + //SEG37 [16] (byte) main::row_pressed_bits#0 ← (byte) keyboard_matrix_read::return#3 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_3 sta row_pressed_bits - //SEG37 [17] phi from main::@28 to main::@7 [phi:main::@28->main::@7] + //SEG38 [17] phi from main::@28 to main::@7 [phi:main::@28->main::@7] b7_from_b28: - //SEG38 [17] phi (byte) main::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@28->main::@7#0] -- vbuz1=vbuc1 + //SEG39 [17] phi (byte) main::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@28->main::@7#0] -- vbuz1=vbuc1 lda #0 sta col - //SEG39 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#0 [phi:main::@28->main::@7#1] -- register_copy + //SEG40 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#0 [phi:main::@28->main::@7#1] -- register_copy jmp b7 - //SEG40 [17] phi from main::@9 to main::@7 [phi:main::@9->main::@7] + //SEG41 [17] phi from main::@9 to main::@7 [phi:main::@9->main::@7] b7_from_b9: - //SEG41 [17] phi (byte) main::col#2 = (byte) main::col#1 [phi:main::@9->main::@7#0] -- register_copy - //SEG42 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#1 [phi:main::@9->main::@7#1] -- register_copy + //SEG42 [17] phi (byte) main::col#2 = (byte) main::col#1 [phi:main::@9->main::@7#0] -- register_copy + //SEG43 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#1 [phi:main::@9->main::@7#1] -- register_copy jmp b7 - //SEG43 main::@7 + //SEG44 main::@7 b7: - //SEG44 [18] (byte~) main::$5 ← (byte) main::row_pressed_bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG45 [18] (byte~) main::$5 ← (byte) main::row_pressed_bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and row_pressed_bits sta _5 - //SEG45 [19] if((byte~) main::$5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8 -- vbuz1_neq_0_then_la1 + //SEG46 [19] if((byte~) main::$5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8 -- vbuz1_neq_0_then_la1 lda _5 cmp #0 bne b8 jmp b18 - //SEG46 main::@18 + //SEG47 main::@18 b18: - //SEG47 [20] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG48 [20] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' -- pbuz1_derefidx_vbuz2=vbuc1 lda #'0' ldy col sta (screen),y jmp b9 - //SEG48 main::@9 + //SEG49 main::@9 b9: - //SEG49 [21] (byte) main::row_pressed_bits#1 ← (byte) main::row_pressed_bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG50 [21] (byte) main::row_pressed_bits#1 ← (byte) main::row_pressed_bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl row_pressed_bits - //SEG50 [22] (byte) main::col#1 ← ++ (byte) main::col#2 -- vbuz1=_inc_vbuz1 + //SEG51 [22] (byte) main::col#1 ← ++ (byte) main::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG51 [23] if((byte) main::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG52 [23] if((byte) main::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@7 -- vbuz1_neq_vbuc1_then_la1 lda col cmp #8 bne b7_from_b9 jmp b20 - //SEG52 main::@20 + //SEG53 main::@20 b20: - //SEG53 [24] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG54 [24] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda screen clc adc #$28 @@ -1828,16 +1830,16 @@ main: { bcc !+ inc screen+1 !: - //SEG54 [25] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuz1=_inc_vbuz1 + //SEG55 [25] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG55 [26] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG56 [26] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b6_from_b20 jmp b21 - //SEG56 main::@21 + //SEG57 main::@21 b21: - //SEG57 [27] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz2_plus_vbuc1 + //SEG58 [27] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz2_plus_vbuc1 lda #$28 clc adc screen @@ -1845,111 +1847,111 @@ main: { lda #0 adc screen+1 sta screen_2+1 - //SEG58 [28] phi from main::@21 to main::@10 [phi:main::@21->main::@10] + //SEG59 [28] phi from main::@21 to main::@10 [phi:main::@21->main::@10] b10_from_b21: - //SEG59 [28] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#0] -- vbuz1=vbuc1 + //SEG60 [28] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG60 [28] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#1] -- vbuz1=vbuc1 + //SEG61 [28] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#1] -- vbuz1=vbuc1 lda #0 sta ch jmp b10 - //SEG61 [28] phi from main::@11 to main::@10 [phi:main::@11->main::@10] + //SEG62 [28] phi from main::@11 to main::@10 [phi:main::@11->main::@10] b10_from_b11: - //SEG62 [28] phi (byte) main::i#10 = (byte) main::i#6 [phi:main::@11->main::@10#0] -- register_copy - //SEG63 [28] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@11->main::@10#1] -- register_copy + //SEG63 [28] phi (byte) main::i#10 = (byte) main::i#6 [phi:main::@11->main::@10#0] -- register_copy + //SEG64 [28] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@11->main::@10#1] -- register_copy jmp b10 - //SEG64 main::@10 + //SEG65 main::@10 b10: - //SEG65 [29] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuz1=vbuz2 + //SEG66 [29] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuz1=vbuz2 lda ch sta keyboard_get_keycode.ch - //SEG66 [30] call keyboard_get_keycode + //SEG67 [30] call keyboard_get_keycode jsr keyboard_get_keycode - //SEG67 [31] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 -- vbuz1=vbuz2 + //SEG68 [31] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 -- vbuz1=vbuz2 lda keyboard_get_keycode.return sta keyboard_get_keycode.return_2 jmp b29 - //SEG68 main::@29 + //SEG69 main::@29 b29: - //SEG69 [32] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 -- vbuz1=vbuz2 + //SEG70 [32] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 -- vbuz1=vbuz2 lda keyboard_get_keycode.return_2 sta key - //SEG70 [33] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuz1_eq_vbuc1_then_la1 + //SEG71 [33] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuz1_eq_vbuc1_then_la1 lda key cmp #$3f beq b11_from_b29 jmp b22 - //SEG71 main::@22 + //SEG72 main::@22 b22: - //SEG72 [34] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuz1=vbuz2 + //SEG73 [34] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuz1=vbuz2 lda key sta keyboard_key_pressed.key - //SEG73 [35] call keyboard_key_pressed + //SEG74 [35] call keyboard_key_pressed jsr keyboard_key_pressed - //SEG74 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 + //SEG75 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_key_pressed.return sta keyboard_key_pressed.return_2 jmp b30 - //SEG75 main::@30 + //SEG76 main::@30 b30: - //SEG76 [37] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 + //SEG77 [37] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_key_pressed.return_2 sta _15 - //SEG77 [38] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@11 -- vbuz1_eq_0_then_la1 + //SEG78 [38] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@11 -- vbuz1_eq_0_then_la1 lda _15 cmp #0 beq b11_from_b30 jmp b23 - //SEG78 main::@23 + //SEG79 main::@23 b23: - //SEG79 [39] *((byte*) main::screen#2 + (byte) main::i#10) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG80 [39] *((byte*) main::screen#2 + (byte) main::i#10) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuz2=vbuz3 lda ch ldy i sta (screen_2),y - //SEG80 [40] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + //SEG81 [40] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG81 [41] phi from main::@23 main::@29 main::@30 to main::@11 [phi:main::@23/main::@29/main::@30->main::@11] + //SEG82 [41] phi from main::@23 main::@29 main::@30 to main::@11 [phi:main::@23/main::@29/main::@30->main::@11] b11_from_b23: b11_from_b29: b11_from_b30: - //SEG82 [41] phi (byte) main::i#6 = (byte) main::i#1 [phi:main::@23/main::@29/main::@30->main::@11#0] -- register_copy + //SEG83 [41] phi (byte) main::i#6 = (byte) main::i#1 [phi:main::@23/main::@29/main::@30->main::@11#0] -- register_copy jmp b11 - //SEG83 main::@11 + //SEG84 main::@11 b11: - //SEG84 [42] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 + //SEG85 [42] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 inc ch - //SEG85 [43] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG86 [43] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #$40 bne b10_from_b11 - //SEG86 [44] phi from main::@11 main::@13 to main::@13 [phi:main::@11/main::@13->main::@13] + //SEG87 [44] phi from main::@11 main::@13 to main::@13 [phi:main::@11/main::@13->main::@13] b13_from_b11: b13_from_b13: - //SEG87 [44] phi (byte) main::i#4 = (byte) main::i#6 [phi:main::@11/main::@13->main::@13#0] -- register_copy + //SEG88 [44] phi (byte) main::i#4 = (byte) main::i#6 [phi:main::@11/main::@13->main::@13#0] -- register_copy jmp b13 - //SEG88 main::@13 + //SEG89 main::@13 b13: - //SEG89 [45] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG90 [45] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 lda #' ' ldy i sta (screen_2),y - //SEG90 [46] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 + //SEG91 [46] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG91 [47] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@13 -- vbuz1_lt_vbuc1_then_la1 + //SEG92 [47] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@13 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #5 bcc b13_from_b13 jmp b5 - //SEG92 main::@8 + //SEG93 main::@8 b8: - //SEG93 [48] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' -- pbuz1_derefidx_vbuz2=vbuc1 + //SEG94 [48] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' -- pbuz1_derefidx_vbuz2=vbuc1 lda #'1' ldy col sta (screen),y jmp b9 } -//SEG94 keyboard_key_pressed +//SEG95 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. @@ -1961,45 +1963,45 @@ keyboard_key_pressed: { .label return = $1a .label key = $13 .label return_2 = $14 - //SEG95 [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG96 [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and key sta colidx - //SEG96 [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + //SEG97 [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda key lsr lsr lsr sta rowidx - //SEG97 [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuz1=vbuz2 + //SEG98 [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuz1=vbuz2 lda rowidx sta keyboard_matrix_read.rowid - //SEG98 [52] call keyboard_matrix_read - //SEG99 [57] phi from keyboard_key_pressed to keyboard_matrix_read [phi:keyboard_key_pressed->keyboard_matrix_read] + //SEG99 [52] call keyboard_matrix_read + //SEG100 [57] phi from keyboard_key_pressed to keyboard_matrix_read [phi:keyboard_key_pressed->keyboard_matrix_read] keyboard_matrix_read_from_keyboard_key_pressed: - //SEG100 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#0 [phi:keyboard_key_pressed->keyboard_matrix_read#0] -- register_copy + //SEG101 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#0 [phi:keyboard_key_pressed->keyboard_matrix_read#0] -- register_copy jsr keyboard_matrix_read - //SEG101 [53] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG102 [53] (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 b2 - //SEG102 keyboard_key_pressed::@2 + //SEG103 keyboard_key_pressed::@2 b2: - //SEG103 [54] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG104 [54] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta _2 - //SEG104 [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG105 [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _2 ldy colidx and keyboard_matrix_col_bitmask,y sta return jmp breturn - //SEG105 keyboard_key_pressed::@return + //SEG106 keyboard_key_pressed::@return breturn: - //SEG106 [56] return + //SEG107 [56] return rts } -//SEG107 keyboard_matrix_read +//SEG108 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. @@ -2010,21 +2012,21 @@ keyboard_matrix_read: { .label rowid = $b .label return_2 = $18 .label return_3 = $c - //SEG108 [58] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + //SEG109 [58] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy rowid lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG109 [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG110 [59] (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 - //SEG110 keyboard_matrix_read::@return + //SEG111 keyboard_matrix_read::@return breturn: - //SEG111 [60] return + //SEG112 [60] return rts } -//SEG112 keyboard_get_keycode +//SEG113 keyboard_get_keycode // Get the keycode corresponding to a specific screen code character // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. @@ -2033,29 +2035,29 @@ keyboard_get_keycode: { .label return = $1c .label ch = $10 .label return_2 = $11 - //SEG113 [61] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG114 [61] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy ch lda keyboard_char_keycodes,y sta return jmp breturn - //SEG114 keyboard_get_keycode::@return + //SEG115 keyboard_get_keycode::@return breturn: - //SEG115 [62] return + //SEG116 [62] return rts } -//SEG116 keyboard_init +//SEG117 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG117 [63] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG118 [63] *((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 - //SEG118 [64] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG119 [64] *((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 - //SEG119 keyboard_init::@return + //SEG120 keyboard_init::@return breturn: - //SEG120 [65] return + //SEG121 [65] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) @@ -2167,11 +2169,13 @@ Coalescing zero page register [ zp ZP_BYTE:4 [ main::row#2 main::row#1 ] ] with Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:5 [ keyboard_key_pressed::colidx#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Test keyboard input - in the keyboard matrix and mapping screen codes to key codes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 // CIA#1 Port A: keyboard matrix columns and joystick #2 .label CIA1_PORT_A = $dc00 @@ -2231,52 +2235,52 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_2 = $3b .const KEY_SPACE = $3c .const KEY_Q = $3e -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +//SEG4 [1] phi from @begin to @12 [phi:@begin->@12] b12_from_bbegin: jmp b12 -//SEG4 @12 +//SEG5 @12 b12: -//SEG5 [2] call main -//SEG6 [4] phi from @12 to main [phi:@12->main] +//SEG6 [2] call main +//SEG7 [4] phi from @12 to main [phi:@12->main] main_from_b12: jsr main -//SEG7 [3] phi from @12 to @end [phi:@12->@end] +//SEG8 [3] phi from @12 to @end [phi:@12->@end] bend_from_b12: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label sc = 2 .label screen = 2 .label row = 4 .label ch = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bcc b1_from_b1 @@ -2285,92 +2289,92 @@ main: { cmp #<$400+$3e8 bcc b1_from_b1 !: - //SEG18 [9] phi from main::@1 to main::@14 [phi:main::@1->main::@14] + //SEG19 [9] phi from main::@1 to main::@14 [phi:main::@1->main::@14] b14_from_b1: jmp b14 - //SEG19 main::@14 + //SEG20 main::@14 b14: - //SEG20 [10] call keyboard_init + //SEG21 [10] call keyboard_init jsr keyboard_init jmp b5 - //SEG21 main::@5 + //SEG22 main::@5 b5: - //SEG22 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG23 [11] 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 - //SEG23 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG24 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: - //SEG24 [12] phi (byte*) main::screen#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@5->main::@6#0] -- pbuz1=pbuc1 + //SEG25 [12] phi (byte*) main::screen#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@5->main::@6#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG25 [12] phi (byte) main::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#1] -- vbuz1=vbuc1 + //SEG26 [12] phi (byte) main::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#1] -- vbuz1=vbuc1 lda #0 sta row jmp b6 - //SEG26 [12] phi from main::@20 to main::@6 [phi:main::@20->main::@6] + //SEG27 [12] phi from main::@20 to main::@6 [phi:main::@20->main::@6] b6_from_b20: - //SEG27 [12] phi (byte*) main::screen#13 = (byte*) main::screen#1 [phi:main::@20->main::@6#0] -- register_copy - //SEG28 [12] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@20->main::@6#1] -- register_copy + //SEG28 [12] phi (byte*) main::screen#13 = (byte*) main::screen#1 [phi:main::@20->main::@6#0] -- register_copy + //SEG29 [12] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@20->main::@6#1] -- register_copy jmp b6 - //SEG29 main::@6 + //SEG30 main::@6 b6: - //SEG30 [13] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuyy=vbuz1 + //SEG31 [13] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuyy=vbuz1 ldy row - //SEG31 [14] call keyboard_matrix_read - //SEG32 [57] phi from main::@6 to keyboard_matrix_read [phi:main::@6->keyboard_matrix_read] + //SEG32 [14] call keyboard_matrix_read + //SEG33 [57] phi from main::@6 to keyboard_matrix_read [phi:main::@6->keyboard_matrix_read] keyboard_matrix_read_from_b6: - //SEG33 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#1 [phi:main::@6->keyboard_matrix_read#0] -- register_copy + //SEG34 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#1 [phi:main::@6->keyboard_matrix_read#0] -- register_copy jsr keyboard_matrix_read - //SEG34 [15] (byte) keyboard_matrix_read::return#3 ← (byte) keyboard_matrix_read::return#0 + //SEG35 [15] (byte) keyboard_matrix_read::return#3 ← (byte) keyboard_matrix_read::return#0 jmp b28 - //SEG35 main::@28 + //SEG36 main::@28 b28: - //SEG36 [16] (byte) main::row_pressed_bits#0 ← (byte) keyboard_matrix_read::return#3 -- vbuxx=vbuaa + //SEG37 [16] (byte) main::row_pressed_bits#0 ← (byte) keyboard_matrix_read::return#3 -- vbuxx=vbuaa tax - //SEG37 [17] phi from main::@28 to main::@7 [phi:main::@28->main::@7] + //SEG38 [17] phi from main::@28 to main::@7 [phi:main::@28->main::@7] b7_from_b28: - //SEG38 [17] phi (byte) main::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@28->main::@7#0] -- vbuyy=vbuc1 + //SEG39 [17] phi (byte) main::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@28->main::@7#0] -- vbuyy=vbuc1 ldy #0 - //SEG39 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#0 [phi:main::@28->main::@7#1] -- register_copy + //SEG40 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#0 [phi:main::@28->main::@7#1] -- register_copy jmp b7 - //SEG40 [17] phi from main::@9 to main::@7 [phi:main::@9->main::@7] + //SEG41 [17] phi from main::@9 to main::@7 [phi:main::@9->main::@7] b7_from_b9: - //SEG41 [17] phi (byte) main::col#2 = (byte) main::col#1 [phi:main::@9->main::@7#0] -- register_copy - //SEG42 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#1 [phi:main::@9->main::@7#1] -- register_copy + //SEG42 [17] phi (byte) main::col#2 = (byte) main::col#1 [phi:main::@9->main::@7#0] -- register_copy + //SEG43 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#1 [phi:main::@9->main::@7#1] -- register_copy jmp b7 - //SEG43 main::@7 + //SEG44 main::@7 b7: - //SEG44 [18] (byte~) main::$5 ← (byte) main::row_pressed_bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuxx_band_vbuc1 + //SEG45 [18] (byte~) main::$5 ← (byte) main::row_pressed_bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuxx_band_vbuc1 txa and #$80 - //SEG45 [19] if((byte~) main::$5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8 -- vbuaa_neq_0_then_la1 + //SEG46 [19] if((byte~) main::$5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8 -- vbuaa_neq_0_then_la1 cmp #0 bne b8 jmp b18 - //SEG46 main::@18 + //SEG47 main::@18 b18: - //SEG47 [20] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' -- pbuz1_derefidx_vbuyy=vbuc1 + //SEG48 [20] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' -- pbuz1_derefidx_vbuyy=vbuc1 lda #'0' sta (screen),y jmp b9 - //SEG48 main::@9 + //SEG49 main::@9 b9: - //SEG49 [21] (byte) main::row_pressed_bits#1 ← (byte) main::row_pressed_bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 + //SEG50 [21] (byte) main::row_pressed_bits#1 ← (byte) main::row_pressed_bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 txa asl tax - //SEG50 [22] (byte) main::col#1 ← ++ (byte) main::col#2 -- vbuyy=_inc_vbuyy + //SEG51 [22] (byte) main::col#1 ← ++ (byte) main::col#2 -- vbuyy=_inc_vbuyy iny - //SEG51 [23] if((byte) main::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@7 -- vbuyy_neq_vbuc1_then_la1 + //SEG52 [23] if((byte) main::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@7 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b7_from_b9 jmp b20 - //SEG52 main::@20 + //SEG53 main::@20 b20: - //SEG53 [24] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG54 [24] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda screen clc adc #$28 @@ -2378,16 +2382,16 @@ main: { bcc !+ inc screen+1 !: - //SEG54 [25] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuz1=_inc_vbuz1 + //SEG55 [25] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG55 [26] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG56 [26] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b6_from_b20 jmp b21 - //SEG56 main::@21 + //SEG57 main::@21 b21: - //SEG57 [27] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG58 [27] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda screen clc adc #$28 @@ -2395,180 +2399,180 @@ main: { bcc !+ inc screen+1 !: - //SEG58 [28] phi from main::@21 to main::@10 [phi:main::@21->main::@10] + //SEG59 [28] phi from main::@21 to main::@10 [phi:main::@21->main::@10] b10_from_b21: - //SEG59 [28] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#0] -- vbuxx=vbuc1 + //SEG60 [28] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#0] -- vbuxx=vbuc1 ldx #0 - //SEG60 [28] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#1] -- vbuz1=vbuc1 + //SEG61 [28] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#1] -- vbuz1=vbuc1 lda #0 sta ch jmp b10 - //SEG61 [28] phi from main::@11 to main::@10 [phi:main::@11->main::@10] + //SEG62 [28] phi from main::@11 to main::@10 [phi:main::@11->main::@10] b10_from_b11: - //SEG62 [28] phi (byte) main::i#10 = (byte) main::i#6 [phi:main::@11->main::@10#0] -- register_copy - //SEG63 [28] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@11->main::@10#1] -- register_copy + //SEG63 [28] phi (byte) main::i#10 = (byte) main::i#6 [phi:main::@11->main::@10#0] -- register_copy + //SEG64 [28] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@11->main::@10#1] -- register_copy jmp b10 - //SEG64 main::@10 + //SEG65 main::@10 b10: - //SEG65 [29] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuyy=vbuz1 + //SEG66 [29] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuyy=vbuz1 ldy ch - //SEG66 [30] call keyboard_get_keycode + //SEG67 [30] call keyboard_get_keycode jsr keyboard_get_keycode - //SEG67 [31] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 + //SEG68 [31] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 jmp b29 - //SEG68 main::@29 + //SEG69 main::@29 b29: - //SEG69 [32] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 - //SEG70 [33] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuaa_eq_vbuc1_then_la1 + //SEG70 [32] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 + //SEG71 [33] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuaa_eq_vbuc1_then_la1 cmp #$3f beq b11_from_b29 jmp b22 - //SEG71 main::@22 + //SEG72 main::@22 b22: - //SEG72 [34] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuyy=vbuaa + //SEG73 [34] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuyy=vbuaa tay - //SEG73 [35] call keyboard_key_pressed + //SEG74 [35] call keyboard_key_pressed jsr keyboard_key_pressed - //SEG74 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG75 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 jmp b30 - //SEG75 main::@30 + //SEG76 main::@30 b30: - //SEG76 [37] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 - //SEG77 [38] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@11 -- vbuaa_eq_0_then_la1 + //SEG77 [37] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 + //SEG78 [38] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b30 jmp b23 - //SEG78 main::@23 + //SEG79 main::@23 b23: - //SEG79 [39] *((byte*) main::screen#2 + (byte) main::i#10) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuxx=vbuz2 + //SEG80 [39] *((byte*) main::screen#2 + (byte) main::i#10) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuxx=vbuz2 txa tay lda ch sta (screen),y - //SEG80 [40] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuxx=_inc_vbuxx + //SEG81 [40] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuxx=_inc_vbuxx inx - //SEG81 [41] phi from main::@23 main::@29 main::@30 to main::@11 [phi:main::@23/main::@29/main::@30->main::@11] + //SEG82 [41] phi from main::@23 main::@29 main::@30 to main::@11 [phi:main::@23/main::@29/main::@30->main::@11] b11_from_b23: b11_from_b29: b11_from_b30: - //SEG82 [41] phi (byte) main::i#6 = (byte) main::i#1 [phi:main::@23/main::@29/main::@30->main::@11#0] -- register_copy + //SEG83 [41] phi (byte) main::i#6 = (byte) main::i#1 [phi:main::@23/main::@29/main::@30->main::@11#0] -- register_copy jmp b11 - //SEG83 main::@11 + //SEG84 main::@11 b11: - //SEG84 [42] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 + //SEG85 [42] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 inc ch - //SEG85 [43] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG86 [43] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #$40 bne b10_from_b11 - //SEG86 [44] phi from main::@11 main::@13 to main::@13 [phi:main::@11/main::@13->main::@13] + //SEG87 [44] phi from main::@11 main::@13 to main::@13 [phi:main::@11/main::@13->main::@13] b13_from_b11: b13_from_b13: - //SEG87 [44] phi (byte) main::i#4 = (byte) main::i#6 [phi:main::@11/main::@13->main::@13#0] -- register_copy + //SEG88 [44] phi (byte) main::i#4 = (byte) main::i#6 [phi:main::@11/main::@13->main::@13#0] -- register_copy jmp b13 - //SEG88 main::@13 + //SEG89 main::@13 b13: - //SEG89 [45] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuxx=vbuc1 + //SEG90 [45] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuxx=vbuc1 txa tay lda #' ' sta (screen),y - //SEG90 [46] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx + //SEG91 [46] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx inx - //SEG91 [47] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@13 -- vbuxx_lt_vbuc1_then_la1 + //SEG92 [47] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@13 -- vbuxx_lt_vbuc1_then_la1 cpx #5 bcc b13_from_b13 jmp b5 - //SEG92 main::@8 + //SEG93 main::@8 b8: - //SEG93 [48] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' -- pbuz1_derefidx_vbuyy=vbuc1 + //SEG94 [48] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' -- pbuz1_derefidx_vbuyy=vbuc1 lda #'1' sta (screen),y jmp b9 } -//SEG94 keyboard_key_pressed +//SEG95 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed keyboard_key_pressed: { .label colidx = 5 - //SEG95 [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuyy_band_vbuc1 + //SEG96 [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuyy_band_vbuc1 tya and #7 sta colidx - //SEG96 [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_ror_3 + //SEG97 [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_ror_3 tya lsr lsr lsr - //SEG97 [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa + //SEG98 [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa tay - //SEG98 [52] call keyboard_matrix_read - //SEG99 [57] phi from keyboard_key_pressed to keyboard_matrix_read [phi:keyboard_key_pressed->keyboard_matrix_read] + //SEG99 [52] call keyboard_matrix_read + //SEG100 [57] phi from keyboard_key_pressed to keyboard_matrix_read [phi:keyboard_key_pressed->keyboard_matrix_read] keyboard_matrix_read_from_keyboard_key_pressed: - //SEG100 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#0 [phi:keyboard_key_pressed->keyboard_matrix_read#0] -- register_copy + //SEG101 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#0 [phi:keyboard_key_pressed->keyboard_matrix_read#0] -- register_copy jsr keyboard_matrix_read - //SEG101 [53] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG102 [53] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 jmp b2 - //SEG102 keyboard_key_pressed::@2 + //SEG103 keyboard_key_pressed::@2 b2: - //SEG103 [54] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG104 [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 + //SEG104 [54] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG105 [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 ldy colidx and keyboard_matrix_col_bitmask,y jmp breturn - //SEG105 keyboard_key_pressed::@return + //SEG106 keyboard_key_pressed::@return breturn: - //SEG106 [56] return + //SEG107 [56] return rts } -//SEG107 keyboard_matrix_read +//SEG108 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG108 [58] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuyy + //SEG109 [58] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuyy lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG109 [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG110 [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG110 keyboard_matrix_read::@return + //SEG111 keyboard_matrix_read::@return breturn: - //SEG111 [60] return + //SEG112 [60] return rts } -//SEG112 keyboard_get_keycode +//SEG113 keyboard_get_keycode // Get the keycode corresponding to a specific screen code character // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. // If there is no non-shifted key representing the char $3f is returned (representing RUN/STOP) . keyboard_get_keycode: { - //SEG113 [61] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG114 [61] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuyy lda keyboard_char_keycodes,y jmp breturn - //SEG114 keyboard_get_keycode::@return + //SEG115 keyboard_get_keycode::@return breturn: - //SEG115 [62] return + //SEG116 [62] return rts } -//SEG116 keyboard_init +//SEG117 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG117 [63] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG118 [63] *((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 - //SEG118 [64] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG119 [64] *((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 - //SEG119 keyboard_init::@return + //SEG120 keyboard_init::@return breturn: - //SEG120 [65] return + //SEG121 [65] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) @@ -2988,11 +2992,13 @@ reg byte a [ keyboard_get_keycode::return#0 ] FINAL ASSEMBLER Score: 56821 -//SEG0 Basic Upstart +//SEG0 File Comments +// Test keyboard input - in the keyboard matrix and mapping screen codes to key codes +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label RASTER = $d012 // CIA#1 Port A: keyboard matrix columns and joystick #2 .label CIA1_PORT_A = $dc00 @@ -3052,39 +3058,39 @@ Score: 56821 .const KEY_2 = $3b .const KEY_SPACE = $3c .const KEY_Q = $3e -//SEG2 @begin -//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] -//SEG4 @12 -//SEG5 [2] call main -//SEG6 [4] phi from @12 to main [phi:@12->main] -//SEG7 [3] phi from @12 to @end [phi:@12->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @12 [phi:@begin->@12] +//SEG5 @12 +//SEG6 [2] call main +//SEG7 [4] phi from @12 to main [phi:@12->main] +//SEG8 [3] phi from @12 to @end [phi:@12->@end] +//SEG9 @end +//SEG10 main main: { .label sc = 2 .label screen = 2 .label row = 4 .label ch = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte*) main::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte*) main::sc#2 = (byte*) main::sc#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG16 [6] *((byte*) main::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG16 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 + //SEG17 [7] (byte*) main::sc#1 ← ++ (byte*) main::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG17 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 + //SEG18 [8] if((byte*) main::sc#1<(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto main::@1 -- pbuz1_lt_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bcc b1 @@ -3093,72 +3099,72 @@ main: { cmp #<$400+$3e8 bcc b1 !: - //SEG18 [9] phi from main::@1 to main::@14 [phi:main::@1->main::@14] - //SEG19 main::@14 - //SEG20 [10] call keyboard_init + //SEG19 [9] phi from main::@1 to main::@14 [phi:main::@1->main::@14] + //SEG20 main::@14 + //SEG21 [10] call keyboard_init jsr keyboard_init - //SEG21 main::@5 + //SEG22 main::@5 b5: - //SEG22 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG23 [11] 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 - //SEG23 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG24 [12] phi (byte*) main::screen#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@5->main::@6#0] -- pbuz1=pbuc1 + //SEG24 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG25 [12] phi (byte*) main::screen#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::@5->main::@6#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG25 [12] phi (byte) main::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#1] -- vbuz1=vbuc1 + //SEG26 [12] phi (byte) main::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@6#1] -- vbuz1=vbuc1 lda #0 sta row - //SEG26 [12] phi from main::@20 to main::@6 [phi:main::@20->main::@6] - //SEG27 [12] phi (byte*) main::screen#13 = (byte*) main::screen#1 [phi:main::@20->main::@6#0] -- register_copy - //SEG28 [12] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@20->main::@6#1] -- register_copy - //SEG29 main::@6 + //SEG27 [12] phi from main::@20 to main::@6 [phi:main::@20->main::@6] + //SEG28 [12] phi (byte*) main::screen#13 = (byte*) main::screen#1 [phi:main::@20->main::@6#0] -- register_copy + //SEG29 [12] phi (byte) main::row#2 = (byte) main::row#1 [phi:main::@20->main::@6#1] -- register_copy + //SEG30 main::@6 b6: - //SEG30 [13] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuyy=vbuz1 + //SEG31 [13] (byte) keyboard_matrix_read::rowid#1 ← (byte) main::row#2 -- vbuyy=vbuz1 ldy row - //SEG31 [14] call keyboard_matrix_read - //SEG32 [57] phi from main::@6 to keyboard_matrix_read [phi:main::@6->keyboard_matrix_read] - //SEG33 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#1 [phi:main::@6->keyboard_matrix_read#0] -- register_copy + //SEG32 [14] call keyboard_matrix_read + //SEG33 [57] phi from main::@6 to keyboard_matrix_read [phi:main::@6->keyboard_matrix_read] + //SEG34 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#1 [phi:main::@6->keyboard_matrix_read#0] -- register_copy jsr keyboard_matrix_read - //SEG34 [15] (byte) keyboard_matrix_read::return#3 ← (byte) keyboard_matrix_read::return#0 - //SEG35 main::@28 - //SEG36 [16] (byte) main::row_pressed_bits#0 ← (byte) keyboard_matrix_read::return#3 -- vbuxx=vbuaa + //SEG35 [15] (byte) keyboard_matrix_read::return#3 ← (byte) keyboard_matrix_read::return#0 + //SEG36 main::@28 + //SEG37 [16] (byte) main::row_pressed_bits#0 ← (byte) keyboard_matrix_read::return#3 -- vbuxx=vbuaa tax - //SEG37 [17] phi from main::@28 to main::@7 [phi:main::@28->main::@7] - //SEG38 [17] phi (byte) main::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@28->main::@7#0] -- vbuyy=vbuc1 + //SEG38 [17] phi from main::@28 to main::@7 [phi:main::@28->main::@7] + //SEG39 [17] phi (byte) main::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@28->main::@7#0] -- vbuyy=vbuc1 ldy #0 - //SEG39 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#0 [phi:main::@28->main::@7#1] -- register_copy - //SEG40 [17] phi from main::@9 to main::@7 [phi:main::@9->main::@7] - //SEG41 [17] phi (byte) main::col#2 = (byte) main::col#1 [phi:main::@9->main::@7#0] -- register_copy - //SEG42 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#1 [phi:main::@9->main::@7#1] -- register_copy - //SEG43 main::@7 + //SEG40 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#0 [phi:main::@28->main::@7#1] -- register_copy + //SEG41 [17] phi from main::@9 to main::@7 [phi:main::@9->main::@7] + //SEG42 [17] phi (byte) main::col#2 = (byte) main::col#1 [phi:main::@9->main::@7#0] -- register_copy + //SEG43 [17] phi (byte) main::row_pressed_bits#2 = (byte) main::row_pressed_bits#1 [phi:main::@9->main::@7#1] -- register_copy + //SEG44 main::@7 b7: - //SEG44 [18] (byte~) main::$5 ← (byte) main::row_pressed_bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuxx_band_vbuc1 + //SEG45 [18] (byte~) main::$5 ← (byte) main::row_pressed_bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuxx_band_vbuc1 txa and #$80 - //SEG45 [19] if((byte~) main::$5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8 -- vbuaa_neq_0_then_la1 + //SEG46 [19] if((byte~) main::$5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8 -- vbuaa_neq_0_then_la1 cmp #0 bne b8 - //SEG46 main::@18 - //SEG47 [20] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' -- pbuz1_derefidx_vbuyy=vbuc1 + //SEG47 main::@18 + //SEG48 [20] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' -- pbuz1_derefidx_vbuyy=vbuc1 lda #'0' sta (screen),y - //SEG48 main::@9 + //SEG49 main::@9 b9: - //SEG49 [21] (byte) main::row_pressed_bits#1 ← (byte) main::row_pressed_bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 + //SEG50 [21] (byte) main::row_pressed_bits#1 ← (byte) main::row_pressed_bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_rol_1 txa asl tax - //SEG50 [22] (byte) main::col#1 ← ++ (byte) main::col#2 -- vbuyy=_inc_vbuyy + //SEG51 [22] (byte) main::col#1 ← ++ (byte) main::col#2 -- vbuyy=_inc_vbuyy iny - //SEG51 [23] if((byte) main::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@7 -- vbuyy_neq_vbuc1_then_la1 + //SEG52 [23] if((byte) main::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@7 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b7 - //SEG52 main::@20 - //SEG53 [24] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG53 main::@20 + //SEG54 [24] (byte*) main::screen#1 ← (byte*) main::screen#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda screen clc adc #$28 @@ -3166,14 +3172,14 @@ main: { bcc !+ inc screen+1 !: - //SEG54 [25] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuz1=_inc_vbuz1 + //SEG55 [25] (byte) main::row#1 ← ++ (byte) main::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG55 [26] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG56 [26] if((byte) main::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b6 - //SEG56 main::@21 - //SEG57 [27] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG57 main::@21 + //SEG58 [27] (byte*) main::screen#2 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda screen clc adc #$28 @@ -3181,150 +3187,150 @@ main: { bcc !+ inc screen+1 !: - //SEG58 [28] phi from main::@21 to main::@10 [phi:main::@21->main::@10] - //SEG59 [28] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#0] -- vbuxx=vbuc1 + //SEG59 [28] phi from main::@21 to main::@10 [phi:main::@21->main::@10] + //SEG60 [28] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#0] -- vbuxx=vbuc1 ldx #0 - //SEG60 [28] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#1] -- vbuz1=vbuc1 + //SEG61 [28] phi (byte) main::ch#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@21->main::@10#1] -- vbuz1=vbuc1 txa sta ch - //SEG61 [28] phi from main::@11 to main::@10 [phi:main::@11->main::@10] - //SEG62 [28] phi (byte) main::i#10 = (byte) main::i#6 [phi:main::@11->main::@10#0] -- register_copy - //SEG63 [28] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@11->main::@10#1] -- register_copy - //SEG64 main::@10 + //SEG62 [28] phi from main::@11 to main::@10 [phi:main::@11->main::@10] + //SEG63 [28] phi (byte) main::i#10 = (byte) main::i#6 [phi:main::@11->main::@10#0] -- register_copy + //SEG64 [28] phi (byte) main::ch#2 = (byte) main::ch#1 [phi:main::@11->main::@10#1] -- register_copy + //SEG65 main::@10 b10: - //SEG65 [29] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuyy=vbuz1 + //SEG66 [29] (byte) keyboard_get_keycode::ch#0 ← (byte) main::ch#2 -- vbuyy=vbuz1 ldy ch - //SEG66 [30] call keyboard_get_keycode + //SEG67 [30] call keyboard_get_keycode jsr keyboard_get_keycode - //SEG67 [31] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 - //SEG68 main::@29 - //SEG69 [32] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 - //SEG70 [33] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuaa_eq_vbuc1_then_la1 + //SEG68 [31] (byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#0 + //SEG69 main::@29 + //SEG70 [32] (byte) main::key#0 ← (byte) keyboard_get_keycode::return#2 + //SEG71 [33] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) 63) goto main::@11 -- vbuaa_eq_vbuc1_then_la1 cmp #$3f beq b11 - //SEG71 main::@22 - //SEG72 [34] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuyy=vbuaa + //SEG72 main::@22 + //SEG73 [34] (byte) keyboard_key_pressed::key#0 ← (byte) main::key#0 -- vbuyy=vbuaa tay - //SEG73 [35] call keyboard_key_pressed + //SEG74 [35] call keyboard_key_pressed jsr keyboard_key_pressed - //SEG74 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 - //SEG75 main::@30 - //SEG76 [37] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 - //SEG77 [38] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@11 -- vbuaa_eq_0_then_la1 + //SEG75 [36] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 + //SEG76 main::@30 + //SEG77 [37] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2 + //SEG78 [38] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11 - //SEG78 main::@23 - //SEG79 [39] *((byte*) main::screen#2 + (byte) main::i#10) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuxx=vbuz2 + //SEG79 main::@23 + //SEG80 [39] *((byte*) main::screen#2 + (byte) main::i#10) ← (byte) main::ch#2 -- pbuz1_derefidx_vbuxx=vbuz2 txa tay lda ch sta (screen),y - //SEG80 [40] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuxx=_inc_vbuxx + //SEG81 [40] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuxx=_inc_vbuxx inx - //SEG81 [41] phi from main::@23 main::@29 main::@30 to main::@11 [phi:main::@23/main::@29/main::@30->main::@11] - //SEG82 [41] phi (byte) main::i#6 = (byte) main::i#1 [phi:main::@23/main::@29/main::@30->main::@11#0] -- register_copy - //SEG83 main::@11 + //SEG82 [41] phi from main::@23 main::@29 main::@30 to main::@11 [phi:main::@23/main::@29/main::@30->main::@11] + //SEG83 [41] phi (byte) main::i#6 = (byte) main::i#1 [phi:main::@23/main::@29/main::@30->main::@11#0] -- register_copy + //SEG84 main::@11 b11: - //SEG84 [42] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 + //SEG85 [42] (byte) main::ch#1 ← ++ (byte) main::ch#2 -- vbuz1=_inc_vbuz1 inc ch - //SEG85 [43] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 + //SEG86 [43] if((byte) main::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@10 -- vbuz1_neq_vbuc1_then_la1 lda ch cmp #$40 bne b10 - //SEG86 [44] phi from main::@11 main::@13 to main::@13 [phi:main::@11/main::@13->main::@13] - //SEG87 [44] phi (byte) main::i#4 = (byte) main::i#6 [phi:main::@11/main::@13->main::@13#0] -- register_copy - //SEG88 main::@13 + //SEG87 [44] phi from main::@11 main::@13 to main::@13 [phi:main::@11/main::@13->main::@13] + //SEG88 [44] phi (byte) main::i#4 = (byte) main::i#6 [phi:main::@11/main::@13->main::@13#0] -- register_copy + //SEG89 main::@13 b13: - //SEG89 [45] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuxx=vbuc1 + //SEG90 [45] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' -- pbuz1_derefidx_vbuxx=vbuc1 txa tay lda #' ' sta (screen),y - //SEG90 [46] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx + //SEG91 [46] (byte) main::i#2 ← ++ (byte) main::i#4 -- vbuxx=_inc_vbuxx inx - //SEG91 [47] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@13 -- vbuxx_lt_vbuc1_then_la1 + //SEG92 [47] if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@13 -- vbuxx_lt_vbuc1_then_la1 cpx #5 bcc b13 jmp b5 - //SEG92 main::@8 + //SEG93 main::@8 b8: - //SEG93 [48] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' -- pbuz1_derefidx_vbuyy=vbuc1 + //SEG94 [48] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '1' -- pbuz1_derefidx_vbuyy=vbuc1 lda #'1' sta (screen),y jmp b9 } -//SEG94 keyboard_key_pressed +//SEG95 keyboard_key_pressed // Determines whether a specific key is currently pressed by accessing the matrix directly // The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7) // All keys exist as as KEY_XXX constants. // Returns zero if the key is not pressed and a non-zero value if the key is currently pressed keyboard_key_pressed: { .label colidx = 5 - //SEG95 [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuyy_band_vbuc1 + //SEG96 [49] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuyy_band_vbuc1 tya and #7 sta colidx - //SEG96 [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_ror_3 + //SEG97 [50] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuyy_ror_3 tya lsr lsr lsr - //SEG97 [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa + //SEG98 [51] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 -- vbuyy=vbuaa tay - //SEG98 [52] call keyboard_matrix_read - //SEG99 [57] phi from keyboard_key_pressed to keyboard_matrix_read [phi:keyboard_key_pressed->keyboard_matrix_read] - //SEG100 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#0 [phi:keyboard_key_pressed->keyboard_matrix_read#0] -- register_copy + //SEG99 [52] call keyboard_matrix_read + //SEG100 [57] phi from keyboard_key_pressed to keyboard_matrix_read [phi:keyboard_key_pressed->keyboard_matrix_read] + //SEG101 [57] phi (byte) keyboard_matrix_read::rowid#2 = (byte) keyboard_matrix_read::rowid#0 [phi:keyboard_key_pressed->keyboard_matrix_read#0] -- register_copy jsr keyboard_matrix_read - //SEG101 [53] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 - //SEG102 keyboard_key_pressed::@2 - //SEG103 [54] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 - //SEG104 [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 + //SEG102 [53] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG103 keyboard_key_pressed::@2 + //SEG104 [54] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 + //SEG105 [55] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 ldy colidx and keyboard_matrix_col_bitmask,y - //SEG105 keyboard_key_pressed::@return - //SEG106 [56] return + //SEG106 keyboard_key_pressed::@return + //SEG107 [56] return rts } -//SEG107 keyboard_matrix_read +//SEG108 keyboard_matrix_read // Read a single row of the keyboard matrix // The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs. // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. keyboard_matrix_read: { - //SEG108 [58] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuyy + //SEG109 [58] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#2) -- _deref_pbuc1=pbuc2_derefidx_vbuyy lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG109 [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG110 [59] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG110 keyboard_matrix_read::@return - //SEG111 [60] return + //SEG111 keyboard_matrix_read::@return + //SEG112 [60] return rts } -//SEG112 keyboard_get_keycode +//SEG113 keyboard_get_keycode // Get the keycode corresponding to a specific screen code character // ch is the character to get the key code for ($00-$3f) // Returns the key code corresponding to the passed character. Only characters with a non-shifted key are handled. // If there is no non-shifted key representing the char $3f is returned (representing RUN/STOP) . keyboard_get_keycode: { - //SEG113 [61] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG114 [61] (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes#0 + (byte) keyboard_get_keycode::ch#0) -- vbuaa=pbuc1_derefidx_vbuyy lda keyboard_char_keycodes,y - //SEG114 keyboard_get_keycode::@return - //SEG115 [62] return + //SEG115 keyboard_get_keycode::@return + //SEG116 [62] return rts } -//SEG116 keyboard_init +//SEG117 keyboard_init // Initialize keyboard reading by setting CIA#$ Data Direction Registers keyboard_init: { - //SEG117 [63] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG118 [63] *((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 - //SEG118 [64] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG119 [64] *((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 - //SEG119 keyboard_init::@return - //SEG120 [65] return + //SEG120 keyboard_init::@return + //SEG121 [65] return rts } // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) diff --git a/src/test/ref/test-lohiconst.asm b/src/test/ref/test-lohiconst.asm index 89fa1cc1e..224a03b08 100644 --- a/src/test/ref/test-lohiconst.asm +++ b/src/test/ref/test-lohiconst.asm @@ -1,7 +1,7 @@ +// PI in u[4.28] format .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // PI in u[4.28] format .const PI_u4f28 = $3243f6a9 main: { .label SCREEN = $400 diff --git a/src/test/ref/test-lohiconst.log b/src/test/ref/test-lohiconst.log index bb654a011..a8c27f95e 100644 --- a/src/test/ref/test-lohiconst.log +++ b/src/test/ref/test-lohiconst.log @@ -120,46 +120,47 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// PI in u[4.28] format +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // PI in u[4.28] format +//SEG2 Global Constants & labels .const PI_u4f28 = $3243f6a9 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label SCREEN = $400 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← >>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← >>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>PI_u4f28>>$10 sta SCREEN - //SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>$10 sta SCREEN+1 - //SEG11 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>PI_u4f28&$ffff sta SCREEN+2 - //SEG12 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← <<(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← <<(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label SCREEN = $400 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← >>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← >>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>PI_u4f28>>$10 sta SCREEN - //SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>$10 sta SCREEN+1 - //SEG11 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>PI_u4f28&$ffff sta SCREEN+2 - //SEG12 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← <<(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← <<(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .label SCREEN = $400 - //SEG9 [4] *((const byte*) main::SCREEN#0) ← >>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::SCREEN#0) ← >>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>PI_u4f28>>$10 sta SCREEN - //SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>$10 sta SCREEN+1 - //SEG11 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #>PI_u4f28&$ffff sta SCREEN+2 - //SEG12 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← <<(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← <<(const dword) PI_u4f28#0 -- _deref_pbuc1=vbuc2 lda #@20] +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] b20_from_bbegin: jmp b20 -//SEG4 @20 +//SEG5 @20 b20: -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] main_from_b20: jsr main -//SEG7 [3] phi from @20 to @end [phi:@20->@end] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] bend_from_b20: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _1 = $10 .label _2 = $12 @@ -1136,23 +1137,23 @@ main: { .label dw2 = $16 .label dw = 2 .label dw2_10 = $20 - //SEG10 [5] call print_cls - //SEG11 [79] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG13 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [6] phi (byte*) print_char_cursor#69 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) print_char_cursor#69 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG15 [6] phi (dword) main::dw#10 = (dword/signed dword) 305419896 [phi:main->main::@1#2] -- vduz1=vduc1 + //SEG16 [6] phi (dword) main::dw#10 = (dword/signed dword) 305419896 [phi:main->main::@1#2] -- vduz1=vduc1 lda #<$12345678 sta dw lda #>$12345678 @@ -1162,19 +1163,19 @@ main: { lda #>$12345678>>$10 sta dw+3 jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG18 [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 + //SEG19 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG19 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 + //SEG20 [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 @@ -1182,7 +1183,7 @@ main: { lda _2+1 adc #>$1111 sta _32+1 - //SEG20 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG21 [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 @@ -1191,17 +1192,17 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG21 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 + //SEG22 [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 + //SEG23 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG23 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 + //SEG24 [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 @@ -1209,7 +1210,7 @@ main: { lda _5+1 adc #>$1111 sta _33+1 - //SEG24 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz2_setlo_vwuz3 + //SEG25 [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 @@ -1218,7 +1219,7 @@ main: { sta dw2_10+2 lda dw2+3 sta dw2_10+3 - //SEG25 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 -- vduz1=vduz2 + //SEG26 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 -- vduz1=vduz2 lda dw2_10 sta print_dword.dw lda dw2_10+1 @@ -1227,195 +1228,195 @@ main: { sta print_dword.dw+2 lda dw2_10+3 sta print_dword.dw+3 - //SEG26 [16] call print_dword + //SEG27 [16] call print_dword jsr print_dword - //SEG27 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG28 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG28 main::@4 + //SEG29 main::@4 b4: - //SEG29 [18] call print_char - //SEG30 [64] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG30 [18] call print_char + //SEG31 [64] phi from main::@4 to print_char [phi:main::@4->print_char] print_char_from_b4: - //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 + //SEG32 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG33 [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 - //SEG33 main::@5 + //SEG34 main::@5 b5: - //SEG34 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG35 [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 - //SEG35 [20] call print_word - //SEG36 [68] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG36 [20] call print_word + //SEG37 [68] phi from main::@5 to print_word [phi:main::@5->print_word] print_word_from_b5: - //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 + //SEG38 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG39 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //SEG39 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG40 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG40 main::@6 + //SEG41 main::@6 b6: - //SEG41 [22] call print_char - //SEG42 [64] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG42 [22] call print_char + //SEG43 [64] phi from main::@6 to print_char [phi:main::@6->print_char] print_char_from_b6: - //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 + //SEG44 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG45 [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 - //SEG45 main::@7 + //SEG46 main::@7 b7: - //SEG46 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG47 [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 - //SEG47 [24] call print_word - //SEG48 [68] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG48 [24] call print_word + //SEG49 [68] phi from main::@7 to print_word [phi:main::@7->print_word] print_word_from_b7: - //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 + //SEG50 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG51 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //SEG51 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG52 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG52 main::@8 + //SEG53 main::@8 b8: - //SEG53 [26] call print_char - //SEG54 [64] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG54 [26] call print_char + //SEG55 [64] phi from main::@8 to print_char [phi:main::@8->print_char] print_char_from_b8: - //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 + //SEG56 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG57 [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 - //SEG57 main::@9 + //SEG58 main::@9 b9: - //SEG58 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG59 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2_10+2 sta _15 lda dw2_10+3 sta _15+1 - //SEG59 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuz1=_hi_vwuz2 + //SEG60 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuz1=_hi_vwuz2 lda _15+1 sta print_byte.b - //SEG60 [29] call print_byte - //SEG61 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG61 [29] call print_byte + //SEG62 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] print_byte_from_b9: - //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 + //SEG63 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG64 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //SEG64 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG65 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG65 main::@10 + //SEG66 main::@10 b10: - //SEG66 [31] call print_char - //SEG67 [64] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG67 [31] call print_char + //SEG68 [64] phi from main::@10 to print_char [phi:main::@10->print_char] print_char_from_b10: - //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 + //SEG69 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG70 [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 - //SEG70 main::@11 + //SEG71 main::@11 b11: - //SEG71 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG72 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2_10+2 sta _19 lda dw2_10+3 sta _19+1 - //SEG72 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuz1=_lo_vwuz2 + //SEG73 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuz1=_lo_vwuz2 lda _19 sta print_byte.b - //SEG73 [34] call print_byte - //SEG74 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG74 [34] call print_byte + //SEG75 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] print_byte_from_b11: - //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 + //SEG76 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG77 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //SEG77 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG78 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG78 main::@12 + //SEG79 main::@12 b12: - //SEG79 [36] call print_char - //SEG80 [64] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG80 [36] call print_char + //SEG81 [64] phi from main::@12 to print_char [phi:main::@12->print_char] print_char_from_b12: - //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 + //SEG82 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG83 [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 - //SEG83 main::@13 + //SEG84 main::@13 b13: - //SEG84 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG85 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2_10 sta _23 lda dw2_10+1 sta _23+1 - //SEG85 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuz1=_hi_vwuz2 + //SEG86 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuz1=_hi_vwuz2 lda _23+1 sta print_byte.b - //SEG86 [39] call print_byte - //SEG87 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG87 [39] call print_byte + //SEG88 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] print_byte_from_b13: - //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 + //SEG89 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG90 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //SEG90 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG91 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: jmp b14 - //SEG91 main::@14 + //SEG92 main::@14 b14: - //SEG92 [41] call print_char - //SEG93 [64] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG93 [41] call print_char + //SEG94 [64] phi from main::@14 to print_char [phi:main::@14->print_char] print_char_from_b14: - //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 + //SEG95 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG96 [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 - //SEG96 main::@15 + //SEG97 main::@15 b15: - //SEG97 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG98 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2_10 sta _27 lda dw2_10+1 sta _27+1 - //SEG98 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuz1=_lo_vwuz2 + //SEG99 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuz1=_lo_vwuz2 lda _27 sta print_byte.b - //SEG99 [44] call print_byte - //SEG100 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG100 [44] call print_byte + //SEG101 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] print_byte_from_b15: - //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 + //SEG102 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG103 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //SEG103 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG104 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG104 main::@16 + //SEG105 main::@16 b16: - //SEG105 [46] call print_ln - //SEG106 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] + //SEG106 [46] call print_ln + //SEG107 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] print_ln_from_b16: jsr print_ln jmp b17 - //SEG107 main::@17 + //SEG108 main::@17 b17: - //SEG108 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG109 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -1424,7 +1425,7 @@ main: { bne !+ inc dw+3 !: - //SEG109 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG110 [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 @@ -1438,35 +1439,35 @@ main: { cmp #<$12345690 bne b18 jmp breturn - //SEG110 main::@return + //SEG111 main::@return breturn: - //SEG111 [49] return + //SEG112 [49] return rts - //SEG112 main::@18 + //SEG113 main::@18 b18: - //SEG113 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG114 [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 - //SEG114 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG115 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //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 + //SEG116 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG117 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG118 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG118 print_ln +//SEG119 print_ln // Print a newline print_ln: { - //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 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: - //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 [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 - //SEG121 print_ln::@1 + //SEG122 print_ln::@1 b1: - //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 + //SEG123 [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 @@ -1474,7 +1475,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG123 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG124 [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 @@ -1484,170 +1485,170 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG124 print_ln::@return + //SEG125 print_ln::@return breturn: - //SEG125 [55] return + //SEG126 [55] return rts } -//SEG126 print_byte +//SEG127 print_byte // Print a byte as HEX print_byte: { .label _0 = $30 .label _2 = $31 .label b = 8 - //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 + //SEG128 [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 - //SEG128 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG129 [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 - //SEG129 [59] call print_char - //SEG130 [64] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG130 [59] call print_char + //SEG131 [64] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //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 + //SEG132 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG133 [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 - //SEG133 print_byte::@1 + //SEG134 print_byte::@1 b1: - //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 + //SEG135 [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 - //SEG135 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG136 [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 - //SEG136 [62] call print_char - //SEG137 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG137 [62] call print_char + //SEG138 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //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 + //SEG139 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG140 [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 - //SEG140 print_byte::@return + //SEG141 print_byte::@return breturn: - //SEG141 [63] return + //SEG142 [63] return rts } -//SEG142 print_char +//SEG143 print_char // Print a single char print_char: { .label ch = 9 - //SEG143 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuz2 + //SEG144 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG144 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG145 [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 - //SEG145 print_char::@return + //SEG146 print_char::@return breturn: - //SEG146 [67] return + //SEG147 [67] return rts } -//SEG147 print_word +//SEG148 print_word // Print a word as HEX print_word: { .label w = $c - //SEG148 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuz1=_hi_vwuz2 + //SEG149 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG149 [70] call print_byte - //SEG150 [56] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG150 [70] call print_byte + //SEG151 [56] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //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 + //SEG152 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG153 [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 - //SEG153 print_word::@1 + //SEG154 print_word::@1 b1: - //SEG154 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuz1=_lo_vwuz2 + //SEG155 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG155 [72] call print_byte - //SEG156 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG156 [72] call print_byte + //SEG157 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //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 + //SEG158 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG159 [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 - //SEG159 print_word::@return + //SEG160 print_word::@return breturn: - //SEG160 [73] return + //SEG161 [73] return rts } -//SEG161 print_dword +//SEG162 print_dword // Print a dword as HEX print_dword: { .label dw = $24 - //SEG162 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG163 [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 - //SEG163 [75] call print_word - //SEG164 [68] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG164 [75] call print_word + //SEG165 [68] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //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 + //SEG166 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG167 [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 - //SEG167 print_dword::@1 + //SEG168 print_dword::@1 b1: - //SEG168 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG169 [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 - //SEG169 [77] call print_word - //SEG170 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG170 [77] call print_word + //SEG171 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //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 + //SEG172 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG173 [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 - //SEG173 print_dword::@return + //SEG174 print_dword::@return breturn: - //SEG174 [78] return + //SEG175 [78] return rts } -//SEG175 print_cls +//SEG176 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $e - //SEG176 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG177 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //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 + //SEG178 [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 - //SEG178 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG179 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG179 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG180 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG180 print_cls::@1 + //SEG181 print_cls::@1 b1: - //SEG181 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG182 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG182 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG183 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG184 [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 @@ -1655,9 +1656,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG184 print_cls::@return + //SEG185 print_cls::@return breturn: - //SEG185 [84] return + //SEG186 [84] return rts } print_hextab: .text "0123456789abcdef" @@ -1786,30 +1787,31 @@ Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ print_word::w#4 print_word::w#2 pr 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 +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_line_cursor = 6 .label print_char_cursor = 8 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] b20_from_bbegin: jmp b20 -//SEG4 @20 +//SEG5 @20 b20: -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] main_from_b20: jsr main -//SEG7 [3] phi from @20 to @end [phi:@20->@end] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] bend_from_b20: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _1 = 6 .label _2 = $a @@ -1823,23 +1825,23 @@ main: { .label _33 = $a .label dw2 = $c .label dw = 2 - //SEG10 [5] call print_cls - //SEG11 [79] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG13 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [6] phi (byte*) print_char_cursor#69 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) print_char_cursor#69 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG15 [6] phi (dword) main::dw#10 = (dword/signed dword) 305419896 [phi:main->main::@1#2] -- vduz1=vduc1 + //SEG16 [6] phi (dword) main::dw#10 = (dword/signed dword) 305419896 [phi:main->main::@1#2] -- vduz1=vduc1 lda #<$12345678 sta dw lda #>$12345678 @@ -1849,19 +1851,19 @@ main: { lda #>$12345678>>$10 sta dw+3 jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG18 [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 + //SEG19 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG19 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG20 [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 @@ -1869,7 +1871,7 @@ main: { lda _32+1 adc #>$1111 sta _32+1 - //SEG20 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG21 [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 @@ -1878,17 +1880,17 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG21 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 + //SEG22 [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 + //SEG23 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG23 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG24 [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 @@ -1896,195 +1898,195 @@ main: { lda _33+1 adc #>$1111 sta _33+1 - //SEG24 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 + //SEG25 [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 - //SEG25 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 - //SEG26 [16] call print_dword + //SEG26 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + //SEG27 [16] call print_dword jsr print_dword - //SEG27 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG28 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG28 main::@4 + //SEG29 main::@4 b4: - //SEG29 [18] call print_char - //SEG30 [64] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG30 [18] call print_char + //SEG31 [64] phi from main::@4 to print_char [phi:main::@4->print_char] print_char_from_b4: - //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 + //SEG32 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG33 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b5 - //SEG33 main::@5 + //SEG34 main::@5 b5: - //SEG34 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG35 [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 - //SEG35 [20] call print_word - //SEG36 [68] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG36 [20] call print_word + //SEG37 [68] phi from main::@5 to print_word [phi:main::@5->print_word] print_word_from_b5: - //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 + //SEG38 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG39 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //SEG39 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG40 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG40 main::@6 + //SEG41 main::@6 b6: - //SEG41 [22] call print_char - //SEG42 [64] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG42 [22] call print_char + //SEG43 [64] phi from main::@6 to print_char [phi:main::@6->print_char] print_char_from_b6: - //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 + //SEG44 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG45 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b7 - //SEG45 main::@7 + //SEG46 main::@7 b7: - //SEG46 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG47 [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 - //SEG47 [24] call print_word - //SEG48 [68] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG48 [24] call print_word + //SEG49 [68] phi from main::@7 to print_word [phi:main::@7->print_word] print_word_from_b7: - //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 + //SEG50 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG51 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //SEG51 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG52 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG52 main::@8 + //SEG53 main::@8 b8: - //SEG53 [26] call print_char - //SEG54 [64] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG54 [26] call print_char + //SEG55 [64] phi from main::@8 to print_char [phi:main::@8->print_char] print_char_from_b8: - //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 + //SEG56 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG57 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b9 - //SEG57 main::@9 + //SEG58 main::@9 b9: - //SEG58 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG59 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _15 lda dw2+3 sta _15+1 - //SEG59 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 + //SEG60 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 lda _15+1 tax - //SEG60 [29] call print_byte - //SEG61 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG61 [29] call print_byte + //SEG62 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] print_byte_from_b9: - //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 + //SEG63 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG64 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //SEG64 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG65 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG65 main::@10 + //SEG66 main::@10 b10: - //SEG66 [31] call print_char - //SEG67 [64] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG67 [31] call print_char + //SEG68 [64] phi from main::@10 to print_char [phi:main::@10->print_char] print_char_from_b10: - //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 + //SEG69 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG70 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b11 - //SEG70 main::@11 + //SEG71 main::@11 b11: - //SEG71 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG72 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _19 lda dw2+3 sta _19+1 - //SEG72 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 + //SEG73 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 lda _19 tax - //SEG73 [34] call print_byte - //SEG74 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG74 [34] call print_byte + //SEG75 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] print_byte_from_b11: - //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 + //SEG76 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG77 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //SEG77 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG78 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG78 main::@12 + //SEG79 main::@12 b12: - //SEG79 [36] call print_char - //SEG80 [64] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG80 [36] call print_char + //SEG81 [64] phi from main::@12 to print_char [phi:main::@12->print_char] print_char_from_b12: - //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 + //SEG82 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG83 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b13 - //SEG83 main::@13 + //SEG84 main::@13 b13: - //SEG84 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG85 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _23 lda dw2+1 sta _23+1 - //SEG85 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 + //SEG86 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 lda _23+1 tax - //SEG86 [39] call print_byte - //SEG87 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG87 [39] call print_byte + //SEG88 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] print_byte_from_b13: - //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 + //SEG89 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG90 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //SEG90 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG91 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: jmp b14 - //SEG91 main::@14 + //SEG92 main::@14 b14: - //SEG92 [41] call print_char - //SEG93 [64] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG93 [41] call print_char + //SEG94 [64] phi from main::@14 to print_char [phi:main::@14->print_char] print_char_from_b14: - //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 + //SEG95 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG96 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b15 - //SEG96 main::@15 + //SEG97 main::@15 b15: - //SEG97 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG98 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _27 lda dw2+1 sta _27+1 - //SEG98 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 + //SEG99 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 lda _27 tax - //SEG99 [44] call print_byte - //SEG100 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG100 [44] call print_byte + //SEG101 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] print_byte_from_b15: - //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 + //SEG102 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG103 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //SEG103 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG104 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG104 main::@16 + //SEG105 main::@16 b16: - //SEG105 [46] call print_ln - //SEG106 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] + //SEG106 [46] call print_ln + //SEG107 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] print_ln_from_b16: jsr print_ln jmp b17 - //SEG107 main::@17 + //SEG108 main::@17 b17: - //SEG108 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG109 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -2093,7 +2095,7 @@ main: { bne !+ inc dw+3 !: - //SEG109 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG110 [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 @@ -2107,35 +2109,35 @@ main: { cmp #<$12345690 bne b18 jmp breturn - //SEG110 main::@return + //SEG111 main::@return breturn: - //SEG111 [49] return + //SEG112 [49] return rts - //SEG112 main::@18 + //SEG113 main::@18 b18: - //SEG113 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG114 [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 - //SEG114 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG115 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //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 + //SEG116 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG117 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG118 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG118 print_ln +//SEG119 print_ln // Print a newline print_ln: { - //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 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: - //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 [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 - //SEG121 print_ln::@1 + //SEG122 print_ln::@1 b1: - //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 + //SEG123 [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 @@ -2143,7 +2145,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG123 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG124 [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 @@ -2153,161 +2155,161 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG124 print_ln::@return + //SEG125 print_ln::@return breturn: - //SEG125 [55] return + //SEG126 [55] return rts } -//SEG126 print_byte +//SEG127 print_byte // Print a byte as HEX print_byte: { - //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 + //SEG128 [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 - //SEG128 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG129 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG129 [59] call print_char - //SEG130 [64] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG130 [59] call print_char + //SEG131 [64] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //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 + //SEG132 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG133 [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 - //SEG133 print_byte::@1 + //SEG134 print_byte::@1 b1: - //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 + //SEG135 [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 - //SEG135 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG136 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG136 [62] call print_char - //SEG137 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG137 [62] call print_char + //SEG138 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //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 + //SEG139 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG140 [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 - //SEG140 print_byte::@return + //SEG141 print_byte::@return breturn: - //SEG141 [63] return + //SEG142 [63] return rts } -//SEG142 print_char +//SEG143 print_char // Print a single char print_char: { - //SEG143 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa + //SEG144 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG144 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG145 [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 - //SEG145 print_char::@return + //SEG146 print_char::@return breturn: - //SEG146 [67] return + //SEG147 [67] return rts } -//SEG147 print_word +//SEG148 print_word // Print a word as HEX print_word: { .label w = $a - //SEG148 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 + //SEG149 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG149 [70] call print_byte - //SEG150 [56] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG150 [70] call print_byte + //SEG151 [56] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //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 + //SEG152 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG153 [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 - //SEG153 print_word::@1 + //SEG154 print_word::@1 b1: - //SEG154 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 + //SEG155 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 lda w tax - //SEG155 [72] call print_byte - //SEG156 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG156 [72] call print_byte + //SEG157 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //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 + //SEG158 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG159 [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 - //SEG159 print_word::@return + //SEG160 print_word::@return breturn: - //SEG160 [73] return + //SEG161 [73] return rts } -//SEG161 print_dword +//SEG162 print_dword // Print a dword as HEX print_dword: { .label dw = $c - //SEG162 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG163 [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 - //SEG163 [75] call print_word - //SEG164 [68] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG164 [75] call print_word + //SEG165 [68] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //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 + //SEG166 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG167 [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 - //SEG167 print_dword::@1 + //SEG168 print_dword::@1 b1: - //SEG168 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG169 [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 - //SEG169 [77] call print_word - //SEG170 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG170 [77] call print_word + //SEG171 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //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 + //SEG172 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG173 [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 - //SEG173 print_dword::@return + //SEG174 print_dword::@return breturn: - //SEG174 [78] return + //SEG175 [78] return rts } -//SEG175 print_cls +//SEG176 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 6 - //SEG176 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG177 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //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 + //SEG178 [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 - //SEG178 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG179 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG179 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG180 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG180 print_cls::@1 + //SEG181 print_cls::@1 b1: - //SEG181 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG182 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG182 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG183 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG184 [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 @@ -2315,9 +2317,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG184 print_cls::@return + //SEG185 print_cls::@return breturn: - //SEG185 [84] return + //SEG186 [84] return rts } print_hextab: .text "0123456789abcdef" @@ -2541,21 +2543,22 @@ reg byte a [ print_byte::$2 ] FINAL ASSEMBLER Score: 7674 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label print_line_cursor = 6 .label print_char_cursor = 8 -//SEG2 @begin -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] -//SEG4 @20 -//SEG5 [2] call main -//SEG6 [4] phi from @20 to main [phi:@20->main] -//SEG7 [3] phi from @20 to @end [phi:@20->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG5 @20 +//SEG6 [2] call main +//SEG7 [4] phi from @20 to main [phi:@20->main] +//SEG8 [3] phi from @20 to @end [phi:@20->@end] +//SEG9 @end +//SEG10 main main: { .label _1 = 6 .label _2 = $a @@ -2569,21 +2572,21 @@ main: { .label _33 = $a .label dw2 = $c .label dw = 2 - //SEG10 [5] call print_cls - //SEG11 [79] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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 + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [6] phi (byte*) print_char_cursor#69 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG15 [6] phi (byte*) print_char_cursor#69 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG15 [6] phi (dword) main::dw#10 = (dword/signed dword) 305419896 [phi:main->main::@1#2] -- vduz1=vduc1 + //SEG16 [6] phi (dword) main::dw#10 = (dword/signed dword) 305419896 [phi:main->main::@1#2] -- vduz1=vduc1 lda #<$12345678 sta dw lda #>$12345678 @@ -2592,19 +2595,19 @@ main: { sta dw+2 lda #>$12345678>>$10 sta dw+3 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG18 [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 + //SEG19 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG19 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG20 [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 @@ -2612,7 +2615,7 @@ main: { lda _32+1 adc #>$1111 sta _32+1 - //SEG20 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG21 [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 @@ -2621,17 +2624,17 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG21 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 + //SEG22 [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 + //SEG23 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG23 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG24 [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 @@ -2639,145 +2642,145 @@ main: { lda _33+1 adc #>$1111 sta _33+1 - //SEG24 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 + //SEG25 [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 - //SEG25 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 - //SEG26 [16] call print_dword + //SEG26 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + //SEG27 [16] call print_dword jsr print_dword - //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 + //SEG28 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG29 main::@4 + //SEG30 [18] call print_char + //SEG31 [64] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG32 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG33 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG33 main::@5 - //SEG34 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG34 main::@5 + //SEG35 [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 - //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 + //SEG36 [20] call print_word + //SEG37 [68] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG38 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG39 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //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 + //SEG40 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG41 main::@6 + //SEG42 [22] call print_char + //SEG43 [64] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG44 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG45 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG45 main::@7 - //SEG46 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG46 main::@7 + //SEG47 [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 - //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 + //SEG48 [24] call print_word + //SEG49 [68] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG50 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG51 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //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 + //SEG52 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG53 main::@8 + //SEG54 [26] call print_char + //SEG55 [64] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG56 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG57 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG57 main::@9 - //SEG58 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG58 main::@9 + //SEG59 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _15 lda dw2+3 sta _15+1 - //SEG59 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 + //SEG60 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 tax - //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 + //SEG61 [29] call print_byte + //SEG62 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG63 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG64 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //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 + //SEG65 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG66 main::@10 + //SEG67 [31] call print_char + //SEG68 [64] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG69 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG70 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG70 main::@11 - //SEG71 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG71 main::@11 + //SEG72 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _19 lda dw2+3 sta _19+1 - //SEG72 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 + //SEG73 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 lda _19 tax - //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 + //SEG74 [34] call print_byte + //SEG75 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG76 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG77 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //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 + //SEG78 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG79 main::@12 + //SEG80 [36] call print_char + //SEG81 [64] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG82 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG83 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG83 main::@13 - //SEG84 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG84 main::@13 + //SEG85 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _23 lda dw2+1 sta _23+1 - //SEG85 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 + //SEG86 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 tax - //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 + //SEG87 [39] call print_byte + //SEG88 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG89 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG90 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //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 + //SEG91 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG92 main::@14 + //SEG93 [41] call print_char + //SEG94 [64] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG95 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG96 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG96 main::@15 - //SEG97 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG97 main::@15 + //SEG98 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _27 lda dw2+1 sta _27+1 - //SEG98 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 + //SEG99 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 lda _27 tax - //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 + //SEG100 [44] call print_byte + //SEG101 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG102 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG103 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //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] + //SEG104 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG105 main::@16 + //SEG106 [46] call print_ln + //SEG107 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] jsr print_ln - //SEG107 main::@17 - //SEG108 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG108 main::@17 + //SEG109 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -2786,7 +2789,7 @@ main: { bne !+ inc dw+3 !: - //SEG109 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG110 [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 @@ -2799,30 +2802,30 @@ main: { lda dw cmp #<$12345690 bne b18 - //SEG110 main::@return - //SEG111 [49] return + //SEG111 main::@return + //SEG112 [49] return rts - //SEG112 main::@18 + //SEG113 main::@18 b18: - //SEG113 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG114 [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 - //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 + //SEG115 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG116 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG117 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG118 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG118 print_ln +//SEG119 print_ln // Print a newline print_ln: { - //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 + //SEG120 [52] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG121 [52] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG122 print_ln::@1 b1: - //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 + //SEG123 [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 @@ -2830,7 +2833,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG123 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG124 [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 @@ -2839,144 +2842,144 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG124 print_ln::@return - //SEG125 [55] return + //SEG125 print_ln::@return + //SEG126 [55] return rts } -//SEG126 print_byte +//SEG127 print_byte // Print a byte as HEX print_byte: { - //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 + //SEG128 [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 - //SEG128 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG129 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //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 + //SEG130 [59] call print_char + //SEG131 [64] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG132 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG133 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //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 + //SEG134 print_byte::@1 + //SEG135 [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 - //SEG135 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG136 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //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 + //SEG137 [62] call print_char + //SEG138 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG139 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG140 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG140 print_byte::@return - //SEG141 [63] return + //SEG141 print_byte::@return + //SEG142 [63] return rts } -//SEG142 print_char +//SEG143 print_char // Print a single char print_char: { - //SEG143 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa + //SEG144 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG144 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG145 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG145 print_char::@return - //SEG146 [67] return + //SEG146 print_char::@return + //SEG147 [67] return rts } -//SEG147 print_word +//SEG148 print_word // Print a word as HEX print_word: { .label w = $a - //SEG148 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 + //SEG149 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 lda w+1 tax - //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 + //SEG150 [70] call print_byte + //SEG151 [56] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG152 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG153 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG153 print_word::@1 - //SEG154 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 + //SEG154 print_word::@1 + //SEG155 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 lda w tax - //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 + //SEG156 [72] call print_byte + //SEG157 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG158 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG159 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG159 print_word::@return - //SEG160 [73] return + //SEG160 print_word::@return + //SEG161 [73] return rts } -//SEG161 print_dword +//SEG162 print_dword // Print a dword as HEX print_dword: { .label dw = $c - //SEG162 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG163 [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 - //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 + //SEG164 [75] call print_word + //SEG165 [68] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG166 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG167 [68] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word - //SEG167 print_dword::@1 - //SEG168 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG168 print_dword::@1 + //SEG169 [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 - //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 + //SEG170 [77] call print_word + //SEG171 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG172 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG173 [68] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word - //SEG173 print_dword::@return - //SEG174 [78] return + //SEG174 print_dword::@return + //SEG175 [78] return rts } -//SEG175 print_cls +//SEG176 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 6 - //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 + //SEG177 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG178 [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 - //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 + //SEG179 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG180 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG181 print_cls::@1 b1: - //SEG181 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG182 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG182 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG183 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG184 [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 - //SEG184 print_cls::@return - //SEG185 [84] return + //SEG185 print_cls::@return + //SEG186 [84] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-multiply-16bit.asm b/src/test/ref/test-multiply-16bit.asm index f7f6fb8e3..d1f7e1843 100644 --- a/src/test/ref/test-multiply-16bit.asm +++ b/src/test/ref/test-multiply-16bit.asm @@ -1,3 +1,4 @@ +// Test the fast multiplication library .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" @@ -1122,9 +1123,6 @@ print_cls: { rts } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @40] +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] b40_from_bbegin: jmp b40 -//SEG4 @40 +//SEG5 @40 b40: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @40 to @end [phi:@40->@end] +//SEG7 [3] phi from @40 to @end [phi:@40->@end] bend_from_b40: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL - //SEG10 [5] call print_cls - //SEG11 [308] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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] + //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 mulf_init - //SEG15 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [7] call mulf_init + //SEG16 [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] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call mul16u_compare - //SEG19 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG19 [9] call mul16u_compare + //SEG20 [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] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [11] call mul16s_compare + //SEG23 [11] call mul16s_compare jsr mul16s_compare jmp breturn - //SEG23 main::@return + //SEG24 main::@return breturn: - //SEG24 [12] return + //SEG25 [12] return rts } -//SEG25 mul16s_compare +//SEG26 mul16s_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16s_compare: { .label a = 3 @@ -4788,64 +4790,64 @@ mul16s_compare: { .label j = 7 .label i = 2 .label ok = 8 - //SEG26 [13] (byte*~) print_char_cursor#176 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG27 [13] (byte*~) print_char_cursor#176 ← (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 - //SEG27 [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1] + //SEG28 [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1] b1_from_mul16s_compare: - //SEG28 [14] phi (byte) mul16s_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 + //SEG29 [14] phi (byte) mul16s_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG29 [14] phi (signed word) mul16s_compare::b#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 + //SEG30 [14] phi (signed word) mul16s_compare::b#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 lda #<-$7fff sta b lda #>-$7fff sta b+1 - //SEG30 [14] phi (signed word) mul16s_compare::a#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 + //SEG31 [14] phi (signed word) mul16s_compare::a#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 lda #<-$7fff sta a lda #>-$7fff sta a+1 - //SEG31 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#176 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + //SEG32 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#176 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy jmp b1 - //SEG32 [14] phi from mul16s_compare::@10 to mul16s_compare::@1 [phi:mul16s_compare::@10->mul16s_compare::@1] + //SEG33 [14] phi from mul16s_compare::@10 to mul16s_compare::@1 [phi:mul16s_compare::@10->mul16s_compare::@1] b1_from_b10: - //SEG33 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@10->mul16s_compare::@1#0] -- register_copy - //SEG34 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@10->mul16s_compare::@1#1] -- register_copy - //SEG35 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@10->mul16s_compare::@1#2] -- register_copy - //SEG36 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@10->mul16s_compare::@1#3] -- register_copy + //SEG34 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@10->mul16s_compare::@1#0] -- register_copy + //SEG35 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@10->mul16s_compare::@1#1] -- register_copy + //SEG36 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@10->mul16s_compare::@1#2] -- register_copy + //SEG37 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@10->mul16s_compare::@1#3] -- register_copy jmp b1 - //SEG37 mul16s_compare::@1 + //SEG38 mul16s_compare::@1 b1: - //SEG38 [15] call print_str - //SEG39 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] + //SEG39 [15] call print_str + //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] print_str_from_b1: - //SEG40 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy - //SEG41 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy + //SEG42 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG42 [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2] + //SEG43 [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2] b2_from_b1: - //SEG43 [16] phi (byte) mul16s_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuz1=vbuc1 + //SEG44 [16] phi (byte) mul16s_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG44 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy - //SEG45 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy + //SEG45 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy + //SEG46 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy jmp b2 - //SEG46 [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2] + //SEG47 [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2] b2_from_b5: - //SEG47 [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy - //SEG48 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy - //SEG49 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy + //SEG48 [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy + //SEG49 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy + //SEG50 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy jmp b2 - //SEG50 mul16s_compare::@2 + //SEG51 mul16s_compare::@2 b2: - //SEG51 [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwsz1=vwsz1_plus_vwuc1 + //SEG52 [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwsz1=vwsz1_plus_vwuc1 clc lda a adc #<$d2b @@ -4853,7 +4855,7 @@ mul16s_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG52 [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwsz1=vwsz1_plus_vwuc1 + //SEG53 [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwsz1=vwsz1_plus_vwuc1 clc lda b adc #<$ffd @@ -4861,19 +4863,19 @@ mul16s_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG53 [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 + //SEG54 [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 lda a sta muls16s.a lda a+1 sta muls16s.a+1 - //SEG54 [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 + //SEG55 [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 lda b sta muls16s.b lda b+1 sta muls16s.b+1 - //SEG55 [21] call muls16s + //SEG56 [21] call muls16s jsr muls16s - //SEG56 [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 -- vdsz1=vdsz2 + //SEG57 [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 -- vdsz1=vdsz2 lda muls16s.return sta muls16s.return_2 lda muls16s.return+1 @@ -4883,9 +4885,9 @@ mul16s_compare: { lda muls16s.return+3 sta muls16s.return_2+3 jmp b13 - //SEG57 mul16s_compare::@13 + //SEG58 mul16s_compare::@13 b13: - //SEG58 [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 -- vdsz1=vdsz2 + //SEG59 [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 -- vdsz1=vdsz2 lda muls16s.return_2 sta ms lda muls16s.return_2+1 @@ -4894,19 +4896,19 @@ mul16s_compare: { sta ms+2 lda muls16s.return_2+3 sta ms+3 - //SEG59 [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 + //SEG60 [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 lda a sta mul16s.a lda a+1 sta mul16s.a+1 - //SEG60 [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 + //SEG61 [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 lda b sta mul16s.b lda b+1 sta mul16s.b+1 - //SEG61 [26] call mul16s + //SEG62 [26] call mul16s jsr mul16s - //SEG62 [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 + //SEG63 [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 lda mul16s.return sta mul16s.return_2 lda mul16s.return+1 @@ -4916,9 +4918,9 @@ mul16s_compare: { lda mul16s.return+3 sta mul16s.return_2+3 jmp b14 - //SEG63 mul16s_compare::@14 + //SEG64 mul16s_compare::@14 b14: - //SEG64 [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 + //SEG65 [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 lda mul16s.return_2 sta mn lda mul16s.return_2+1 @@ -4927,19 +4929,19 @@ mul16s_compare: { sta mn+2 lda mul16s.return_2+3 sta mn+3 - //SEG65 [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 + //SEG66 [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 lda a sta mulf16s.a lda a+1 sta mulf16s.a+1 - //SEG66 [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 + //SEG67 [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 lda b sta mulf16s.b lda b+1 sta mulf16s.b+1 - //SEG67 [31] call mulf16s + //SEG68 [31] call mulf16s jsr mulf16s - //SEG68 [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 + //SEG69 [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 lda mulf16s.return sta mulf16s.return_2 lda mulf16s.return+1 @@ -4949,9 +4951,9 @@ mul16s_compare: { lda mulf16s.return+3 sta mulf16s.return_2+3 jmp b15 - //SEG69 mul16s_compare::@15 + //SEG70 mul16s_compare::@15 b15: - //SEG70 [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 -- vdsz1=vdsz2 + //SEG71 [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 -- vdsz1=vdsz2 lda mulf16s.return_2 sta mf lda mulf16s.return_2+1 @@ -4960,7 +4962,7 @@ mul16s_compare: { sta mf+2 lda mulf16s.return_2+3 sta mf+3 - //SEG71 [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 + //SEG72 [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 lda ms cmp mf bne !+ @@ -4974,26 +4976,26 @@ mul16s_compare: { cmp mf+3 beq b3_from_b15 !: - //SEG72 [35] phi from mul16s_compare::@15 to mul16s_compare::@6 [phi:mul16s_compare::@15->mul16s_compare::@6] + //SEG73 [35] phi from mul16s_compare::@15 to mul16s_compare::@6 [phi:mul16s_compare::@15->mul16s_compare::@6] b6_from_b15: jmp b6 - //SEG73 mul16s_compare::@6 + //SEG74 mul16s_compare::@6 b6: - //SEG74 [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3] + //SEG75 [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3] b3_from_b6: - //SEG75 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuz1=vbuc1 + //SEG76 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - //SEG76 [36] phi from mul16s_compare::@15 to mul16s_compare::@3 [phi:mul16s_compare::@15->mul16s_compare::@3] + //SEG77 [36] phi from mul16s_compare::@15 to mul16s_compare::@3 [phi:mul16s_compare::@15->mul16s_compare::@3] b3_from_b15: - //SEG77 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16s_compare::@15->mul16s_compare::@3#0] -- vbuz1=vbuc1 + //SEG78 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16s_compare::@15->mul16s_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 - //SEG78 mul16s_compare::@3 + //SEG79 mul16s_compare::@3 b3: - //SEG79 [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@22 -- vdsz1_eq_vdsz2_then_la1 + //SEG80 [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@22 -- vdsz1_eq_vdsz2_then_la1 lda ms cmp mn bne !+ @@ -5007,35 +5009,35 @@ mul16s_compare: { cmp mn+3 beq b22_from_b3 !: - //SEG80 [38] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4] + //SEG81 [38] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4] b4_from_b3: - //SEG81 [38] phi (byte) mul16s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuz1=vbuc1 + //SEG82 [38] phi (byte) mul16s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - //SEG82 mul16s_compare::@4 + //SEG83 mul16s_compare::@4 b4: - //SEG83 [39] if((byte) mul16s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s_compare::@5 -- vbuz1_neq_0_then_la1 + //SEG84 [39] if((byte) mul16s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b8 - //SEG84 mul16s_compare::@8 + //SEG85 mul16s_compare::@8 b8: - //SEG85 [40] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG86 [40] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG86 [41] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 + //SEG87 [41] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 lda a sta mul16s_error.a lda a+1 sta mul16s_error.a+1 - //SEG87 [42] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 + //SEG88 [42] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 lda b sta mul16s_error.b lda b+1 sta mul16s_error.b+1 - //SEG88 [43] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 -- vdsz1=vdsz2 + //SEG89 [43] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 -- vdsz1=vdsz2 lda ms sta mul16s_error.ms lda ms+1 @@ -5044,7 +5046,7 @@ mul16s_compare: { sta mul16s_error.ms+2 lda ms+3 sta mul16s_error.ms+3 - //SEG89 [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 -- vdsz1=vdsz2 + //SEG90 [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 -- vdsz1=vdsz2 lda mn sta mul16s_error.mn lda mn+1 @@ -5053,7 +5055,7 @@ mul16s_compare: { sta mul16s_error.mn+2 lda mn+3 sta mul16s_error.mn+3 - //SEG90 [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 -- vdsz1=vdsz2 + //SEG91 [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 -- vdsz1=vdsz2 lda mf sta mul16s_error.mf lda mf+1 @@ -5062,96 +5064,96 @@ mul16s_compare: { sta mul16s_error.mf+2 lda mf+3 sta mul16s_error.mf+3 - //SEG91 [46] call mul16s_error - //SEG92 [71] phi from mul16s_compare::@8 to mul16s_error [phi:mul16s_compare::@8->mul16s_error] + //SEG92 [46] call mul16s_error + //SEG93 [71] phi from mul16s_compare::@8 to mul16s_error [phi:mul16s_compare::@8->mul16s_error] mul16s_error_from_b8: jsr mul16s_error jmp breturn - //SEG93 mul16s_compare::@return + //SEG94 mul16s_compare::@return breturn: - //SEG94 [47] return + //SEG95 [47] return rts - //SEG95 mul16s_compare::@5 + //SEG96 mul16s_compare::@5 b5: - //SEG96 [48] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuz1=_inc_vbuz1 + //SEG97 [48] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuz1=_inc_vbuz1 inc j - //SEG97 [49] if((byte) mul16s_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG98 [49] if((byte) mul16s_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$10 bne b2_from_b5 jmp b10 - //SEG98 mul16s_compare::@10 + //SEG99 mul16s_compare::@10 b10: - //SEG99 [50] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG100 [50] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG100 [51] if((byte) mul16s_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG101 [51] if((byte) mul16s_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b10 - //SEG101 [52] phi from mul16s_compare::@10 to mul16s_compare::@11 [phi:mul16s_compare::@10->mul16s_compare::@11] + //SEG102 [52] phi from mul16s_compare::@10 to mul16s_compare::@11 [phi:mul16s_compare::@10->mul16s_compare::@11] b11_from_b10: jmp b11 - //SEG102 mul16s_compare::@11 + //SEG103 mul16s_compare::@11 b11: - //SEG103 [53] call print_ln - //SEG104 [59] phi from mul16s_compare::@11 to print_ln [phi:mul16s_compare::@11->print_ln] + //SEG104 [53] call print_ln + //SEG105 [59] phi from mul16s_compare::@11 to print_ln [phi:mul16s_compare::@11->print_ln] print_ln_from_b11: - //SEG105 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@11->print_ln#0] -- register_copy - //SEG106 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@11->print_ln#1] -- register_copy + //SEG106 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@11->print_ln#0] -- register_copy + //SEG107 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@11->print_ln#1] -- register_copy jsr print_ln jmp b17 - //SEG107 mul16s_compare::@17 + //SEG108 mul16s_compare::@17 b17: - //SEG108 [54] (byte*~) print_char_cursor#185 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG109 [54] (byte*~) print_char_cursor#185 ← (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 - //SEG109 [55] call print_str - //SEG110 [64] phi from mul16s_compare::@17 to print_str [phi:mul16s_compare::@17->print_str] + //SEG110 [55] call print_str + //SEG111 [64] phi from mul16s_compare::@17 to print_str [phi:mul16s_compare::@17->print_str] print_str_from_b17: - //SEG111 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#185 [phi:mul16s_compare::@17->print_str#0] -- register_copy - //SEG112 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG112 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#185 [phi:mul16s_compare::@17->print_str#0] -- register_copy + //SEG113 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG113 [56] phi from mul16s_compare::@17 to mul16s_compare::@18 [phi:mul16s_compare::@17->mul16s_compare::@18] + //SEG114 [56] phi from mul16s_compare::@17 to mul16s_compare::@18 [phi:mul16s_compare::@17->mul16s_compare::@18] b18_from_b17: jmp b18 - //SEG114 mul16s_compare::@18 + //SEG115 mul16s_compare::@18 b18: - //SEG115 [57] call print_ln - //SEG116 [59] phi from mul16s_compare::@18 to print_ln [phi:mul16s_compare::@18->print_ln] + //SEG116 [57] call print_ln + //SEG117 [59] phi from mul16s_compare::@18 to print_ln [phi:mul16s_compare::@18->print_ln] print_ln_from_b18: - //SEG117 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@18->print_ln#0] -- register_copy - //SEG118 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@18->print_ln#1] -- register_copy + //SEG118 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@18->print_ln#0] -- register_copy + //SEG119 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG119 [58] phi from mul16s_compare::@3 to mul16s_compare::@22 [phi:mul16s_compare::@3->mul16s_compare::@22] + //SEG120 [58] phi from mul16s_compare::@3 to mul16s_compare::@22 [phi:mul16s_compare::@3->mul16s_compare::@22] b22_from_b3: jmp b22 - //SEG120 mul16s_compare::@22 + //SEG121 mul16s_compare::@22 b22: - //SEG121 [38] phi from mul16s_compare::@22 to mul16s_compare::@4 [phi:mul16s_compare::@22->mul16s_compare::@4] + //SEG122 [38] phi from mul16s_compare::@22 to mul16s_compare::@4 [phi:mul16s_compare::@22->mul16s_compare::@4] b4_from_b22: - //SEG122 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy + //SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy jmp b4 str: .text ".@" str1: .text "signed word multiply results match!@" } -//SEG123 print_ln +//SEG124 print_ln // Print a newline print_ln: { - //SEG124 [60] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG125 [60] 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: - //SEG125 [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG126 [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG126 print_ln::@1 + //SEG127 print_ln::@1 b1: - //SEG127 [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG128 [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -5159,7 +5161,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG128 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5169,129 +5171,129 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG129 print_ln::@return + //SEG130 print_ln::@return breturn: - //SEG130 [63] return + //SEG131 [63] return rts } -//SEG131 print_str +//SEG132 print_str // Print a zero-terminated string print_str: { .label str = $b - //SEG132 [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG133 [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG133 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG134 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG134 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG135 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG135 print_str::@1 + //SEG136 print_str::@1 b1: - //SEG136 [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG137 [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG137 print_str::@return + //SEG138 print_str::@return breturn: - //SEG138 [67] return + //SEG139 [67] return rts - //SEG139 print_str::@2 + //SEG140 print_str::@2 b2: - //SEG140 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + //SEG141 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG141 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG142 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 + //SEG143 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG143 mul16s_error +//SEG144 mul16s_error mul16s_error: { .label a = $7e .label b = $80 .label ms = $82 .label mn = $86 .label mf = $8a - //SEG144 [72] call print_str - //SEG145 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] + //SEG145 [72] call print_str + //SEG146 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] print_str_from_mul16s_error: - //SEG146 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy - //SEG147 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 + //SEG147 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy + //SEG148 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG148 mul16s_error::@1 + //SEG149 mul16s_error::@1 b1: - //SEG149 [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 -- vwsz1=vwsz2 + //SEG150 [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 -- vwsz1=vwsz2 lda a sta print_sword.w lda a+1 sta print_sword.w+1 - //SEG150 [74] call print_sword - //SEG151 [127] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] + //SEG151 [74] call print_sword + //SEG152 [127] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] print_sword_from_b1: - //SEG152 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy + //SEG153 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy jsr print_sword - //SEG153 [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] + //SEG154 [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] b2_from_b1: jmp b2 - //SEG154 mul16s_error::@2 + //SEG155 mul16s_error::@2 b2: - //SEG155 [76] call print_str - //SEG156 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] + //SEG156 [76] call print_str + //SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] print_str_from_b2: - //SEG157 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy - //SEG158 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy + //SEG159 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG159 mul16s_error::@3 + //SEG160 mul16s_error::@3 b3: - //SEG160 [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 + //SEG161 [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 lda b sta print_sword.w lda b+1 sta print_sword.w+1 - //SEG161 [78] call print_sword - //SEG162 [127] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] + //SEG162 [78] call print_sword + //SEG163 [127] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] print_sword_from_b3: - //SEG163 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy + //SEG164 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy jsr print_sword - //SEG164 [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] + //SEG165 [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] b4_from_b3: jmp b4 - //SEG165 mul16s_error::@4 + //SEG166 mul16s_error::@4 b4: - //SEG166 [80] call print_str - //SEG167 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] + //SEG167 [80] call print_str + //SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] print_str_from_b4: - //SEG168 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy - //SEG169 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy + //SEG170 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG170 mul16s_error::@5 + //SEG171 mul16s_error::@5 b5: - //SEG171 [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 -- vdsz1=vdsz2 + //SEG172 [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 -- vdsz1=vdsz2 lda ms sta print_sdword.dw lda ms+1 @@ -5300,30 +5302,30 @@ mul16s_error: { sta print_sdword.dw+2 lda ms+3 sta print_sdword.dw+3 - //SEG172 [82] call print_sdword - //SEG173 [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword] + //SEG173 [82] call print_sdword + //SEG174 [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword] print_sdword_from_b5: - //SEG174 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy + //SEG175 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy jsr print_sdword - //SEG175 [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6] + //SEG176 [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6] b6_from_b5: jmp b6 - //SEG176 mul16s_error::@6 + //SEG177 mul16s_error::@6 b6: - //SEG177 [84] call print_str - //SEG178 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] + //SEG178 [84] call print_str + //SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] print_str_from_b6: - //SEG179 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy - //SEG180 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy + //SEG181 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG181 mul16s_error::@7 + //SEG182 mul16s_error::@7 b7: - //SEG182 [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 + //SEG183 [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 lda mn sta print_sdword.dw lda mn+1 @@ -5332,30 +5334,30 @@ mul16s_error: { sta print_sdword.dw+2 lda mn+3 sta print_sdword.dw+3 - //SEG183 [86] call print_sdword - //SEG184 [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword] + //SEG184 [86] call print_sdword + //SEG185 [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword] print_sdword_from_b7: - //SEG185 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy + //SEG186 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy jsr print_sdword - //SEG186 [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8] + //SEG187 [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8] b8_from_b7: jmp b8 - //SEG187 mul16s_error::@8 + //SEG188 mul16s_error::@8 b8: - //SEG188 [88] call print_str - //SEG189 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] + //SEG189 [88] call print_str + //SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] print_str_from_b8: - //SEG190 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy - //SEG191 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy + //SEG192 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG192 mul16s_error::@9 + //SEG193 mul16s_error::@9 b9: - //SEG193 [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 + //SEG194 [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 lda mf sta print_sdword.dw lda mf+1 @@ -5364,26 +5366,26 @@ mul16s_error: { sta print_sdword.dw+2 lda mf+3 sta print_sdword.dw+3 - //SEG194 [90] call print_sdword - //SEG195 [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword] + //SEG195 [90] call print_sdword + //SEG196 [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword] print_sdword_from_b9: - //SEG196 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy + //SEG197 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy jsr print_sdword - //SEG197 [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10] + //SEG198 [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10] b10_from_b9: jmp b10 - //SEG198 mul16s_error::@10 + //SEG199 mul16s_error::@10 b10: - //SEG199 [92] call print_ln - //SEG200 [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln] + //SEG200 [92] call print_ln + //SEG201 [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln] print_ln_from_b10: - //SEG201 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy - //SEG202 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy + //SEG202 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy + //SEG203 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG203 mul16s_error::@return + //SEG204 mul16s_error::@return breturn: - //SEG204 [93] return + //SEG205 [93] return rts str: .text "signed word multiply mismatch @" str1: .text "*@" @@ -5391,30 +5393,30 @@ mul16s_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG205 print_sdword +//SEG206 print_sdword // Print a signed dword as HEX print_sdword: { .label dw = $d - //SEG206 [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + //SEG207 [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 lda dw+3 bpl b1_from_print_sdword - //SEG207 [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] + //SEG208 [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] b2_from_print_sdword: jmp b2 - //SEG208 print_sdword::@2 + //SEG209 print_sdword::@2 b2: - //SEG209 [97] call print_char - //SEG210 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] + //SEG210 [97] call print_char + //SEG211 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] print_char_from_b2: - //SEG211 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG212 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG212 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG213 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG213 print_sdword::@4 + //SEG214 print_sdword::@4 b4: - //SEG214 [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 + //SEG215 [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -5432,15 +5434,15 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - //SEG215 [99] phi from print_sdword print_sdword::@4 to print_sdword::@1 [phi:print_sdword/print_sdword::@4->print_sdword::@1] + //SEG216 [99] phi from print_sdword print_sdword::@4 to print_sdword::@1 [phi:print_sdword/print_sdword::@4->print_sdword::@1] b1_from_print_sdword: b1_from_b4: - //SEG216 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@4->print_sdword::@1#0] -- register_copy - //SEG217 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@4->print_sdword::@1#1] -- register_copy + //SEG217 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@4->print_sdword::@1#0] -- register_copy + //SEG218 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@4->print_sdword::@1#1] -- register_copy jmp b1 - //SEG218 print_sdword::@1 + //SEG219 print_sdword::@1 b1: - //SEG219 [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 -- vduz1=_dword_vdsz2 + //SEG220 [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 -- vduz1=_dword_vdsz2 lda dw sta print_dword.dw lda dw+1 @@ -5449,173 +5451,173 @@ print_sdword: { sta print_dword.dw+2 lda dw+3 sta print_dword.dw+3 - //SEG220 [101] call print_dword - //SEG221 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] + //SEG221 [101] call print_dword + //SEG222 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] print_dword_from_b1: - //SEG222 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy - //SEG223 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy + //SEG223 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG224 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword jmp breturn - //SEG224 print_sdword::@return + //SEG225 print_sdword::@return breturn: - //SEG225 [102] return + //SEG226 [102] return rts } -//SEG226 print_dword +//SEG227 print_dword // Print a dword as HEX print_dword: { .label dw = $11 - //SEG227 [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 + //SEG228 [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG228 [105] call print_word - //SEG229 [109] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG229 [105] call print_word + //SEG230 [109] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG230 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy - //SEG231 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + //SEG231 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy + //SEG232 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 - //SEG232 print_dword::@1 + //SEG233 print_dword::@1 b1: - //SEG233 [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 + //SEG234 [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG234 [107] call print_word - //SEG235 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG235 [107] call print_word + //SEG236 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG236 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG237 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG237 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG238 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG238 print_dword::@return + //SEG239 print_dword::@return breturn: - //SEG239 [108] return + //SEG240 [108] return rts } -//SEG240 print_word +//SEG241 print_word // Print a word as HEX print_word: { .label w = $15 - //SEG241 [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG242 [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG242 [111] call print_byte - //SEG243 [115] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG243 [111] call print_byte + //SEG244 [115] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG244 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy - //SEG245 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG245 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy + //SEG246 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG246 print_word::@1 + //SEG247 print_word::@1 b1: - //SEG247 [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG248 [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG248 [113] call print_byte - //SEG249 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG249 [113] call print_byte + //SEG250 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG250 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG251 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG251 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG252 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG252 print_word::@return + //SEG253 print_word::@return breturn: - //SEG253 [114] return + //SEG254 [114] return rts } -//SEG254 print_byte +//SEG255 print_byte // Print a byte as HEX print_byte: { .label _0 = $8e .label _2 = $8f .label b = $17 - //SEG255 [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG256 [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG256 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG257 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG257 [118] call print_char - //SEG258 [123] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG258 [118] call print_char + //SEG259 [123] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG259 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG260 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG260 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG261 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG261 print_byte::@1 + //SEG262 print_byte::@1 b1: - //SEG262 [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG263 [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG263 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG264 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG264 [121] call print_char - //SEG265 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG265 [121] call print_char + //SEG266 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG266 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG267 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG267 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG268 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG268 print_byte::@return + //SEG269 print_byte::@return breturn: - //SEG269 [122] return + //SEG270 [122] return rts } -//SEG270 print_char +//SEG271 print_char // Print a single char print_char: { .label ch = $18 - //SEG271 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + //SEG272 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG272 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG273 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG273 print_char::@return + //SEG274 print_char::@return breturn: - //SEG274 [126] return + //SEG275 [126] return rts } -//SEG275 print_sword +//SEG276 print_sword // Print a signed word as HEX print_sword: { .label w = $1b - //SEG276 [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG277 [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG277 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG278 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG278 print_sword::@2 + //SEG279 print_sword::@2 b2: - //SEG279 [130] call print_char - //SEG280 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG280 [130] call print_char + //SEG281 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG281 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG282 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG282 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG283 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG283 print_sword::@4 + //SEG284 print_sword::@4 b4: - //SEG284 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + //SEG285 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -5625,32 +5627,32 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG285 [132] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG286 [132] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG286 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG287 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG287 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG288 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG288 print_sword::@1 + //SEG289 print_sword::@1 b1: - //SEG289 [133] (word~) print_word::w#11 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 + //SEG290 [133] (word~) print_word::w#11 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 lda w sta print_word.w lda w+1 sta print_word.w+1 - //SEG290 [134] call print_word - //SEG291 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG291 [134] call print_word + //SEG292 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG292 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG293 [109] phi (word) print_word::w#5 = (word~) print_word::w#11 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG293 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG294 [109] phi (word) print_word::w#5 = (word~) print_word::w#11 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG294 print_sword::@return + //SEG295 print_sword::@return breturn: - //SEG295 [135] return + //SEG296 [135] return rts } -//SEG296 mulf16s +//SEG297 mulf16s // Fast multiply two signed words to a signed double word result // Fixes offsets introduced by using unsigned multiplication mulf16s: { @@ -5665,23 +5667,23 @@ mulf16s: { .label a = $72 .label b = $74 .label return_2 = $76 - //SEG297 [136] (word~) mulf16u::a#4 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + //SEG298 [136] (word~) mulf16u::a#4 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG298 [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + //SEG299 [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG299 [138] call mulf16u - //SEG300 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG300 [138] call mulf16u + //SEG301 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - //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 + //SEG302 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG303 [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 + //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta mulf16u.return_2 lda mulf16u.return+1 @@ -5691,9 +5693,9 @@ mulf16s: { lda mulf16u.return+3 sta mulf16u.return_2+3 jmp b6 - //SEG304 mulf16s::@6 + //SEG305 mulf16s::@6 b6: - //SEG305 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 + //SEG306 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 lda mulf16u.return_2 sta m lda mulf16u.return_2+1 @@ -5702,23 +5704,23 @@ mulf16s: { sta m+2 lda mulf16u.return_2+3 sta m+3 - //SEG306 [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + //SEG307 [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b6 jmp b3 - //SEG307 mulf16s::@3 + //SEG308 mulf16s::@3 b3: - //SEG308 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG309 [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 + //SEG310 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG310 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG311 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _6 sec sbc b @@ -5726,35 +5728,35 @@ mulf16s: { lda _6+1 sbc b+1 sta _16+1 - //SEG311 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG312 [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 - //SEG312 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG313 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] b1_from_b3: b1_from_b6: - //SEG313 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG314 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy jmp b1 - //SEG314 mulf16s::@1 + //SEG315 mulf16s::@1 b1: - //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 + //SEG316 [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 - //SEG316 mulf16s::@4 + //SEG317 mulf16s::@4 b4: - //SEG317 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG318 [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 + //SEG319 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG319 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG320 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _12 sec sbc a @@ -5762,19 +5764,19 @@ mulf16s: { lda _12+1 sbc a+1 sta _17+1 - //SEG320 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG321 [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 - //SEG321 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG322 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - //SEG322 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG323 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 - //SEG323 mulf16s::@2 + //SEG324 mulf16s::@2 b2: - //SEG324 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG325 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -5784,12 +5786,12 @@ mulf16s: { lda m+3 sta return+3 jmp breturn - //SEG325 mulf16s::@return + //SEG326 mulf16s::@return breturn: - //SEG326 [154] return + //SEG327 [154] return rts } -//SEG327 mulf16u +//SEG328 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X mulf16u: { @@ -5801,17 +5803,17 @@ mulf16u: { .label a = $21 .label b = $23 .label return_3 = $d1 - //SEG328 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG329 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG329 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG330 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //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 !: } + //SEG331 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 @@ -5904,7 +5906,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG331 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG332 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -5914,12 +5916,12 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG332 mulf16u::@return + //SEG333 mulf16u::@return breturn: - //SEG333 [160] return + //SEG334 [160] return rts } -//SEG334 mul16s +//SEG335 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication mul16s: { @@ -5934,23 +5936,23 @@ mul16s: { .label a = $66 .label b = $68 .label return_2 = $6a - //SEG335 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG336 [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 - //SEG336 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG337 [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 - //SEG337 [163] call mul16u - //SEG338 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG338 [163] call mul16u + //SEG339 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //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 + //SEG340 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG341 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG341 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG342 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -5960,9 +5962,9 @@ mul16s: { lda mul16u.res+3 sta mul16u.return+3 jmp b6 - //SEG342 mul16s::@6 + //SEG343 mul16s::@6 b6: - //SEG343 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG344 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -5971,23 +5973,23 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - //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 + //SEG345 [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 - //SEG345 mul16s::@3 + //SEG346 mul16s::@3 b3: - //SEG346 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG347 [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 + //SEG348 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG348 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG349 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _6 sec sbc b @@ -5995,35 +5997,35 @@ mul16s: { lda _6+1 sbc b+1 sta _16+1 - //SEG349 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG350 [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 - //SEG350 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG351 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG351 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG352 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG352 mul16s::@1 + //SEG353 mul16s::@1 b1: - //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 + //SEG354 [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 - //SEG354 mul16s::@4 + //SEG355 mul16s::@4 b4: - //SEG355 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG356 [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 + //SEG357 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG357 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG358 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _12 sec sbc a @@ -6031,19 +6033,19 @@ mul16s: { lda _12+1 sbc a+1 sta _17+1 - //SEG358 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG359 [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 - //SEG359 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG360 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - //SEG360 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG361 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 - //SEG361 mul16s::@2 + //SEG362 mul16s::@2 b2: - //SEG362 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG363 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -6053,12 +6055,12 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG363 mul16s::@return + //SEG364 mul16s::@return breturn: - //SEG364 [179] return + //SEG365 [179] return rts } -//SEG365 mul16u +//SEG366 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label _1 = $bc @@ -6068,7 +6070,7 @@ mul16u: { .label return = $a8 .label b = $29 .label return_3 = $c9 - //SEG366 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG367 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6076,44 +6078,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG367 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG368 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //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 + //SEG369 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG370 [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 - //SEG370 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG371 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG371 mul16u::@1 + //SEG372 mul16u::@1 b1: - //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 + //SEG373 [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 - //SEG373 mul16u::@return + //SEG374 mul16u::@return breturn: - //SEG374 [184] return + //SEG375 [184] return rts - //SEG375 mul16u::@2 + //SEG376 mul16u::@2 b2: - //SEG376 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG377 [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 - //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 + //SEG378 [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 - //SEG378 mul16u::@7 + //SEG379 mul16u::@7 b7: - //SEG379 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG380 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6127,30 +6129,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG380 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG381 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG381 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG382 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG382 mul16u::@4 + //SEG383 mul16u::@4 b4: - //SEG383 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG384 [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 - //SEG384 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG385 [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 - //SEG385 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG386 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //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 + //SEG387 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG388 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG389 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG389 muls16s +//SEG390 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction muls16s: { @@ -6161,27 +6163,27 @@ muls16s: { .label a = $5a .label b = $5c .label return_2 = $5e - //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 + //SEG391 [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 - //SEG391 muls16s::@6 + //SEG392 muls16s::@6 b6: - //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 + //SEG393 [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 !: - //SEG393 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG394 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] b3_from_b6: - //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 + //SEG395 [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 - //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 + //SEG396 [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 @@ -6191,14 +6193,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b3 - //SEG396 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG397 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - //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 + //SEG398 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG399 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 - //SEG399 muls16s::@3 + //SEG400 muls16s::@3 b3: - //SEG400 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG401 [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 !+ @@ -6218,26 +6220,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG401 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG402 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG402 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG403 [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 - //SEG403 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG404 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] b4_from_b3: b4_from_b5: - //SEG404 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy + //SEG405 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG405 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG406 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b4_from_b6: - //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 + //SEG407 [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 @@ -6247,21 +6249,21 @@ muls16s: { lda #>0>>$10 sta return+3 jmp b4 - //SEG407 muls16s::@4 + //SEG408 muls16s::@4 b4: jmp breturn - //SEG408 muls16s::@return + //SEG409 muls16s::@return breturn: - //SEG409 [198] return + //SEG410 [198] return rts - //SEG410 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG411 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b5_from_muls16s: - //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 + //SEG412 [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 - //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 + //SEG413 [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 @@ -6271,14 +6273,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b5 - //SEG413 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG414 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] b5_from_b5: - //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 + //SEG415 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG416 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy jmp b5 - //SEG416 muls16s::@5 + //SEG417 muls16s::@5 b5: - //SEG417 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG418 [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 !+ @@ -6298,13 +6300,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG418 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG419 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG419 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG420 [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 @@ -6313,7 +6315,7 @@ muls16s: { bne b5_from_b5 jmp b4_from_b5 } -//SEG420 mul16u_compare +//SEG421 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $3e @@ -6324,63 +6326,63 @@ mul16u_compare: { .label j = $42 .label i = $3d .label ok = $43 - //SEG421 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG422 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - //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 + //SEG423 [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 - //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 + //SEG424 [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 - //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 + //SEG425 [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 - //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 + //SEG426 [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 - //SEG426 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG427 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] b1_from_b10: - //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 + //SEG428 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG429 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG430 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG431 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy jmp b1 - //SEG431 mul16u_compare::@1 + //SEG432 mul16u_compare::@1 b1: - //SEG432 [205] call print_str - //SEG433 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG433 [205] call print_str + //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - //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 + //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG436 [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 - //SEG436 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG437 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - //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 + //SEG438 [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 - //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 + //SEG439 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG440 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG440 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG441 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - //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 + //SEG442 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG443 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG444 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG444 mul16u_compare::@2 + //SEG445 mul16u_compare::@2 b2: - //SEG445 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [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 @@ -6388,7 +6390,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG446 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG447 [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 @@ -6396,19 +6398,19 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG447 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG448 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta muls16u.a lda a+1 sta muls16u.a+1 - //SEG448 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG449 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta muls16u.b lda b+1 sta muls16u.b+1 - //SEG449 [211] call muls16u + //SEG450 [211] call muls16u jsr muls16u - //SEG450 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 + //SEG451 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 lda muls16u.return sta muls16u.return_2 lda muls16u.return+1 @@ -6418,9 +6420,9 @@ mul16u_compare: { lda muls16u.return+3 sta muls16u.return_2+3 jmp b13 - //SEG451 mul16u_compare::@13 + //SEG452 mul16u_compare::@13 b13: - //SEG452 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 + //SEG453 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 lda muls16u.return_2 sta ms lda muls16u.return_2+1 @@ -6429,23 +6431,23 @@ mul16u_compare: { sta ms+2 lda muls16u.return_2+3 sta ms+3 - //SEG453 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG454 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG454 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG455 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG455 [216] call mul16u - //SEG456 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG456 [216] call mul16u + //SEG457 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] mul16u_from_b13: - //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 + //SEG458 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG459 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG459 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG460 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -6455,9 +6457,9 @@ mul16u_compare: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b14 - //SEG460 mul16u_compare::@14 + //SEG461 mul16u_compare::@14 b14: - //SEG461 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG462 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta mn lda mul16u.return_3+1 @@ -6466,23 +6468,23 @@ mul16u_compare: { sta mn+2 lda mul16u.return_3+3 sta mn+3 - //SEG462 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG463 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG463 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG464 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG464 [221] call mulf16u - //SEG465 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG465 [221] call mulf16u + //SEG466 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] mulf16u_from_b14: - //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 + //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG468 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + //SEG469 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta mulf16u.return_3 lda mulf16u.return+1 @@ -6492,9 +6494,9 @@ mul16u_compare: { lda mulf16u.return+3 sta mulf16u.return_3+3 jmp b15 - //SEG469 mul16u_compare::@15 + //SEG470 mul16u_compare::@15 b15: - //SEG470 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 + //SEG471 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 lda mulf16u.return_3 sta mf lda mulf16u.return_3+1 @@ -6503,7 +6505,7 @@ mul16u_compare: { sta mf+2 lda mulf16u.return_3+3 sta mf+3 - //SEG471 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG472 [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 !+ @@ -6517,26 +6519,26 @@ mul16u_compare: { cmp mf+3 beq b3_from_b15 !: - //SEG472 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG473 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] b6_from_b15: jmp b6 - //SEG473 mul16u_compare::@6 + //SEG474 mul16u_compare::@6 b6: - //SEG474 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG475 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - //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 + //SEG476 [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 - //SEG476 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG477 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b3_from_b15: - //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 + //SEG478 [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 - //SEG478 mul16u_compare::@3 + //SEG479 mul16u_compare::@3 b3: - //SEG479 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG480 [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 !+ @@ -6550,35 +6552,35 @@ mul16u_compare: { cmp mn+3 beq b22_from_b3 !: - //SEG480 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG481 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - //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 + //SEG482 [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 - //SEG482 mul16u_compare::@4 + //SEG483 mul16u_compare::@4 b4: - //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 + //SEG484 [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 - //SEG484 mul16u_compare::@8 + //SEG485 mul16u_compare::@8 b8: - //SEG485 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG486 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG486 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG487 [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 - //SEG487 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG488 [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 - //SEG488 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 + //SEG489 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 lda ms sta mul16u_error.ms lda ms+1 @@ -6587,7 +6589,7 @@ mul16u_compare: { sta mul16u_error.ms+2 lda ms+3 sta mul16u_error.ms+3 - //SEG489 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 + //SEG490 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 lda mn sta mul16u_error.mn lda mn+1 @@ -6596,7 +6598,7 @@ mul16u_compare: { sta mul16u_error.mn+2 lda mn+3 sta mul16u_error.mn+3 - //SEG490 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 + //SEG491 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 lda mf sta mul16u_error.mf lda mf+1 @@ -6605,168 +6607,168 @@ mul16u_compare: { sta mul16u_error.mf+2 lda mf+3 sta mul16u_error.mf+3 - //SEG491 [236] call mul16u_error - //SEG492 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG492 [236] call mul16u_error + //SEG493 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] mul16u_error_from_b8: jsr mul16u_error jmp breturn - //SEG493 mul16u_compare::@return + //SEG494 mul16u_compare::@return breturn: - //SEG494 [237] return + //SEG495 [237] return rts - //SEG495 mul16u_compare::@5 + //SEG496 mul16u_compare::@5 b5: - //SEG496 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 + //SEG497 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 inc j - //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 + //SEG498 [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 - //SEG498 mul16u_compare::@10 + //SEG499 mul16u_compare::@10 b10: - //SEG499 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG500 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //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 + //SEG501 [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 - //SEG501 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG502 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] b11_from_b10: jmp b11 - //SEG502 mul16u_compare::@11 + //SEG503 mul16u_compare::@11 b11: - //SEG503 [243] call print_ln - //SEG504 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG504 [243] call print_ln + //SEG505 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] print_ln_from_b11: - //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 + //SEG506 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG507 [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 - //SEG507 mul16u_compare::@17 + //SEG508 mul16u_compare::@17 b17: - //SEG508 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG509 [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 - //SEG509 [245] call print_str - //SEG510 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG510 [245] call print_str + //SEG511 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] print_str_from_b17: - //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 + //SEG512 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG513 [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 - //SEG513 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG514 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] b18_from_b17: jmp b18 - //SEG514 mul16u_compare::@18 + //SEG515 mul16u_compare::@18 b18: - //SEG515 [247] call print_ln - //SEG516 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG516 [247] call print_ln + //SEG517 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] print_ln_from_b18: - //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 + //SEG518 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG519 [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 - //SEG519 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG520 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] b22_from_b3: jmp b22 - //SEG520 mul16u_compare::@22 + //SEG521 mul16u_compare::@22 b22: - //SEG521 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG522 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] b4_from_b22: - //SEG522 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy + //SEG523 [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!@" } -//SEG523 mul16u_error +//SEG524 mul16u_error mul16u_error: { .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] + //SEG525 [250] call print_str + //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - //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 + //SEG527 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG528 [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 - //SEG528 mul16u_error::@1 + //SEG529 mul16u_error::@1 b1: - //SEG529 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 -- vwuz1=vwuz2 + //SEG530 [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 - //SEG530 [252] call print_word - //SEG531 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG531 [252] call print_word + //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - //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 + //SEG533 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG534 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG535 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 - //SEG535 mul16u_error::@2 + //SEG536 mul16u_error::@2 b2: - //SEG536 [254] call print_str - //SEG537 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG537 [254] call print_str + //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - //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 + //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG540 [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 - //SEG540 mul16u_error::@3 + //SEG541 mul16u_error::@3 b3: - //SEG541 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG542 [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 - //SEG542 [256] call print_word - //SEG543 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG543 [256] call print_word + //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - //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 + //SEG545 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG546 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG547 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 - //SEG547 mul16u_error::@4 + //SEG548 mul16u_error::@4 b4: - //SEG548 [258] call print_str - //SEG549 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG549 [258] call print_str + //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - //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 + //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG552 [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 - //SEG552 mul16u_error::@5 + //SEG553 mul16u_error::@5 b5: - //SEG553 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 + //SEG554 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 lda ms sta print_dword.dw lda ms+1 @@ -6775,31 +6777,31 @@ mul16u_error: { sta print_dword.dw+2 lda ms+3 sta print_dword.dw+3 - //SEG554 [260] call print_dword - //SEG555 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG555 [260] call print_dword + //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - //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 + //SEG557 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG558 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG559 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 - //SEG559 mul16u_error::@6 + //SEG560 mul16u_error::@6 b6: - //SEG560 [262] call print_str - //SEG561 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG561 [262] call print_str + //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - //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 + //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG564 [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 - //SEG564 mul16u_error::@7 + //SEG565 mul16u_error::@7 b7: - //SEG565 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG566 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -6808,31 +6810,31 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG566 [264] call print_dword - //SEG567 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG567 [264] call print_dword + //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - //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 + //SEG569 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG570 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG571 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 - //SEG571 mul16u_error::@8 + //SEG572 mul16u_error::@8 b8: - //SEG572 [266] call print_str - //SEG573 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG573 [266] call print_str + //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - //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 + //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG576 [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 - //SEG576 mul16u_error::@9 + //SEG577 mul16u_error::@9 b9: - //SEG577 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG578 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -6841,31 +6843,31 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG578 [268] call print_dword - //SEG579 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG579 [268] call print_dword + //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - //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 + //SEG581 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG582 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG583 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 - //SEG583 mul16u_error::@10 + //SEG584 mul16u_error::@10 b10: - //SEG584 [270] call print_ln - //SEG585 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG585 [270] call print_ln + //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - //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 + //SEG587 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG588 [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 - //SEG588 mul16u_error::@return + //SEG589 mul16u_error::@return breturn: - //SEG589 [271] return + //SEG590 [271] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -6873,7 +6875,7 @@ mul16u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG590 muls16u +//SEG591 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition muls16u: { @@ -6883,20 +6885,20 @@ muls16u: { .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 + //SEG592 [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 !: - //SEG592 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG593 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - //SEG593 [273] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG594 [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 - //SEG594 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG595 [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 @@ -6904,14 +6906,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - //SEG595 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG596 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - //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 + //SEG597 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG598 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 - //SEG598 muls16u::@2 + //SEG599 muls16u::@2 b2: - //SEG599 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG600 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -6925,25 +6927,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG600 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG601 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG601 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG602 [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 - //SEG602 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG603 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - //SEG603 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG604 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG604 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG605 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - //SEG605 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG606 [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 @@ -6951,15 +6953,15 @@ muls16u: { sta return+2 sta return+3 jmp b1 - //SEG606 muls16u::@1 + //SEG607 muls16u::@1 b1: jmp breturn - //SEG607 muls16u::@return + //SEG608 muls16u::@return breturn: - //SEG608 [278] return + //SEG609 [278] return rts } -//SEG609 mulf_init +//SEG610 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label _2 = $e9 @@ -6974,88 +6976,88 @@ mulf_init: { .label x_255 = $52 .label sqr2_lo = $53 .label dir = $57 - //SEG610 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG611 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //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 + //SEG612 [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 - //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 + //SEG613 [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 - //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 + //SEG614 [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 - //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 + //SEG615 [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 - //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 + //SEG616 [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 - //SEG616 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG617 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //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 + //SEG618 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG619 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG620 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG621 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG622 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG622 mulf_init::@1 + //SEG623 mulf_init::@1 b1: - //SEG623 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG624 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //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 + //SEG625 [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 - //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 + //SEG626 [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 - //SEG626 mulf_init::@5 + //SEG627 mulf_init::@5 b5: - //SEG627 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG628 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG628 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG629 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 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: - //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 + //SEG631 [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 + //SEG632 [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 - //SEG632 mulf_init::@2 + //SEG633 mulf_init::@2 b2: - //SEG633 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG634 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG634 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG635 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG635 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG636 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG636 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG637 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG637 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG638 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG638 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG639 [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 @@ -7063,84 +7065,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG639 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG640 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG641 [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] + //SEG642 [295] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //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 + //SEG643 [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 - //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 + //SEG644 [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 - //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 + //SEG645 [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 - //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 + //SEG646 [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 - //SEG646 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG647 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //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 + //SEG648 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG649 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG650 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG651 [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 - //SEG651 mulf_init::@3 + //SEG652 mulf_init::@3 b3: - //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 + //SEG653 [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 - //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 + //SEG654 [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 - //SEG654 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG655 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG655 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG656 [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 - //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 + //SEG657 [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 - //SEG657 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG658 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //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 + //SEG659 [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 - //SEG659 mulf_init::@4 + //SEG660 mulf_init::@4 b4: - //SEG660 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG661 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG662 [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 @@ -7148,57 +7150,57 @@ mulf_init: { cmp #mulf_init::@12] + //SEG668 [307] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG668 mulf_init::@12 + //SEG669 mulf_init::@12 b12: - //SEG669 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG670 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG670 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG671 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG671 print_cls +//SEG672 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $58 - //SEG672 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG673 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //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 + //SEG674 [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 - //SEG674 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG675 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG675 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG676 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG676 print_cls::@1 + //SEG677 print_cls::@1 b1: - //SEG677 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG678 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG678 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG679 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG680 [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 @@ -7206,15 +7208,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG680 print_cls::@return + //SEG681 print_cls::@return breturn: - //SEG681 [313] return + //SEG682 [313] return rts } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @40] +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] b40_from_bbegin: jmp b40 -//SEG4 @40 +//SEG5 @40 b40: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @40 to @end [phi:@40->@end] +//SEG7 [3] phi from @40 to @end [phi:@40->@end] bend_from_b40: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL - //SEG10 [5] call print_cls - //SEG11 [308] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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] + //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 mulf_init - //SEG15 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [7] call mulf_init + //SEG16 [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] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call mul16u_compare - //SEG19 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG19 [9] call mul16u_compare + //SEG20 [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] + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG22 main::@3 b3: - //SEG22 [11] call mul16s_compare + //SEG23 [11] call mul16s_compare jsr mul16s_compare jmp breturn - //SEG23 main::@return + //SEG24 main::@return breturn: - //SEG24 [12] return + //SEG25 [12] return rts } -//SEG25 mul16s_compare +//SEG26 mul16s_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16s_compare: { .label a = 3 @@ -7835,63 +7836,63 @@ mul16s_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG26 [13] (byte*~) print_char_cursor#176 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG27 [13] (byte*~) print_char_cursor#176 ← (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 - //SEG27 [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1] + //SEG28 [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1] b1_from_mul16s_compare: - //SEG28 [14] phi (byte) mul16s_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 + //SEG29 [14] phi (byte) mul16s_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG29 [14] phi (signed word) mul16s_compare::b#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 + //SEG30 [14] phi (signed word) mul16s_compare::b#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 lda #<-$7fff sta b lda #>-$7fff sta b+1 - //SEG30 [14] phi (signed word) mul16s_compare::a#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 + //SEG31 [14] phi (signed word) mul16s_compare::a#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 lda #<-$7fff sta a lda #>-$7fff sta a+1 - //SEG31 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#176 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + //SEG32 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#176 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy jmp b1 - //SEG32 [14] phi from mul16s_compare::@10 to mul16s_compare::@1 [phi:mul16s_compare::@10->mul16s_compare::@1] + //SEG33 [14] phi from mul16s_compare::@10 to mul16s_compare::@1 [phi:mul16s_compare::@10->mul16s_compare::@1] b1_from_b10: - //SEG33 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@10->mul16s_compare::@1#0] -- register_copy - //SEG34 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@10->mul16s_compare::@1#1] -- register_copy - //SEG35 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@10->mul16s_compare::@1#2] -- register_copy - //SEG36 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@10->mul16s_compare::@1#3] -- register_copy + //SEG34 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@10->mul16s_compare::@1#0] -- register_copy + //SEG35 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@10->mul16s_compare::@1#1] -- register_copy + //SEG36 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@10->mul16s_compare::@1#2] -- register_copy + //SEG37 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@10->mul16s_compare::@1#3] -- register_copy jmp b1 - //SEG37 mul16s_compare::@1 + //SEG38 mul16s_compare::@1 b1: - //SEG38 [15] call print_str - //SEG39 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] + //SEG39 [15] call print_str + //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] print_str_from_b1: - //SEG40 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy - //SEG41 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy + //SEG42 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG42 [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2] + //SEG43 [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2] b2_from_b1: - //SEG43 [16] phi (byte) mul16s_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuyy=vbuc1 + //SEG44 [16] phi (byte) mul16s_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG44 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy - //SEG45 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy + //SEG45 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy + //SEG46 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy jmp b2 - //SEG46 [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2] + //SEG47 [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2] b2_from_b5: - //SEG47 [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy - //SEG48 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy - //SEG49 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy + //SEG48 [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy + //SEG49 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy + //SEG50 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy jmp b2 - //SEG50 mul16s_compare::@2 + //SEG51 mul16s_compare::@2 b2: - //SEG51 [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwsz1=vwsz1_plus_vwuc1 + //SEG52 [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwsz1=vwsz1_plus_vwuc1 clc lda a adc #<$d2b @@ -7899,7 +7900,7 @@ mul16s_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG52 [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwsz1=vwsz1_plus_vwuc1 + //SEG53 [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwsz1=vwsz1_plus_vwuc1 clc lda b adc #<$ffd @@ -7907,34 +7908,34 @@ mul16s_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG53 [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 - //SEG54 [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 - //SEG55 [21] call muls16s + //SEG54 [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 + //SEG55 [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 + //SEG56 [21] call muls16s jsr muls16s - //SEG56 [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 + //SEG57 [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 jmp b13 - //SEG57 mul16s_compare::@13 + //SEG58 mul16s_compare::@13 b13: - //SEG58 [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 - //SEG59 [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 - //SEG60 [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 - //SEG61 [26] call mul16s + //SEG59 [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 + //SEG60 [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 + //SEG61 [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 + //SEG62 [26] call mul16s jsr mul16s - //SEG62 [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG63 [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 jmp b14 - //SEG63 mul16s_compare::@14 + //SEG64 mul16s_compare::@14 b14: - //SEG64 [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 - //SEG65 [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 - //SEG66 [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 - //SEG67 [31] call mulf16s + //SEG65 [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 + //SEG66 [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 + //SEG67 [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 + //SEG68 [31] call mulf16s jsr mulf16s - //SEG68 [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 + //SEG69 [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 jmp b15 - //SEG69 mul16s_compare::@15 + //SEG70 mul16s_compare::@15 b15: - //SEG70 [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 - //SEG71 [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 + //SEG71 [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 + //SEG72 [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 lda ms cmp mf bne !+ @@ -7948,24 +7949,24 @@ mul16s_compare: { cmp mf+3 beq b3_from_b15 !: - //SEG72 [35] phi from mul16s_compare::@15 to mul16s_compare::@6 [phi:mul16s_compare::@15->mul16s_compare::@6] + //SEG73 [35] phi from mul16s_compare::@15 to mul16s_compare::@6 [phi:mul16s_compare::@15->mul16s_compare::@6] b6_from_b15: jmp b6 - //SEG73 mul16s_compare::@6 + //SEG74 mul16s_compare::@6 b6: - //SEG74 [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3] + //SEG75 [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3] b3_from_b6: - //SEG75 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuxx=vbuc1 + //SEG76 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG76 [36] phi from mul16s_compare::@15 to mul16s_compare::@3 [phi:mul16s_compare::@15->mul16s_compare::@3] + //SEG77 [36] phi from mul16s_compare::@15 to mul16s_compare::@3 [phi:mul16s_compare::@15->mul16s_compare::@3] b3_from_b15: - //SEG77 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16s_compare::@15->mul16s_compare::@3#0] -- vbuxx=vbuc1 + //SEG78 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16s_compare::@15->mul16s_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 - //SEG78 mul16s_compare::@3 + //SEG79 mul16s_compare::@3 b3: - //SEG79 [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@22 -- vdsz1_eq_vdsz2_then_la1 + //SEG80 [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@22 -- vdsz1_eq_vdsz2_then_la1 lda ms cmp mn bne !+ @@ -7979,116 +7980,116 @@ mul16s_compare: { cmp mn+3 beq b22_from_b3 !: - //SEG80 [38] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4] + //SEG81 [38] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4] b4_from_b3: - //SEG81 [38] phi (byte) mul16s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuxx=vbuc1 + //SEG82 [38] phi (byte) mul16s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG82 mul16s_compare::@4 + //SEG83 mul16s_compare::@4 b4: - //SEG83 [39] if((byte) mul16s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG84 [39] if((byte) mul16s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b8 - //SEG84 mul16s_compare::@8 + //SEG85 mul16s_compare::@8 b8: - //SEG85 [40] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG86 [40] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG86 [41] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 - //SEG87 [42] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 - //SEG88 [43] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 - //SEG89 [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 - //SEG90 [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 - //SEG91 [46] call mul16s_error - //SEG92 [71] phi from mul16s_compare::@8 to mul16s_error [phi:mul16s_compare::@8->mul16s_error] + //SEG87 [41] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 + //SEG88 [42] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 + //SEG89 [43] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 + //SEG90 [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 + //SEG91 [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 + //SEG92 [46] call mul16s_error + //SEG93 [71] phi from mul16s_compare::@8 to mul16s_error [phi:mul16s_compare::@8->mul16s_error] mul16s_error_from_b8: jsr mul16s_error jmp breturn - //SEG93 mul16s_compare::@return + //SEG94 mul16s_compare::@return breturn: - //SEG94 [47] return + //SEG95 [47] return rts - //SEG95 mul16s_compare::@5 + //SEG96 mul16s_compare::@5 b5: - //SEG96 [48] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG97 [48] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuyy=_inc_vbuyy iny - //SEG97 [49] if((byte) mul16s_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG98 [49] if((byte) mul16s_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b2_from_b5 jmp b10 - //SEG98 mul16s_compare::@10 + //SEG99 mul16s_compare::@10 b10: - //SEG99 [50] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG100 [50] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG100 [51] if((byte) mul16s_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG101 [51] if((byte) mul16s_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b10 - //SEG101 [52] phi from mul16s_compare::@10 to mul16s_compare::@11 [phi:mul16s_compare::@10->mul16s_compare::@11] + //SEG102 [52] phi from mul16s_compare::@10 to mul16s_compare::@11 [phi:mul16s_compare::@10->mul16s_compare::@11] b11_from_b10: jmp b11 - //SEG102 mul16s_compare::@11 + //SEG103 mul16s_compare::@11 b11: - //SEG103 [53] call print_ln - //SEG104 [59] phi from mul16s_compare::@11 to print_ln [phi:mul16s_compare::@11->print_ln] + //SEG104 [53] call print_ln + //SEG105 [59] phi from mul16s_compare::@11 to print_ln [phi:mul16s_compare::@11->print_ln] print_ln_from_b11: - //SEG105 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@11->print_ln#0] -- register_copy - //SEG106 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@11->print_ln#1] -- register_copy + //SEG106 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@11->print_ln#0] -- register_copy + //SEG107 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@11->print_ln#1] -- register_copy jsr print_ln jmp b17 - //SEG107 mul16s_compare::@17 + //SEG108 mul16s_compare::@17 b17: - //SEG108 [54] (byte*~) print_char_cursor#185 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG109 [54] (byte*~) print_char_cursor#185 ← (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 - //SEG109 [55] call print_str - //SEG110 [64] phi from mul16s_compare::@17 to print_str [phi:mul16s_compare::@17->print_str] + //SEG110 [55] call print_str + //SEG111 [64] phi from mul16s_compare::@17 to print_str [phi:mul16s_compare::@17->print_str] print_str_from_b17: - //SEG111 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#185 [phi:mul16s_compare::@17->print_str#0] -- register_copy - //SEG112 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG112 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#185 [phi:mul16s_compare::@17->print_str#0] -- register_copy + //SEG113 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG113 [56] phi from mul16s_compare::@17 to mul16s_compare::@18 [phi:mul16s_compare::@17->mul16s_compare::@18] + //SEG114 [56] phi from mul16s_compare::@17 to mul16s_compare::@18 [phi:mul16s_compare::@17->mul16s_compare::@18] b18_from_b17: jmp b18 - //SEG114 mul16s_compare::@18 + //SEG115 mul16s_compare::@18 b18: - //SEG115 [57] call print_ln - //SEG116 [59] phi from mul16s_compare::@18 to print_ln [phi:mul16s_compare::@18->print_ln] + //SEG116 [57] call print_ln + //SEG117 [59] phi from mul16s_compare::@18 to print_ln [phi:mul16s_compare::@18->print_ln] print_ln_from_b18: - //SEG117 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@18->print_ln#0] -- register_copy - //SEG118 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@18->print_ln#1] -- register_copy + //SEG118 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@18->print_ln#0] -- register_copy + //SEG119 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG119 [58] phi from mul16s_compare::@3 to mul16s_compare::@22 [phi:mul16s_compare::@3->mul16s_compare::@22] + //SEG120 [58] phi from mul16s_compare::@3 to mul16s_compare::@22 [phi:mul16s_compare::@3->mul16s_compare::@22] b22_from_b3: jmp b22 - //SEG120 mul16s_compare::@22 + //SEG121 mul16s_compare::@22 b22: - //SEG121 [38] phi from mul16s_compare::@22 to mul16s_compare::@4 [phi:mul16s_compare::@22->mul16s_compare::@4] + //SEG122 [38] phi from mul16s_compare::@22 to mul16s_compare::@4 [phi:mul16s_compare::@22->mul16s_compare::@4] b4_from_b22: - //SEG122 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy + //SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy jmp b4 str: .text ".@" str1: .text "signed word multiply results match!@" } -//SEG123 print_ln +//SEG124 print_ln // Print a newline print_ln: { - //SEG124 [60] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG125 [60] 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: - //SEG125 [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG126 [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG126 print_ln::@1 + //SEG127 print_ln::@1 b1: - //SEG127 [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG128 [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -8096,7 +8097,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG128 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -8106,149 +8107,149 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG129 print_ln::@return + //SEG130 print_ln::@return breturn: - //SEG130 [63] return + //SEG131 [63] return rts } -//SEG131 print_str +//SEG132 print_str // Print a zero-terminated string print_str: { .label str = 9 - //SEG132 [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG133 [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG133 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG134 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG134 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG135 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG135 print_str::@1 + //SEG136 print_str::@1 b1: - //SEG136 [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG137 [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG137 print_str::@return + //SEG138 print_str::@return breturn: - //SEG138 [67] return + //SEG139 [67] return rts - //SEG139 print_str::@2 + //SEG140 print_str::@2 b2: - //SEG140 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + //SEG141 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG141 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG142 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 + //SEG143 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG143 mul16s_error +//SEG144 mul16s_error mul16s_error: { .label a = 3 .label b = 5 .label ms = $b .label mn = $19 .label mf = $11 - //SEG144 [72] call print_str - //SEG145 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] + //SEG145 [72] call print_str + //SEG146 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] print_str_from_mul16s_error: - //SEG146 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy - //SEG147 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 + //SEG147 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy + //SEG148 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG148 mul16s_error::@1 + //SEG149 mul16s_error::@1 b1: - //SEG149 [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 - //SEG150 [74] call print_sword - //SEG151 [127] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] + //SEG150 [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 + //SEG151 [74] call print_sword + //SEG152 [127] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] print_sword_from_b1: - //SEG152 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy + //SEG153 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy jsr print_sword - //SEG153 [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] + //SEG154 [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] b2_from_b1: jmp b2 - //SEG154 mul16s_error::@2 + //SEG155 mul16s_error::@2 b2: - //SEG155 [76] call print_str - //SEG156 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] + //SEG156 [76] call print_str + //SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] print_str_from_b2: - //SEG157 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy - //SEG158 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy + //SEG159 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG159 mul16s_error::@3 + //SEG160 mul16s_error::@3 b3: - //SEG160 [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 + //SEG161 [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 lda b sta print_sword.w lda b+1 sta print_sword.w+1 - //SEG161 [78] call print_sword - //SEG162 [127] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] + //SEG162 [78] call print_sword + //SEG163 [127] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] print_sword_from_b3: - //SEG163 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy + //SEG164 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy jsr print_sword - //SEG164 [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] + //SEG165 [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] b4_from_b3: jmp b4 - //SEG165 mul16s_error::@4 + //SEG166 mul16s_error::@4 b4: - //SEG166 [80] call print_str - //SEG167 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] + //SEG167 [80] call print_str + //SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] print_str_from_b4: - //SEG168 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy - //SEG169 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy + //SEG170 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG170 mul16s_error::@5 + //SEG171 mul16s_error::@5 b5: - //SEG171 [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 - //SEG172 [82] call print_sdword - //SEG173 [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword] + //SEG172 [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 + //SEG173 [82] call print_sdword + //SEG174 [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword] print_sdword_from_b5: - //SEG174 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy + //SEG175 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy jsr print_sdword - //SEG175 [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6] + //SEG176 [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6] b6_from_b5: jmp b6 - //SEG176 mul16s_error::@6 + //SEG177 mul16s_error::@6 b6: - //SEG177 [84] call print_str - //SEG178 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] + //SEG178 [84] call print_str + //SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] print_str_from_b6: - //SEG179 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy - //SEG180 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy + //SEG181 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG181 mul16s_error::@7 + //SEG182 mul16s_error::@7 b7: - //SEG182 [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 + //SEG183 [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 lda mn sta print_sdword.dw lda mn+1 @@ -8257,30 +8258,30 @@ mul16s_error: { sta print_sdword.dw+2 lda mn+3 sta print_sdword.dw+3 - //SEG183 [86] call print_sdword - //SEG184 [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword] + //SEG184 [86] call print_sdword + //SEG185 [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword] print_sdword_from_b7: - //SEG185 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy + //SEG186 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy jsr print_sdword - //SEG186 [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8] + //SEG187 [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8] b8_from_b7: jmp b8 - //SEG187 mul16s_error::@8 + //SEG188 mul16s_error::@8 b8: - //SEG188 [88] call print_str - //SEG189 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] + //SEG189 [88] call print_str + //SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] print_str_from_b8: - //SEG190 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy - //SEG191 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy + //SEG192 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG192 mul16s_error::@9 + //SEG193 mul16s_error::@9 b9: - //SEG193 [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 + //SEG194 [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 lda mf sta print_sdword.dw lda mf+1 @@ -8289,26 +8290,26 @@ mul16s_error: { sta print_sdword.dw+2 lda mf+3 sta print_sdword.dw+3 - //SEG194 [90] call print_sdword - //SEG195 [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword] + //SEG195 [90] call print_sdword + //SEG196 [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword] print_sdword_from_b9: - //SEG196 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy + //SEG197 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy jsr print_sdword - //SEG197 [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10] + //SEG198 [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10] b10_from_b9: jmp b10 - //SEG198 mul16s_error::@10 + //SEG199 mul16s_error::@10 b10: - //SEG199 [92] call print_ln - //SEG200 [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln] + //SEG200 [92] call print_ln + //SEG201 [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln] print_ln_from_b10: - //SEG201 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy - //SEG202 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy + //SEG202 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy + //SEG203 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG203 mul16s_error::@return + //SEG204 mul16s_error::@return breturn: - //SEG204 [93] return + //SEG205 [93] return rts str: .text "signed word multiply mismatch @" str1: .text "*@" @@ -8316,29 +8317,29 @@ mul16s_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG205 print_sdword +//SEG206 print_sdword // Print a signed dword as HEX print_sdword: { .label dw = $b - //SEG206 [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + //SEG207 [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 lda dw+3 bpl b1_from_print_sdword - //SEG207 [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] + //SEG208 [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] b2_from_print_sdword: jmp b2 - //SEG208 print_sdword::@2 + //SEG209 print_sdword::@2 b2: - //SEG209 [97] call print_char - //SEG210 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] + //SEG210 [97] call print_char + //SEG211 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] print_char_from_b2: - //SEG211 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG212 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG212 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG213 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG213 print_sdword::@4 + //SEG214 print_sdword::@4 b4: - //SEG214 [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 + //SEG215 [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -8356,172 +8357,172 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - //SEG215 [99] phi from print_sdword print_sdword::@4 to print_sdword::@1 [phi:print_sdword/print_sdword::@4->print_sdword::@1] + //SEG216 [99] phi from print_sdword print_sdword::@4 to print_sdword::@1 [phi:print_sdword/print_sdword::@4->print_sdword::@1] b1_from_print_sdword: b1_from_b4: - //SEG216 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@4->print_sdword::@1#0] -- register_copy - //SEG217 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@4->print_sdword::@1#1] -- register_copy + //SEG217 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@4->print_sdword::@1#0] -- register_copy + //SEG218 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@4->print_sdword::@1#1] -- register_copy jmp b1 - //SEG218 print_sdword::@1 + //SEG219 print_sdword::@1 b1: - //SEG219 [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 -- vduz1=_dword_vdsz1 - //SEG220 [101] call print_dword - //SEG221 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] + //SEG220 [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 -- vduz1=_dword_vdsz1 + //SEG221 [101] call print_dword + //SEG222 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] print_dword_from_b1: - //SEG222 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy - //SEG223 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy + //SEG223 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG224 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword jmp breturn - //SEG224 print_sdword::@return + //SEG225 print_sdword::@return breturn: - //SEG225 [102] return + //SEG226 [102] return rts } -//SEG226 print_dword +//SEG227 print_dword // Print a dword as HEX print_dword: { .label dw = $b - //SEG227 [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 + //SEG228 [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG228 [105] call print_word - //SEG229 [109] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG229 [105] call print_word + //SEG230 [109] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG230 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy - //SEG231 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + //SEG231 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy + //SEG232 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 - //SEG232 print_dword::@1 + //SEG233 print_dword::@1 b1: - //SEG233 [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 + //SEG234 [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG234 [107] call print_word - //SEG235 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG235 [107] call print_word + //SEG236 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG236 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG237 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG237 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG238 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG238 print_dword::@return + //SEG239 print_dword::@return breturn: - //SEG239 [108] return + //SEG240 [108] return rts } -//SEG240 print_word +//SEG241 print_word // Print a word as HEX print_word: { .label w = 3 - //SEG241 [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 + //SEG242 [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG242 [111] call print_byte - //SEG243 [115] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG243 [111] call print_byte + //SEG244 [115] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG244 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy - //SEG245 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG245 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy + //SEG246 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG246 print_word::@1 + //SEG247 print_word::@1 b1: - //SEG247 [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 + //SEG248 [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 lda w tax - //SEG248 [113] call print_byte - //SEG249 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG249 [113] call print_byte + //SEG250 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG250 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG251 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG251 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG252 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG252 print_word::@return + //SEG253 print_word::@return breturn: - //SEG253 [114] return + //SEG254 [114] return rts } -//SEG254 print_byte +//SEG255 print_byte // Print a byte as HEX print_byte: { - //SEG255 [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG256 [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG256 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG257 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG257 [118] call print_char - //SEG258 [123] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG258 [118] call print_char + //SEG259 [123] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG259 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG260 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG260 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG261 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG261 print_byte::@1 + //SEG262 print_byte::@1 b1: - //SEG262 [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG263 [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG263 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG264 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG264 [121] call print_char - //SEG265 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG265 [121] call print_char + //SEG266 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG266 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG267 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG267 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG268 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG268 print_byte::@return + //SEG269 print_byte::@return breturn: - //SEG269 [122] return + //SEG270 [122] return rts } -//SEG270 print_char +//SEG271 print_char // Print a single char print_char: { - //SEG271 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG272 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG272 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG273 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG273 print_char::@return + //SEG274 print_char::@return breturn: - //SEG274 [126] return + //SEG275 [126] return rts } -//SEG275 print_sword +//SEG276 print_sword // Print a signed word as HEX print_sword: { .label w = 3 - //SEG276 [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG277 [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG277 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG278 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG278 print_sword::@2 + //SEG279 print_sword::@2 b2: - //SEG279 [130] call print_char - //SEG280 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG280 [130] call print_char + //SEG281 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG281 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG282 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG282 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG283 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG283 print_sword::@4 + //SEG284 print_sword::@4 b4: - //SEG284 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + //SEG285 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -8531,28 +8532,28 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG285 [132] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG286 [132] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG286 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG287 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG287 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG288 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG288 print_sword::@1 + //SEG289 print_sword::@1 b1: - //SEG289 [133] (word~) print_word::w#11 ← (word)(signed word) print_sword::w#4 - //SEG290 [134] call print_word - //SEG291 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG290 [133] (word~) print_word::w#11 ← (word)(signed word) print_sword::w#4 + //SEG291 [134] call print_word + //SEG292 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG292 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG293 [109] phi (word) print_word::w#5 = (word~) print_word::w#11 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG293 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG294 [109] phi (word) print_word::w#5 = (word~) print_word::w#11 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG294 print_sword::@return + //SEG295 print_sword::@return breturn: - //SEG295 [135] return + //SEG296 [135] return rts } -//SEG296 mulf16s +//SEG297 mulf16s // Fast multiply two signed words to a signed double word result // Fixes offsets introduced by using unsigned multiplication mulf16s: { @@ -8566,44 +8567,44 @@ mulf16s: { .label return = $11 .label a = 3 .label b = 5 - //SEG297 [136] (word~) mulf16u::a#4 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + //SEG298 [136] (word~) mulf16u::a#4 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG298 [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + //SEG299 [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG299 [138] call mulf16u - //SEG300 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG300 [138] call mulf16u + //SEG301 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - //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 + //SEG302 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG303 [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 + //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 jmp b6 - //SEG304 mulf16s::@6 + //SEG305 mulf16s::@6 b6: - //SEG305 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - //SEG306 [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + //SEG306 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + //SEG307 [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b6 jmp b3 - //SEG307 mulf16s::@3 + //SEG308 mulf16s::@3 b3: - //SEG308 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG309 [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 + //SEG310 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG310 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG311 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -8611,35 +8612,35 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG311 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG312 [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 - //SEG312 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG313 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] b1_from_b3: b1_from_b6: - //SEG313 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG314 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy jmp b1 - //SEG314 mulf16s::@1 + //SEG315 mulf16s::@1 b1: - //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 + //SEG316 [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 - //SEG316 mulf16s::@4 + //SEG317 mulf16s::@4 b4: - //SEG317 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG318 [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 + //SEG319 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG319 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG320 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -8647,26 +8648,26 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG320 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG321 [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 - //SEG321 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG322 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - //SEG322 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG323 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 - //SEG323 mulf16s::@2 + //SEG324 mulf16s::@2 b2: - //SEG324 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG325 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG325 mulf16s::@return + //SEG326 mulf16s::@return breturn: - //SEG326 [154] return + //SEG327 [154] return rts } -//SEG327 mulf16u +//SEG328 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X mulf16u: { @@ -8676,17 +8677,17 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - //SEG328 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG329 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG329 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG330 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //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 !: } + //SEG331 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 @@ -8779,7 +8780,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG331 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG332 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -8789,12 +8790,12 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG332 mulf16u::@return + //SEG333 mulf16u::@return breturn: - //SEG333 [160] return + //SEG334 [160] return rts } -//SEG334 mul16s +//SEG335 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication mul16s: { @@ -8808,44 +8809,44 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - //SEG335 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG336 [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 - //SEG336 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG337 [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 - //SEG337 [163] call mul16u - //SEG338 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG338 [163] call mul16u + //SEG339 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //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 + //SEG340 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG341 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG341 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG342 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b6 - //SEG342 mul16s::@6 + //SEG343 mul16s::@6 b6: - //SEG343 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //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 + //SEG344 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG345 [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 - //SEG345 mul16s::@3 + //SEG346 mul16s::@3 b3: - //SEG346 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG347 [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 + //SEG348 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG348 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG349 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -8853,35 +8854,35 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG349 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG350 [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 - //SEG350 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG351 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG351 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG352 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG352 mul16s::@1 + //SEG353 mul16s::@1 b1: - //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 + //SEG354 [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 - //SEG354 mul16s::@4 + //SEG355 mul16s::@4 b4: - //SEG355 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG356 [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 + //SEG357 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG357 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG358 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -8889,26 +8890,26 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG358 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG359 [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 - //SEG359 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG360 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - //SEG360 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG361 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 - //SEG361 mul16s::@2 + //SEG362 mul16s::@2 b2: - //SEG362 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG363 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG363 mul16s::@return + //SEG364 mul16s::@return breturn: - //SEG364 [179] return + //SEG365 [179] return rts } -//SEG365 mul16u +//SEG366 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $11 @@ -8916,7 +8917,7 @@ mul16u: { .label res = $19 .label return = $19 .label b = $17 - //SEG366 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG367 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8924,42 +8925,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG367 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG368 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //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 + //SEG369 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG370 [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 - //SEG370 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG371 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG371 mul16u::@1 + //SEG372 mul16u::@1 b1: - //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 + //SEG373 [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 - //SEG373 mul16u::@return + //SEG374 mul16u::@return breturn: - //SEG374 [184] return + //SEG375 [184] return rts - //SEG375 mul16u::@2 + //SEG376 mul16u::@2 b2: - //SEG376 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG377 [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 - //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 + //SEG378 [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 - //SEG378 mul16u::@7 + //SEG379 mul16u::@7 b7: - //SEG379 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG380 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8973,30 +8974,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG380 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG381 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG381 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG382 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG382 mul16u::@4 + //SEG383 mul16u::@4 b4: - //SEG383 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG384 [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 - //SEG384 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG385 [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 - //SEG385 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG386 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //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 + //SEG387 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG388 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG389 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG389 muls16s +//SEG390 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction muls16s: { @@ -9006,27 +9007,27 @@ muls16s: { .label i = 9 .label a = 3 .label b = 5 - //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 + //SEG391 [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 - //SEG391 muls16s::@6 + //SEG392 muls16s::@6 b6: - //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 + //SEG393 [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 !: - //SEG393 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG394 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] b3_from_b6: - //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 + //SEG395 [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 - //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 + //SEG396 [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 @@ -9036,14 +9037,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b3 - //SEG396 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG397 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - //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 + //SEG398 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG399 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 - //SEG399 muls16s::@3 + //SEG400 muls16s::@3 b3: - //SEG400 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG401 [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 !+ @@ -9063,26 +9064,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG401 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG402 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG402 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG403 [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 - //SEG403 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG404 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] b4_from_b3: b4_from_b5: - //SEG404 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy + //SEG405 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG405 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG406 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b4_from_b6: - //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 + //SEG407 [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 @@ -9092,21 +9093,21 @@ muls16s: { lda #>0>>$10 sta return+3 jmp b4 - //SEG407 muls16s::@4 + //SEG408 muls16s::@4 b4: jmp breturn - //SEG408 muls16s::@return + //SEG409 muls16s::@return breturn: - //SEG409 [198] return + //SEG410 [198] return rts - //SEG410 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG411 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b5_from_muls16s: - //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 + //SEG412 [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 - //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 + //SEG413 [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 @@ -9116,14 +9117,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b5 - //SEG413 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG414 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] b5_from_b5: - //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 + //SEG415 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG416 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy jmp b5 - //SEG416 muls16s::@5 + //SEG417 muls16s::@5 b5: - //SEG417 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG418 [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 !+ @@ -9143,13 +9144,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG418 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG419 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG419 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG420 [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 @@ -9158,7 +9159,7 @@ muls16s: { bne b5_from_b5 jmp b4_from_b5 } -//SEG420 mul16u_compare +//SEG421 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $15 @@ -9167,62 +9168,62 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG421 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG422 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - //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 + //SEG423 [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 - //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 + //SEG424 [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 - //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 + //SEG425 [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 - //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 + //SEG426 [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 - //SEG426 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG427 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] b1_from_b10: - //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 + //SEG428 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG429 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG430 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG431 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy jmp b1 - //SEG431 mul16u_compare::@1 + //SEG432 mul16u_compare::@1 b1: - //SEG432 [205] call print_str - //SEG433 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG433 [205] call print_str + //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - //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 + //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG436 [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 - //SEG436 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG437 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - //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 + //SEG438 [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 - //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 + //SEG439 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG440 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG440 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG441 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - //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 + //SEG442 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG443 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG444 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG444 mul16u_compare::@2 + //SEG445 mul16u_compare::@2 b2: - //SEG445 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [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 @@ -9230,7 +9231,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG446 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG447 [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 @@ -9238,46 +9239,46 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG447 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - //SEG448 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - //SEG449 [211] call muls16u + //SEG448 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + //SEG449 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + //SEG450 [211] call muls16u jsr muls16u - //SEG450 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + //SEG451 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 jmp b13 - //SEG451 mul16u_compare::@13 + //SEG452 mul16u_compare::@13 b13: - //SEG452 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - //SEG453 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG453 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + //SEG454 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG454 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - //SEG455 [216] call mul16u - //SEG456 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG455 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + //SEG456 [216] call mul16u + //SEG457 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] mul16u_from_b13: - //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 + //SEG458 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG459 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG459 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG460 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b14 - //SEG460 mul16u_compare::@14 + //SEG461 mul16u_compare::@14 b14: - //SEG461 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - //SEG462 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - //SEG463 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - //SEG464 [221] call mulf16u - //SEG465 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG462 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + //SEG463 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + //SEG464 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + //SEG465 [221] call mulf16u + //SEG466 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] mulf16u_from_b14: - //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 + //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG468 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + //SEG469 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 jmp b15 - //SEG469 mul16u_compare::@15 + //SEG470 mul16u_compare::@15 b15: - //SEG470 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - //SEG471 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG471 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + //SEG472 [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 !+ @@ -9291,24 +9292,24 @@ mul16u_compare: { cmp mf+3 beq b3_from_b15 !: - //SEG472 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG473 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] b6_from_b15: jmp b6 - //SEG473 mul16u_compare::@6 + //SEG474 mul16u_compare::@6 b6: - //SEG474 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG475 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - //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 + //SEG476 [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 - //SEG476 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG477 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b3_from_b15: - //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 + //SEG478 [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 - //SEG478 mul16u_compare::@3 + //SEG479 mul16u_compare::@3 b3: - //SEG479 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG480 [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 !+ @@ -9322,213 +9323,213 @@ mul16u_compare: { cmp mn+3 beq b22_from_b3 !: - //SEG480 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG481 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - //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 + //SEG482 [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 - //SEG482 mul16u_compare::@4 + //SEG483 mul16u_compare::@4 b4: - //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 + //SEG484 [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 - //SEG484 mul16u_compare::@8 + //SEG485 mul16u_compare::@8 b8: - //SEG485 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG486 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG486 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG487 [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 - //SEG487 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - //SEG488 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - //SEG489 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - //SEG490 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - //SEG491 [236] call mul16u_error - //SEG492 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG488 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + //SEG489 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + //SEG490 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + //SEG491 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + //SEG492 [236] call mul16u_error + //SEG493 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] mul16u_error_from_b8: jsr mul16u_error jmp breturn - //SEG493 mul16u_compare::@return + //SEG494 mul16u_compare::@return breturn: - //SEG494 [237] return + //SEG495 [237] return rts - //SEG495 mul16u_compare::@5 + //SEG496 mul16u_compare::@5 b5: - //SEG496 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG497 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - //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 + //SEG498 [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 - //SEG498 mul16u_compare::@10 + //SEG499 mul16u_compare::@10 b10: - //SEG499 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG500 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //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 + //SEG501 [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 - //SEG501 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG502 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] b11_from_b10: jmp b11 - //SEG502 mul16u_compare::@11 + //SEG503 mul16u_compare::@11 b11: - //SEG503 [243] call print_ln - //SEG504 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG504 [243] call print_ln + //SEG505 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] print_ln_from_b11: - //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 + //SEG506 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG507 [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 - //SEG507 mul16u_compare::@17 + //SEG508 mul16u_compare::@17 b17: - //SEG508 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG509 [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 - //SEG509 [245] call print_str - //SEG510 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG510 [245] call print_str + //SEG511 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] print_str_from_b17: - //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 + //SEG512 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG513 [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 - //SEG513 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG514 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] b18_from_b17: jmp b18 - //SEG514 mul16u_compare::@18 + //SEG515 mul16u_compare::@18 b18: - //SEG515 [247] call print_ln - //SEG516 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG516 [247] call print_ln + //SEG517 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] print_ln_from_b18: - //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 + //SEG518 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG519 [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 - //SEG519 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG520 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] b22_from_b3: jmp b22 - //SEG520 mul16u_compare::@22 + //SEG521 mul16u_compare::@22 b22: - //SEG521 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG522 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] b4_from_b22: - //SEG522 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy + //SEG523 [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!@" } -//SEG523 mul16u_error +//SEG524 mul16u_error mul16u_error: { .label a = 3 .label b = $17 .label ms = $b .label mn = $19 .label mf = $11 - //SEG524 [250] call print_str - //SEG525 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG525 [250] call print_str + //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - //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 + //SEG527 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG528 [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 - //SEG528 mul16u_error::@1 + //SEG529 mul16u_error::@1 b1: - //SEG529 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 - //SEG530 [252] call print_word - //SEG531 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG530 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 + //SEG531 [252] call print_word + //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - //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 + //SEG533 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG534 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG535 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 - //SEG535 mul16u_error::@2 + //SEG536 mul16u_error::@2 b2: - //SEG536 [254] call print_str - //SEG537 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG537 [254] call print_str + //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - //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 + //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG540 [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 - //SEG540 mul16u_error::@3 + //SEG541 mul16u_error::@3 b3: - //SEG541 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG542 [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 - //SEG542 [256] call print_word - //SEG543 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG543 [256] call print_word + //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - //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 + //SEG545 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG546 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG547 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 - //SEG547 mul16u_error::@4 + //SEG548 mul16u_error::@4 b4: - //SEG548 [258] call print_str - //SEG549 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG549 [258] call print_str + //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - //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 + //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG552 [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 - //SEG552 mul16u_error::@5 + //SEG553 mul16u_error::@5 b5: - //SEG553 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - //SEG554 [260] call print_dword - //SEG555 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG554 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + //SEG555 [260] call print_dword + //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - //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 + //SEG557 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG558 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG559 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 - //SEG559 mul16u_error::@6 + //SEG560 mul16u_error::@6 b6: - //SEG560 [262] call print_str - //SEG561 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG561 [262] call print_str + //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - //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 + //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG564 [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 - //SEG564 mul16u_error::@7 + //SEG565 mul16u_error::@7 b7: - //SEG565 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG566 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -9537,31 +9538,31 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG566 [264] call print_dword - //SEG567 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG567 [264] call print_dword + //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - //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 + //SEG569 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG570 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG571 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 - //SEG571 mul16u_error::@8 + //SEG572 mul16u_error::@8 b8: - //SEG572 [266] call print_str - //SEG573 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG573 [266] call print_str + //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - //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 + //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG576 [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 - //SEG576 mul16u_error::@9 + //SEG577 mul16u_error::@9 b9: - //SEG577 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG578 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -9570,31 +9571,31 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG578 [268] call print_dword - //SEG579 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG579 [268] call print_dword + //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - //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 + //SEG581 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG582 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG583 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 - //SEG583 mul16u_error::@10 + //SEG584 mul16u_error::@10 b10: - //SEG584 [270] call print_ln - //SEG585 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG585 [270] call print_ln + //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - //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 + //SEG587 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG588 [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 - //SEG588 mul16u_error::@return + //SEG589 mul16u_error::@return breturn: - //SEG589 [271] return + //SEG590 [271] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -9602,7 +9603,7 @@ mul16u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG590 muls16u +//SEG591 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition muls16u: { @@ -9611,20 +9612,20 @@ muls16u: { .label i = 3 .label a = $15 .label b = $17 - //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 + //SEG592 [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 !: - //SEG592 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG593 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - //SEG593 [273] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG594 [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 - //SEG594 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG595 [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 @@ -9632,14 +9633,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - //SEG595 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG596 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - //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 + //SEG597 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG598 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 - //SEG598 muls16u::@2 + //SEG599 muls16u::@2 b2: - //SEG599 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG600 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -9653,25 +9654,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG600 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG601 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG601 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG602 [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 - //SEG602 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG603 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - //SEG603 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG604 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG604 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG605 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - //SEG605 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG606 [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 @@ -9679,15 +9680,15 @@ muls16u: { sta return+2 sta return+3 jmp b1 - //SEG606 muls16u::@1 + //SEG607 muls16u::@1 b1: jmp breturn - //SEG607 muls16u::@return + //SEG608 muls16u::@return breturn: - //SEG608 [278] return + //SEG609 [278] return rts } -//SEG609 mulf_init +//SEG610 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 5 @@ -9697,81 +9698,81 @@ mulf_init: { .label sqr2_hi = 5 .label sqr2_lo = 3 .label dir = 2 - //SEG610 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG611 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //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 + //SEG612 [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 - //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 + //SEG613 [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 - //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 + //SEG614 [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 - //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 + //SEG615 [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 - //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 + //SEG616 [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 - //SEG616 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG617 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //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 + //SEG618 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG619 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG620 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG621 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG622 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG622 mulf_init::@1 + //SEG623 mulf_init::@1 b1: - //SEG623 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG624 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG625 [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 - //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 + //SEG626 [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 - //SEG626 mulf_init::@5 + //SEG627 mulf_init::@5 b5: - //SEG627 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG628 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG628 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG629 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 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: - //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 + //SEG631 [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 + //SEG632 [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 - //SEG632 mulf_init::@2 + //SEG633 mulf_init::@2 b2: - //SEG633 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG634 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG634 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG635 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG635 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG636 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG636 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG637 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG637 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG638 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG638 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG639 [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 @@ -9779,80 +9780,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG639 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG640 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG641 [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] + //SEG642 [295] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //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 + //SEG643 [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 - //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 + //SEG644 [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 - //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 + //SEG645 [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 - //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 + //SEG646 [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 - //SEG646 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG647 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //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 + //SEG648 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG649 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG650 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG651 [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 - //SEG651 mulf_init::@3 + //SEG652 mulf_init::@3 b3: - //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 + //SEG653 [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 - //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 + //SEG654 [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 - //SEG654 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG655 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG655 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG656 [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 - //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 + //SEG657 [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 - //SEG657 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG658 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //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 + //SEG659 [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 - //SEG659 mulf_init::@4 + //SEG660 mulf_init::@4 b4: - //SEG660 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG661 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG662 [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 @@ -9860,57 +9861,57 @@ mulf_init: { cmp #mulf_init::@12] + //SEG668 [307] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG668 mulf_init::@12 + //SEG669 mulf_init::@12 b12: - //SEG669 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG670 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG670 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG671 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG671 print_cls +//SEG672 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG672 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG673 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //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 + //SEG674 [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 - //SEG674 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG675 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG675 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG676 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG676 print_cls::@1 + //SEG677 print_cls::@1 b1: - //SEG677 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG678 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG678 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG679 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG680 [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 @@ -9918,15 +9919,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG680 print_cls::@return + //SEG681 print_cls::@return breturn: - //SEG681 [313] return + //SEG682 [313] return rts } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @40] -//SEG4 @40 -//SEG5 [2] call main -//SEG6 [3] phi from @40 to @end [phi:@40->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @40 [phi:@begin->@40] +//SEG5 @40 +//SEG6 [2] call main +//SEG7 [3] phi from @40 to @end [phi:@40->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL - //SEG10 [5] call print_cls - //SEG11 [308] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call mulf_init + //SEG16 [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 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [9] call mul16u_compare + //SEG20 [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 - //SEG22 [11] call mul16s_compare + //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG22 main::@3 + //SEG23 [11] call mul16s_compare jsr mul16s_compare - //SEG23 main::@return - //SEG24 [12] return + //SEG24 main::@return + //SEG25 [12] return rts } -//SEG25 mul16s_compare +//SEG26 mul16s_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16s_compare: { .label a = 3 @@ -10874,54 +10874,54 @@ mul16s_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG26 [13] (byte*~) print_char_cursor#176 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG27 [13] (byte*~) print_char_cursor#176 ← (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 - //SEG27 [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1] - //SEG28 [14] phi (byte) mul16s_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 + //SEG28 [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1] + //SEG29 [14] phi (byte) mul16s_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG29 [14] phi (signed word) mul16s_compare::b#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 + //SEG30 [14] phi (signed word) mul16s_compare::b#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 lda #<-$7fff sta b lda #>-$7fff sta b+1 - //SEG30 [14] phi (signed word) mul16s_compare::a#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 + //SEG31 [14] phi (signed word) mul16s_compare::a#6 = -(word/signed word/dword/signed dword) 32767 [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 lda #<-$7fff sta a lda #>-$7fff sta a+1 - //SEG31 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#176 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy - //SEG32 [14] phi from mul16s_compare::@10 to mul16s_compare::@1 [phi:mul16s_compare::@10->mul16s_compare::@1] - //SEG33 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@10->mul16s_compare::@1#0] -- register_copy - //SEG34 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@10->mul16s_compare::@1#1] -- register_copy - //SEG35 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@10->mul16s_compare::@1#2] -- register_copy - //SEG36 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@10->mul16s_compare::@1#3] -- register_copy - //SEG37 mul16s_compare::@1 + //SEG32 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#176 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + //SEG33 [14] phi from mul16s_compare::@10 to mul16s_compare::@1 [phi:mul16s_compare::@10->mul16s_compare::@1] + //SEG34 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@10->mul16s_compare::@1#0] -- register_copy + //SEG35 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@10->mul16s_compare::@1#1] -- register_copy + //SEG36 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@10->mul16s_compare::@1#2] -- register_copy + //SEG37 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@10->mul16s_compare::@1#3] -- register_copy + //SEG38 mul16s_compare::@1 b1: - //SEG38 [15] call print_str - //SEG39 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] - //SEG40 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy - //SEG41 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG39 [15] call print_str + //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] + //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy + //SEG42 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG42 [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2] - //SEG43 [16] phi (byte) mul16s_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuyy=vbuc1 + //SEG43 [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2] + //SEG44 [16] phi (byte) mul16s_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG44 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy - //SEG45 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy - //SEG46 [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2] - //SEG47 [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy - //SEG48 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy - //SEG49 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy - //SEG50 mul16s_compare::@2 + //SEG45 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy + //SEG46 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy + //SEG47 [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2] + //SEG48 [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy + //SEG49 [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy + //SEG50 [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy + //SEG51 mul16s_compare::@2 b2: - //SEG51 [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwsz1=vwsz1_plus_vwuc1 + //SEG52 [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwsz1=vwsz1_plus_vwuc1 clc lda a adc #<$d2b @@ -10929,7 +10929,7 @@ mul16s_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG52 [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwsz1=vwsz1_plus_vwuc1 + //SEG53 [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwsz1=vwsz1_plus_vwuc1 clc lda b adc #<$ffd @@ -10937,28 +10937,28 @@ mul16s_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG53 [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 - //SEG54 [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 - //SEG55 [21] call muls16s + //SEG54 [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 + //SEG55 [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 + //SEG56 [21] call muls16s jsr muls16s - //SEG56 [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 - //SEG57 mul16s_compare::@13 - //SEG58 [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 - //SEG59 [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 - //SEG60 [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 - //SEG61 [26] call mul16s + //SEG57 [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 + //SEG58 mul16s_compare::@13 + //SEG59 [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 + //SEG60 [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 + //SEG61 [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 + //SEG62 [26] call mul16s jsr mul16s - //SEG62 [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 - //SEG63 mul16s_compare::@14 - //SEG64 [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 - //SEG65 [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 - //SEG66 [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 - //SEG67 [31] call mulf16s + //SEG63 [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG64 mul16s_compare::@14 + //SEG65 [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 + //SEG66 [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 + //SEG67 [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 + //SEG68 [31] call mulf16s jsr mulf16s - //SEG68 [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 - //SEG69 mul16s_compare::@15 - //SEG70 [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 - //SEG71 [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 + //SEG69 [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 + //SEG70 mul16s_compare::@15 + //SEG71 [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 + //SEG72 [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 lda ms cmp mf bne !+ @@ -10972,19 +10972,19 @@ mul16s_compare: { cmp mf+3 beq b6 !: - //SEG72 [35] phi from mul16s_compare::@15 to mul16s_compare::@6 [phi:mul16s_compare::@15->mul16s_compare::@6] - //SEG73 mul16s_compare::@6 - //SEG74 [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3] - //SEG75 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuxx=vbuc1 + //SEG73 [35] phi from mul16s_compare::@15 to mul16s_compare::@6 [phi:mul16s_compare::@15->mul16s_compare::@6] + //SEG74 mul16s_compare::@6 + //SEG75 [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3] + //SEG76 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG76 [36] phi from mul16s_compare::@15 to mul16s_compare::@3 [phi:mul16s_compare::@15->mul16s_compare::@3] + //SEG77 [36] phi from mul16s_compare::@15 to mul16s_compare::@3 [phi:mul16s_compare::@15->mul16s_compare::@3] b6: - //SEG77 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16s_compare::@15->mul16s_compare::@3#0] -- vbuxx=vbuc1 + //SEG78 [36] phi (byte) mul16s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16s_compare::@15->mul16s_compare::@3#0] -- vbuxx=vbuc1 ldx #1 - //SEG78 mul16s_compare::@3 + //SEG79 mul16s_compare::@3 b3: - //SEG79 [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@22 -- vdsz1_eq_vdsz2_then_la1 + //SEG80 [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@22 -- vdsz1_eq_vdsz2_then_la1 lda ms cmp mn bne !+ @@ -10998,91 +10998,91 @@ mul16s_compare: { cmp mn+3 beq b4 !: - //SEG80 [38] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4] - //SEG81 [38] phi (byte) mul16s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuxx=vbuc1 + //SEG81 [38] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4] + //SEG82 [38] phi (byte) mul16s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG82 mul16s_compare::@4 + //SEG83 mul16s_compare::@4 b4: - //SEG83 [39] if((byte) mul16s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG84 [39] if((byte) mul16s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG84 mul16s_compare::@8 - //SEG85 [40] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG85 mul16s_compare::@8 + //SEG86 [40] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG86 [41] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 - //SEG87 [42] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 - //SEG88 [43] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 - //SEG89 [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 - //SEG90 [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 - //SEG91 [46] call mul16s_error - //SEG92 [71] phi from mul16s_compare::@8 to mul16s_error [phi:mul16s_compare::@8->mul16s_error] + //SEG87 [41] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 + //SEG88 [42] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 + //SEG89 [43] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 + //SEG90 [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 + //SEG91 [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 + //SEG92 [46] call mul16s_error + //SEG93 [71] phi from mul16s_compare::@8 to mul16s_error [phi:mul16s_compare::@8->mul16s_error] jsr mul16s_error - //SEG93 mul16s_compare::@return + //SEG94 mul16s_compare::@return breturn: - //SEG94 [47] return + //SEG95 [47] return rts - //SEG95 mul16s_compare::@5 + //SEG96 mul16s_compare::@5 b5: - //SEG96 [48] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG97 [48] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuyy=_inc_vbuyy iny - //SEG97 [49] if((byte) mul16s_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG98 [49] if((byte) mul16s_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b2 - //SEG98 mul16s_compare::@10 - //SEG99 [50] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG99 mul16s_compare::@10 + //SEG100 [50] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG100 [51] if((byte) mul16s_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG101 [51] if((byte) mul16s_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 beq !b1+ jmp b1 !b1: - //SEG101 [52] phi from mul16s_compare::@10 to mul16s_compare::@11 [phi:mul16s_compare::@10->mul16s_compare::@11] - //SEG102 mul16s_compare::@11 - //SEG103 [53] call print_ln - //SEG104 [59] phi from mul16s_compare::@11 to print_ln [phi:mul16s_compare::@11->print_ln] - //SEG105 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@11->print_ln#0] -- register_copy - //SEG106 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@11->print_ln#1] -- register_copy + //SEG102 [52] phi from mul16s_compare::@10 to mul16s_compare::@11 [phi:mul16s_compare::@10->mul16s_compare::@11] + //SEG103 mul16s_compare::@11 + //SEG104 [53] call print_ln + //SEG105 [59] phi from mul16s_compare::@11 to print_ln [phi:mul16s_compare::@11->print_ln] + //SEG106 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@11->print_ln#0] -- register_copy + //SEG107 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@11->print_ln#1] -- register_copy jsr print_ln - //SEG107 mul16s_compare::@17 - //SEG108 [54] (byte*~) print_char_cursor#185 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG108 mul16s_compare::@17 + //SEG109 [54] (byte*~) print_char_cursor#185 ← (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 - //SEG109 [55] call print_str - //SEG110 [64] phi from mul16s_compare::@17 to print_str [phi:mul16s_compare::@17->print_str] - //SEG111 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#185 [phi:mul16s_compare::@17->print_str#0] -- register_copy - //SEG112 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG110 [55] call print_str + //SEG111 [64] phi from mul16s_compare::@17 to print_str [phi:mul16s_compare::@17->print_str] + //SEG112 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#185 [phi:mul16s_compare::@17->print_str#0] -- register_copy + //SEG113 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG113 [56] phi from mul16s_compare::@17 to mul16s_compare::@18 [phi:mul16s_compare::@17->mul16s_compare::@18] - //SEG114 mul16s_compare::@18 - //SEG115 [57] call print_ln - //SEG116 [59] phi from mul16s_compare::@18 to print_ln [phi:mul16s_compare::@18->print_ln] - //SEG117 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@18->print_ln#0] -- register_copy - //SEG118 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@18->print_ln#1] -- register_copy + //SEG114 [56] phi from mul16s_compare::@17 to mul16s_compare::@18 [phi:mul16s_compare::@17->mul16s_compare::@18] + //SEG115 mul16s_compare::@18 + //SEG116 [57] call print_ln + //SEG117 [59] phi from mul16s_compare::@18 to print_ln [phi:mul16s_compare::@18->print_ln] + //SEG118 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@18->print_ln#0] -- register_copy + //SEG119 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG119 [58] phi from mul16s_compare::@3 to mul16s_compare::@22 [phi:mul16s_compare::@3->mul16s_compare::@22] - //SEG120 mul16s_compare::@22 - //SEG121 [38] phi from mul16s_compare::@22 to mul16s_compare::@4 [phi:mul16s_compare::@22->mul16s_compare::@4] - //SEG122 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy + //SEG120 [58] phi from mul16s_compare::@3 to mul16s_compare::@22 [phi:mul16s_compare::@3->mul16s_compare::@22] + //SEG121 mul16s_compare::@22 + //SEG122 [38] phi from mul16s_compare::@22 to mul16s_compare::@4 [phi:mul16s_compare::@22->mul16s_compare::@4] + //SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy str: .text ".@" str1: .text "signed word multiply results match!@" } -//SEG123 print_ln +//SEG124 print_ln // Print a newline print_ln: { - //SEG124 [60] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG125 [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG126 print_ln::@1 + //SEG125 [60] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG126 [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG127 print_ln::@1 b1: - //SEG127 [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG128 [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -11090,7 +11090,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG128 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -11099,118 +11099,118 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG129 print_ln::@return - //SEG130 [63] return + //SEG130 print_ln::@return + //SEG131 [63] return rts } -//SEG131 print_str +//SEG132 print_str // Print a zero-terminated string print_str: { .label str = 9 - //SEG132 [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG133 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG134 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG135 print_str::@1 + //SEG133 [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG134 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG135 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG136 print_str::@1 b1: - //SEG136 [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG137 [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG137 print_str::@return - //SEG138 [67] return + //SEG138 print_str::@return + //SEG139 [67] return rts - //SEG139 print_str::@2 + //SEG140 print_str::@2 b2: - //SEG140 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + //SEG141 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG141 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG142 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 + //SEG143 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG143 mul16s_error +//SEG144 mul16s_error mul16s_error: { .label a = 3 .label b = 5 .label ms = $b .label mn = $19 .label mf = $11 - //SEG144 [72] call print_str - //SEG145 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] - //SEG146 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy - //SEG147 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 + //SEG145 [72] call print_str + //SEG146 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] + //SEG147 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy + //SEG148 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG148 mul16s_error::@1 - //SEG149 [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 - //SEG150 [74] call print_sword - //SEG151 [127] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] - //SEG152 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy + //SEG149 mul16s_error::@1 + //SEG150 [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 + //SEG151 [74] call print_sword + //SEG152 [127] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] + //SEG153 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy jsr print_sword - //SEG153 [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] - //SEG154 mul16s_error::@2 - //SEG155 [76] call print_str - //SEG156 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] - //SEG157 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy - //SEG158 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG154 [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] + //SEG155 mul16s_error::@2 + //SEG156 [76] call print_str + //SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] + //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy + //SEG159 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG159 mul16s_error::@3 - //SEG160 [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 + //SEG160 mul16s_error::@3 + //SEG161 [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 lda b sta print_sword.w lda b+1 sta print_sword.w+1 - //SEG161 [78] call print_sword - //SEG162 [127] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] - //SEG163 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy + //SEG162 [78] call print_sword + //SEG163 [127] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] + //SEG164 [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy jsr print_sword - //SEG164 [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] - //SEG165 mul16s_error::@4 - //SEG166 [80] call print_str - //SEG167 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] - //SEG168 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy - //SEG169 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG165 [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] + //SEG166 mul16s_error::@4 + //SEG167 [80] call print_str + //SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] + //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy + //SEG170 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG170 mul16s_error::@5 - //SEG171 [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 - //SEG172 [82] call print_sdword - //SEG173 [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword] - //SEG174 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy + //SEG171 mul16s_error::@5 + //SEG172 [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 + //SEG173 [82] call print_sdword + //SEG174 [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword] + //SEG175 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy jsr print_sdword - //SEG175 [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6] - //SEG176 mul16s_error::@6 - //SEG177 [84] call print_str - //SEG178 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] - //SEG179 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy - //SEG180 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG176 [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6] + //SEG177 mul16s_error::@6 + //SEG178 [84] call print_str + //SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] + //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy + //SEG181 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG181 mul16s_error::@7 - //SEG182 [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 + //SEG182 mul16s_error::@7 + //SEG183 [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 lda mn sta print_sdword.dw lda mn+1 @@ -11219,23 +11219,23 @@ mul16s_error: { sta print_sdword.dw+2 lda mn+3 sta print_sdword.dw+3 - //SEG183 [86] call print_sdword - //SEG184 [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword] - //SEG185 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy + //SEG184 [86] call print_sdword + //SEG185 [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword] + //SEG186 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy jsr print_sdword - //SEG186 [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8] - //SEG187 mul16s_error::@8 - //SEG188 [88] call print_str - //SEG189 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] - //SEG190 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy - //SEG191 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG187 [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8] + //SEG188 mul16s_error::@8 + //SEG189 [88] call print_str + //SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] + //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy + //SEG192 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG192 mul16s_error::@9 - //SEG193 [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 + //SEG193 mul16s_error::@9 + //SEG194 [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 lda mf sta print_sdword.dw lda mf+1 @@ -11244,19 +11244,19 @@ mul16s_error: { sta print_sdword.dw+2 lda mf+3 sta print_sdword.dw+3 - //SEG194 [90] call print_sdword - //SEG195 [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword] - //SEG196 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy + //SEG195 [90] call print_sdword + //SEG196 [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword] + //SEG197 [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy jsr print_sdword - //SEG197 [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10] - //SEG198 mul16s_error::@10 - //SEG199 [92] call print_ln - //SEG200 [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln] - //SEG201 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy - //SEG202 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy + //SEG198 [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10] + //SEG199 mul16s_error::@10 + //SEG200 [92] call print_ln + //SEG201 [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln] + //SEG202 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy + //SEG203 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln - //SEG203 mul16s_error::@return - //SEG204 [93] return + //SEG204 mul16s_error::@return + //SEG205 [93] return rts str: .text "signed word multiply mismatch @" str1: .text "*@" @@ -11264,23 +11264,23 @@ mul16s_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG205 print_sdword +//SEG206 print_sdword // Print a signed dword as HEX print_sdword: { .label dw = $b - //SEG206 [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + //SEG207 [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 lda dw+3 bpl b1 - //SEG207 [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] - //SEG208 print_sdword::@2 - //SEG209 [97] call print_char - //SEG210 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - //SEG211 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG212 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG208 [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] + //SEG209 print_sdword::@2 + //SEG210 [97] call print_char + //SEG211 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] + //SEG212 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG213 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG213 print_sdword::@4 - //SEG214 [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 + //SEG214 print_sdword::@4 + //SEG215 [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -11298,140 +11298,140 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - //SEG215 [99] phi from print_sdword print_sdword::@4 to print_sdword::@1 [phi:print_sdword/print_sdword::@4->print_sdword::@1] - //SEG216 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@4->print_sdword::@1#0] -- register_copy - //SEG217 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@4->print_sdword::@1#1] -- register_copy - //SEG218 print_sdword::@1 + //SEG216 [99] phi from print_sdword print_sdword::@4 to print_sdword::@1 [phi:print_sdword/print_sdword::@4->print_sdword::@1] + //SEG217 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@4->print_sdword::@1#0] -- register_copy + //SEG218 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@4->print_sdword::@1#1] -- register_copy + //SEG219 print_sdword::@1 b1: - //SEG219 [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 -- vduz1=_dword_vdsz1 - //SEG220 [101] call print_dword - //SEG221 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - //SEG222 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy - //SEG223 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy + //SEG220 [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 -- vduz1=_dword_vdsz1 + //SEG221 [101] call print_dword + //SEG222 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] + //SEG223 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG224 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword - //SEG224 print_sdword::@return - //SEG225 [102] return + //SEG225 print_sdword::@return + //SEG226 [102] return rts } -//SEG226 print_dword +//SEG227 print_dword // Print a dword as HEX print_dword: { .label dw = $b - //SEG227 [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 + //SEG228 [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG228 [105] call print_word - //SEG229 [109] phi from print_dword to print_word [phi:print_dword->print_word] - //SEG230 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy - //SEG231 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + //SEG229 [105] call print_word + //SEG230 [109] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG231 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy + //SEG232 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word - //SEG232 print_dword::@1 - //SEG233 [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 + //SEG233 print_dword::@1 + //SEG234 [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG234 [107] call print_word - //SEG235 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - //SEG236 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG237 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG235 [107] call print_word + //SEG236 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG237 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG238 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word - //SEG238 print_dword::@return - //SEG239 [108] return + //SEG239 print_dword::@return + //SEG240 [108] return rts } -//SEG240 print_word +//SEG241 print_word // Print a word as HEX print_word: { .label w = 3 - //SEG241 [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 + //SEG242 [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG242 [111] call print_byte - //SEG243 [115] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG244 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy - //SEG245 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG243 [111] call print_byte + //SEG244 [115] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG245 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy + //SEG246 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG246 print_word::@1 - //SEG247 [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 + //SEG247 print_word::@1 + //SEG248 [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 lda w tax - //SEG248 [113] call print_byte - //SEG249 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG250 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG251 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG249 [113] call print_byte + //SEG250 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG251 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG252 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG252 print_word::@return - //SEG253 [114] return + //SEG253 print_word::@return + //SEG254 [114] return rts } -//SEG254 print_byte +//SEG255 print_byte // Print a byte as HEX print_byte: { - //SEG255 [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG256 [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG256 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG257 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG257 [118] call print_char - //SEG258 [123] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG259 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG260 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG258 [118] call print_char + //SEG259 [123] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG260 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG261 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG261 print_byte::@1 - //SEG262 [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG262 print_byte::@1 + //SEG263 [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG263 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG264 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG264 [121] call print_char - //SEG265 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG266 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG267 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG265 [121] call print_char + //SEG266 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG267 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG268 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG268 print_byte::@return - //SEG269 [122] return + //SEG269 print_byte::@return + //SEG270 [122] return rts } -//SEG270 print_char +//SEG271 print_char // Print a single char print_char: { - //SEG271 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG272 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG272 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG273 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG273 print_char::@return - //SEG274 [126] return + //SEG274 print_char::@return + //SEG275 [126] return rts } -//SEG275 print_sword +//SEG276 print_sword // Print a signed word as HEX print_sword: { .label w = 3 - //SEG276 [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG277 [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1 - //SEG277 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG278 print_sword::@2 - //SEG279 [130] call print_char - //SEG280 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG281 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG282 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG278 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG279 print_sword::@2 + //SEG280 [130] call print_char + //SEG281 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG282 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG283 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG283 print_sword::@4 - //SEG284 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + //SEG284 print_sword::@4 + //SEG285 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -11441,22 +11441,22 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG285 [132] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] - //SEG286 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG287 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy - //SEG288 print_sword::@1 + //SEG286 [132] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG287 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG288 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG289 print_sword::@1 b1: - //SEG289 [133] (word~) print_word::w#11 ← (word)(signed word) print_sword::w#4 - //SEG290 [134] call print_word - //SEG291 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG292 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG293 [109] phi (word) print_word::w#5 = (word~) print_word::w#11 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG290 [133] (word~) print_word::w#11 ← (word)(signed word) print_sword::w#4 + //SEG291 [134] call print_word + //SEG292 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG293 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG294 [109] phi (word) print_word::w#5 = (word~) print_word::w#11 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word - //SEG294 print_sword::@return - //SEG295 [135] return + //SEG295 print_sword::@return + //SEG296 [135] return rts } -//SEG296 mulf16s +//SEG297 mulf16s // Fast multiply two signed words to a signed double word result // Fixes offsets introduced by using unsigned multiplication mulf16s: { @@ -11470,39 +11470,39 @@ mulf16s: { .label return = $11 .label a = 3 .label b = 5 - //SEG297 [136] (word~) mulf16u::a#4 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + //SEG298 [136] (word~) mulf16u::a#4 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG298 [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + //SEG299 [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG299 [138] call mulf16u - //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 + //SEG300 [138] call mulf16u + //SEG301 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG302 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG303 [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 - //SEG304 mulf16s::@6 - //SEG305 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - //SEG306 [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + //SEG305 mulf16s::@6 + //SEG306 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + //SEG307 [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1 - //SEG307 mulf16s::@3 - //SEG308 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG308 mulf16s::@3 + //SEG309 [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 + //SEG310 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG310 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG311 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11510,30 +11510,30 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG311 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG312 [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 - //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 + //SEG313 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG314 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG315 mulf16s::@1 b1: - //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 + //SEG316 [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 - //SEG316 mulf16s::@4 - //SEG317 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG317 mulf16s::@4 + //SEG318 [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 + //SEG319 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG319 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG320 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -11541,21 +11541,21 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG320 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG321 [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 - //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 + //SEG322 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG323 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG324 mulf16s::@2 b2: - //SEG324 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG325 mulf16s::@return - //SEG326 [154] return + //SEG325 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG326 mulf16s::@return + //SEG327 [154] return rts } -//SEG327 mulf16u +//SEG328 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X mulf16u: { @@ -11565,17 +11565,17 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - //SEG328 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG329 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG329 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG330 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //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 !: } + //SEG331 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 @@ -11668,7 +11668,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG331 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG332 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -11677,11 +11677,11 @@ mulf16u: { sta return+2 lda memR+3 sta return+3 - //SEG332 mulf16u::@return - //SEG333 [160] return + //SEG333 mulf16u::@return + //SEG334 [160] return rts } -//SEG334 mul16s +//SEG335 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication mul16s: { @@ -11695,39 +11695,39 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - //SEG335 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG336 [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 - //SEG336 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG337 [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 - //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 + //SEG338 [163] call mul16u + //SEG339 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG340 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG341 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG341 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG342 mul16s::@6 - //SEG343 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //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 + //SEG342 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG343 mul16s::@6 + //SEG344 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG345 [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 - //SEG345 mul16s::@3 - //SEG346 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG346 mul16s::@3 + //SEG347 [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 + //SEG348 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG348 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG349 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11735,30 +11735,30 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG349 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG350 [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 - //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 + //SEG351 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG352 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG353 mul16s::@1 b1: - //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 + //SEG354 [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 - //SEG354 mul16s::@4 - //SEG355 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG355 mul16s::@4 + //SEG356 [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 + //SEG357 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG357 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG358 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -11766,21 +11766,21 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG358 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG359 [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 - //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 + //SEG360 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG361 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG362 mul16s::@2 b2: - //SEG362 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG363 mul16s::@return - //SEG364 [179] return + //SEG363 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG364 mul16s::@return + //SEG365 [179] return rts } -//SEG365 mul16u +//SEG366 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word mul16u: { .label mb = $11 @@ -11788,7 +11788,7 @@ mul16u: { .label res = $19 .label return = $19 .label b = $17 - //SEG366 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG367 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -11796,34 +11796,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //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 + //SEG368 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG369 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG370 [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 - //SEG370 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG371 mul16u::@1 + //SEG371 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG372 mul16u::@1 b1: - //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 + //SEG373 [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 - //SEG373 mul16u::@return - //SEG374 [184] return + //SEG374 mul16u::@return + //SEG375 [184] return rts - //SEG375 mul16u::@2 + //SEG376 mul16u::@2 b2: - //SEG376 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG377 [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 - //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 + //SEG378 [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 - //SEG378 mul16u::@7 - //SEG379 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG379 mul16u::@7 + //SEG380 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -11837,26 +11837,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //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 + //SEG381 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG382 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG383 mul16u::@4 b4: - //SEG383 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG384 [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 - //SEG384 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG385 [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 - //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 + //SEG386 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG387 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG388 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG389 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG389 muls16s +//SEG390 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction muls16s: { @@ -11866,34 +11866,34 @@ muls16s: { .label i = 9 .label a = 3 .label b = 5 - //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 + //SEG391 [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 - //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 + //SEG392 muls16s::@6 + //SEG393 [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 !: - //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 + //SEG394 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG395 [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 - //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 + //SEG396 [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 - //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 + //SEG397 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG398 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG399 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG400 muls16s::@3 b3: - //SEG400 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG401 [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 !+ @@ -11913,24 +11913,24 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG401 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG402 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG402 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG403 [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 - //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 + //SEG404 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG405 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG405 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG406 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b2: - //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 + //SEG407 [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 @@ -11938,30 +11938,30 @@ muls16s: { sta return+2 lda #>0>>$10 sta return+3 - //SEG407 muls16s::@4 + //SEG408 muls16s::@4 b4: - //SEG408 muls16s::@return - //SEG409 [198] return + //SEG409 muls16s::@return + //SEG410 [198] return rts - //SEG410 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG411 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b6: - //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 + //SEG412 [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 - //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 + //SEG413 [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 - //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 + //SEG414 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG415 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG416 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy + //SEG417 muls16s::@5 b5: - //SEG417 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG418 [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 !+ @@ -11981,13 +11981,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG418 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG419 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG419 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG420 [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 @@ -11996,7 +11996,7 @@ muls16s: { bne b5 jmp b4 } -//SEG420 mul16u_compare +//SEG421 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $15 @@ -12005,49 +12005,49 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //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 + //SEG422 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG423 [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 - //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 + //SEG424 [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 - //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 + //SEG425 [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 - //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 + //SEG426 [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 - //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 + //SEG427 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG428 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG429 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG430 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG431 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy + //SEG432 mul16u_compare::@1 b1: - //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 + //SEG433 [205] call print_str + //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG436 [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 - //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 + //SEG437 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG438 [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 - //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 + //SEG439 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG440 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG441 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG442 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG443 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG444 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG445 mul16u_compare::@2 b2: - //SEG445 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [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 @@ -12055,7 +12055,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG446 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG447 [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 @@ -12063,38 +12063,38 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG447 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - //SEG448 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - //SEG449 [211] call muls16u + //SEG448 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + //SEG449 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + //SEG450 [211] call muls16u jsr muls16u - //SEG450 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 - //SEG451 mul16u_compare::@13 - //SEG452 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - //SEG453 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG451 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + //SEG452 mul16u_compare::@13 + //SEG453 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + //SEG454 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG454 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - //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 + //SEG455 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + //SEG456 [216] call mul16u + //SEG457 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG458 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG459 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG459 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG460 mul16u_compare::@14 - //SEG461 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - //SEG462 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - //SEG463 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - //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 + //SEG460 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG461 mul16u_compare::@14 + //SEG462 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + //SEG463 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + //SEG464 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + //SEG465 [221] call mulf16u + //SEG466 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG468 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 - //SEG469 mul16u_compare::@15 - //SEG470 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - //SEG471 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG469 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + //SEG470 mul16u_compare::@15 + //SEG471 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + //SEG472 [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 !+ @@ -12108,19 +12108,19 @@ mul16u_compare: { cmp mf+3 beq b6 !: - //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 + //SEG473 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG474 mul16u_compare::@6 + //SEG475 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG476 [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 - //SEG476 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG477 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b6: - //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 + //SEG478 [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 - //SEG478 mul16u_compare::@3 + //SEG479 mul16u_compare::@3 b3: - //SEG479 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG480 [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 !+ @@ -12134,167 +12134,167 @@ mul16u_compare: { cmp mn+3 beq b4 !: - //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 + //SEG481 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG482 [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 - //SEG482 mul16u_compare::@4 + //SEG483 mul16u_compare::@4 b4: - //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 + //SEG484 [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 - //SEG484 mul16u_compare::@8 - //SEG485 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG485 mul16u_compare::@8 + //SEG486 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG486 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG487 [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 - //SEG487 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - //SEG488 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - //SEG489 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - //SEG490 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - //SEG491 [236] call mul16u_error - //SEG492 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG488 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + //SEG489 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + //SEG490 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + //SEG491 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + //SEG492 [236] call mul16u_error + //SEG493 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] jsr mul16u_error - //SEG493 mul16u_compare::@return + //SEG494 mul16u_compare::@return breturn: - //SEG494 [237] return + //SEG495 [237] return rts - //SEG495 mul16u_compare::@5 + //SEG496 mul16u_compare::@5 b5: - //SEG496 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG497 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - //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 + //SEG498 [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 - //SEG498 mul16u_compare::@10 - //SEG499 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG499 mul16u_compare::@10 + //SEG500 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //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 + //SEG501 [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: - //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 + //SEG502 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG503 mul16u_compare::@11 + //SEG504 [243] call print_ln + //SEG505 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG506 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG507 [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 - //SEG507 mul16u_compare::@17 - //SEG508 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG508 mul16u_compare::@17 + //SEG509 [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 - //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 + //SEG510 [245] call print_str + //SEG511 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG512 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG513 [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 - //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 + //SEG514 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG515 mul16u_compare::@18 + //SEG516 [247] call print_ln + //SEG517 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG518 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG519 [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 - //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 + //SEG520 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG521 mul16u_compare::@22 + //SEG522 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG523 [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!@" } -//SEG523 mul16u_error +//SEG524 mul16u_error mul16u_error: { .label a = 3 .label b = $17 .label ms = $b .label mn = $19 .label mf = $11 - //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 + //SEG525 [250] call print_str + //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG527 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG528 [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 - //SEG528 mul16u_error::@1 - //SEG529 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 - //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 + //SEG529 mul16u_error::@1 + //SEG530 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 + //SEG531 [252] call print_word + //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG533 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //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 + //SEG535 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG536 mul16u_error::@2 + //SEG537 [254] call print_str + //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG540 [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 - //SEG540 mul16u_error::@3 - //SEG541 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG541 mul16u_error::@3 + //SEG542 [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 - //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 + //SEG543 [256] call print_word + //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG545 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //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 + //SEG547 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG548 mul16u_error::@4 + //SEG549 [258] call print_str + //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG552 [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 - //SEG552 mul16u_error::@5 - //SEG553 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - //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 + //SEG553 mul16u_error::@5 + //SEG554 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + //SEG555 [260] call print_dword + //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG557 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //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 + //SEG559 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG560 mul16u_error::@6 + //SEG561 [262] call print_str + //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG564 [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 - //SEG564 mul16u_error::@7 - //SEG565 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG565 mul16u_error::@7 + //SEG566 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -12303,24 +12303,24 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //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 + //SEG567 [264] call print_dword + //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG569 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //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 + //SEG571 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG572 mul16u_error::@8 + //SEG573 [266] call print_str + //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG576 [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 - //SEG576 mul16u_error::@9 - //SEG577 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG577 mul16u_error::@9 + //SEG578 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -12329,24 +12329,24 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //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 + //SEG579 [268] call print_dword + //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG581 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //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 + //SEG583 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG584 mul16u_error::@10 + //SEG585 [270] call print_ln + //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG587 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG588 [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 - //SEG588 mul16u_error::@return - //SEG589 [271] return + //SEG589 mul16u_error::@return + //SEG590 [271] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -12354,7 +12354,7 @@ mul16u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG590 muls16u +//SEG591 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition muls16u: { @@ -12363,28 +12363,28 @@ muls16u: { .label i = 3 .label a = $15 .label b = $17 - //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 + //SEG592 [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 !: - //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 + //SEG593 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG594 [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 - //SEG594 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG595 [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 - //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 + //SEG596 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG597 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG598 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG599 muls16u::@2 b2: - //SEG599 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG600 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -12398,36 +12398,36 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG600 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG601 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG601 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG602 [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 - //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 + //SEG603 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG604 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG604 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG605 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b3: - //SEG605 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG606 [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 - //SEG606 muls16u::@1 + //SEG607 muls16u::@1 b1: - //SEG607 muls16u::@return - //SEG608 [278] return + //SEG608 muls16u::@return + //SEG609 [278] return rts } -//SEG609 mulf_init +//SEG610 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 5 @@ -12437,70 +12437,70 @@ mulf_init: { .label sqr2_hi = 5 .label sqr2_lo = 3 .label dir = 2 - //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 + //SEG611 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG612 [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 - //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 + //SEG613 [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 - //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 + //SEG614 [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 - //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 + //SEG615 [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 - //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 + //SEG616 [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 - //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 + //SEG617 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG618 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG619 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG620 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG621 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG622 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG623 mulf_init::@1 b1: - //SEG623 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG624 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG625 [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 - //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 + //SEG626 [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 - //SEG626 mulf_init::@5 - //SEG627 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG627 mulf_init::@5 + //SEG628 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG628 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG629 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 + //SEG630 [286] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG631 [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 + //SEG632 [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 + //SEG633 mulf_init::@2 b2: - //SEG633 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG634 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG634 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG635 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG635 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG636 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG636 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG637 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG637 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG638 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG638 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG639 [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 @@ -12508,132 +12508,129 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG639 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG640 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG641 [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] - //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 + //SEG642 [295] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG643 [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 - //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 + //SEG644 [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 - //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 + //SEG645 [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 - //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 + //SEG646 [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 - //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 + //SEG647 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG648 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG649 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG650 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG651 [295] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG652 mulf_init::@3 b3: - //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 + //SEG653 [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 - //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 + //SEG654 [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 - //SEG654 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG655 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG655 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG656 [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 - //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 + //SEG657 [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 - //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 + //SEG658 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG659 [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 - //SEG659 mulf_init::@4 + //SEG660 mulf_init::@4 b4: - //SEG660 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG661 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG662 [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] - //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 + //SEG668 [307] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG669 mulf_init::@12 + //SEG670 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG671 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } -//SEG671 print_cls +//SEG672 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //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 + //SEG673 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG674 [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 - //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 + //SEG675 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG676 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG677 print_cls::@1 b1: - //SEG677 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG678 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG678 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG679 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG680 [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 - //SEG680 print_cls::@return - //SEG681 [313] return + //SEG681 print_cls::@return + //SEG682 [313] return rts } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @42] +//SEG4 [1] phi from @begin to @42 [phi:@begin->@42] b42_from_bbegin: jmp b42 -//SEG4 @42 +//SEG5 @42 b42: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @42 to @end [phi:@42->@end] +//SEG7 [3] phi from @42 to @end [phi:@42->@end] bend_from_b42: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL - //SEG10 [5] call print_cls - //SEG11 [340] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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] + //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 mulf_init - //SEG15 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [7] call mulf_init + //SEG16 [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] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call mulf_init_asm + //SEG19 [9] call mulf_init_asm jsr mulf_init_asm - //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [11] call mulf_tables_cmp - //SEG22 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG22 [11] call mulf_tables_cmp + //SEG23 [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] + //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG24 main::@4 + //SEG25 main::@4 b4: - //SEG25 [13] call mul8u_compare - //SEG26 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG26 [13] call mul8u_compare + //SEG27 [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] + //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG28 main::@5 + //SEG29 main::@5 b5: - //SEG29 [15] call mul8s_compare - //SEG30 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare] + //SEG30 [15] call mul8s_compare + //SEG31 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare] mul8s_compare_from_b5: jsr mul8s_compare jmp breturn - //SEG31 main::@return + //SEG32 main::@return breturn: - //SEG32 [16] return + //SEG33 [16] return rts } -//SEG33 mul8s_compare +//SEG34 mul8s_compare // Perform all possible signed byte multiplications (slow and fast) and compare the results mul8s_compare: { .label ms = $40 @@ -5038,96 +5040,96 @@ mul8s_compare: { .label b = 3 .label a = 2 .label ok = 4 - //SEG34 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1] + //SEG35 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1] b1_from_mul8s_compare: - //SEG35 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 + //SEG36 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 lda #-$80 sta a jmp b1 - //SEG36 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1] + //SEG37 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1] b1_from_b10: - //SEG37 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy + //SEG38 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy jmp b1 - //SEG38 mul8s_compare::@1 + //SEG39 mul8s_compare::@1 b1: - //SEG39 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2] + //SEG40 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2] b2_from_b1: - //SEG40 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 + //SEG41 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 lda #-$80 sta b jmp b2 - //SEG41 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2] + //SEG42 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2] b2_from_b5: - //SEG42 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy + //SEG43 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy jmp b2 - //SEG43 mul8s_compare::@2 + //SEG44 mul8s_compare::@2 b2: - //SEG44 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 + //SEG45 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 lda a sta muls8s.a - //SEG45 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 + //SEG46 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 lda b sta muls8s.b - //SEG46 [22] call muls8s + //SEG47 [22] call muls8s jsr muls8s - //SEG47 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 -- vwsz1=vwsz2 + //SEG48 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 -- vwsz1=vwsz2 lda muls8s.return sta muls8s.return_2 lda muls8s.return+1 sta muls8s.return_2+1 jmp b12 - //SEG48 mul8s_compare::@12 + //SEG49 mul8s_compare::@12 b12: - //SEG49 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 -- vwsz1=vwsz2 + //SEG50 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 -- vwsz1=vwsz2 lda muls8s.return_2 sta ms lda muls8s.return_2+1 sta ms+1 - //SEG50 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 + //SEG51 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 lda a sta mulf8s.a - //SEG51 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 + //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 lda b sta mulf8s.b - //SEG52 [27] call mulf8s - //SEG53 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG53 [27] call mulf8s + //SEG54 [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 + //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 -- vwsz1=vwsz2 lda mulf8s.return sta mulf8s.return_2 lda mulf8s.return+1 sta mulf8s.return_2+1 jmp b13 - //SEG55 mul8s_compare::@13 + //SEG56 mul8s_compare::@13 b13: - //SEG56 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 -- vwsz1=vwsz2 + //SEG57 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 -- vwsz1=vwsz2 lda mulf8s.return_2 sta mf lda mulf8s.return_2+1 sta mf+1 - //SEG57 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 + //SEG58 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 lda a sta mul8s.a - //SEG58 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 + //SEG59 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 lda b sta mul8s.b - //SEG59 [32] call mul8s + //SEG60 [32] call mul8s jsr mul8s - //SEG60 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 -- vwsz1=vwsz2 + //SEG61 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 -- vwsz1=vwsz2 lda mul8s.m sta mul8s.return lda mul8s.m+1 sta mul8s.return+1 jmp b14 - //SEG61 mul8s_compare::@14 + //SEG62 mul8s_compare::@14 b14: - //SEG62 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 -- vwsz1=vwsz2 + //SEG63 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 -- vwsz1=vwsz2 lda mul8s.return sta mn lda mul8s.return+1 sta mn+1 - //SEG63 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 + //SEG64 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 lda ms cmp mf bne !+ @@ -5135,26 +5137,26 @@ mul8s_compare: { cmp mf+1 beq b3_from_b14 !: - //SEG64 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6] + //SEG65 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6] b6_from_b14: jmp b6 - //SEG65 mul8s_compare::@6 + //SEG66 mul8s_compare::@6 b6: - //SEG66 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3] + //SEG67 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3] b3_from_b6: - //SEG67 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuz1=vbuc1 + //SEG68 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - //SEG68 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3] + //SEG69 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3] b3_from_b14: - //SEG69 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuz1=vbuc1 + //SEG70 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 - //SEG70 mul8s_compare::@3 + //SEG71 mul8s_compare::@3 b3: - //SEG71 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 + //SEG72 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 lda ms cmp mn bne !+ @@ -5162,121 +5164,121 @@ mul8s_compare: { cmp mn+1 beq b20_from_b3 !: - //SEG72 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4] + //SEG73 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4] b4_from_b3: - //SEG73 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuz1=vbuc1 + //SEG74 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - //SEG74 mul8s_compare::@4 + //SEG75 mul8s_compare::@4 b4: - //SEG75 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuz1_neq_0_then_la1 + //SEG76 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b8 - //SEG76 mul8s_compare::@8 + //SEG77 mul8s_compare::@8 b8: - //SEG77 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG78 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG78 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 + //SEG79 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 lda a sta mul8s_error.a - //SEG79 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 + //SEG80 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 lda b sta mul8s_error.b - //SEG80 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 -- vwsz1=vwsz2 + //SEG81 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 -- vwsz1=vwsz2 lda ms sta mul8s_error.ms lda ms+1 sta mul8s_error.ms+1 - //SEG81 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 -- vwsz1=vwsz2 + //SEG82 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 -- vwsz1=vwsz2 lda mn sta mul8s_error.mn lda mn+1 sta mul8s_error.mn+1 - //SEG82 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 -- vwsz1=vwsz2 + //SEG83 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 -- vwsz1=vwsz2 lda mf sta mul8s_error.mf lda mf+1 sta mul8s_error.mf+1 - //SEG83 [47] call mul8s_error + //SEG84 [47] call mul8s_error jsr mul8s_error jmp breturn - //SEG84 mul8s_compare::@return + //SEG85 mul8s_compare::@return breturn: - //SEG85 [48] return + //SEG86 [48] return rts - //SEG86 mul8s_compare::@5 + //SEG87 mul8s_compare::@5 b5: - //SEG87 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 + //SEG88 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 inc b - //SEG88 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 + //SEG89 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 lda b cmp #-$80 bne b2_from_b5 jmp b10 - //SEG89 mul8s_compare::@10 + //SEG90 mul8s_compare::@10 b10: - //SEG90 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 + //SEG91 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 inc a - //SEG91 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 + //SEG92 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 lda a cmp #-$80 bne b1_from_b10 jmp b11 - //SEG92 mul8s_compare::@11 + //SEG93 mul8s_compare::@11 b11: - //SEG93 [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG94 [53] (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 - //SEG94 [54] call print_str - //SEG95 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str] + //SEG95 [54] call print_str + //SEG96 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str] print_str_from_b11: - //SEG96 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy - //SEG97 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG97 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy + //SEG98 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG98 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16] + //SEG99 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16] b16_from_b11: jmp b16 - //SEG99 mul8s_compare::@16 + //SEG100 mul8s_compare::@16 b16: - //SEG100 [56] call print_ln - //SEG101 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln] + //SEG101 [56] call print_ln + //SEG102 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln] print_ln_from_b16: - //SEG102 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy - //SEG103 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy + //SEG103 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy + //SEG104 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG104 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20] + //SEG105 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20] b20_from_b3: jmp b20 - //SEG105 mul8s_compare::@20 + //SEG106 mul8s_compare::@20 b20: - //SEG106 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4] + //SEG107 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4] b4_from_b20: - //SEG107 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy + //SEG108 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy jmp b4 str: .text "signed multiply results match!@" } -//SEG108 print_ln +//SEG109 print_ln // Print a newline print_ln: { - //SEG109 [59] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG110 [59] 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: - //SEG110 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG111 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG111 print_ln::@1 + //SEG112 print_ln::@1 b1: - //SEG112 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG113 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -5284,7 +5286,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG113 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG114 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5294,210 +5296,210 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG114 print_ln::@return + //SEG115 print_ln::@return breturn: - //SEG115 [62] return + //SEG116 [62] return rts } -//SEG116 print_str +//SEG117 print_str // Print a zero-terminated string print_str: { .label str = 7 - //SEG117 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG118 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG118 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG119 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG119 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG120 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG120 print_str::@1 + //SEG121 print_str::@1 b1: - //SEG121 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG122 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG122 print_str::@return + //SEG123 print_str::@return breturn: - //SEG123 [66] return + //SEG124 [66] return rts - //SEG124 print_str::@2 + //SEG125 print_str::@2 b2: - //SEG125 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 + //SEG126 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG126 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG127 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG127 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 + //SEG128 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG128 mul8s_error +//SEG129 mul8s_error mul8s_error: { .label a = $4e .label b = $4f .label ms = $50 .label mn = $52 .label mf = $54 - //SEG129 [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG130 [70] (byte*~) print_char_cursor#193 ← (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 - //SEG130 [71] call print_str - //SEG131 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str] + //SEG131 [71] call print_str + //SEG132 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str] print_str_from_mul8s_error: - //SEG132 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy - //SEG133 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 + //SEG133 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy + //SEG134 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG134 mul8s_error::@1 + //SEG135 mul8s_error::@1 b1: - //SEG135 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0 -- vbsz1=vbsz2 + //SEG136 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0 -- vbsz1=vbsz2 lda a sta print_sbyte.b - //SEG136 [73] call print_sbyte - //SEG137 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] + //SEG137 [73] call print_sbyte + //SEG138 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] print_sbyte_from_b1: - //SEG138 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy + //SEG139 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy jsr print_sbyte - //SEG139 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] + //SEG140 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] b2_from_b1: jmp b2 - //SEG140 mul8s_error::@2 + //SEG141 mul8s_error::@2 b2: - //SEG141 [75] call print_str - //SEG142 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] + //SEG142 [75] call print_str + //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] print_str_from_b2: - //SEG143 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy - //SEG144 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy + //SEG145 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG145 mul8s_error::@3 + //SEG146 mul8s_error::@3 b3: - //SEG146 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsz1=vbsz2 + //SEG147 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsz1=vbsz2 lda b sta print_sbyte.b - //SEG147 [77] call print_sbyte - //SEG148 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] + //SEG148 [77] call print_sbyte + //SEG149 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] print_sbyte_from_b3: - //SEG149 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy + //SEG150 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy jsr print_sbyte - //SEG150 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] + //SEG151 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] b4_from_b3: jmp b4 - //SEG151 mul8s_error::@4 + //SEG152 mul8s_error::@4 b4: - //SEG152 [79] call print_str - //SEG153 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] + //SEG153 [79] call print_str + //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] print_str_from_b4: - //SEG154 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy - //SEG155 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy + //SEG156 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG156 mul8s_error::@5 + //SEG157 mul8s_error::@5 b5: - //SEG157 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 -- vwsz1=vwsz2 + //SEG158 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 -- vwsz1=vwsz2 lda ms sta print_sword.w lda ms+1 sta print_sword.w+1 - //SEG158 [81] call print_sword - //SEG159 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword] + //SEG159 [81] call print_sword + //SEG160 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword] print_sword_from_b5: - //SEG160 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy + //SEG161 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy jsr print_sword - //SEG161 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6] + //SEG162 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6] b6_from_b5: jmp b6 - //SEG162 mul8s_error::@6 + //SEG163 mul8s_error::@6 b6: - //SEG163 [83] call print_str - //SEG164 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] + //SEG164 [83] call print_str + //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] print_str_from_b6: - //SEG165 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy - //SEG166 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy + //SEG167 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG167 mul8s_error::@7 + //SEG168 mul8s_error::@7 b7: - //SEG168 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 + //SEG169 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 lda mn sta print_sword.w lda mn+1 sta print_sword.w+1 - //SEG169 [85] call print_sword - //SEG170 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword] + //SEG170 [85] call print_sword + //SEG171 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword] print_sword_from_b7: - //SEG171 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy + //SEG172 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy jsr print_sword - //SEG172 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8] + //SEG173 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8] b8_from_b7: jmp b8 - //SEG173 mul8s_error::@8 + //SEG174 mul8s_error::@8 b8: - //SEG174 [87] call print_str - //SEG175 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] + //SEG175 [87] call print_str + //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] print_str_from_b8: - //SEG176 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy - //SEG177 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy + //SEG178 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG178 mul8s_error::@9 + //SEG179 mul8s_error::@9 b9: - //SEG179 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 + //SEG180 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 lda mf sta print_sword.w lda mf+1 sta print_sword.w+1 - //SEG180 [89] call print_sword - //SEG181 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword] + //SEG181 [89] call print_sword + //SEG182 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword] print_sword_from_b9: - //SEG182 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy + //SEG183 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy jsr print_sword - //SEG183 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10] + //SEG184 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10] b10_from_b9: jmp b10 - //SEG184 mul8s_error::@10 + //SEG185 mul8s_error::@10 b10: - //SEG185 [91] call print_ln - //SEG186 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln] + //SEG186 [91] call print_ln + //SEG187 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln] print_ln_from_b10: - //SEG187 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy - //SEG188 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy + //SEG188 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy + //SEG189 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG189 mul8s_error::@return + //SEG190 mul8s_error::@return breturn: - //SEG190 [92] return + //SEG191 [92] return rts str: .text "signed multiply mismatch @" str1: .text "*@" @@ -5505,30 +5507,30 @@ mul8s_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG191 print_sword +//SEG192 print_sword // Print a signed word as HEX print_sword: { .label w = 9 - //SEG192 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG193 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG193 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG194 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG194 print_sword::@2 + //SEG195 print_sword::@2 b2: - //SEG195 [96] call print_char - //SEG196 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG196 [96] call print_char + //SEG197 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG197 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG198 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG198 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG199 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG199 print_sword::@4 + //SEG200 print_sword::@4 b4: - //SEG200 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 + //SEG201 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -5538,185 +5540,185 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG201 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG202 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG202 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG203 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG203 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG204 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG204 print_sword::@1 + //SEG205 print_sword::@1 b1: - //SEG205 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 + //SEG206 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 lda w sta print_word.w lda w+1 sta print_word.w+1 - //SEG206 [100] call print_word - //SEG207 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG207 [100] call print_word + //SEG208 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG208 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG209 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG209 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG210 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG210 print_sword::@return + //SEG211 print_sword::@return breturn: - //SEG211 [101] return + //SEG212 [101] return rts } -//SEG212 print_word +//SEG213 print_word // Print a word as HEX print_word: { .label w = $b - //SEG213 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuz1=_hi_vwuz2 + //SEG214 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG214 [104] call print_byte - //SEG215 [108] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG215 [104] call print_byte + //SEG216 [108] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG216 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy - //SEG217 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG217 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy + //SEG218 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG218 print_word::@1 + //SEG219 print_word::@1 b1: - //SEG219 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuz1=_lo_vwuz2 + //SEG220 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG220 [106] call print_byte - //SEG221 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG221 [106] call print_byte + //SEG222 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG222 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG223 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG223 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG224 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG224 print_word::@return + //SEG225 print_word::@return breturn: - //SEG225 [107] return + //SEG226 [107] return rts } -//SEG226 print_byte +//SEG227 print_byte // Print a byte as HEX print_byte: { .label _0 = $56 .label _2 = $57 .label b = $d - //SEG227 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG228 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG228 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG229 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG229 [111] call print_char - //SEG230 [116] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG230 [111] call print_char + //SEG231 [116] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG231 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy - //SEG232 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG232 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy + //SEG233 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG233 print_byte::@1 + //SEG234 print_byte::@1 b1: - //SEG234 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG235 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG235 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG236 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG236 [114] call print_char - //SEG237 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG237 [114] call print_char + //SEG238 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG238 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG239 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG239 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG240 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG240 print_byte::@return + //SEG241 print_byte::@return breturn: - //SEG241 [115] return + //SEG242 [115] return rts } -//SEG242 print_char +//SEG243 print_char // Print a single char print_char: { .label ch = $e - //SEG243 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 + //SEG244 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG244 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG245 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG245 print_char::@return + //SEG246 print_char::@return breturn: - //SEG246 [119] return + //SEG247 [119] return rts } -//SEG247 print_sbyte +//SEG248 print_sbyte // Print a signed byte as HEX print_sbyte: { .label b = $11 - //SEG248 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG249 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG249 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG250 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG250 print_sbyte::@3 + //SEG251 print_sbyte::@3 b3: - //SEG251 [123] call print_char - //SEG252 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG252 [123] call print_char + //SEG253 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG253 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG254 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG254 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG255 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG255 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG256 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG256 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG257 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG257 print_sbyte::@2 + //SEG258 print_sbyte::@2 b2: - //SEG258 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5 -- vbuz1=vbuz2 + //SEG259 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG259 [126] call print_byte - //SEG260 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG260 [126] call print_byte + //SEG261 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG261 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG262 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG262 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG263 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG263 print_sbyte::@return + //SEG264 print_sbyte::@return breturn: - //SEG264 [127] return + //SEG265 [127] return rts - //SEG265 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG266 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG266 print_sbyte::@1 + //SEG267 print_sbyte::@1 b1: - //SEG267 [129] call print_char - //SEG268 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG268 [129] call print_char + //SEG269 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG269 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG270 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG270 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG271 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b5 - //SEG271 print_sbyte::@5 + //SEG272 print_sbyte::@5 b5: - //SEG272 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsz1=_neg_vbsz1 + //SEG273 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -5724,7 +5726,7 @@ print_sbyte: { sta b jmp b2_from_b5 } -//SEG273 mul8s +//SEG274 mul8s // Multiply of two signed bytes to a signed word // Fixes offsets introduced by using unsigned multiplication mul8s: { @@ -5738,95 +5740,94 @@ mul8s: { .label a = $48 .label b = $49 .label return = $4a - //SEG274 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2 + //SEG275 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2 lda b sta mul8u.b - //SEG275 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2 + //SEG276 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2 lda a sta mul8u.a - //SEG276 [133] call mul8u - //SEG277 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG277 [133] call mul8u + //SEG278 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] mul8u_from_mul8s: - //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 + //SEG279 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG280 [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 + //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b6 - //SEG281 mul8s::@6 + //SEG282 mul8s::@6 b6: - //SEG282 [135] (word) mul8s::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG283 [135] (word) mul8s::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta m lda mul8u.return+1 sta m+1 - //SEG283 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 + //SEG284 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1_from_b6 jmp b3 - //SEG284 mul8s::@3 + //SEG285 mul8s::@3 b3: - //SEG285 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 + //SEG286 [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 + //SEG287 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _6 - //SEG287 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG288 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 lda _6 sec sbc b sta _16 - //SEG288 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG289 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG289 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG290 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] b1_from_b3: b1_from_b6: - //SEG290 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG291 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy jmp b1 - //SEG291 mul8s::@1 + //SEG292 mul8s::@1 b1: - //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 + //SEG293 [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 - //SEG293 mul8s::@4 + //SEG294 mul8s::@4 b4: - //SEG294 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 + //SEG295 [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 + //SEG296 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _12 - //SEG296 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG297 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 lda _12 sec sbc a sta _17 - //SEG297 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG298 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 lda _17 sta m+1 - //SEG298 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG299 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] b2_from_b1: b2_from_b4: - //SEG299 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG300 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy jmp b2 - //SEG300 mul8s::@2 + //SEG301 mul8s::@2 b2: jmp breturn - //SEG301 mul8s::@return + //SEG302 mul8s::@return breturn: - //SEG302 [148] return + //SEG303 [148] return rts } -//SEG303 mul8u -// Simple binary multiplication implementation +//SEG304 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label _1 = $60 @@ -5836,46 +5837,46 @@ mul8u: { .label return = $58 .label b = $14 .label return_3 = $7c - //SEG304 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 + //SEG305 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 lda b sta mb lda #0 sta mb+1 - //SEG305 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG306 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //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 + //SEG307 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG308 [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 - //SEG308 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG309 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG309 mul8u::@1 + //SEG310 mul8u::@1 b1: - //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 + //SEG311 [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 - //SEG311 mul8u::@return + //SEG312 mul8u::@return breturn: - //SEG312 [153] return + //SEG313 [153] return rts - //SEG313 mul8u::@2 + //SEG314 mul8u::@2 b2: - //SEG314 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG315 [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 - //SEG315 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG316 [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 - //SEG316 mul8u::@7 + //SEG317 mul8u::@7 b7: - //SEG317 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG318 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5883,26 +5884,26 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG318 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG319 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG319 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG320 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG320 mul8u::@4 + //SEG321 mul8u::@4 b4: - //SEG321 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG322 [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 - //SEG322 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG323 [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 - //SEG323 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG324 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //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 + //SEG325 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG326 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG327 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG327 mulf8s +//SEG328 mulf8s // Fast multiply two signed bytes to a word result mulf8s: { .label return = $64 @@ -5910,44 +5911,44 @@ mulf8s: { .label b = $43 .label return_2 = $44 jmp mulf8s_prepare1 - //SEG328 mulf8s::mulf8s_prepare1 + //SEG329 mulf8s::mulf8s_prepare1 mulf8s_prepare1: - //SEG329 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 + //SEG330 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 lda a sta mulf8u_prepare.a - //SEG330 [162] call mulf8u_prepare - //SEG331 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG331 [162] call mulf8u_prepare + //SEG332 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG332 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG333 [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 - //SEG333 mulf8s::@2 + //SEG334 mulf8s::@2 b2: - //SEG334 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 + //SEG335 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 lda b sta mulf8s_prepared.b - //SEG335 [164] call mulf8s_prepared + //SEG336 [164] call mulf8s_prepared jsr mulf8s_prepared - //SEG336 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 + //SEG337 [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 - //SEG337 mulf8s::@4 + //SEG338 mulf8s::@4 b4: - //SEG338 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 + //SEG339 [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 - //SEG339 mulf8s::@return + //SEG340 mulf8s::@return breturn: - //SEG340 [167] return + //SEG341 [167] return rts } -//SEG341 mulf8s_prepared +//SEG342 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) mulf8s_prepared: { @@ -5961,90 +5962,90 @@ mulf8s_prepared: { .label m = $1a .label b = $61 .label return = $62 - //SEG342 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 + //SEG343 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 lda b sta mulf8u_prepared.b - //SEG343 [169] call mulf8u_prepared - //SEG344 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG344 [169] call mulf8u_prepared + //SEG345 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: - //SEG345 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG346 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG346 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG347 [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 - //SEG347 mulf8s_prepared::@6 + //SEG348 mulf8s_prepared::@6 b6: - //SEG348 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 + //SEG349 [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 - //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 + //SEG350 [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 - //SEG350 mulf8s_prepared::@3 + //SEG351 mulf8s_prepared::@3 b3: - //SEG351 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + //SEG352 [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 + //SEG353 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _5 - //SEG353 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG354 [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 - //SEG354 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG355 [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 - //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 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: - //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 [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 - //SEG357 mulf8s_prepared::@1 + //SEG358 mulf8s_prepared::@1 b1: - //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 + //SEG359 [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 - //SEG359 mulf8s_prepared::@4 + //SEG360 mulf8s_prepared::@4 b4: - //SEG360 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + //SEG361 [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 + //SEG362 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _11 - //SEG362 [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 + //SEG363 [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 - //SEG363 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG364 [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 - //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 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: - //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 [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 - //SEG366 mulf8s_prepared::@2 + //SEG367 mulf8s_prepared::@2 b2: jmp breturn - //SEG367 mulf8s_prepared::@return + //SEG368 mulf8s_prepared::@return breturn: - //SEG368 [184] return + //SEG369 [184] return rts } -//SEG369 mulf8u_prepared +//SEG370 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { @@ -6054,10 +6055,10 @@ mulf8u_prepared: { .label b = $1c .label return_2 = $88 .label return_3 = $66 - //SEG370 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 + //SEG371 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 lda b sta memB - //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 } + //SEG372 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: @@ -6070,26 +6071,26 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //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 + //SEG373 [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 - //SEG373 mulf8u_prepared::@return + //SEG374 mulf8u_prepared::@return breturn: - //SEG374 [189] return + //SEG375 [189] return rts } -//SEG375 mulf8u_prepare +//SEG376 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result mulf8u_prepare: { .label memA = $fd .label a = $1d - //SEG376 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 + //SEG377 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG377 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG378 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 @@ -6097,12 +6098,12 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG378 mulf8u_prepare::@return + //SEG379 mulf8u_prepare::@return breturn: - //SEG379 [193] return + //SEG380 [193] return rts } -//SEG380 muls8s +//SEG381 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction muls8s: { @@ -6113,35 +6114,35 @@ muls8s: { .label a = $3c .label b = $3d .label return_2 = $3e - //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 + //SEG382 [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 - //SEG382 muls8s::@6 + //SEG383 muls8s::@6 b6: - //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 + //SEG384 [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 - //SEG384 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG385 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] b3_from_b6: - //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 + //SEG386 [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 - //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 + //SEG387 [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 - //SEG387 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG388 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] b3_from_b3: - //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 + //SEG389 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG390 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy jmp b3 - //SEG390 muls8s::@3 + //SEG391 muls8s::@3 b3: - //SEG391 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 + //SEG392 [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 @@ -6156,51 +6157,51 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG392 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 + //SEG393 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 inc j - //SEG393 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsz1_neq_vbsz2_then_la1 + //SEG394 [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 - //SEG394 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG395 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] b4_from_b3: b4_from_b5: - //SEG395 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy + //SEG396 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG396 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG397 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b4_from_b6: - //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 + //SEG398 [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 - //SEG398 muls8s::@4 + //SEG399 muls8s::@4 b4: jmp breturn - //SEG399 muls8s::@return + //SEG400 muls8s::@return breturn: - //SEG400 [201] return + //SEG401 [201] return rts - //SEG401 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG402 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b5_from_muls8s: - //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 + //SEG403 [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 - //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 + //SEG404 [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 - //SEG404 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG405 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] b5_from_b5: - //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 + //SEG406 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG407 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy jmp b5 - //SEG407 muls8s::@5 + //SEG408 muls8s::@5 b5: - //SEG408 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 + //SEG409 [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 @@ -6215,15 +6216,15 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG409 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 + //SEG410 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 dec i - //SEG410 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsz1_neq_vbsz2_then_la1 + //SEG411 [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 } -//SEG411 mul8u_compare +//SEG412 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { .label ms = $74 @@ -6232,98 +6233,98 @@ mul8u_compare: { .label b = $23 .label a = $22 .label ok = $24 - //SEG412 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG413 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] b1_from_mul8u_compare: - //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 + //SEG414 [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 - //SEG414 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG415 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] b1_from_b10: - //SEG415 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG416 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy jmp b1 - //SEG416 mul8u_compare::@1 + //SEG417 mul8u_compare::@1 b1: - //SEG417 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG418 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] b2_from_b1: - //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 + //SEG419 [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 - //SEG419 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG420 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] b2_from_b5: - //SEG420 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG421 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy jmp b2 - //SEG421 mul8u_compare::@2 + //SEG422 mul8u_compare::@2 b2: - //SEG422 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG423 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta muls8u.a - //SEG423 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG424 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta muls8u.b - //SEG424 [211] call muls8u + //SEG425 [211] call muls8u jsr muls8u - //SEG425 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 + //SEG426 [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 - //SEG426 mul8u_compare::@12 + //SEG427 mul8u_compare::@12 b12: - //SEG427 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 + //SEG428 [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 - //SEG428 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG429 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mulf8u.a - //SEG429 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG430 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mulf8u.b - //SEG430 [216] call mulf8u + //SEG431 [216] call mulf8u jsr mulf8u - //SEG431 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 + //SEG432 [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 - //SEG432 mul8u_compare::@13 + //SEG433 mul8u_compare::@13 b13: - //SEG433 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 + //SEG434 [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 - //SEG434 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG435 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mul8u.a - //SEG435 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG436 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mul8u.b - //SEG436 [221] call mul8u - //SEG437 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG437 [221] call mul8u + //SEG438 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] mul8u_from_b13: - //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 + //SEG439 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG440 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG440 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG441 [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 - //SEG441 mul8u_compare::@14 + //SEG442 mul8u_compare::@14 b14: - //SEG442 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG443 [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 - //SEG443 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG444 [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 !+ @@ -6331,26 +6332,26 @@ mul8u_compare: { cmp mf+1 beq b3_from_b14 !: - //SEG444 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG445 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] b6_from_b14: jmp b6 - //SEG445 mul8u_compare::@6 + //SEG446 mul8u_compare::@6 b6: - //SEG446 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG447 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] b3_from_b6: - //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 + //SEG448 [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 - //SEG448 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG449 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b3_from_b14: - //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 + //SEG450 [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 - //SEG450 mul8u_compare::@3 + //SEG451 mul8u_compare::@3 b3: - //SEG451 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG452 [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 !+ @@ -6358,267 +6359,267 @@ mul8u_compare: { cmp mn+1 beq b20_from_b3 !: - //SEG452 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG453 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] b4_from_b3: - //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 + //SEG454 [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 - //SEG454 mul8u_compare::@4 + //SEG455 mul8u_compare::@4 b4: - //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 + //SEG456 [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 - //SEG456 mul8u_compare::@8 + //SEG457 mul8u_compare::@8 b8: - //SEG457 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG458 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG458 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG459 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mul8u_error.a - //SEG459 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG460 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mul8u_error.b - //SEG460 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 + //SEG461 [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 - //SEG461 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 + //SEG462 [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 - //SEG462 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 + //SEG463 [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 - //SEG463 [236] call mul8u_error - //SEG464 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG464 [236] call mul8u_error + //SEG465 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] mul8u_error_from_b8: jsr mul8u_error jmp breturn - //SEG465 mul8u_compare::@return + //SEG466 mul8u_compare::@return breturn: - //SEG466 [237] return + //SEG467 [237] return rts - //SEG467 mul8u_compare::@5 + //SEG468 mul8u_compare::@5 b5: - //SEG468 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG469 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //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 + //SEG470 [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 - //SEG470 mul8u_compare::@10 + //SEG471 mul8u_compare::@10 b10: - //SEG471 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG472 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //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 + //SEG473 [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 - //SEG473 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG474 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] b11_from_b10: jmp b11 - //SEG474 mul8u_compare::@11 + //SEG475 mul8u_compare::@11 b11: - //SEG475 [243] call print_str - //SEG476 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG476 [243] call print_str + //SEG477 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] print_str_from_b11: - //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 + //SEG478 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG479 [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 - //SEG479 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG480 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] b16_from_b11: jmp b16 - //SEG480 mul8u_compare::@16 + //SEG481 mul8u_compare::@16 b16: - //SEG481 [245] call print_ln - //SEG482 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG482 [245] call print_ln + //SEG483 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] print_ln_from_b16: - //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 + //SEG484 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG485 [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 - //SEG485 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG486 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] b20_from_b3: jmp b20 - //SEG486 mul8u_compare::@20 + //SEG487 mul8u_compare::@20 b20: - //SEG487 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG488 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] b4_from_b20: - //SEG488 [228] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy + //SEG489 [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!@" } -//SEG489 mul8u_error +//SEG490 mul8u_error mul8u_error: { .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] + //SEG491 [248] call print_str + //SEG492 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] print_str_from_mul8u_error: - //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 + //SEG493 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG494 [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 - //SEG494 mul8u_error::@1 + //SEG495 mul8u_error::@1 b1: - //SEG495 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 + //SEG496 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 lda a sta print_byte.b - //SEG496 [250] call print_byte - //SEG497 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG497 [250] call print_byte + //SEG498 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] print_byte_from_b1: - //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 + //SEG499 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG500 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG500 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG501 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] b2_from_b1: jmp b2 - //SEG501 mul8u_error::@2 + //SEG502 mul8u_error::@2 b2: - //SEG502 [252] call print_str - //SEG503 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG503 [252] call print_str + //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] print_str_from_b2: - //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 + //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG506 [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 - //SEG506 mul8u_error::@3 + //SEG507 mul8u_error::@3 b3: - //SEG507 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 + //SEG508 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG508 [254] call print_byte - //SEG509 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG509 [254] call print_byte + //SEG510 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] print_byte_from_b3: - //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 + //SEG511 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG512 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG512 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG513 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] b4_from_b3: jmp b4 - //SEG513 mul8u_error::@4 + //SEG514 mul8u_error::@4 b4: - //SEG514 [256] call print_str - //SEG515 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG515 [256] call print_str + //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] print_str_from_b4: - //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 + //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG518 [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 - //SEG518 mul8u_error::@5 + //SEG519 mul8u_error::@5 b5: - //SEG519 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 + //SEG520 [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 - //SEG520 [258] call print_word - //SEG521 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG521 [258] call print_word + //SEG522 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] print_word_from_b5: - //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 + //SEG523 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG524 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG524 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG525 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] b6_from_b5: jmp b6 - //SEG525 mul8u_error::@6 + //SEG526 mul8u_error::@6 b6: - //SEG526 [260] call print_str - //SEG527 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG527 [260] call print_str + //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] print_str_from_b6: - //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 + //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG530 [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 - //SEG530 mul8u_error::@7 + //SEG531 mul8u_error::@7 b7: - //SEG531 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG532 [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 - //SEG532 [262] call print_word - //SEG533 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG533 [262] call print_word + //SEG534 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] print_word_from_b7: - //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 + //SEG535 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG536 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG536 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG537 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] b8_from_b7: jmp b8 - //SEG537 mul8u_error::@8 + //SEG538 mul8u_error::@8 b8: - //SEG538 [264] call print_str - //SEG539 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG539 [264] call print_str + //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] print_str_from_b8: - //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 + //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG542 [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 - //SEG542 mul8u_error::@9 + //SEG543 mul8u_error::@9 b9: - //SEG543 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG544 [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 - //SEG544 [266] call print_word - //SEG545 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG545 [266] call print_word + //SEG546 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] print_word_from_b9: - //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 + //SEG547 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG548 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG548 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG549 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] b10_from_b9: jmp b10 - //SEG549 mul8u_error::@10 + //SEG550 mul8u_error::@10 b10: - //SEG550 [268] call print_ln - //SEG551 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG551 [268] call print_ln + //SEG552 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] print_ln_from_b10: - //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 + //SEG553 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG554 [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 - //SEG554 mul8u_error::@return + //SEG555 mul8u_error::@return breturn: - //SEG555 [269] return + //SEG556 [269] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -6626,52 +6627,52 @@ mul8u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG556 mulf8u +//SEG557 mulf8u // Fast multiply two unsigned bytes to a word result mulf8u: { .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 + //SEG558 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 lda a sta mulf8u_prepare.a - //SEG558 [271] call mulf8u_prepare - //SEG559 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG559 [271] call mulf8u_prepare + //SEG560 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] mulf8u_prepare_from_mulf8u: - //SEG560 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG561 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG561 mulf8u::@2 + //SEG562 mulf8u::@2 b2: - //SEG562 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 + //SEG563 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 lda b sta mulf8u_prepared.b - //SEG563 [273] call mulf8u_prepared - //SEG564 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG564 [273] call mulf8u_prepared + //SEG565 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] mulf8u_prepared_from_b2: - //SEG565 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy + //SEG566 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG566 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG567 [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 - //SEG567 mulf8u::@3 + //SEG568 mulf8u::@3 b3: - //SEG568 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 + //SEG569 [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 - //SEG569 mulf8u::@return + //SEG570 mulf8u::@return breturn: - //SEG570 [276] return + //SEG571 [276] return rts } -//SEG571 muls8u +//SEG572 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition muls8u: { @@ -6681,29 +6682,29 @@ muls8u: { .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 + //SEG573 [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 - //SEG573 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG574 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] b2_from_muls8u: - //SEG574 [278] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 + //SEG575 [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 - //SEG575 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG576 [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 - //SEG576 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG577 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //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 + //SEG578 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG579 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG579 muls8u::@2 + //SEG580 muls8u::@2 b2: - //SEG580 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 + //SEG581 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 lda b clc adc m @@ -6711,153 +6712,153 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG581 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 + //SEG582 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG582 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG583 [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 - //SEG583 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG584 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG584 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG585 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG585 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG586 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b1_from_muls8u: - //SEG586 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG587 [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 - //SEG587 muls8u::@1 + //SEG588 muls8u::@1 b1: jmp breturn - //SEG588 muls8u::@return + //SEG589 muls8u::@return breturn: - //SEG589 [283] return + //SEG590 [283] return rts } -//SEG590 mulf_tables_cmp +//SEG591 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = $2a .label kc_sqr = $28 - //SEG591 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG592 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] b1_from_mulf_tables_cmp: - //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 + //SEG593 [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 - //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 + //SEG594 [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 - //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 from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] b1_from_b2: - //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 + //SEG596 [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 + //SEG597 [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 - //SEG597 mulf_tables_cmp::@1 + //SEG598 mulf_tables_cmp::@1 b1: - //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 + //SEG599 [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 - //SEG599 mulf_tables_cmp::@3 + //SEG600 mulf_tables_cmp::@3 b3: - //SEG600 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG601 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG601 [288] call print_str - //SEG602 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG602 [288] call print_str + //SEG603 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] print_str_from_b3: - //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 + //SEG604 [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 - //SEG604 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG605 [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 - //SEG605 mulf_tables_cmp::@6 + //SEG606 mulf_tables_cmp::@6 b6: - //SEG606 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 + //SEG607 [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 - //SEG607 [290] call print_word - //SEG608 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG608 [290] call print_word + //SEG609 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] print_word_from_b6: - //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 + //SEG610 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG611 [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 - //SEG611 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG612 [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 - //SEG612 mulf_tables_cmp::@7 + //SEG613 mulf_tables_cmp::@7 b7: - //SEG613 [292] call print_str - //SEG614 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG614 [292] call print_str + //SEG615 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] print_str_from_b7: - //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 + //SEG616 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG617 [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 - //SEG617 mulf_tables_cmp::@8 + //SEG618 mulf_tables_cmp::@8 b8: - //SEG618 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG619 [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 - //SEG619 [294] call print_word - //SEG620 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG620 [294] call print_word + //SEG621 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] print_word_from_b8: - //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 + //SEG622 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG623 [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 - //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 from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] breturn_from_b8: - //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 + //SEG625 [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 - //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 [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 - //SEG626 mulf_tables_cmp::@return + //SEG627 mulf_tables_cmp::@return breturn: - //SEG627 [296] return + //SEG628 [296] return rts - //SEG628 mulf_tables_cmp::@2 + //SEG629 mulf_tables_cmp::@2 b2: - //SEG629 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG630 [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 !: - //SEG630 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG631 [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 !: - //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 + //SEG632 [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 @@ -6866,60 +6867,60 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@5] + //SEG633 [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 - //SEG633 mulf_tables_cmp::@5 + //SEG634 mulf_tables_cmp::@5 b5: - //SEG634 [301] call print_str - //SEG635 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG635 [301] call print_str + //SEG636 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] print_str_from_b5: - //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 + //SEG637 [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 - //SEG637 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG638 [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 - //SEG638 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG639 [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 - //SEG639 mulf_tables_cmp::@10 + //SEG640 mulf_tables_cmp::@10 b10: - //SEG640 [303] call print_ln - //SEG641 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG641 [303] call print_ln + //SEG642 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] print_ln_from_b10: - //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 + //SEG643 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG644 [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 - //SEG644 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG645 [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 - //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 from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] breturn_from_b10: - //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 + //SEG647 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG648 [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!@" } -//SEG648 mulf_init_asm +//SEG649 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { .label mem = $ff - //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!- } + //SEG650 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 @@ -6958,25 +6959,25 @@ mulf_init_asm: { dey inx bne !- - //SEG650 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [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 - //SEG651 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [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 - //SEG652 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [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 - //SEG653 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG654 [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 - //SEG654 mulf_init_asm::@return + //SEG655 mulf_init_asm::@return breturn: - //SEG655 [310] return + //SEG656 [310] return rts } -//SEG656 mulf_init +//SEG657 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label _2 = $8c @@ -6991,88 +6992,88 @@ mulf_init: { .label x_255 = $34 .label sqr2_lo = $35 .label dir = $39 - //SEG657 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG658 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //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 + //SEG659 [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 - //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 + //SEG660 [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 - //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 + //SEG661 [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 - //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 + //SEG662 [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 - //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 + //SEG663 [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 - //SEG663 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG664 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //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 + //SEG665 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG666 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG667 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG668 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG669 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG669 mulf_init::@1 + //SEG670 mulf_init::@1 b1: - //SEG670 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG671 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //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 + //SEG672 [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 - //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 + //SEG673 [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 - //SEG673 mulf_init::@5 + //SEG674 mulf_init::@5 b5: - //SEG674 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG675 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG675 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG676 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 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: - //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 + //SEG678 [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 + //SEG679 [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 - //SEG679 mulf_init::@2 + //SEG680 mulf_init::@2 b2: - //SEG680 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG681 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG681 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG682 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG682 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG683 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG683 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG684 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG684 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG685 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG685 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG686 [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 @@ -7080,84 +7081,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG686 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG687 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG688 [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] + //SEG689 [327] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //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 + //SEG690 [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 - //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 + //SEG691 [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 - //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 + //SEG692 [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 - //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 + //SEG693 [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 - //SEG693 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG694 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //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 + //SEG695 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG696 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG697 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG698 [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 - //SEG698 mulf_init::@3 + //SEG699 mulf_init::@3 b3: - //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 + //SEG700 [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 - //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 + //SEG701 [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 - //SEG701 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG702 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG702 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG703 [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 - //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 + //SEG704 [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 - //SEG704 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG705 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //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 + //SEG706 [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 - //SEG706 mulf_init::@4 + //SEG707 mulf_init::@4 b4: - //SEG707 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG708 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG709 [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 @@ -7165,57 +7166,57 @@ mulf_init: { cmp #mulf_init::@12] + //SEG715 [339] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG715 mulf_init::@12 + //SEG716 mulf_init::@12 b12: - //SEG716 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG717 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG717 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG718 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG718 print_cls +//SEG719 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $3a - //SEG719 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG720 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //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 + //SEG721 [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 - //SEG721 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG722 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG722 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG723 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG723 print_cls::@1 + //SEG724 print_cls::@1 b1: - //SEG724 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG725 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG725 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG726 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG727 [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 @@ -7223,15 +7224,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG727 print_cls::@return + //SEG728 print_cls::@return breturn: - //SEG728 [345] return + //SEG729 [345] return rts } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @42] +//SEG4 [1] phi from @begin to @42 [phi:@begin->@42] b42_from_bbegin: jmp b42 -//SEG4 @42 +//SEG5 @42 b42: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @42 to @end [phi:@42->@end] +//SEG7 [3] phi from @42 to @end [phi:@42->@end] bend_from_b42: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL - //SEG10 [5] call print_cls - //SEG11 [340] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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] + //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 mulf_init - //SEG15 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [7] call mulf_init + //SEG16 [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] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call mulf_init_asm + //SEG19 [9] call mulf_init_asm jsr mulf_init_asm - //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [11] call mulf_tables_cmp - //SEG22 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG22 [11] call mulf_tables_cmp + //SEG23 [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] + //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG24 main::@4 + //SEG25 main::@4 b4: - //SEG25 [13] call mul8u_compare - //SEG26 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG26 [13] call mul8u_compare + //SEG27 [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] + //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG28 main::@5 + //SEG29 main::@5 b5: - //SEG29 [15] call mul8s_compare - //SEG30 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare] + //SEG30 [15] call mul8s_compare + //SEG31 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare] mul8s_compare_from_b5: jsr mul8s_compare jmp breturn - //SEG31 main::@return + //SEG32 main::@return breturn: - //SEG32 [16] return + //SEG33 [16] return rts } -//SEG33 mul8s_compare +//SEG34 mul8s_compare // Perform all possible signed byte multiplications (slow and fast) and compare the results mul8s_compare: { .label ms = 8 @@ -7844,64 +7844,64 @@ mul8s_compare: { .label mn = $c .label b = 3 .label a = 2 - //SEG34 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1] + //SEG35 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1] b1_from_mul8s_compare: - //SEG35 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 + //SEG36 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 lda #-$80 sta a jmp b1 - //SEG36 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1] + //SEG37 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1] b1_from_b10: - //SEG37 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy + //SEG38 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy jmp b1 - //SEG38 mul8s_compare::@1 + //SEG39 mul8s_compare::@1 b1: - //SEG39 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2] + //SEG40 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2] b2_from_b1: - //SEG40 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 + //SEG41 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 lda #-$80 sta b jmp b2 - //SEG41 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2] + //SEG42 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2] b2_from_b5: - //SEG42 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy + //SEG43 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy jmp b2 - //SEG43 mul8s_compare::@2 + //SEG44 mul8s_compare::@2 b2: - //SEG44 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7 - //SEG45 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 + //SEG45 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7 + //SEG46 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b - //SEG46 [22] call muls8s + //SEG47 [22] call muls8s jsr muls8s - //SEG47 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 + //SEG48 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 jmp b12 - //SEG48 mul8s_compare::@12 + //SEG49 mul8s_compare::@12 b12: - //SEG49 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 - //SEG50 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsaa=vbsz1 + //SEG50 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 + //SEG51 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsaa=vbsz1 lda a - //SEG51 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 + //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b - //SEG52 [27] call mulf8s - //SEG53 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG53 [27] call mulf8s + //SEG54 [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 + //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 jmp b13 - //SEG55 mul8s_compare::@13 + //SEG56 mul8s_compare::@13 b13: - //SEG56 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 - //SEG57 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7 - //SEG58 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsyy=vbsz1 + //SEG57 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 + //SEG58 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7 + //SEG59 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsyy=vbsz1 ldy b - //SEG59 [32] call mul8s + //SEG60 [32] call mul8s jsr mul8s - //SEG60 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 + //SEG61 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 jmp b14 - //SEG61 mul8s_compare::@14 + //SEG62 mul8s_compare::@14 b14: - //SEG62 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 - //SEG63 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 + //SEG63 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 + //SEG64 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 lda ms cmp mf bne !+ @@ -7909,24 +7909,24 @@ mul8s_compare: { cmp mf+1 beq b3_from_b14 !: - //SEG64 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6] + //SEG65 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6] b6_from_b14: jmp b6 - //SEG65 mul8s_compare::@6 + //SEG66 mul8s_compare::@6 b6: - //SEG66 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3] + //SEG67 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3] b3_from_b6: - //SEG67 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuxx=vbuc1 + //SEG68 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG68 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3] + //SEG69 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3] b3_from_b14: - //SEG69 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuxx=vbuc1 + //SEG70 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 - //SEG70 mul8s_compare::@3 + //SEG71 mul8s_compare::@3 b3: - //SEG71 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 + //SEG72 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 lda ms cmp mn bne !+ @@ -7934,104 +7934,104 @@ mul8s_compare: { cmp mn+1 beq b20_from_b3 !: - //SEG72 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4] + //SEG73 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4] b4_from_b3: - //SEG73 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuxx=vbuc1 + //SEG74 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG74 mul8s_compare::@4 + //SEG75 mul8s_compare::@4 b4: - //SEG75 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG76 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b8 - //SEG76 mul8s_compare::@8 + //SEG77 mul8s_compare::@8 b8: - //SEG77 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG78 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG78 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsxx=vbsz1 + //SEG79 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsxx=vbsz1 ldx a - //SEG79 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10 - //SEG80 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 - //SEG81 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 - //SEG82 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 - //SEG83 [47] call mul8s_error + //SEG80 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10 + //SEG81 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 + //SEG82 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 + //SEG83 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 + //SEG84 [47] call mul8s_error jsr mul8s_error jmp breturn - //SEG84 mul8s_compare::@return + //SEG85 mul8s_compare::@return breturn: - //SEG85 [48] return + //SEG86 [48] return rts - //SEG86 mul8s_compare::@5 + //SEG87 mul8s_compare::@5 b5: - //SEG87 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 + //SEG88 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 inc b - //SEG88 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 + //SEG89 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 lda b cmp #-$80 bne b2_from_b5 jmp b10 - //SEG89 mul8s_compare::@10 + //SEG90 mul8s_compare::@10 b10: - //SEG90 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 + //SEG91 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 inc a - //SEG91 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 + //SEG92 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 lda a cmp #-$80 bne b1_from_b10 jmp b11 - //SEG92 mul8s_compare::@11 + //SEG93 mul8s_compare::@11 b11: - //SEG93 [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG94 [53] (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 - //SEG94 [54] call print_str - //SEG95 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str] + //SEG95 [54] call print_str + //SEG96 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str] print_str_from_b11: - //SEG96 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy - //SEG97 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG97 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy + //SEG98 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG98 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16] + //SEG99 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16] b16_from_b11: jmp b16 - //SEG99 mul8s_compare::@16 + //SEG100 mul8s_compare::@16 b16: - //SEG100 [56] call print_ln - //SEG101 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln] + //SEG101 [56] call print_ln + //SEG102 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln] print_ln_from_b16: - //SEG102 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy - //SEG103 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy + //SEG103 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy + //SEG104 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG104 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20] + //SEG105 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20] b20_from_b3: jmp b20 - //SEG105 mul8s_compare::@20 + //SEG106 mul8s_compare::@20 b20: - //SEG106 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4] + //SEG107 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4] b4_from_b20: - //SEG107 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy + //SEG108 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy jmp b4 str: .text "signed multiply results match!@" } -//SEG108 print_ln +//SEG109 print_ln // Print a newline print_ln: { - //SEG109 [59] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG110 [59] 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: - //SEG110 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG111 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG111 print_ln::@1 + //SEG112 print_ln::@1 b1: - //SEG112 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG113 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -8039,7 +8039,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG113 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG114 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -8049,202 +8049,202 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG114 print_ln::@return + //SEG115 print_ln::@return breturn: - //SEG115 [62] return + //SEG116 [62] return rts } -//SEG116 print_str +//SEG117 print_str // Print a zero-terminated string print_str: { .label str = 6 - //SEG117 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG118 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG118 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG119 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG119 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG120 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG120 print_str::@1 + //SEG121 print_str::@1 b1: - //SEG121 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG122 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG122 print_str::@return + //SEG123 print_str::@return breturn: - //SEG123 [66] return + //SEG124 [66] return rts - //SEG124 print_str::@2 + //SEG125 print_str::@2 b2: - //SEG125 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 + //SEG126 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG126 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG127 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG127 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 + //SEG128 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG128 mul8s_error +//SEG129 mul8s_error mul8s_error: { .label b = 3 .label ms = 8 .label mn = $c .label mf = $e - //SEG129 [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG130 [70] (byte*~) print_char_cursor#193 ← (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 - //SEG130 [71] call print_str - //SEG131 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str] + //SEG131 [71] call print_str + //SEG132 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str] print_str_from_mul8s_error: - //SEG132 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy - //SEG133 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 + //SEG133 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy + //SEG134 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG134 mul8s_error::@1 + //SEG135 mul8s_error::@1 b1: - //SEG135 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0 - //SEG136 [73] call print_sbyte - //SEG137 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] + //SEG136 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0 + //SEG137 [73] call print_sbyte + //SEG138 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] print_sbyte_from_b1: - //SEG138 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy + //SEG139 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy jsr print_sbyte - //SEG139 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] + //SEG140 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] b2_from_b1: jmp b2 - //SEG140 mul8s_error::@2 + //SEG141 mul8s_error::@2 b2: - //SEG141 [75] call print_str - //SEG142 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] + //SEG142 [75] call print_str + //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] print_str_from_b2: - //SEG143 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy - //SEG144 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy + //SEG145 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG145 mul8s_error::@3 + //SEG146 mul8s_error::@3 b3: - //SEG146 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsxx=vbsz1 + //SEG147 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsxx=vbsz1 ldx b - //SEG147 [77] call print_sbyte - //SEG148 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] + //SEG148 [77] call print_sbyte + //SEG149 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] print_sbyte_from_b3: - //SEG149 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy + //SEG150 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy jsr print_sbyte - //SEG150 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] + //SEG151 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] b4_from_b3: jmp b4 - //SEG151 mul8s_error::@4 + //SEG152 mul8s_error::@4 b4: - //SEG152 [79] call print_str - //SEG153 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] + //SEG153 [79] call print_str + //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] print_str_from_b4: - //SEG154 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy - //SEG155 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy + //SEG156 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG156 mul8s_error::@5 + //SEG157 mul8s_error::@5 b5: - //SEG157 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 - //SEG158 [81] call print_sword - //SEG159 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword] + //SEG158 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 + //SEG159 [81] call print_sword + //SEG160 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword] print_sword_from_b5: - //SEG160 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy + //SEG161 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy jsr print_sword - //SEG161 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6] + //SEG162 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6] b6_from_b5: jmp b6 - //SEG162 mul8s_error::@6 + //SEG163 mul8s_error::@6 b6: - //SEG163 [83] call print_str - //SEG164 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] + //SEG164 [83] call print_str + //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] print_str_from_b6: - //SEG165 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy - //SEG166 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy + //SEG167 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG167 mul8s_error::@7 + //SEG168 mul8s_error::@7 b7: - //SEG168 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 + //SEG169 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 lda mn sta print_sword.w lda mn+1 sta print_sword.w+1 - //SEG169 [85] call print_sword - //SEG170 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword] + //SEG170 [85] call print_sword + //SEG171 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword] print_sword_from_b7: - //SEG171 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy + //SEG172 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy jsr print_sword - //SEG172 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8] + //SEG173 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8] b8_from_b7: jmp b8 - //SEG173 mul8s_error::@8 + //SEG174 mul8s_error::@8 b8: - //SEG174 [87] call print_str - //SEG175 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] + //SEG175 [87] call print_str + //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] print_str_from_b8: - //SEG176 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy - //SEG177 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy + //SEG178 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG178 mul8s_error::@9 + //SEG179 mul8s_error::@9 b9: - //SEG179 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 + //SEG180 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 lda mf sta print_sword.w lda mf+1 sta print_sword.w+1 - //SEG180 [89] call print_sword - //SEG181 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword] + //SEG181 [89] call print_sword + //SEG182 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword] print_sword_from_b9: - //SEG182 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy + //SEG183 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy jsr print_sword - //SEG183 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10] + //SEG184 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10] b10_from_b9: jmp b10 - //SEG184 mul8s_error::@10 + //SEG185 mul8s_error::@10 b10: - //SEG185 [91] call print_ln - //SEG186 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln] + //SEG186 [91] call print_ln + //SEG187 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln] print_ln_from_b10: - //SEG187 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy - //SEG188 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy + //SEG188 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy + //SEG189 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG189 mul8s_error::@return + //SEG190 mul8s_error::@return breturn: - //SEG190 [92] return + //SEG191 [92] return rts str: .text "signed multiply mismatch @" str1: .text "*@" @@ -8252,29 +8252,29 @@ mul8s_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG191 print_sword +//SEG192 print_sword // Print a signed word as HEX print_sword: { .label w = 8 - //SEG192 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG193 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG193 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG194 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG194 print_sword::@2 + //SEG195 print_sword::@2 b2: - //SEG195 [96] call print_char - //SEG196 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG196 [96] call print_char + //SEG197 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG197 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG198 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG198 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG199 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG199 print_sword::@4 + //SEG200 print_sword::@4 b4: - //SEG200 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 + //SEG201 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -8284,167 +8284,167 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG201 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG202 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] b1_from_print_sword: b1_from_b4: - //SEG202 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG203 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG203 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG204 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy jmp b1 - //SEG204 print_sword::@1 + //SEG205 print_sword::@1 b1: - //SEG205 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 - //SEG206 [100] call print_word - //SEG207 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG206 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 + //SEG207 [100] call print_word + //SEG208 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG208 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG209 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG209 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG210 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG210 print_sword::@return + //SEG211 print_sword::@return breturn: - //SEG211 [101] return + //SEG212 [101] return rts } -//SEG212 print_word +//SEG213 print_word // Print a word as HEX print_word: { .label w = 8 - //SEG213 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 + //SEG214 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG214 [104] call print_byte - //SEG215 [108] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG215 [104] call print_byte + //SEG216 [108] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG216 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy - //SEG217 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG217 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy + //SEG218 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG218 print_word::@1 + //SEG219 print_word::@1 b1: - //SEG219 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 + //SEG220 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 lda w tax - //SEG220 [106] call print_byte - //SEG221 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG221 [106] call print_byte + //SEG222 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG222 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG223 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG223 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG224 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG224 print_word::@return + //SEG225 print_word::@return breturn: - //SEG225 [107] return + //SEG226 [107] return rts } -//SEG226 print_byte +//SEG227 print_byte // Print a byte as HEX print_byte: { - //SEG227 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG228 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG228 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG229 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG229 [111] call print_char - //SEG230 [116] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG230 [111] call print_char + //SEG231 [116] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG231 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy - //SEG232 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG232 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy + //SEG233 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG233 print_byte::@1 + //SEG234 print_byte::@1 b1: - //SEG234 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG235 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG235 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG236 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG236 [114] call print_char - //SEG237 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG237 [114] call print_char + //SEG238 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG238 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG239 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG239 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG240 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG240 print_byte::@return + //SEG241 print_byte::@return breturn: - //SEG241 [115] return + //SEG242 [115] return rts } -//SEG242 print_char +//SEG243 print_char // Print a single char print_char: { - //SEG243 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG244 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG244 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG245 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG245 print_char::@return + //SEG246 print_char::@return breturn: - //SEG246 [119] return + //SEG247 [119] return rts } -//SEG247 print_sbyte +//SEG248 print_sbyte // Print a signed byte as HEX print_sbyte: { - //SEG248 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + //SEG249 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1_from_print_sbyte - //SEG249 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG250 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG250 print_sbyte::@3 + //SEG251 print_sbyte::@3 b3: - //SEG251 [123] call print_char - //SEG252 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG252 [123] call print_char + //SEG253 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG253 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG254 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG254 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG255 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG255 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG256 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] b2_from_b3: b2_from_b5: - //SEG256 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG257 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG257 print_sbyte::@2 + //SEG258 print_sbyte::@2 b2: - //SEG258 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5 - //SEG259 [126] call print_byte - //SEG260 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG259 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5 + //SEG260 [126] call print_byte + //SEG261 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG261 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG262 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG262 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG263 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG263 print_sbyte::@return + //SEG264 print_sbyte::@return breturn: - //SEG264 [127] return + //SEG265 [127] return rts - //SEG265 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG266 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG266 print_sbyte::@1 + //SEG267 print_sbyte::@1 b1: - //SEG267 [129] call print_char - //SEG268 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG268 [129] call print_char + //SEG269 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG269 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG270 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG270 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG271 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b5 - //SEG271 print_sbyte::@5 + //SEG272 print_sbyte::@5 b5: - //SEG272 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx + //SEG273 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -8452,123 +8452,122 @@ print_sbyte: { tax jmp b2_from_b5 } -//SEG273 mul8s +//SEG274 mul8s // Multiply of two signed bytes to a signed word // Fixes offsets introduced by using unsigned multiplication mul8s: { .label m = $c .label a = 2 .label return = $c - //SEG274 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy + //SEG275 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy tya - //SEG275 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 + //SEG276 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 ldx a - //SEG276 [133] call mul8u - //SEG277 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG277 [133] call mul8u + //SEG278 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] mul8u_from_mul8s: - //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 + //SEG279 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG280 [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 + //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b6 - //SEG281 mul8s::@6 + //SEG282 mul8s::@6 b6: - //SEG282 [135] (word) mul8s::m#0 ← (word) mul8u::return#2 - //SEG283 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 + //SEG283 [135] (word) mul8s::m#0 ← (word) mul8u::return#2 + //SEG284 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1_from_b6 jmp b3 - //SEG284 mul8s::@3 + //SEG285 mul8s::@3 b3: - //SEG285 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG286 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG286 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG287 [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 + //SEG288 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG288 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG289 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG289 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG290 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] b1_from_b3: b1_from_b6: - //SEG290 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG291 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy jmp b1 - //SEG291 mul8s::@1 + //SEG292 mul8s::@1 b1: - //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 + //SEG293 [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 - //SEG293 mul8s::@4 + //SEG294 mul8s::@4 b4: - //SEG294 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG295 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG295 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG296 [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 + //SEG297 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc a - //SEG297 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa + //SEG298 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG298 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG299 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] b2_from_b1: b2_from_b4: - //SEG299 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG300 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy jmp b2 - //SEG300 mul8s::@2 + //SEG301 mul8s::@2 b2: jmp breturn - //SEG301 mul8s::@return + //SEG302 mul8s::@return breturn: - //SEG302 [148] return + //SEG303 [148] return rts } -//SEG303 mul8u -// Simple binary multiplication implementation +//SEG304 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = 6 .label res = $c .label return = $c - //SEG304 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG305 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG305 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG306 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //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 + //SEG307 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG308 [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 - //SEG308 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG309 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG309 mul8u::@1 + //SEG310 mul8u::@1 b1: - //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 + //SEG311 [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 - //SEG311 mul8u::@return + //SEG312 mul8u::@return breturn: - //SEG312 [153] return + //SEG313 [153] return rts - //SEG313 mul8u::@2 + //SEG314 mul8u::@2 b2: - //SEG314 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG315 [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 - //SEG315 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG316 [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 - //SEG316 mul8u::@7 + //SEG317 mul8u::@7 b7: - //SEG317 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG318 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -8576,59 +8575,59 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG318 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG319 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG319 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG320 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG320 mul8u::@4 + //SEG321 mul8u::@4 b4: - //SEG321 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG322 [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 - //SEG322 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG323 [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 - //SEG323 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG324 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //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 + //SEG325 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG326 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG327 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG327 mulf8s +//SEG328 mulf8s // Fast multiply two signed bytes to a word result mulf8s: { .label return = $e jmp mulf8s_prepare1 - //SEG328 mulf8s::mulf8s_prepare1 + //SEG329 mulf8s::mulf8s_prepare1 mulf8s_prepare1: - //SEG329 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 - //SEG330 [162] call mulf8u_prepare - //SEG331 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG330 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + //SEG331 [162] call mulf8u_prepare + //SEG332 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG332 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG333 [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 - //SEG333 mulf8s::@2 + //SEG334 mulf8s::@2 b2: - //SEG334 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx + //SEG335 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx stx mulf8s_prepared.b - //SEG335 [164] call mulf8s_prepared + //SEG336 [164] call mulf8s_prepared jsr mulf8s_prepared - //SEG336 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG337 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 jmp b4 - //SEG337 mulf8s::@4 + //SEG338 mulf8s::@4 b4: - //SEG338 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + //SEG339 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 jmp breturn - //SEG339 mulf8s::@return + //SEG340 mulf8s::@return breturn: - //SEG340 [167] return + //SEG341 [167] return rts } -//SEG341 mulf8s_prepared +//SEG342 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) mulf8s_prepared: { @@ -8636,80 +8635,80 @@ mulf8s_prepared: { .label m = $e .label b = 3 .label return = $e - //SEG342 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 + //SEG343 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 ldx b - //SEG343 [169] call mulf8u_prepared - //SEG344 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG344 [169] call mulf8u_prepared + //SEG345 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: - //SEG345 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG346 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG346 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + //SEG347 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 jmp b6 - //SEG347 mulf8s_prepared::@6 + //SEG348 mulf8s_prepared::@6 b6: - //SEG348 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - //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 + //SEG349 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + //SEG350 [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 - //SEG350 mulf8s_prepared::@3 + //SEG351 mulf8s_prepared::@3 b3: - //SEG351 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG352 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG352 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG353 [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 + //SEG354 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG354 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG355 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+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 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: - //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 [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 - //SEG357 mulf8s_prepared::@1 + //SEG358 mulf8s_prepared::@1 b1: - //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 + //SEG359 [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 - //SEG359 mulf8s_prepared::@4 + //SEG360 mulf8s_prepared::@4 b4: - //SEG360 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG361 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG361 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG362 [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 + //SEG363 [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 - //SEG363 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG364 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //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 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: - //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 [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 - //SEG366 mulf8s_prepared::@2 + //SEG367 mulf8s_prepared::@2 b2: jmp breturn - //SEG367 mulf8s_prepared::@return + //SEG368 mulf8s_prepared::@return breturn: - //SEG368 [184] return + //SEG369 [184] return rts } -//SEG369 mulf8u_prepared +//SEG370 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = $e - //SEG370 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx + //SEG371 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx stx memB - //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 } + //SEG372 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: @@ -8722,24 +8721,24 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //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 + //SEG373 [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 - //SEG373 mulf8u_prepared::@return + //SEG374 mulf8u_prepared::@return breturn: - //SEG374 [189] return + //SEG375 [189] return rts } -//SEG375 mulf8u_prepare +//SEG376 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result mulf8u_prepare: { .label memA = $fd - //SEG376 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG377 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG377 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG378 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 @@ -8747,47 +8746,47 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG378 mulf8u_prepare::@return + //SEG379 mulf8u_prepare::@return breturn: - //SEG379 [193] return + //SEG380 [193] return rts } -//SEG380 muls8s +//SEG381 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction muls8s: { .label m = 8 .label return = 8 .label a = 2 - //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 + //SEG382 [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 - //SEG382 muls8s::@6 + //SEG383 muls8s::@6 b6: - //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 + //SEG384 [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 - //SEG384 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG385 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] b3_from_b6: - //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 + //SEG386 [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 - //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 + //SEG387 [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 - //SEG387 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG388 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] b3_from_b3: - //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 + //SEG389 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG390 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy jmp b3 - //SEG390 muls8s::@3 + //SEG391 muls8s::@3 b3: - //SEG391 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx + //SEG392 [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 @@ -8802,50 +8801,50 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG392 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy + //SEG393 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy iny - //SEG393 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 + //SEG394 [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 - //SEG394 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG395 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] b4_from_b3: b4_from_b5: - //SEG395 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy + //SEG396 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG396 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG397 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b4_from_b6: - //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 + //SEG398 [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 - //SEG398 muls8s::@4 + //SEG399 muls8s::@4 b4: jmp breturn - //SEG399 muls8s::@return + //SEG400 muls8s::@return breturn: - //SEG400 [201] return + //SEG401 [201] return rts - //SEG401 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG402 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b5_from_muls8s: - //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 + //SEG403 [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 - //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 + //SEG404 [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 - //SEG404 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG405 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] b5_from_b5: - //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 + //SEG406 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG407 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy jmp b5 - //SEG407 muls8s::@5 + //SEG408 muls8s::@5 b5: - //SEG408 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx + //SEG409 [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 @@ -8860,14 +8859,14 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG409 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy + //SEG410 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy dey - //SEG410 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 + //SEG411 [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 } -//SEG411 mul8u_compare +//SEG412 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { .label ms = 8 @@ -8875,67 +8874,67 @@ mul8u_compare: { .label mn = $c .label b = 3 .label a = 2 - //SEG412 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG413 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] b1_from_mul8u_compare: - //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 + //SEG414 [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 - //SEG414 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG415 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] b1_from_b10: - //SEG415 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG416 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy jmp b1 - //SEG416 mul8u_compare::@1 + //SEG417 mul8u_compare::@1 b1: - //SEG417 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG418 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] b2_from_b1: - //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 + //SEG419 [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 - //SEG419 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG420 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] b2_from_b5: - //SEG420 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG421 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy jmp b2 - //SEG421 mul8u_compare::@2 + //SEG422 mul8u_compare::@2 b2: - //SEG422 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - //SEG423 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG423 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + //SEG424 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG424 [211] call muls8u + //SEG425 [211] call muls8u jsr muls8u - //SEG425 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 + //SEG426 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 jmp b12 - //SEG426 mul8u_compare::@12 + //SEG427 mul8u_compare::@12 b12: - //SEG427 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - //SEG428 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 + //SEG428 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + //SEG429 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 lda a - //SEG429 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG430 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG430 [216] call mulf8u + //SEG431 [216] call mulf8u jsr mulf8u - //SEG431 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + //SEG432 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 jmp b13 - //SEG432 mul8u_compare::@13 + //SEG433 mul8u_compare::@13 b13: - //SEG433 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - //SEG434 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG434 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + //SEG435 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG435 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 + //SEG436 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 lda b - //SEG436 [221] call mul8u - //SEG437 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG437 [221] call mul8u + //SEG438 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] mul8u_from_b13: - //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 + //SEG439 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG440 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG440 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG441 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b14 - //SEG441 mul8u_compare::@14 + //SEG442 mul8u_compare::@14 b14: - //SEG442 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - //SEG443 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG443 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + //SEG444 [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 !+ @@ -8943,24 +8942,24 @@ mul8u_compare: { cmp mf+1 beq b3_from_b14 !: - //SEG444 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG445 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] b6_from_b14: jmp b6 - //SEG445 mul8u_compare::@6 + //SEG446 mul8u_compare::@6 b6: - //SEG446 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG447 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] b3_from_b6: - //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 + //SEG448 [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 - //SEG448 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG449 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b3_from_b14: - //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 + //SEG450 [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 - //SEG450 mul8u_compare::@3 + //SEG451 mul8u_compare::@3 b3: - //SEG451 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG452 [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 !+ @@ -8968,242 +8967,242 @@ mul8u_compare: { cmp mn+1 beq b20_from_b3 !: - //SEG452 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG453 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] b4_from_b3: - //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 + //SEG454 [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 - //SEG454 mul8u_compare::@4 + //SEG455 mul8u_compare::@4 b4: - //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 + //SEG456 [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 - //SEG456 mul8u_compare::@8 + //SEG457 mul8u_compare::@8 b8: - //SEG457 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG458 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG458 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG459 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG459 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - //SEG460 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - //SEG461 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - //SEG462 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - //SEG463 [236] call mul8u_error - //SEG464 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG460 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + //SEG461 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + //SEG462 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + //SEG463 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + //SEG464 [236] call mul8u_error + //SEG465 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] mul8u_error_from_b8: jsr mul8u_error jmp breturn - //SEG465 mul8u_compare::@return + //SEG466 mul8u_compare::@return breturn: - //SEG466 [237] return + //SEG467 [237] return rts - //SEG467 mul8u_compare::@5 + //SEG468 mul8u_compare::@5 b5: - //SEG468 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG469 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //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 + //SEG470 [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 - //SEG470 mul8u_compare::@10 + //SEG471 mul8u_compare::@10 b10: - //SEG471 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG472 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //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 + //SEG473 [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 - //SEG473 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG474 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] b11_from_b10: jmp b11 - //SEG474 mul8u_compare::@11 + //SEG475 mul8u_compare::@11 b11: - //SEG475 [243] call print_str - //SEG476 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG476 [243] call print_str + //SEG477 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] print_str_from_b11: - //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 + //SEG478 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG479 [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 - //SEG479 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG480 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] b16_from_b11: jmp b16 - //SEG480 mul8u_compare::@16 + //SEG481 mul8u_compare::@16 b16: - //SEG481 [245] call print_ln - //SEG482 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG482 [245] call print_ln + //SEG483 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] print_ln_from_b16: - //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 + //SEG484 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG485 [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 - //SEG485 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG486 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] b20_from_b3: jmp b20 - //SEG486 mul8u_compare::@20 + //SEG487 mul8u_compare::@20 b20: - //SEG487 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG488 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] b4_from_b20: - //SEG488 [228] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy + //SEG489 [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!@" } -//SEG489 mul8u_error +//SEG490 mul8u_error mul8u_error: { .label b = 3 .label ms = 8 .label mn = $c .label mf = $e - //SEG490 [248] call print_str - //SEG491 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG491 [248] call print_str + //SEG492 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] print_str_from_mul8u_error: - //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 + //SEG493 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG494 [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 - //SEG494 mul8u_error::@1 + //SEG495 mul8u_error::@1 b1: - //SEG495 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - //SEG496 [250] call print_byte - //SEG497 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG496 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + //SEG497 [250] call print_byte + //SEG498 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] print_byte_from_b1: - //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 + //SEG499 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG500 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG500 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG501 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] b2_from_b1: jmp b2 - //SEG501 mul8u_error::@2 + //SEG502 mul8u_error::@2 b2: - //SEG502 [252] call print_str - //SEG503 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG503 [252] call print_str + //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] print_str_from_b2: - //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 + //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG506 [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 - //SEG506 mul8u_error::@3 + //SEG507 mul8u_error::@3 b3: - //SEG507 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 + //SEG508 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 ldx b - //SEG508 [254] call print_byte - //SEG509 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG509 [254] call print_byte + //SEG510 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] print_byte_from_b3: - //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 + //SEG511 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG512 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG512 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG513 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] b4_from_b3: jmp b4 - //SEG513 mul8u_error::@4 + //SEG514 mul8u_error::@4 b4: - //SEG514 [256] call print_str - //SEG515 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG515 [256] call print_str + //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] print_str_from_b4: - //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 + //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG518 [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 - //SEG518 mul8u_error::@5 + //SEG519 mul8u_error::@5 b5: - //SEG519 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - //SEG520 [258] call print_word - //SEG521 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG520 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + //SEG521 [258] call print_word + //SEG522 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] print_word_from_b5: - //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 + //SEG523 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG524 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG524 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG525 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] b6_from_b5: jmp b6 - //SEG525 mul8u_error::@6 + //SEG526 mul8u_error::@6 b6: - //SEG526 [260] call print_str - //SEG527 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG527 [260] call print_str + //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] print_str_from_b6: - //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 + //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG530 [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 - //SEG530 mul8u_error::@7 + //SEG531 mul8u_error::@7 b7: - //SEG531 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG532 [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 - //SEG532 [262] call print_word - //SEG533 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG533 [262] call print_word + //SEG534 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] print_word_from_b7: - //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 + //SEG535 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG536 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG536 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG537 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] b8_from_b7: jmp b8 - //SEG537 mul8u_error::@8 + //SEG538 mul8u_error::@8 b8: - //SEG538 [264] call print_str - //SEG539 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG539 [264] call print_str + //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] print_str_from_b8: - //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 + //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG542 [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 - //SEG542 mul8u_error::@9 + //SEG543 mul8u_error::@9 b9: - //SEG543 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG544 [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 - //SEG544 [266] call print_word - //SEG545 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG545 [266] call print_word + //SEG546 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] print_word_from_b9: - //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 + //SEG547 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG548 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG548 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG549 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] b10_from_b9: jmp b10 - //SEG549 mul8u_error::@10 + //SEG550 mul8u_error::@10 b10: - //SEG550 [268] call print_ln - //SEG551 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG551 [268] call print_ln + //SEG552 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] print_ln_from_b10: - //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 + //SEG553 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG554 [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 - //SEG554 mul8u_error::@return + //SEG555 mul8u_error::@return breturn: - //SEG555 [269] return + //SEG556 [269] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -9211,65 +9210,65 @@ mul8u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG556 mulf8u +//SEG557 mulf8u // Fast multiply two unsigned bytes to a word result mulf8u: { .label return = $e - //SEG557 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - //SEG558 [271] call mulf8u_prepare - //SEG559 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG558 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + //SEG559 [271] call mulf8u_prepare + //SEG560 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] mulf8u_prepare_from_mulf8u: - //SEG560 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG561 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG561 mulf8u::@2 + //SEG562 mulf8u::@2 b2: - //SEG562 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - //SEG563 [273] call mulf8u_prepared - //SEG564 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG563 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + //SEG564 [273] call mulf8u_prepared + //SEG565 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] mulf8u_prepared_from_b2: - //SEG565 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy + //SEG566 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG566 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG567 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 jmp b3 - //SEG567 mulf8u::@3 + //SEG568 mulf8u::@3 b3: - //SEG568 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + //SEG569 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 jmp breturn - //SEG569 mulf8u::@return + //SEG570 mulf8u::@return breturn: - //SEG570 [276] return + //SEG571 [276] return rts } -//SEG571 muls8u +//SEG572 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition muls8u: { .label return = 8 .label m = 8 .label a = 2 - //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 + //SEG573 [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 - //SEG573 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG574 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] b2_from_muls8u: - //SEG574 [278] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 + //SEG575 [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 - //SEG575 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG576 [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 - //SEG576 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG577 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //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 + //SEG578 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG579 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG579 muls8u::@2 + //SEG580 muls8u::@2 b2: - //SEG580 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG581 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -9277,148 +9276,148 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG581 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy + //SEG582 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy iny - //SEG582 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 + //SEG583 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2_from_b2 - //SEG583 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG584 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG584 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG585 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG585 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG586 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b1_from_muls8u: - //SEG586 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG587 [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 - //SEG587 muls8u::@1 + //SEG588 muls8u::@1 b1: jmp breturn - //SEG588 muls8u::@return + //SEG589 muls8u::@return breturn: - //SEG589 [283] return + //SEG590 [283] return rts } -//SEG590 mulf_tables_cmp +//SEG591 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = 8 .label kc_sqr = 4 - //SEG591 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG592 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] b1_from_mulf_tables_cmp: - //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 + //SEG593 [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 - //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 + //SEG594 [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 - //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 from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] b1_from_b2: - //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 + //SEG596 [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 + //SEG597 [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 - //SEG597 mulf_tables_cmp::@1 + //SEG598 mulf_tables_cmp::@1 b1: - //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 + //SEG599 [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 - //SEG599 mulf_tables_cmp::@3 + //SEG600 mulf_tables_cmp::@3 b3: - //SEG600 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG601 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG601 [288] call print_str - //SEG602 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG602 [288] call print_str + //SEG603 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] print_str_from_b3: - //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 + //SEG604 [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 - //SEG604 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG605 [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 - //SEG605 mulf_tables_cmp::@6 + //SEG606 mulf_tables_cmp::@6 b6: - //SEG606 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - //SEG607 [290] call print_word - //SEG608 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG607 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + //SEG608 [290] call print_word + //SEG609 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] print_word_from_b6: - //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 + //SEG610 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG611 [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 - //SEG611 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG612 [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 - //SEG612 mulf_tables_cmp::@7 + //SEG613 mulf_tables_cmp::@7 b7: - //SEG613 [292] call print_str - //SEG614 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG614 [292] call print_str + //SEG615 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] print_str_from_b7: - //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 + //SEG616 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG617 [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 - //SEG617 mulf_tables_cmp::@8 + //SEG618 mulf_tables_cmp::@8 b8: - //SEG618 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG619 [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 - //SEG619 [294] call print_word - //SEG620 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG620 [294] call print_word + //SEG621 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] print_word_from_b8: - //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 + //SEG622 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG623 [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 - //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 from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] breturn_from_b8: - //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 + //SEG625 [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 - //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 [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 - //SEG626 mulf_tables_cmp::@return + //SEG627 mulf_tables_cmp::@return breturn: - //SEG627 [296] return + //SEG628 [296] return rts - //SEG628 mulf_tables_cmp::@2 + //SEG629 mulf_tables_cmp::@2 b2: - //SEG629 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG630 [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 !: - //SEG630 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG631 [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 !: - //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 + //SEG632 [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 @@ -9427,60 +9426,60 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@5] + //SEG633 [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 - //SEG633 mulf_tables_cmp::@5 + //SEG634 mulf_tables_cmp::@5 b5: - //SEG634 [301] call print_str - //SEG635 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG635 [301] call print_str + //SEG636 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] print_str_from_b5: - //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 + //SEG637 [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 - //SEG637 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG638 [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 - //SEG638 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG639 [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 - //SEG639 mulf_tables_cmp::@10 + //SEG640 mulf_tables_cmp::@10 b10: - //SEG640 [303] call print_ln - //SEG641 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG641 [303] call print_ln + //SEG642 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] print_ln_from_b10: - //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 + //SEG643 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG644 [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 - //SEG644 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG645 [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 - //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 from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] breturn_from_b10: - //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 + //SEG647 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG648 [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!@" } -//SEG648 mulf_init_asm +//SEG649 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { .label mem = $ff - //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!- } + //SEG650 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 @@ -9519,25 +9518,25 @@ mulf_init_asm: { dey inx bne !- - //SEG650 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [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 - //SEG651 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [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 - //SEG652 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [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 - //SEG653 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG654 [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 - //SEG654 mulf_init_asm::@return + //SEG655 mulf_init_asm::@return breturn: - //SEG655 [310] return + //SEG656 [310] return rts } -//SEG656 mulf_init +//SEG657 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 6 @@ -9547,81 +9546,81 @@ mulf_init: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG657 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG658 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //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 + //SEG659 [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 - //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 + //SEG660 [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 - //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 + //SEG661 [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 - //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 + //SEG662 [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 - //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 + //SEG663 [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 - //SEG663 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG664 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //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 + //SEG665 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG666 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG667 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG668 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG669 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG669 mulf_init::@1 + //SEG670 mulf_init::@1 b1: - //SEG670 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG671 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG672 [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 - //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 + //SEG673 [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 - //SEG673 mulf_init::@5 + //SEG674 mulf_init::@5 b5: - //SEG674 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG675 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG675 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG676 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 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: - //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 + //SEG678 [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 + //SEG679 [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 - //SEG679 mulf_init::@2 + //SEG680 mulf_init::@2 b2: - //SEG680 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG681 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG681 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG682 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG682 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG683 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG683 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG684 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG684 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG685 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG685 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG686 [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 @@ -9629,80 +9628,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG686 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG687 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG688 [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] + //SEG689 [327] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //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 + //SEG690 [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 - //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 + //SEG691 [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 - //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 + //SEG692 [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 - //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 + //SEG693 [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 - //SEG693 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG694 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //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 + //SEG695 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG696 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG697 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG698 [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 - //SEG698 mulf_init::@3 + //SEG699 mulf_init::@3 b3: - //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 + //SEG700 [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 - //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 + //SEG701 [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 - //SEG701 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG702 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG702 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG703 [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 - //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 + //SEG704 [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 - //SEG704 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG705 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //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 + //SEG706 [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 - //SEG706 mulf_init::@4 + //SEG707 mulf_init::@4 b4: - //SEG707 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG708 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG709 [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 @@ -9710,57 +9709,57 @@ mulf_init: { cmp #mulf_init::@12] + //SEG715 [339] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG715 mulf_init::@12 + //SEG716 mulf_init::@12 b12: - //SEG716 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG717 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG717 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG718 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG718 print_cls +//SEG719 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 4 - //SEG719 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG720 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //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 + //SEG721 [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 - //SEG721 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG722 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG722 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG723 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG723 print_cls::@1 + //SEG724 print_cls::@1 b1: - //SEG724 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG725 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG725 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG726 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG727 [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 @@ -9768,15 +9767,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG727 print_cls::@return + //SEG728 print_cls::@return breturn: - //SEG728 [345] return + //SEG729 [345] return rts } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @42] -//SEG4 @42 -//SEG5 [2] call main -//SEG6 [3] phi from @42 to @end [phi:@42->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @42 [phi:@begin->@42] +//SEG5 @42 +//SEG6 [2] call main +//SEG7 [3] phi from @42 to @end [phi:@42->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL - //SEG10 [5] call print_cls - //SEG11 [340] phi from main to print_cls [phi:main->print_cls] + //SEG11 [5] call print_cls + //SEG12 [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 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call mulf_init + //SEG16 [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 - //SEG18 [9] call mulf_init_asm + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [9] call mulf_init_asm jsr mulf_init_asm - //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG20 main::@3 - //SEG21 [11] call mulf_tables_cmp - //SEG22 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 main::@3 + //SEG22 [11] call mulf_tables_cmp + //SEG23 [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 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG25 main::@4 + //SEG26 [13] call mul8u_compare + //SEG27 [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 - //SEG29 [15] call mul8s_compare - //SEG30 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare] + //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG29 main::@5 + //SEG30 [15] call mul8s_compare + //SEG31 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare] jsr mul8s_compare - //SEG31 main::@return - //SEG32 [16] return + //SEG32 main::@return + //SEG33 [16] return rts } -//SEG33 mul8s_compare +//SEG34 mul8s_compare // Perform all possible signed byte multiplications (slow and fast) and compare the results mul8s_compare: { .label ms = 8 @@ -10844,49 +10842,49 @@ mul8s_compare: { .label mn = $c .label b = 3 .label a = 2 - //SEG34 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1] - //SEG35 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 + //SEG35 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1] + //SEG36 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 lda #-$80 sta a - //SEG36 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1] - //SEG37 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy - //SEG38 mul8s_compare::@1 + //SEG37 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1] + //SEG38 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy + //SEG39 mul8s_compare::@1 b1: - //SEG39 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2] - //SEG40 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 + //SEG40 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2] + //SEG41 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 lda #-$80 sta b - //SEG41 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2] - //SEG42 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy - //SEG43 mul8s_compare::@2 + //SEG42 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2] + //SEG43 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy + //SEG44 mul8s_compare::@2 b2: - //SEG44 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7 - //SEG45 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 + //SEG45 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7 + //SEG46 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b - //SEG46 [22] call muls8s + //SEG47 [22] call muls8s jsr muls8s - //SEG47 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 - //SEG48 mul8s_compare::@12 - //SEG49 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 - //SEG50 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsaa=vbsz1 + //SEG48 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 + //SEG49 mul8s_compare::@12 + //SEG50 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 + //SEG51 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsaa=vbsz1 lda a - //SEG51 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 + //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b - //SEG52 [27] call mulf8s - //SEG53 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG53 [27] call mulf8s + //SEG54 [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 - //SEG55 mul8s_compare::@13 - //SEG56 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 - //SEG57 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7 - //SEG58 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsyy=vbsz1 + //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 + //SEG56 mul8s_compare::@13 + //SEG57 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 + //SEG58 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7 + //SEG59 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsyy=vbsz1 ldy b - //SEG59 [32] call mul8s + //SEG60 [32] call mul8s jsr mul8s - //SEG60 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 - //SEG61 mul8s_compare::@14 - //SEG62 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 - //SEG63 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 + //SEG61 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 + //SEG62 mul8s_compare::@14 + //SEG63 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 + //SEG64 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 lda ms cmp mf bne !+ @@ -10894,19 +10892,19 @@ mul8s_compare: { cmp mf+1 beq b6 !: - //SEG64 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6] - //SEG65 mul8s_compare::@6 - //SEG66 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3] - //SEG67 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuxx=vbuc1 + //SEG65 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6] + //SEG66 mul8s_compare::@6 + //SEG67 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3] + //SEG68 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG68 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3] + //SEG69 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3] b6: - //SEG69 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuxx=vbuc1 + //SEG70 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuxx=vbuc1 ldx #1 - //SEG70 mul8s_compare::@3 + //SEG71 mul8s_compare::@3 b3: - //SEG71 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 + //SEG72 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 lda ms cmp mn bne !+ @@ -10914,82 +10912,82 @@ mul8s_compare: { cmp mn+1 beq b4 !: - //SEG72 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4] - //SEG73 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuxx=vbuc1 + //SEG73 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4] + //SEG74 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG74 mul8s_compare::@4 + //SEG75 mul8s_compare::@4 b4: - //SEG75 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG76 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG76 mul8s_compare::@8 - //SEG77 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG77 mul8s_compare::@8 + //SEG78 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG78 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsxx=vbsz1 + //SEG79 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsxx=vbsz1 ldx a - //SEG79 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10 - //SEG80 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 - //SEG81 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 - //SEG82 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 - //SEG83 [47] call mul8s_error + //SEG80 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10 + //SEG81 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 + //SEG82 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 + //SEG83 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 + //SEG84 [47] call mul8s_error jsr mul8s_error - //SEG84 mul8s_compare::@return + //SEG85 mul8s_compare::@return breturn: - //SEG85 [48] return + //SEG86 [48] return rts - //SEG86 mul8s_compare::@5 + //SEG87 mul8s_compare::@5 b5: - //SEG87 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 + //SEG88 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 inc b - //SEG88 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 + //SEG89 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 lda b cmp #-$80 bne b2 - //SEG89 mul8s_compare::@10 - //SEG90 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 + //SEG90 mul8s_compare::@10 + //SEG91 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 inc a - //SEG91 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 + //SEG92 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 lda a cmp #-$80 bne b1 - //SEG92 mul8s_compare::@11 - //SEG93 [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG93 mul8s_compare::@11 + //SEG94 [53] (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 - //SEG94 [54] call print_str - //SEG95 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str] - //SEG96 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy - //SEG97 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG95 [54] call print_str + //SEG96 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str] + //SEG97 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy + //SEG98 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG98 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16] - //SEG99 mul8s_compare::@16 - //SEG100 [56] call print_ln - //SEG101 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln] - //SEG102 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy - //SEG103 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy + //SEG99 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16] + //SEG100 mul8s_compare::@16 + //SEG101 [56] call print_ln + //SEG102 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln] + //SEG103 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy + //SEG104 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG104 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20] - //SEG105 mul8s_compare::@20 - //SEG106 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4] - //SEG107 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy + //SEG105 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20] + //SEG106 mul8s_compare::@20 + //SEG107 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4] + //SEG108 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy str: .text "signed multiply results match!@" } -//SEG108 print_ln +//SEG109 print_ln // Print a newline print_ln: { - //SEG109 [59] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG110 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG111 print_ln::@1 + //SEG110 [59] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG111 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG112 print_ln::@1 b1: - //SEG112 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG113 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -10997,7 +10995,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG113 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG114 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -11006,157 +11004,157 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG114 print_ln::@return - //SEG115 [62] return + //SEG115 print_ln::@return + //SEG116 [62] return rts } -//SEG116 print_str +//SEG117 print_str // Print a zero-terminated string print_str: { .label str = 6 - //SEG117 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG118 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG119 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG120 print_str::@1 + //SEG118 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG119 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG120 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG121 print_str::@1 b1: - //SEG121 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG122 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG122 print_str::@return - //SEG123 [66] return + //SEG123 print_str::@return + //SEG124 [66] return rts - //SEG124 print_str::@2 + //SEG125 print_str::@2 b2: - //SEG125 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 + //SEG126 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG126 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG127 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG127 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 + //SEG128 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG128 mul8s_error +//SEG129 mul8s_error mul8s_error: { .label b = 3 .label ms = 8 .label mn = $c .label mf = $e - //SEG129 [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG130 [70] (byte*~) print_char_cursor#193 ← (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 - //SEG130 [71] call print_str - //SEG131 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str] - //SEG132 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy - //SEG133 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 + //SEG131 [71] call print_str + //SEG132 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str] + //SEG133 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy + //SEG134 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG134 mul8s_error::@1 - //SEG135 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0 - //SEG136 [73] call print_sbyte - //SEG137 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] - //SEG138 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy + //SEG135 mul8s_error::@1 + //SEG136 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0 + //SEG137 [73] call print_sbyte + //SEG138 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] + //SEG139 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy jsr print_sbyte - //SEG139 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] - //SEG140 mul8s_error::@2 - //SEG141 [75] call print_str - //SEG142 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] - //SEG143 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy - //SEG144 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG140 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] + //SEG141 mul8s_error::@2 + //SEG142 [75] call print_str + //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] + //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy + //SEG145 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG145 mul8s_error::@3 - //SEG146 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsxx=vbsz1 + //SEG146 mul8s_error::@3 + //SEG147 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsxx=vbsz1 ldx b - //SEG147 [77] call print_sbyte - //SEG148 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] - //SEG149 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy + //SEG148 [77] call print_sbyte + //SEG149 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] + //SEG150 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy jsr print_sbyte - //SEG150 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] - //SEG151 mul8s_error::@4 - //SEG152 [79] call print_str - //SEG153 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] - //SEG154 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy - //SEG155 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG151 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] + //SEG152 mul8s_error::@4 + //SEG153 [79] call print_str + //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] + //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy + //SEG156 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG156 mul8s_error::@5 - //SEG157 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 - //SEG158 [81] call print_sword - //SEG159 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword] - //SEG160 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy + //SEG157 mul8s_error::@5 + //SEG158 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 + //SEG159 [81] call print_sword + //SEG160 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword] + //SEG161 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy jsr print_sword - //SEG161 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6] - //SEG162 mul8s_error::@6 - //SEG163 [83] call print_str - //SEG164 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] - //SEG165 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy - //SEG166 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG162 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6] + //SEG163 mul8s_error::@6 + //SEG164 [83] call print_str + //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] + //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy + //SEG167 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG167 mul8s_error::@7 - //SEG168 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 + //SEG168 mul8s_error::@7 + //SEG169 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 lda mn sta print_sword.w lda mn+1 sta print_sword.w+1 - //SEG169 [85] call print_sword - //SEG170 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword] - //SEG171 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy + //SEG170 [85] call print_sword + //SEG171 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword] + //SEG172 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy jsr print_sword - //SEG172 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8] - //SEG173 mul8s_error::@8 - //SEG174 [87] call print_str - //SEG175 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] - //SEG176 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy - //SEG177 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG173 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8] + //SEG174 mul8s_error::@8 + //SEG175 [87] call print_str + //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] + //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy + //SEG178 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG178 mul8s_error::@9 - //SEG179 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 + //SEG179 mul8s_error::@9 + //SEG180 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 lda mf sta print_sword.w lda mf+1 sta print_sword.w+1 - //SEG180 [89] call print_sword - //SEG181 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword] - //SEG182 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy + //SEG181 [89] call print_sword + //SEG182 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword] + //SEG183 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy jsr print_sword - //SEG183 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10] - //SEG184 mul8s_error::@10 - //SEG185 [91] call print_ln - //SEG186 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln] - //SEG187 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy - //SEG188 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy + //SEG184 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10] + //SEG185 mul8s_error::@10 + //SEG186 [91] call print_ln + //SEG187 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln] + //SEG188 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy + //SEG189 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy jsr print_ln - //SEG189 mul8s_error::@return - //SEG190 [92] return + //SEG190 mul8s_error::@return + //SEG191 [92] return rts str: .text "signed multiply mismatch @" str1: .text "*@" @@ -11164,23 +11162,23 @@ mul8s_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG191 print_sword +//SEG192 print_sword // Print a signed word as HEX print_sword: { .label w = 8 - //SEG192 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG193 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1 - //SEG193 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG194 print_sword::@2 - //SEG195 [96] call print_char - //SEG196 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG197 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG198 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG194 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG195 print_sword::@2 + //SEG196 [96] call print_char + //SEG197 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG198 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG199 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG199 print_sword::@4 - //SEG200 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 + //SEG200 print_sword::@4 + //SEG201 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -11190,132 +11188,132 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG201 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] - //SEG202 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy - //SEG203 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy - //SEG204 print_sword::@1 + //SEG202 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG203 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG204 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG205 print_sword::@1 b1: - //SEG205 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 - //SEG206 [100] call print_word - //SEG207 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG208 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG209 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG206 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 + //SEG207 [100] call print_word + //SEG208 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG209 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG210 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word - //SEG210 print_sword::@return - //SEG211 [101] return + //SEG211 print_sword::@return + //SEG212 [101] return rts } -//SEG212 print_word +//SEG213 print_word // Print a word as HEX print_word: { .label w = 8 - //SEG213 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 + //SEG214 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG214 [104] call print_byte - //SEG215 [108] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG216 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy - //SEG217 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG215 [104] call print_byte + //SEG216 [108] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG217 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy + //SEG218 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG218 print_word::@1 - //SEG219 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 + //SEG219 print_word::@1 + //SEG220 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 lda w tax - //SEG220 [106] call print_byte - //SEG221 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG222 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG223 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG221 [106] call print_byte + //SEG222 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG223 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG224 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG224 print_word::@return - //SEG225 [107] return + //SEG225 print_word::@return + //SEG226 [107] return rts } -//SEG226 print_byte +//SEG227 print_byte // Print a byte as HEX print_byte: { - //SEG227 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG228 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG228 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG229 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG229 [111] call print_char - //SEG230 [116] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG231 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy - //SEG232 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG230 [111] call print_char + //SEG231 [116] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG232 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy + //SEG233 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG233 print_byte::@1 - //SEG234 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG234 print_byte::@1 + //SEG235 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG235 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG236 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG236 [114] call print_char - //SEG237 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG238 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG239 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG237 [114] call print_char + //SEG238 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG239 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG240 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG240 print_byte::@return - //SEG241 [115] return + //SEG241 print_byte::@return + //SEG242 [115] return rts } -//SEG242 print_char +//SEG243 print_char // Print a single char print_char: { - //SEG243 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG244 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG244 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG245 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG245 print_char::@return - //SEG246 [119] return + //SEG246 print_char::@return + //SEG247 [119] return rts } -//SEG247 print_sbyte +//SEG248 print_sbyte // Print a signed byte as HEX print_sbyte: { - //SEG248 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + //SEG249 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1 - //SEG249 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG250 print_sbyte::@3 - //SEG251 [123] call print_char - //SEG252 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG253 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG254 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG250 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG251 print_sbyte::@3 + //SEG252 [123] call print_char + //SEG253 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG254 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG255 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG255 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] - //SEG256 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy - //SEG257 print_sbyte::@2 + //SEG256 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2] + //SEG257 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy + //SEG258 print_sbyte::@2 b2: - //SEG258 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5 - //SEG259 [126] call print_byte - //SEG260 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG261 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG262 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG259 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5 + //SEG260 [126] call print_byte + //SEG261 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG262 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG263 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG263 print_sbyte::@return - //SEG264 [127] return + //SEG264 print_sbyte::@return + //SEG265 [127] return rts - //SEG265 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG266 print_sbyte::@1 + //SEG266 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG267 print_sbyte::@1 b1: - //SEG267 [129] call print_char - //SEG268 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG269 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG270 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG268 [129] call print_char + //SEG269 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG270 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG271 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG271 print_sbyte::@5 - //SEG272 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx + //SEG272 print_sbyte::@5 + //SEG273 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -11323,98 +11321,97 @@ print_sbyte: { tax jmp b2 } -//SEG273 mul8s +//SEG274 mul8s // Multiply of two signed bytes to a signed word // Fixes offsets introduced by using unsigned multiplication mul8s: { .label m = $c .label a = 2 .label return = $c - //SEG274 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy + //SEG275 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy tya - //SEG275 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 + //SEG276 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 ldx a - //SEG276 [133] call mul8u - //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 + //SEG277 [133] call mul8u + //SEG278 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG279 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG280 [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 - //SEG281 mul8s::@6 - //SEG282 [135] (word) mul8s::m#0 ← (word) mul8u::return#2 - //SEG283 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 + //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG282 mul8s::@6 + //SEG283 [135] (word) mul8s::m#0 ← (word) mul8u::return#2 + //SEG284 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1 - //SEG284 mul8s::@3 - //SEG285 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG285 mul8s::@3 + //SEG286 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //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 + //SEG287 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG288 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG288 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG289 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+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 + //SEG290 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG291 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG292 mul8s::@1 b1: - //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 + //SEG293 [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 - //SEG293 mul8s::@4 - //SEG294 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG294 mul8s::@4 + //SEG295 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //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 + //SEG296 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG297 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc a - //SEG297 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa + //SEG298 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //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 + //SEG299 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG300 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG301 mul8s::@2 b2: - //SEG301 mul8s::@return - //SEG302 [148] return + //SEG302 mul8s::@return + //SEG303 [148] return rts } -//SEG303 mul8u -// Simple binary multiplication implementation +//SEG304 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word mul8u: { .label mb = 6 .label res = $c .label return = $c - //SEG304 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG305 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //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 + //SEG306 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG307 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG308 [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 - //SEG308 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG309 mul8u::@1 + //SEG309 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG310 mul8u::@1 b1: - //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 + //SEG311 [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 - //SEG311 mul8u::@return - //SEG312 [153] return + //SEG312 mul8u::@return + //SEG313 [153] return rts - //SEG313 mul8u::@2 + //SEG314 mul8u::@2 b2: - //SEG314 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG315 [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 - //SEG315 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG316 [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 - //SEG316 mul8u::@7 - //SEG317 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG317 mul8u::@7 + //SEG318 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -11422,46 +11419,46 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //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 + //SEG319 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG320 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG321 mul8u::@4 b4: - //SEG321 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG322 [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 - //SEG322 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG323 [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 - //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 + //SEG324 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG325 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG326 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG327 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG327 mulf8s +//SEG328 mulf8s // Fast multiply two signed bytes to a word result mulf8s: { .label return = $e - //SEG328 mulf8s::mulf8s_prepare1 - //SEG329 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 - //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 + //SEG329 mulf8s::mulf8s_prepare1 + //SEG330 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + //SEG331 [162] call mulf8u_prepare + //SEG332 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG333 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare - //SEG333 mulf8s::@2 - //SEG334 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx + //SEG334 mulf8s::@2 + //SEG335 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx stx mulf8s_prepared.b - //SEG335 [164] call mulf8s_prepared + //SEG336 [164] call mulf8s_prepared jsr mulf8s_prepared - //SEG336 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 - //SEG337 mulf8s::@4 - //SEG338 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 - //SEG339 mulf8s::@return - //SEG340 [167] return + //SEG337 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG338 mulf8s::@4 + //SEG339 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + //SEG340 mulf8s::@return + //SEG341 [167] return rts } -//SEG341 mulf8s_prepared +//SEG342 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) mulf8s_prepared: { @@ -11469,63 +11466,63 @@ mulf8s_prepared: { .label m = $e .label b = 3 .label return = $e - //SEG342 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 + //SEG343 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 ldx b - //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 + //SEG344 [169] call mulf8u_prepared + //SEG345 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG346 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG346 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 - //SEG347 mulf8s_prepared::@6 - //SEG348 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - //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 + //SEG347 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + //SEG348 mulf8s_prepared::@6 + //SEG349 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + //SEG350 [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 - //SEG350 mulf8s_prepared::@3 - //SEG351 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG351 mulf8s_prepared::@3 + //SEG352 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //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 + //SEG353 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG354 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG354 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG355 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+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 + //SEG356 [177] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG357 [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 + //SEG358 mulf8s_prepared::@1 b1: - //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 + //SEG359 [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 - //SEG359 mulf8s_prepared::@4 - //SEG360 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG360 mulf8s_prepared::@4 + //SEG361 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //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 + //SEG362 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG363 [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 - //SEG363 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG364 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //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 + //SEG365 [183] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG366 [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 + //SEG367 mulf8s_prepared::@2 b2: - //SEG367 mulf8s_prepared::@return - //SEG368 [184] return + //SEG368 mulf8s_prepared::@return + //SEG369 [184] return rts } -//SEG369 mulf8u_prepared +//SEG370 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = $e - //SEG370 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx + //SEG371 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx stx memB - //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 } + //SEG372 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 @@ -11537,58 +11534,58 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //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 + //SEG373 [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 - //SEG373 mulf8u_prepared::@return - //SEG374 [189] return + //SEG374 mulf8u_prepared::@return + //SEG375 [189] return rts } -//SEG375 mulf8u_prepare +//SEG376 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result mulf8u_prepare: { .label memA = $fd - //SEG376 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG377 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG377 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG378 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 - //SEG378 mulf8u_prepare::@return - //SEG379 [193] return + //SEG379 mulf8u_prepare::@return + //SEG380 [193] return rts } -//SEG380 muls8s +//SEG381 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction muls8s: { .label m = 8 .label return = 8 .label a = 2 - //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 + //SEG382 [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 - //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 + //SEG383 muls8s::@6 + //SEG384 [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 - //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 + //SEG385 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG386 [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 - //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 + //SEG387 [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 - //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 + //SEG388 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG389 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG390 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG391 muls8s::@3 b3: - //SEG391 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx + //SEG392 [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 @@ -11603,39 +11600,39 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG392 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy + //SEG393 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy iny - //SEG393 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 + //SEG394 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b3 - //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 + //SEG395 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG396 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG396 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG397 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b2: - //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 + //SEG398 [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 - //SEG398 muls8s::@4 + //SEG399 muls8s::@4 b4: - //SEG399 muls8s::@return - //SEG400 [201] return + //SEG400 muls8s::@return + //SEG401 [201] return rts - //SEG401 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG402 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b6: - //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 + //SEG403 [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 - //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 + //SEG404 [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 - //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 + //SEG405 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG406 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG407 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy + //SEG408 muls8s::@5 b5: - //SEG408 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx + //SEG409 [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 @@ -11650,14 +11647,14 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG409 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy + //SEG410 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy dey - //SEG410 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 + //SEG411 [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 } -//SEG411 mul8u_compare +//SEG412 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { .label ms = 8 @@ -11665,52 +11662,52 @@ mul8u_compare: { .label mn = $c .label b = 3 .label a = 2 - //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 + //SEG413 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG414 [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 - //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 + //SEG415 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG416 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG417 mul8u_compare::@1 b1: - //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 + //SEG418 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG419 [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 - //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 + //SEG420 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG421 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG422 mul8u_compare::@2 b2: - //SEG422 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - //SEG423 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG423 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + //SEG424 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG424 [211] call muls8u + //SEG425 [211] call muls8u jsr muls8u - //SEG425 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 - //SEG426 mul8u_compare::@12 - //SEG427 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - //SEG428 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 + //SEG426 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 + //SEG427 mul8u_compare::@12 + //SEG428 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + //SEG429 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 lda a - //SEG429 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG430 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG430 [216] call mulf8u + //SEG431 [216] call mulf8u jsr mulf8u - //SEG431 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 - //SEG432 mul8u_compare::@13 - //SEG433 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - //SEG434 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG432 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + //SEG433 mul8u_compare::@13 + //SEG434 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + //SEG435 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG435 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 + //SEG436 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 lda b - //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 + //SEG437 [221] call mul8u + //SEG438 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG439 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG440 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG440 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG441 mul8u_compare::@14 - //SEG442 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - //SEG443 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG441 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG442 mul8u_compare::@14 + //SEG443 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + //SEG444 [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 !+ @@ -11718,19 +11715,19 @@ mul8u_compare: { cmp mf+1 beq b6 !: - //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 + //SEG445 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG446 mul8u_compare::@6 + //SEG447 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG448 [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 - //SEG448 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG449 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b6: - //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 + //SEG450 [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 - //SEG450 mul8u_compare::@3 + //SEG451 mul8u_compare::@3 b3: - //SEG451 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG452 [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 !+ @@ -11738,183 +11735,183 @@ mul8u_compare: { cmp mn+1 beq b4 !: - //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 + //SEG453 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG454 [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 - //SEG454 mul8u_compare::@4 + //SEG455 mul8u_compare::@4 b4: - //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 + //SEG456 [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 - //SEG456 mul8u_compare::@8 - //SEG457 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG457 mul8u_compare::@8 + //SEG458 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG458 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG459 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG459 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - //SEG460 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - //SEG461 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - //SEG462 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - //SEG463 [236] call mul8u_error - //SEG464 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG460 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + //SEG461 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + //SEG462 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + //SEG463 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + //SEG464 [236] call mul8u_error + //SEG465 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] jsr mul8u_error - //SEG465 mul8u_compare::@return + //SEG466 mul8u_compare::@return breturn: - //SEG466 [237] return + //SEG467 [237] return rts - //SEG467 mul8u_compare::@5 + //SEG468 mul8u_compare::@5 b5: - //SEG468 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG469 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //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 + //SEG470 [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 - //SEG470 mul8u_compare::@10 - //SEG471 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG471 mul8u_compare::@10 + //SEG472 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //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 + //SEG473 [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 - //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 + //SEG474 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG475 mul8u_compare::@11 + //SEG476 [243] call print_str + //SEG477 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG478 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG479 [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 - //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 + //SEG480 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG481 mul8u_compare::@16 + //SEG482 [245] call print_ln + //SEG483 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG484 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG485 [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 - //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 + //SEG486 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG487 mul8u_compare::@20 + //SEG488 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG489 [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!@" } -//SEG489 mul8u_error +//SEG490 mul8u_error mul8u_error: { .label b = 3 .label ms = 8 .label mn = $c .label mf = $e - //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 + //SEG491 [248] call print_str + //SEG492 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG493 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG494 [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 - //SEG494 mul8u_error::@1 - //SEG495 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - //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 + //SEG495 mul8u_error::@1 + //SEG496 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + //SEG497 [250] call print_byte + //SEG498 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG499 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG500 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //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 + //SEG501 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG502 mul8u_error::@2 + //SEG503 [252] call print_str + //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG506 [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 - //SEG506 mul8u_error::@3 - //SEG507 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 + //SEG507 mul8u_error::@3 + //SEG508 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 ldx b - //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 + //SEG509 [254] call print_byte + //SEG510 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG511 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG512 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //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 + //SEG513 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG514 mul8u_error::@4 + //SEG515 [256] call print_str + //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG518 [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 - //SEG518 mul8u_error::@5 - //SEG519 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - //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 + //SEG519 mul8u_error::@5 + //SEG520 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + //SEG521 [258] call print_word + //SEG522 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG523 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG524 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //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 + //SEG525 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG526 mul8u_error::@6 + //SEG527 [260] call print_str + //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG530 [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 - //SEG530 mul8u_error::@7 - //SEG531 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG531 mul8u_error::@7 + //SEG532 [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 - //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 + //SEG533 [262] call print_word + //SEG534 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG535 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG536 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //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 + //SEG537 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG538 mul8u_error::@8 + //SEG539 [264] call print_str + //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG542 [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 - //SEG542 mul8u_error::@9 - //SEG543 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG543 mul8u_error::@9 + //SEG544 [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 - //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 + //SEG545 [266] call print_word + //SEG546 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG547 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG548 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //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 + //SEG549 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG550 mul8u_error::@10 + //SEG551 [268] call print_ln + //SEG552 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG553 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG554 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln - //SEG554 mul8u_error::@return - //SEG555 [269] return + //SEG555 mul8u_error::@return + //SEG556 [269] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -11922,52 +11919,52 @@ mul8u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG556 mulf8u +//SEG557 mulf8u // Fast multiply two unsigned bytes to a word result mulf8u: { .label return = $e - //SEG557 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - //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 + //SEG558 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + //SEG559 [271] call mulf8u_prepare + //SEG560 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG561 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare - //SEG561 mulf8u::@2 - //SEG562 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - //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 + //SEG562 mulf8u::@2 + //SEG563 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + //SEG564 [273] call mulf8u_prepared + //SEG565 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG566 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG566 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 - //SEG567 mulf8u::@3 - //SEG568 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 - //SEG569 mulf8u::@return - //SEG570 [276] return + //SEG567 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG568 mulf8u::@3 + //SEG569 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + //SEG570 mulf8u::@return + //SEG571 [276] return rts } -//SEG571 muls8u +//SEG572 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition muls8u: { .label return = 8 .label m = 8 .label a = 2 - //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 + //SEG573 [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 - //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 + //SEG574 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG575 [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 - //SEG575 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG576 [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 - //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 + //SEG577 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG578 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG579 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG580 muls8u::@2 b2: - //SEG580 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG581 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -11975,123 +11972,123 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG581 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy + //SEG582 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy iny - //SEG582 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 + //SEG583 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2 - //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 + //SEG584 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG585 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG585 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG586 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b3: - //SEG586 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG587 [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 - //SEG587 muls8u::@1 + //SEG588 muls8u::@1 b1: - //SEG588 muls8u::@return - //SEG589 [283] return + //SEG589 muls8u::@return + //SEG590 [283] return rts } -//SEG590 mulf_tables_cmp +//SEG591 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = 8 .label kc_sqr = 4 - //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 + //SEG592 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG593 [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 - //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 + //SEG594 [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 - //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 + //SEG595 [285] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG596 [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 + //SEG597 [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 + //SEG598 mulf_tables_cmp::@1 b1: - //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 + //SEG599 [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 - //SEG599 mulf_tables_cmp::@3 - //SEG600 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG600 mulf_tables_cmp::@3 + //SEG601 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //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 + //SEG602 [288] call print_str + //SEG603 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG604 [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 - //SEG604 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG605 [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 - //SEG605 mulf_tables_cmp::@6 - //SEG606 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - //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 + //SEG606 mulf_tables_cmp::@6 + //SEG607 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + //SEG608 [290] call print_word + //SEG609 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG610 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG611 [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 - //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 + //SEG612 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG613 mulf_tables_cmp::@7 + //SEG614 [292] call print_str + //SEG615 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG616 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG617 [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 - //SEG617 mulf_tables_cmp::@8 - //SEG618 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG618 mulf_tables_cmp::@8 + //SEG619 [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 - //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 + //SEG620 [294] call print_word + //SEG621 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG622 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG623 [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 - //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 + //SEG624 [295] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] + //SEG625 [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 - //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 + //SEG626 [295] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy + //SEG627 mulf_tables_cmp::@return breturn: - //SEG627 [296] return + //SEG628 [296] return rts - //SEG628 mulf_tables_cmp::@2 + //SEG629 mulf_tables_cmp::@2 b2: - //SEG629 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG630 [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 !: - //SEG630 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG631 [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 !: - //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 + //SEG632 [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 @@ -12100,51 +12097,51 @@ mulf_tables_cmp: { cmp #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 + //SEG633 [300] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5] + //SEG634 mulf_tables_cmp::@5 + //SEG635 [301] call print_str + //SEG636 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG637 [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 - //SEG637 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG638 [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 - //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 + //SEG639 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG640 mulf_tables_cmp::@10 + //SEG641 [303] call print_ln + //SEG642 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG643 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG644 [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 - //SEG644 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG645 [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 - //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 + //SEG646 [295] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] + //SEG647 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG648 [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!@" } -//SEG648 mulf_init_asm +//SEG649 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { .label mem = $ff - //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!- } + //SEG650 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 @@ -12183,23 +12180,23 @@ mulf_init_asm: { dey inx bne !- - //SEG650 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [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 - //SEG651 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [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 - //SEG652 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [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 - //SEG653 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG654 [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 - //SEG654 mulf_init_asm::@return - //SEG655 [310] return + //SEG655 mulf_init_asm::@return + //SEG656 [310] return rts } -//SEG656 mulf_init +//SEG657 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 6 @@ -12209,70 +12206,70 @@ mulf_init: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //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 + //SEG658 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG659 [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 - //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 + //SEG660 [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 - //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 + //SEG661 [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 - //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 + //SEG662 [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 - //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 + //SEG663 [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 - //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 + //SEG664 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG665 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG666 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG667 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG668 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG669 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG670 mulf_init::@1 b1: - //SEG670 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG671 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //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 + //SEG672 [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 - //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 + //SEG673 [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 - //SEG673 mulf_init::@5 - //SEG674 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG674 mulf_init::@5 + //SEG675 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG675 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG676 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //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 + //SEG677 [318] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG678 [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 + //SEG679 [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 + //SEG680 mulf_init::@2 b2: - //SEG680 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG681 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG681 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG682 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG682 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG683 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG683 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG684 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG684 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG685 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG685 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG686 [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 @@ -12280,132 +12277,129 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG686 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG687 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //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 + //SEG688 [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] - //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 + //SEG689 [327] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG690 [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 - //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 + //SEG691 [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 - //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 + //SEG692 [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 - //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 + //SEG693 [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 - //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 + //SEG694 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG695 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG696 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG697 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG698 [327] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG699 mulf_init::@3 b3: - //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 + //SEG700 [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 - //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 + //SEG701 [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 - //SEG701 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG702 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG702 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG703 [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 - //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 + //SEG704 [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 - //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 + //SEG705 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG706 [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 - //SEG706 mulf_init::@4 + //SEG707 mulf_init::@4 b4: - //SEG707 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG708 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //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 + //SEG709 [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] - //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 + //SEG715 [339] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG716 mulf_init::@12 + //SEG717 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG718 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } -//SEG718 print_cls +//SEG719 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 4 - //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 + //SEG720 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG721 [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 - //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 + //SEG722 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG723 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG724 print_cls::@1 b1: - //SEG724 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG725 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG725 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG726 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //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 + //SEG727 [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 - //SEG727 print_cls::@return - //SEG728 [345] return + //SEG728 print_cls::@return + //SEG729 [345] return rts } print_hextab: .text "0123456789abcdef" - // Library Implementation of the Seriously Fast Multiplication - // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication - // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // @4] +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] b4_from_bbegin: jmp b4 -//SEG4 @4 +//SEG5 @4 b4: -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG7 [3] phi from @4 to @end [phi:@4->@end] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call scrollup1 - //SEG11 [33] phi from main to scrollup1 [phi:main->scrollup1] + //SEG11 [5] call scrollup1 + //SEG12 [33] phi from main to scrollup1 [phi:main->scrollup1] scrollup1_from_main: jsr scrollup1 - //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 scrollup2 - //SEG15 [22] phi from main::@1 to scrollup2 [phi:main::@1->scrollup2] + //SEG15 [7] call scrollup2 + //SEG16 [22] phi from main::@1 to scrollup2 [phi:main::@1->scrollup2] scrollup2_from_b1: jsr scrollup2 - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call scrollup3 - //SEG19 [11] phi from main::@2 to scrollup3 [phi:main::@2->scrollup3] + //SEG19 [9] call scrollup3 + //SEG20 [11] phi from main::@2 to scrollup3 [phi:main::@2->scrollup3] scrollup3_from_b2: jsr scrollup3 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [10] return + //SEG22 [10] return rts } -//SEG22 scrollup3 +//SEG23 scrollup3 scrollup3: { .label l2 = 2 .label l2_1 = 4 @@ -556,40 +557,40 @@ scrollup3: { .label line = 2 .label l2_2 = 4 .label l2_4 = 4 - //SEG23 [12] phi from scrollup3 to scrollup3::@1 [phi:scrollup3->scrollup3::@1] + //SEG24 [12] phi from scrollup3 to scrollup3::@1 [phi:scrollup3->scrollup3::@1] b1_from_scrollup3: - //SEG24 [12] phi (word) scrollup3::l2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3->scrollup3::@1#0] -- vwuz1=vbuc1 + //SEG25 [12] phi (word) scrollup3::l2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3->scrollup3::@1#0] -- vwuz1=vbuc1 lda #<0 sta l2 lda #>0 sta l2+1 jmp b1 - //SEG25 [12] phi from scrollup3::@3 to scrollup3::@1 [phi:scrollup3::@3->scrollup3::@1] + //SEG26 [12] phi from scrollup3::@3 to scrollup3::@1 [phi:scrollup3::@3->scrollup3::@1] b1_from_b3: - //SEG26 [12] phi (word) scrollup3::l2#0 = (word) scrollup3::line#1 [phi:scrollup3::@3->scrollup3::@1#0] -- register_copy + //SEG27 [12] phi (word) scrollup3::l2#0 = (word) scrollup3::line#1 [phi:scrollup3::@3->scrollup3::@1#0] -- register_copy jmp b1 - //SEG27 scrollup3::@1 + //SEG28 scrollup3::@1 b1: - //SEG28 [13] (word~) scrollup3::l2#4 ← (word) scrollup3::l2#0 -- vwuz1=vwuz2 + //SEG29 [13] (word~) scrollup3::l2#4 ← (word) scrollup3::l2#0 -- vwuz1=vwuz2 lda l2 sta l2_4 lda l2+1 sta l2_4+1 - //SEG29 [14] phi from scrollup3::@1 to scrollup3::@2 [phi:scrollup3::@1->scrollup3::@2] + //SEG30 [14] phi from scrollup3::@1 to scrollup3::@2 [phi:scrollup3::@1->scrollup3::@2] b2_from_b1: - //SEG30 [14] phi (byte) scrollup3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3::@1->scrollup3::@2#0] -- vbuz1=vbuc1 + //SEG31 [14] phi (byte) scrollup3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3::@1->scrollup3::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG31 [14] phi (word) scrollup3::l2#2 = (word~) scrollup3::l2#4 [phi:scrollup3::@1->scrollup3::@2#1] -- register_copy + //SEG32 [14] phi (word) scrollup3::l2#2 = (word~) scrollup3::l2#4 [phi:scrollup3::@1->scrollup3::@2#1] -- register_copy jmp b2 - //SEG32 [14] phi from scrollup3::@2 to scrollup3::@2 [phi:scrollup3::@2->scrollup3::@2] + //SEG33 [14] phi from scrollup3::@2 to scrollup3::@2 [phi:scrollup3::@2->scrollup3::@2] b2_from_b2: - //SEG33 [14] phi (byte) scrollup3::c#2 = (byte) scrollup3::c#1 [phi:scrollup3::@2->scrollup3::@2#0] -- register_copy - //SEG34 [14] phi (word) scrollup3::l2#2 = (word) scrollup3::l2#1 [phi:scrollup3::@2->scrollup3::@2#1] -- register_copy + //SEG34 [14] phi (byte) scrollup3::c#2 = (byte) scrollup3::c#1 [phi:scrollup3::@2->scrollup3::@2#0] -- register_copy + //SEG35 [14] phi (word) scrollup3::l2#2 = (word) scrollup3::l2#1 [phi:scrollup3::@2->scrollup3::@2#1] -- register_copy jmp b2 - //SEG35 scrollup3::@2 + //SEG36 scrollup3::@2 b2: - //SEG36 [15] *((const byte*) screen#0 + (word) scrollup3::l2#2) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word) scrollup3::l2#2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz1 + //SEG37 [15] *((const byte*) screen#0 + (word) scrollup3::l2#2) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word) scrollup3::l2#2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz1 lda #$28 sta line+1 - //SEG42 [20] if((word) scrollup3::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup3::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG43 [20] if((word) scrollup3::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup3::@1 -- vwuz1_lt_vwuc1_then_la1 lda line+1 cmp #>$28*$18 bcc b1_from_b3 @@ -640,126 +641,126 @@ scrollup3: { bcc b1_from_b3 !: jmp breturn - //SEG43 scrollup3::@return + //SEG44 scrollup3::@return breturn: - //SEG44 [21] return + //SEG45 [21] return rts } -//SEG45 scrollup2 +//SEG46 scrollup2 scrollup2: { .label line1 = $a .label line2 = 8 .label c = $c .label l = 7 - //SEG46 [23] phi from scrollup2 to scrollup2::@1 [phi:scrollup2->scrollup2::@1] + //SEG47 [23] phi from scrollup2 to scrollup2::@1 [phi:scrollup2->scrollup2::@1] b1_from_scrollup2: - //SEG47 [23] phi (byte) scrollup2::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2->scrollup2::@1#0] -- vbuz1=vbuc1 + //SEG48 [23] phi (byte) scrollup2::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2->scrollup2::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG48 [23] phi (byte*) scrollup2::line1#3 = (const byte*) screen#0 [phi:scrollup2->scrollup2::@1#1] -- pbuz1=pbuc1 + //SEG49 [23] phi (byte*) scrollup2::line1#3 = (const byte*) screen#0 [phi:scrollup2->scrollup2::@1#1] -- pbuz1=pbuc1 lda #screen sta line1+1 - //SEG49 [23] phi (byte*) scrollup2::line2#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:scrollup2->scrollup2::@1#2] -- pbuz1=pbuc1 + //SEG50 [23] phi (byte*) scrollup2::line2#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:scrollup2->scrollup2::@1#2] -- pbuz1=pbuc1 lda #screen+$28 sta line2+1 jmp b1 - //SEG50 [23] phi from scrollup2::@3 to scrollup2::@1 [phi:scrollup2::@3->scrollup2::@1] + //SEG51 [23] phi from scrollup2::@3 to scrollup2::@1 [phi:scrollup2::@3->scrollup2::@1] b1_from_b3: - //SEG51 [23] phi (byte) scrollup2::l#4 = (byte) scrollup2::l#1 [phi:scrollup2::@3->scrollup2::@1#0] -- register_copy - //SEG52 [23] phi (byte*) scrollup2::line1#3 = (byte*) scrollup2::line1#1 [phi:scrollup2::@3->scrollup2::@1#1] -- register_copy - //SEG53 [23] phi (byte*) scrollup2::line2#3 = (byte*) scrollup2::line2#1 [phi:scrollup2::@3->scrollup2::@1#2] -- register_copy + //SEG52 [23] phi (byte) scrollup2::l#4 = (byte) scrollup2::l#1 [phi:scrollup2::@3->scrollup2::@1#0] -- register_copy + //SEG53 [23] phi (byte*) scrollup2::line1#3 = (byte*) scrollup2::line1#1 [phi:scrollup2::@3->scrollup2::@1#1] -- register_copy + //SEG54 [23] phi (byte*) scrollup2::line2#3 = (byte*) scrollup2::line2#1 [phi:scrollup2::@3->scrollup2::@1#2] -- register_copy jmp b1 - //SEG54 scrollup2::@1 + //SEG55 scrollup2::@1 b1: - //SEG55 [24] phi from scrollup2::@1 to scrollup2::@2 [phi:scrollup2::@1->scrollup2::@2] + //SEG56 [24] phi from scrollup2::@1 to scrollup2::@2 [phi:scrollup2::@1->scrollup2::@2] b2_from_b1: - //SEG56 [24] phi (byte) scrollup2::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2::@1->scrollup2::@2#0] -- vbuz1=vbuc1 + //SEG57 [24] phi (byte) scrollup2::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2::@1->scrollup2::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG57 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#3 [phi:scrollup2::@1->scrollup2::@2#1] -- register_copy - //SEG58 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#3 [phi:scrollup2::@1->scrollup2::@2#2] -- register_copy + //SEG58 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#3 [phi:scrollup2::@1->scrollup2::@2#1] -- register_copy + //SEG59 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#3 [phi:scrollup2::@1->scrollup2::@2#2] -- register_copy jmp b2 - //SEG59 [24] phi from scrollup2::@2 to scrollup2::@2 [phi:scrollup2::@2->scrollup2::@2] + //SEG60 [24] phi from scrollup2::@2 to scrollup2::@2 [phi:scrollup2::@2->scrollup2::@2] b2_from_b2: - //SEG60 [24] phi (byte) scrollup2::c#2 = (byte) scrollup2::c#1 [phi:scrollup2::@2->scrollup2::@2#0] -- register_copy - //SEG61 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#1 [phi:scrollup2::@2->scrollup2::@2#1] -- register_copy - //SEG62 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#1 [phi:scrollup2::@2->scrollup2::@2#2] -- register_copy + //SEG61 [24] phi (byte) scrollup2::c#2 = (byte) scrollup2::c#1 [phi:scrollup2::@2->scrollup2::@2#0] -- register_copy + //SEG62 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#1 [phi:scrollup2::@2->scrollup2::@2#1] -- register_copy + //SEG63 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#1 [phi:scrollup2::@2->scrollup2::@2#2] -- register_copy jmp b2 - //SEG63 scrollup2::@2 + //SEG64 scrollup2::@2 b2: - //SEG64 [25] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG65 [25] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (line2),y ldy #0 sta (line1),y - //SEG65 [26] (byte*) scrollup2::line1#1 ← ++ (byte*) scrollup2::line1#2 -- pbuz1=_inc_pbuz1 + //SEG66 [26] (byte*) scrollup2::line1#1 ← ++ (byte*) scrollup2::line1#2 -- pbuz1=_inc_pbuz1 inc line1 bne !+ inc line1+1 !: - //SEG66 [27] (byte*) scrollup2::line2#1 ← ++ (byte*) scrollup2::line2#2 -- pbuz1=_inc_pbuz1 + //SEG67 [27] (byte*) scrollup2::line2#1 ← ++ (byte*) scrollup2::line2#2 -- pbuz1=_inc_pbuz1 inc line2 bne !+ inc line2+1 !: - //SEG67 [28] (byte) scrollup2::c#1 ← ++ (byte) scrollup2::c#2 -- vbuz1=_inc_vbuz1 + //SEG68 [28] (byte) scrollup2::c#1 ← ++ (byte) scrollup2::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG68 [29] if((byte) scrollup2::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto scrollup2::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG69 [29] if((byte) scrollup2::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto scrollup2::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #$28 bne b2_from_b2 jmp b3 - //SEG69 scrollup2::@3 + //SEG70 scrollup2::@3 b3: - //SEG70 [30] (byte) scrollup2::l#1 ← ++ (byte) scrollup2::l#4 -- vbuz1=_inc_vbuz1 + //SEG71 [30] (byte) scrollup2::l#1 ← ++ (byte) scrollup2::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG71 [31] if((byte) scrollup2::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG72 [31] if((byte) scrollup2::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup2::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #$18 bne b1_from_b3 jmp breturn - //SEG72 scrollup2::@return + //SEG73 scrollup2::@return breturn: - //SEG73 [32] return + //SEG74 [32] return rts } -//SEG74 scrollup1 +//SEG75 scrollup1 scrollup1: { .label _0 = $10 .label _2 = $12 .label c = $f .label line = $d - //SEG75 [34] phi from scrollup1 to scrollup1::@1 [phi:scrollup1->scrollup1::@1] + //SEG76 [34] phi from scrollup1 to scrollup1::@1 [phi:scrollup1->scrollup1::@1] b1_from_scrollup1: - //SEG76 [34] phi (word) scrollup1::line#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1->scrollup1::@1#0] -- vwuz1=vbuc1 + //SEG77 [34] phi (word) scrollup1::line#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1->scrollup1::@1#0] -- vwuz1=vbuc1 lda #<0 sta line lda #>0 sta line+1 jmp b1 - //SEG77 [34] phi from scrollup1::@3 to scrollup1::@1 [phi:scrollup1::@3->scrollup1::@1] + //SEG78 [34] phi from scrollup1::@3 to scrollup1::@1 [phi:scrollup1::@3->scrollup1::@1] b1_from_b3: - //SEG78 [34] phi (word) scrollup1::line#4 = (word) scrollup1::line#1 [phi:scrollup1::@3->scrollup1::@1#0] -- register_copy + //SEG79 [34] phi (word) scrollup1::line#4 = (word) scrollup1::line#1 [phi:scrollup1::@3->scrollup1::@1#0] -- register_copy jmp b1 - //SEG79 scrollup1::@1 + //SEG80 scrollup1::@1 b1: - //SEG80 [35] phi from scrollup1::@1 to scrollup1::@2 [phi:scrollup1::@1->scrollup1::@2] + //SEG81 [35] phi from scrollup1::@1 to scrollup1::@2 [phi:scrollup1::@1->scrollup1::@2] b2_from_b1: - //SEG81 [35] phi (byte) scrollup1::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1::@1->scrollup1::@2#0] -- vbuz1=vbuc1 + //SEG82 [35] phi (byte) scrollup1::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1::@1->scrollup1::@2#0] -- vbuz1=vbuc1 lda #0 sta c jmp b2 - //SEG82 [35] phi from scrollup1::@2 to scrollup1::@2 [phi:scrollup1::@2->scrollup1::@2] + //SEG83 [35] phi from scrollup1::@2 to scrollup1::@2 [phi:scrollup1::@2->scrollup1::@2] b2_from_b2: - //SEG83 [35] phi (byte) scrollup1::c#2 = (byte) scrollup1::c#1 [phi:scrollup1::@2->scrollup1::@2#0] -- register_copy + //SEG84 [35] phi (byte) scrollup1::c#2 = (byte) scrollup1::c#1 [phi:scrollup1::@2->scrollup1::@2#0] -- register_copy jmp b2 - //SEG84 scrollup1::@2 + //SEG85 scrollup1::@2 b2: - //SEG85 [36] (word~) scrollup1::$0 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuz3 + //SEG86 [36] (word~) scrollup1::$0 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuz3 lda c clc adc line @@ -767,7 +768,7 @@ scrollup1: { lda #0 adc line+1 sta _0+1 - //SEG86 [37] (word~) scrollup1::$2 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuz3 + //SEG87 [37] (word~) scrollup1::$2 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuz3 lda c clc adc line @@ -775,7 +776,7 @@ scrollup1: { lda #0 adc line+1 sta _2+1 - //SEG87 [38] *((const byte*) screen#0 + (word~) scrollup1::$0) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) scrollup1::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 + //SEG88 [38] *((const byte*) screen#0 + (word~) scrollup1::$0) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) scrollup1::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 lda #$28 sta line+1 - //SEG92 [42] if((word) scrollup1::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup1::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG93 [42] if((word) scrollup1::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup1::@1 -- vwuz1_lt_vwuc1_then_la1 lda line+1 cmp #>$28*$18 bcc b1_from_b3 @@ -821,9 +822,9 @@ scrollup1: { bcc b1_from_b3 !: jmp breturn - //SEG93 scrollup1::@return + //SEG94 scrollup1::@return breturn: - //SEG94 [43] return + //SEG95 [43] return rts } @@ -888,99 +889,100 @@ Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ scrollup2::l#4 scrollup2::l#1 ] Allocated (was zp ZP_WORD:18) zp ZP_WORD:7 [ scrollup1::$2 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests different ways of scrolling up the screen +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Tests different ways of scrolling up the screen +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] b4_from_bbegin: jmp b4 -//SEG4 @4 +//SEG5 @4 b4: -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG7 [3] phi from @4 to @end [phi:@4->@end] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call scrollup1 - //SEG11 [33] phi from main to scrollup1 [phi:main->scrollup1] + //SEG11 [5] call scrollup1 + //SEG12 [33] phi from main to scrollup1 [phi:main->scrollup1] scrollup1_from_main: jsr scrollup1 - //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 scrollup2 - //SEG15 [22] phi from main::@1 to scrollup2 [phi:main::@1->scrollup2] + //SEG15 [7] call scrollup2 + //SEG16 [22] phi from main::@1 to scrollup2 [phi:main::@1->scrollup2] scrollup2_from_b1: jsr scrollup2 - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] call scrollup3 - //SEG19 [11] phi from main::@2 to scrollup3 [phi:main::@2->scrollup3] + //SEG19 [9] call scrollup3 + //SEG20 [11] phi from main::@2 to scrollup3 [phi:main::@2->scrollup3] scrollup3_from_b2: jsr scrollup3 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [10] return + //SEG22 [10] return rts } -//SEG22 scrollup3 +//SEG23 scrollup3 scrollup3: { .label l2 = 2 .label l2_1 = 4 .label line = 2 .label l2_2 = 4 .label l2_4 = 4 - //SEG23 [12] phi from scrollup3 to scrollup3::@1 [phi:scrollup3->scrollup3::@1] + //SEG24 [12] phi from scrollup3 to scrollup3::@1 [phi:scrollup3->scrollup3::@1] b1_from_scrollup3: - //SEG24 [12] phi (word) scrollup3::l2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3->scrollup3::@1#0] -- vwuz1=vbuc1 + //SEG25 [12] phi (word) scrollup3::l2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3->scrollup3::@1#0] -- vwuz1=vbuc1 lda #<0 sta l2 lda #>0 sta l2+1 jmp b1 - //SEG25 [12] phi from scrollup3::@3 to scrollup3::@1 [phi:scrollup3::@3->scrollup3::@1] + //SEG26 [12] phi from scrollup3::@3 to scrollup3::@1 [phi:scrollup3::@3->scrollup3::@1] b1_from_b3: - //SEG26 [12] phi (word) scrollup3::l2#0 = (word) scrollup3::line#1 [phi:scrollup3::@3->scrollup3::@1#0] -- register_copy + //SEG27 [12] phi (word) scrollup3::l2#0 = (word) scrollup3::line#1 [phi:scrollup3::@3->scrollup3::@1#0] -- register_copy jmp b1 - //SEG27 scrollup3::@1 + //SEG28 scrollup3::@1 b1: - //SEG28 [13] (word~) scrollup3::l2#4 ← (word) scrollup3::l2#0 -- vwuz1=vwuz2 + //SEG29 [13] (word~) scrollup3::l2#4 ← (word) scrollup3::l2#0 -- vwuz1=vwuz2 lda l2 sta l2_4 lda l2+1 sta l2_4+1 - //SEG29 [14] phi from scrollup3::@1 to scrollup3::@2 [phi:scrollup3::@1->scrollup3::@2] + //SEG30 [14] phi from scrollup3::@1 to scrollup3::@2 [phi:scrollup3::@1->scrollup3::@2] b2_from_b1: - //SEG30 [14] phi (byte) scrollup3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3::@1->scrollup3::@2#0] -- vbuxx=vbuc1 + //SEG31 [14] phi (byte) scrollup3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3::@1->scrollup3::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG31 [14] phi (word) scrollup3::l2#2 = (word~) scrollup3::l2#4 [phi:scrollup3::@1->scrollup3::@2#1] -- register_copy + //SEG32 [14] phi (word) scrollup3::l2#2 = (word~) scrollup3::l2#4 [phi:scrollup3::@1->scrollup3::@2#1] -- register_copy jmp b2 - //SEG32 [14] phi from scrollup3::@2 to scrollup3::@2 [phi:scrollup3::@2->scrollup3::@2] + //SEG33 [14] phi from scrollup3::@2 to scrollup3::@2 [phi:scrollup3::@2->scrollup3::@2] b2_from_b2: - //SEG33 [14] phi (byte) scrollup3::c#2 = (byte) scrollup3::c#1 [phi:scrollup3::@2->scrollup3::@2#0] -- register_copy - //SEG34 [14] phi (word) scrollup3::l2#2 = (word) scrollup3::l2#1 [phi:scrollup3::@2->scrollup3::@2#1] -- register_copy + //SEG34 [14] phi (byte) scrollup3::c#2 = (byte) scrollup3::c#1 [phi:scrollup3::@2->scrollup3::@2#0] -- register_copy + //SEG35 [14] phi (word) scrollup3::l2#2 = (word) scrollup3::l2#1 [phi:scrollup3::@2->scrollup3::@2#1] -- register_copy jmp b2 - //SEG35 scrollup3::@2 + //SEG36 scrollup3::@2 b2: - //SEG36 [15] *((const byte*) screen#0 + (word) scrollup3::l2#2) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word) scrollup3::l2#2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz1 + //SEG37 [15] *((const byte*) screen#0 + (word) scrollup3::l2#2) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word) scrollup3::l2#2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz1 lda #$28 sta line+1 - //SEG42 [20] if((word) scrollup3::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup3::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG43 [20] if((word) scrollup3::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup3::@1 -- vwuz1_lt_vwuc1_then_la1 lda line+1 cmp #>$28*$18 bcc b1_from_b3 @@ -1030,121 +1032,121 @@ scrollup3: { bcc b1_from_b3 !: jmp breturn - //SEG43 scrollup3::@return + //SEG44 scrollup3::@return breturn: - //SEG44 [21] return + //SEG45 [21] return rts } -//SEG45 scrollup2 +//SEG46 scrollup2 scrollup2: { .label line1 = 4 .label line2 = 2 .label l = 6 - //SEG46 [23] phi from scrollup2 to scrollup2::@1 [phi:scrollup2->scrollup2::@1] + //SEG47 [23] phi from scrollup2 to scrollup2::@1 [phi:scrollup2->scrollup2::@1] b1_from_scrollup2: - //SEG47 [23] phi (byte) scrollup2::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2->scrollup2::@1#0] -- vbuz1=vbuc1 + //SEG48 [23] phi (byte) scrollup2::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2->scrollup2::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG48 [23] phi (byte*) scrollup2::line1#3 = (const byte*) screen#0 [phi:scrollup2->scrollup2::@1#1] -- pbuz1=pbuc1 + //SEG49 [23] phi (byte*) scrollup2::line1#3 = (const byte*) screen#0 [phi:scrollup2->scrollup2::@1#1] -- pbuz1=pbuc1 lda #screen sta line1+1 - //SEG49 [23] phi (byte*) scrollup2::line2#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:scrollup2->scrollup2::@1#2] -- pbuz1=pbuc1 + //SEG50 [23] phi (byte*) scrollup2::line2#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:scrollup2->scrollup2::@1#2] -- pbuz1=pbuc1 lda #screen+$28 sta line2+1 jmp b1 - //SEG50 [23] phi from scrollup2::@3 to scrollup2::@1 [phi:scrollup2::@3->scrollup2::@1] + //SEG51 [23] phi from scrollup2::@3 to scrollup2::@1 [phi:scrollup2::@3->scrollup2::@1] b1_from_b3: - //SEG51 [23] phi (byte) scrollup2::l#4 = (byte) scrollup2::l#1 [phi:scrollup2::@3->scrollup2::@1#0] -- register_copy - //SEG52 [23] phi (byte*) scrollup2::line1#3 = (byte*) scrollup2::line1#1 [phi:scrollup2::@3->scrollup2::@1#1] -- register_copy - //SEG53 [23] phi (byte*) scrollup2::line2#3 = (byte*) scrollup2::line2#1 [phi:scrollup2::@3->scrollup2::@1#2] -- register_copy + //SEG52 [23] phi (byte) scrollup2::l#4 = (byte) scrollup2::l#1 [phi:scrollup2::@3->scrollup2::@1#0] -- register_copy + //SEG53 [23] phi (byte*) scrollup2::line1#3 = (byte*) scrollup2::line1#1 [phi:scrollup2::@3->scrollup2::@1#1] -- register_copy + //SEG54 [23] phi (byte*) scrollup2::line2#3 = (byte*) scrollup2::line2#1 [phi:scrollup2::@3->scrollup2::@1#2] -- register_copy jmp b1 - //SEG54 scrollup2::@1 + //SEG55 scrollup2::@1 b1: - //SEG55 [24] phi from scrollup2::@1 to scrollup2::@2 [phi:scrollup2::@1->scrollup2::@2] + //SEG56 [24] phi from scrollup2::@1 to scrollup2::@2 [phi:scrollup2::@1->scrollup2::@2] b2_from_b1: - //SEG56 [24] phi (byte) scrollup2::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2::@1->scrollup2::@2#0] -- vbuxx=vbuc1 + //SEG57 [24] phi (byte) scrollup2::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2::@1->scrollup2::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG57 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#3 [phi:scrollup2::@1->scrollup2::@2#1] -- register_copy - //SEG58 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#3 [phi:scrollup2::@1->scrollup2::@2#2] -- register_copy + //SEG58 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#3 [phi:scrollup2::@1->scrollup2::@2#1] -- register_copy + //SEG59 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#3 [phi:scrollup2::@1->scrollup2::@2#2] -- register_copy jmp b2 - //SEG59 [24] phi from scrollup2::@2 to scrollup2::@2 [phi:scrollup2::@2->scrollup2::@2] + //SEG60 [24] phi from scrollup2::@2 to scrollup2::@2 [phi:scrollup2::@2->scrollup2::@2] b2_from_b2: - //SEG60 [24] phi (byte) scrollup2::c#2 = (byte) scrollup2::c#1 [phi:scrollup2::@2->scrollup2::@2#0] -- register_copy - //SEG61 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#1 [phi:scrollup2::@2->scrollup2::@2#1] -- register_copy - //SEG62 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#1 [phi:scrollup2::@2->scrollup2::@2#2] -- register_copy + //SEG61 [24] phi (byte) scrollup2::c#2 = (byte) scrollup2::c#1 [phi:scrollup2::@2->scrollup2::@2#0] -- register_copy + //SEG62 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#1 [phi:scrollup2::@2->scrollup2::@2#1] -- register_copy + //SEG63 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#1 [phi:scrollup2::@2->scrollup2::@2#2] -- register_copy jmp b2 - //SEG63 scrollup2::@2 + //SEG64 scrollup2::@2 b2: - //SEG64 [25] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG65 [25] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (line2),y ldy #0 sta (line1),y - //SEG65 [26] (byte*) scrollup2::line1#1 ← ++ (byte*) scrollup2::line1#2 -- pbuz1=_inc_pbuz1 + //SEG66 [26] (byte*) scrollup2::line1#1 ← ++ (byte*) scrollup2::line1#2 -- pbuz1=_inc_pbuz1 inc line1 bne !+ inc line1+1 !: - //SEG66 [27] (byte*) scrollup2::line2#1 ← ++ (byte*) scrollup2::line2#2 -- pbuz1=_inc_pbuz1 + //SEG67 [27] (byte*) scrollup2::line2#1 ← ++ (byte*) scrollup2::line2#2 -- pbuz1=_inc_pbuz1 inc line2 bne !+ inc line2+1 !: - //SEG67 [28] (byte) scrollup2::c#1 ← ++ (byte) scrollup2::c#2 -- vbuxx=_inc_vbuxx + //SEG68 [28] (byte) scrollup2::c#1 ← ++ (byte) scrollup2::c#2 -- vbuxx=_inc_vbuxx inx - //SEG68 [29] if((byte) scrollup2::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto scrollup2::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG69 [29] if((byte) scrollup2::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto scrollup2::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG69 scrollup2::@3 + //SEG70 scrollup2::@3 b3: - //SEG70 [30] (byte) scrollup2::l#1 ← ++ (byte) scrollup2::l#4 -- vbuz1=_inc_vbuz1 + //SEG71 [30] (byte) scrollup2::l#1 ← ++ (byte) scrollup2::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG71 [31] if((byte) scrollup2::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG72 [31] if((byte) scrollup2::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup2::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #$18 bne b1_from_b3 jmp breturn - //SEG72 scrollup2::@return + //SEG73 scrollup2::@return breturn: - //SEG73 [32] return + //SEG74 [32] return rts } -//SEG74 scrollup1 +//SEG75 scrollup1 scrollup1: { .label _0 = 4 .label _2 = 7 .label line = 2 - //SEG75 [34] phi from scrollup1 to scrollup1::@1 [phi:scrollup1->scrollup1::@1] + //SEG76 [34] phi from scrollup1 to scrollup1::@1 [phi:scrollup1->scrollup1::@1] b1_from_scrollup1: - //SEG76 [34] phi (word) scrollup1::line#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1->scrollup1::@1#0] -- vwuz1=vbuc1 + //SEG77 [34] phi (word) scrollup1::line#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1->scrollup1::@1#0] -- vwuz1=vbuc1 lda #<0 sta line lda #>0 sta line+1 jmp b1 - //SEG77 [34] phi from scrollup1::@3 to scrollup1::@1 [phi:scrollup1::@3->scrollup1::@1] + //SEG78 [34] phi from scrollup1::@3 to scrollup1::@1 [phi:scrollup1::@3->scrollup1::@1] b1_from_b3: - //SEG78 [34] phi (word) scrollup1::line#4 = (word) scrollup1::line#1 [phi:scrollup1::@3->scrollup1::@1#0] -- register_copy + //SEG79 [34] phi (word) scrollup1::line#4 = (word) scrollup1::line#1 [phi:scrollup1::@3->scrollup1::@1#0] -- register_copy jmp b1 - //SEG79 scrollup1::@1 + //SEG80 scrollup1::@1 b1: - //SEG80 [35] phi from scrollup1::@1 to scrollup1::@2 [phi:scrollup1::@1->scrollup1::@2] + //SEG81 [35] phi from scrollup1::@1 to scrollup1::@2 [phi:scrollup1::@1->scrollup1::@2] b2_from_b1: - //SEG81 [35] phi (byte) scrollup1::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1::@1->scrollup1::@2#0] -- vbuxx=vbuc1 + //SEG82 [35] phi (byte) scrollup1::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1::@1->scrollup1::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG82 [35] phi from scrollup1::@2 to scrollup1::@2 [phi:scrollup1::@2->scrollup1::@2] + //SEG83 [35] phi from scrollup1::@2 to scrollup1::@2 [phi:scrollup1::@2->scrollup1::@2] b2_from_b2: - //SEG83 [35] phi (byte) scrollup1::c#2 = (byte) scrollup1::c#1 [phi:scrollup1::@2->scrollup1::@2#0] -- register_copy + //SEG84 [35] phi (byte) scrollup1::c#2 = (byte) scrollup1::c#1 [phi:scrollup1::@2->scrollup1::@2#0] -- register_copy jmp b2 - //SEG84 scrollup1::@2 + //SEG85 scrollup1::@2 b2: - //SEG85 [36] (word~) scrollup1::$0 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuxx + //SEG86 [36] (word~) scrollup1::$0 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -1152,7 +1154,7 @@ scrollup1: { lda #0 adc line+1 sta _0+1 - //SEG86 [37] (word~) scrollup1::$2 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuxx + //SEG87 [37] (word~) scrollup1::$2 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -1160,7 +1162,7 @@ scrollup1: { lda #0 adc line+1 sta _2+1 - //SEG87 [38] *((const byte*) screen#0 + (word~) scrollup1::$0) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) scrollup1::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 + //SEG88 [38] *((const byte*) screen#0 + (word~) scrollup1::$0) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) scrollup1::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 lda #$28 sta line+1 - //SEG92 [42] if((word) scrollup1::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup1::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG93 [42] if((word) scrollup1::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup1::@1 -- vwuz1_lt_vwuc1_then_la1 lda line+1 cmp #>$28*$18 bcc b1_from_b3 @@ -1205,9 +1207,9 @@ scrollup1: { bcc b1_from_b3 !: jmp breturn - //SEG93 scrollup1::@return + //SEG94 scrollup1::@return breturn: - //SEG94 [43] return + //SEG95 [43] return rts } @@ -1360,70 +1362,71 @@ zp ZP_WORD:7 [ scrollup1::$2 ] FINAL ASSEMBLER Score: 22197 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests different ways of scrolling up the screen +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // Tests different ways of scrolling up the screen +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @4 [phi:@begin->@4] -//SEG4 @4 -//SEG5 [2] call main -//SEG6 [4] phi from @4 to main [phi:@4->main] -//SEG7 [3] phi from @4 to @end [phi:@4->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @4 [phi:@begin->@4] +//SEG5 @4 +//SEG6 [2] call main +//SEG7 [4] phi from @4 to main [phi:@4->main] +//SEG8 [3] phi from @4 to @end [phi:@4->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call scrollup1 - //SEG11 [33] phi from main to scrollup1 [phi:main->scrollup1] + //SEG11 [5] call scrollup1 + //SEG12 [33] phi from main to scrollup1 [phi:main->scrollup1] jsr scrollup1 - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 main::@1 - //SEG14 [7] call scrollup2 - //SEG15 [22] phi from main::@1 to scrollup2 [phi:main::@1->scrollup2] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call scrollup2 + //SEG16 [22] phi from main::@1 to scrollup2 [phi:main::@1->scrollup2] jsr scrollup2 - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 main::@2 - //SEG18 [9] call scrollup3 - //SEG19 [11] phi from main::@2 to scrollup3 [phi:main::@2->scrollup3] + //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [9] call scrollup3 + //SEG20 [11] phi from main::@2 to scrollup3 [phi:main::@2->scrollup3] jsr scrollup3 - //SEG20 main::@return - //SEG21 [10] return + //SEG21 main::@return + //SEG22 [10] return rts } -//SEG22 scrollup3 +//SEG23 scrollup3 scrollup3: { .label l2 = 2 .label l2_1 = 4 .label line = 2 .label l2_2 = 4 .label l2_4 = 4 - //SEG23 [12] phi from scrollup3 to scrollup3::@1 [phi:scrollup3->scrollup3::@1] - //SEG24 [12] phi (word) scrollup3::l2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3->scrollup3::@1#0] -- vwuz1=vbuc1 + //SEG24 [12] phi from scrollup3 to scrollup3::@1 [phi:scrollup3->scrollup3::@1] + //SEG25 [12] phi (word) scrollup3::l2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3->scrollup3::@1#0] -- vwuz1=vbuc1 lda #<0 sta l2 sta l2+1 - //SEG25 [12] phi from scrollup3::@3 to scrollup3::@1 [phi:scrollup3::@3->scrollup3::@1] - //SEG26 [12] phi (word) scrollup3::l2#0 = (word) scrollup3::line#1 [phi:scrollup3::@3->scrollup3::@1#0] -- register_copy - //SEG27 scrollup3::@1 + //SEG26 [12] phi from scrollup3::@3 to scrollup3::@1 [phi:scrollup3::@3->scrollup3::@1] + //SEG27 [12] phi (word) scrollup3::l2#0 = (word) scrollup3::line#1 [phi:scrollup3::@3->scrollup3::@1#0] -- register_copy + //SEG28 scrollup3::@1 b1: - //SEG28 [13] (word~) scrollup3::l2#4 ← (word) scrollup3::l2#0 -- vwuz1=vwuz2 + //SEG29 [13] (word~) scrollup3::l2#4 ← (word) scrollup3::l2#0 -- vwuz1=vwuz2 lda l2 sta l2_4 lda l2+1 sta l2_4+1 - //SEG29 [14] phi from scrollup3::@1 to scrollup3::@2 [phi:scrollup3::@1->scrollup3::@2] - //SEG30 [14] phi (byte) scrollup3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3::@1->scrollup3::@2#0] -- vbuxx=vbuc1 + //SEG30 [14] phi from scrollup3::@1 to scrollup3::@2 [phi:scrollup3::@1->scrollup3::@2] + //SEG31 [14] phi (byte) scrollup3::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup3::@1->scrollup3::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG31 [14] phi (word) scrollup3::l2#2 = (word~) scrollup3::l2#4 [phi:scrollup3::@1->scrollup3::@2#1] -- register_copy - //SEG32 [14] phi from scrollup3::@2 to scrollup3::@2 [phi:scrollup3::@2->scrollup3::@2] - //SEG33 [14] phi (byte) scrollup3::c#2 = (byte) scrollup3::c#1 [phi:scrollup3::@2->scrollup3::@2#0] -- register_copy - //SEG34 [14] phi (word) scrollup3::l2#2 = (word) scrollup3::l2#1 [phi:scrollup3::@2->scrollup3::@2#1] -- register_copy - //SEG35 scrollup3::@2 + //SEG32 [14] phi (word) scrollup3::l2#2 = (word~) scrollup3::l2#4 [phi:scrollup3::@1->scrollup3::@2#1] -- register_copy + //SEG33 [14] phi from scrollup3::@2 to scrollup3::@2 [phi:scrollup3::@2->scrollup3::@2] + //SEG34 [14] phi (byte) scrollup3::c#2 = (byte) scrollup3::c#1 [phi:scrollup3::@2->scrollup3::@2#0] -- register_copy + //SEG35 [14] phi (word) scrollup3::l2#2 = (word) scrollup3::l2#1 [phi:scrollup3::@2->scrollup3::@2#1] -- register_copy + //SEG36 scrollup3::@2 b2: - //SEG36 [15] *((const byte*) screen#0 + (word) scrollup3::l2#2) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word) scrollup3::l2#2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz1 + //SEG37 [15] *((const byte*) screen#0 + (word) scrollup3::l2#2) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word) scrollup3::l2#2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz1 lda #$28 sta line+1 - //SEG42 [20] if((word) scrollup3::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup3::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG43 [20] if((word) scrollup3::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup3::@1 -- vwuz1_lt_vwuc1_then_la1 cmp #>$28*$18 bcc b1 bne !+ @@ -1469,98 +1472,98 @@ scrollup3: { cmp #<$28*$18 bcc b1 !: - //SEG43 scrollup3::@return - //SEG44 [21] return + //SEG44 scrollup3::@return + //SEG45 [21] return rts } -//SEG45 scrollup2 +//SEG46 scrollup2 scrollup2: { .label line1 = 4 .label line2 = 2 .label l = 6 - //SEG46 [23] phi from scrollup2 to scrollup2::@1 [phi:scrollup2->scrollup2::@1] - //SEG47 [23] phi (byte) scrollup2::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2->scrollup2::@1#0] -- vbuz1=vbuc1 + //SEG47 [23] phi from scrollup2 to scrollup2::@1 [phi:scrollup2->scrollup2::@1] + //SEG48 [23] phi (byte) scrollup2::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2->scrollup2::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG48 [23] phi (byte*) scrollup2::line1#3 = (const byte*) screen#0 [phi:scrollup2->scrollup2::@1#1] -- pbuz1=pbuc1 + //SEG49 [23] phi (byte*) scrollup2::line1#3 = (const byte*) screen#0 [phi:scrollup2->scrollup2::@1#1] -- pbuz1=pbuc1 lda #screen sta line1+1 - //SEG49 [23] phi (byte*) scrollup2::line2#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:scrollup2->scrollup2::@1#2] -- pbuz1=pbuc1 + //SEG50 [23] phi (byte*) scrollup2::line2#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:scrollup2->scrollup2::@1#2] -- pbuz1=pbuc1 lda #screen+$28 sta line2+1 - //SEG50 [23] phi from scrollup2::@3 to scrollup2::@1 [phi:scrollup2::@3->scrollup2::@1] - //SEG51 [23] phi (byte) scrollup2::l#4 = (byte) scrollup2::l#1 [phi:scrollup2::@3->scrollup2::@1#0] -- register_copy - //SEG52 [23] phi (byte*) scrollup2::line1#3 = (byte*) scrollup2::line1#1 [phi:scrollup2::@3->scrollup2::@1#1] -- register_copy - //SEG53 [23] phi (byte*) scrollup2::line2#3 = (byte*) scrollup2::line2#1 [phi:scrollup2::@3->scrollup2::@1#2] -- register_copy - //SEG54 scrollup2::@1 + //SEG51 [23] phi from scrollup2::@3 to scrollup2::@1 [phi:scrollup2::@3->scrollup2::@1] + //SEG52 [23] phi (byte) scrollup2::l#4 = (byte) scrollup2::l#1 [phi:scrollup2::@3->scrollup2::@1#0] -- register_copy + //SEG53 [23] phi (byte*) scrollup2::line1#3 = (byte*) scrollup2::line1#1 [phi:scrollup2::@3->scrollup2::@1#1] -- register_copy + //SEG54 [23] phi (byte*) scrollup2::line2#3 = (byte*) scrollup2::line2#1 [phi:scrollup2::@3->scrollup2::@1#2] -- register_copy + //SEG55 scrollup2::@1 b1: - //SEG55 [24] phi from scrollup2::@1 to scrollup2::@2 [phi:scrollup2::@1->scrollup2::@2] - //SEG56 [24] phi (byte) scrollup2::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2::@1->scrollup2::@2#0] -- vbuxx=vbuc1 + //SEG56 [24] phi from scrollup2::@1 to scrollup2::@2 [phi:scrollup2::@1->scrollup2::@2] + //SEG57 [24] phi (byte) scrollup2::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup2::@1->scrollup2::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG57 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#3 [phi:scrollup2::@1->scrollup2::@2#1] -- register_copy - //SEG58 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#3 [phi:scrollup2::@1->scrollup2::@2#2] -- register_copy - //SEG59 [24] phi from scrollup2::@2 to scrollup2::@2 [phi:scrollup2::@2->scrollup2::@2] - //SEG60 [24] phi (byte) scrollup2::c#2 = (byte) scrollup2::c#1 [phi:scrollup2::@2->scrollup2::@2#0] -- register_copy - //SEG61 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#1 [phi:scrollup2::@2->scrollup2::@2#1] -- register_copy - //SEG62 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#1 [phi:scrollup2::@2->scrollup2::@2#2] -- register_copy - //SEG63 scrollup2::@2 + //SEG58 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#3 [phi:scrollup2::@1->scrollup2::@2#1] -- register_copy + //SEG59 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#3 [phi:scrollup2::@1->scrollup2::@2#2] -- register_copy + //SEG60 [24] phi from scrollup2::@2 to scrollup2::@2 [phi:scrollup2::@2->scrollup2::@2] + //SEG61 [24] phi (byte) scrollup2::c#2 = (byte) scrollup2::c#1 [phi:scrollup2::@2->scrollup2::@2#0] -- register_copy + //SEG62 [24] phi (byte*) scrollup2::line1#2 = (byte*) scrollup2::line1#1 [phi:scrollup2::@2->scrollup2::@2#1] -- register_copy + //SEG63 [24] phi (byte*) scrollup2::line2#2 = (byte*) scrollup2::line2#1 [phi:scrollup2::@2->scrollup2::@2#2] -- register_copy + //SEG64 scrollup2::@2 b2: - //SEG64 [25] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG65 [25] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (line2),y sta (line1),y - //SEG65 [26] (byte*) scrollup2::line1#1 ← ++ (byte*) scrollup2::line1#2 -- pbuz1=_inc_pbuz1 + //SEG66 [26] (byte*) scrollup2::line1#1 ← ++ (byte*) scrollup2::line1#2 -- pbuz1=_inc_pbuz1 inc line1 bne !+ inc line1+1 !: - //SEG66 [27] (byte*) scrollup2::line2#1 ← ++ (byte*) scrollup2::line2#2 -- pbuz1=_inc_pbuz1 + //SEG67 [27] (byte*) scrollup2::line2#1 ← ++ (byte*) scrollup2::line2#2 -- pbuz1=_inc_pbuz1 inc line2 bne !+ inc line2+1 !: - //SEG67 [28] (byte) scrollup2::c#1 ← ++ (byte) scrollup2::c#2 -- vbuxx=_inc_vbuxx + //SEG68 [28] (byte) scrollup2::c#1 ← ++ (byte) scrollup2::c#2 -- vbuxx=_inc_vbuxx inx - //SEG68 [29] if((byte) scrollup2::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto scrollup2::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG69 [29] if((byte) scrollup2::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto scrollup2::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG69 scrollup2::@3 - //SEG70 [30] (byte) scrollup2::l#1 ← ++ (byte) scrollup2::l#4 -- vbuz1=_inc_vbuz1 + //SEG70 scrollup2::@3 + //SEG71 [30] (byte) scrollup2::l#1 ← ++ (byte) scrollup2::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG71 [31] if((byte) scrollup2::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG72 [31] if((byte) scrollup2::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup2::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #$18 bne b1 - //SEG72 scrollup2::@return - //SEG73 [32] return + //SEG73 scrollup2::@return + //SEG74 [32] return rts } -//SEG74 scrollup1 +//SEG75 scrollup1 scrollup1: { .label _0 = 4 .label _2 = 7 .label line = 2 - //SEG75 [34] phi from scrollup1 to scrollup1::@1 [phi:scrollup1->scrollup1::@1] - //SEG76 [34] phi (word) scrollup1::line#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1->scrollup1::@1#0] -- vwuz1=vbuc1 + //SEG76 [34] phi from scrollup1 to scrollup1::@1 [phi:scrollup1->scrollup1::@1] + //SEG77 [34] phi (word) scrollup1::line#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1->scrollup1::@1#0] -- vwuz1=vbuc1 lda #<0 sta line sta line+1 - //SEG77 [34] phi from scrollup1::@3 to scrollup1::@1 [phi:scrollup1::@3->scrollup1::@1] - //SEG78 [34] phi (word) scrollup1::line#4 = (word) scrollup1::line#1 [phi:scrollup1::@3->scrollup1::@1#0] -- register_copy - //SEG79 scrollup1::@1 + //SEG78 [34] phi from scrollup1::@3 to scrollup1::@1 [phi:scrollup1::@3->scrollup1::@1] + //SEG79 [34] phi (word) scrollup1::line#4 = (word) scrollup1::line#1 [phi:scrollup1::@3->scrollup1::@1#0] -- register_copy + //SEG80 scrollup1::@1 b1: - //SEG80 [35] phi from scrollup1::@1 to scrollup1::@2 [phi:scrollup1::@1->scrollup1::@2] - //SEG81 [35] phi (byte) scrollup1::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1::@1->scrollup1::@2#0] -- vbuxx=vbuc1 + //SEG81 [35] phi from scrollup1::@1 to scrollup1::@2 [phi:scrollup1::@1->scrollup1::@2] + //SEG82 [35] phi (byte) scrollup1::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:scrollup1::@1->scrollup1::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG82 [35] phi from scrollup1::@2 to scrollup1::@2 [phi:scrollup1::@2->scrollup1::@2] - //SEG83 [35] phi (byte) scrollup1::c#2 = (byte) scrollup1::c#1 [phi:scrollup1::@2->scrollup1::@2#0] -- register_copy - //SEG84 scrollup1::@2 + //SEG83 [35] phi from scrollup1::@2 to scrollup1::@2 [phi:scrollup1::@2->scrollup1::@2] + //SEG84 [35] phi (byte) scrollup1::c#2 = (byte) scrollup1::c#1 [phi:scrollup1::@2->scrollup1::@2#0] -- register_copy + //SEG85 scrollup1::@2 b2: - //SEG85 [36] (word~) scrollup1::$0 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuxx + //SEG86 [36] (word~) scrollup1::$0 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -1568,7 +1571,7 @@ scrollup1: { lda #0 adc line+1 sta _0+1 - //SEG86 [37] (word~) scrollup1::$2 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuxx + //SEG87 [37] (word~) scrollup1::$2 ← (word) scrollup1::line#4 + (byte) scrollup1::c#2 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -1576,7 +1579,7 @@ scrollup1: { lda #0 adc line+1 sta _2+1 - //SEG87 [38] *((const byte*) screen#0 + (word~) scrollup1::$0) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) scrollup1::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 + //SEG88 [38] *((const byte*) screen#0 + (word~) scrollup1::$0) ← *((const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) scrollup1::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 lda #$28 sta line+1 - //SEG92 [42] if((word) scrollup1::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup1::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG93 [42] if((word) scrollup1::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto scrollup1::@1 -- vwuz1_lt_vwuc1_then_la1 cmp #>$28*$18 bcc b1 bne !+ @@ -1617,8 +1620,8 @@ scrollup1: { cmp #<$28*$18 bcc b1 !: - //SEG93 scrollup1::@return - //SEG94 [43] return + //SEG94 scrollup1::@return + //SEG95 [43] return rts } diff --git a/src/test/ref/test-word-size-arrays.log b/src/test/ref/test-word-size-arrays.log index 9952e1bc3..8f4e26451 100644 --- a/src/test/ref/test-word-size-arrays.log +++ b/src/test/ref/test-word-size-arrays.log @@ -244,28 +244,29 @@ Allocated zp ZP_WORD:8 [ main::$2 ] Allocated zp ZP_WORD:10 [ main::$6 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label screen = $400 .label _0 = 6 @@ -275,33 +276,33 @@ main: { .label line = 2 .label c_3 = 5 .label c_5 = 5 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (word) main::line#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG12 [5] phi (word) main::line#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 lda #<0 sta line lda #>0 sta line+1 jmp b1 - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG13 [5] phi (word) main::line#5 = (word) main::line#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG14 [5] phi (word) main::line#5 = (word) main::line#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta c jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG18 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] (word~) main::$0 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuz3 + //SEG21 [7] (word~) main::$0 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuz3 lda c clc adc line @@ -309,7 +310,7 @@ main: { lda #0 adc line+1 sta _0+1 - //SEG21 [8] (word~) main::$2 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuz3 + //SEG22 [8] (word~) main::$2 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuz3 lda c clc adc line @@ -317,7 +318,7 @@ main: { lda #0 adc line+1 sta _2+1 - //SEG22 [9] *((const byte*) main::screen#0 + (word~) main::$0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) main::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 + //SEG23 [9] *((const byte*) main::screen#0 + (word~) main::$0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) main::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 lda #$28 sta line+1 - //SEG27 [13] if((word) main::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto main::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG28 [13] if((word) main::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto main::@1 -- vwuz1_lt_vwuc1_then_la1 lda line+1 cmp #>$28*$18 bcc b1_from_b4 @@ -362,19 +363,19 @@ main: { cmp #<$28*$18 bcc b1_from_b4 !: - //SEG28 [14] phi from main::@4 to main::@3 [phi:main::@4->main::@3] + //SEG29 [14] phi from main::@4 to main::@3 [phi:main::@4->main::@3] b3_from_b4: - //SEG29 [14] phi (byte) main::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@3#0] -- vbuz1=vbuc1 + //SEG30 [14] phi (byte) main::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@3#0] -- vbuz1=vbuc1 lda #0 sta c_5 jmp b3 - //SEG30 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG31 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: - //SEG31 [14] phi (byte) main::c#5 = (byte) main::c#3 [phi:main::@3->main::@3#0] -- register_copy + //SEG32 [14] phi (byte) main::c#5 = (byte) main::c#3 [phi:main::@3->main::@3#0] -- register_copy jmp b3 - //SEG32 main::@3 + //SEG33 main::@3 b3: - //SEG33 [15] (word~) main::$6 ← (word) main::line#1 + (byte) main::c#5 -- vwuz1=vwuz2_plus_vbuz3 + //SEG34 [15] (word~) main::$6 ← (word) main::line#1 + (byte) main::c#5 -- vwuz1=vwuz2_plus_vbuz3 lda c_5 clc adc line @@ -382,7 +383,7 @@ main: { lda #0 adc line+1 sta _6+1 - //SEG34 [16] *((const byte*) main::screen#0 + (word~) main::$6) ← (byte) ' ' -- pbuc1_derefidx_vwuz1=vbuc2 + //SEG35 [16] *((const byte*) main::screen#0 + (word~) main::$6) ← (byte) ' ' -- pbuc1_derefidx_vwuz1=vbuc2 lda #@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label screen = $400 .label _0 = 4 .label _2 = 6 .label _6 = 4 .label line = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (word) main::line#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG12 [5] phi (word) main::line#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 lda #<0 sta line lda #>0 sta line+1 jmp b1 - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG13 [5] phi (word) main::line#5 = (word) main::line#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG14 [5] phi (word) main::line#5 = (word) main::line#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG17 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG18 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] (word~) main::$0 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuxx + //SEG21 [7] (word~) main::$0 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -502,7 +504,7 @@ main: { lda #0 adc line+1 sta _0+1 - //SEG21 [8] (word~) main::$2 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuxx + //SEG22 [8] (word~) main::$2 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -510,7 +512,7 @@ main: { lda #0 adc line+1 sta _2+1 - //SEG22 [9] *((const byte*) main::screen#0 + (word~) main::$0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) main::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 + //SEG23 [9] *((const byte*) main::screen#0 + (word~) main::$0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) main::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 lda #$28 sta line+1 - //SEG27 [13] if((word) main::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto main::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG28 [13] if((word) main::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto main::@1 -- vwuz1_lt_vwuc1_then_la1 lda line+1 cmp #>$28*$18 bcc b1_from_b4 @@ -554,18 +556,18 @@ main: { cmp #<$28*$18 bcc b1_from_b4 !: - //SEG28 [14] phi from main::@4 to main::@3 [phi:main::@4->main::@3] + //SEG29 [14] phi from main::@4 to main::@3 [phi:main::@4->main::@3] b3_from_b4: - //SEG29 [14] phi (byte) main::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@3#0] -- vbuxx=vbuc1 + //SEG30 [14] phi (byte) main::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG30 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG31 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: - //SEG31 [14] phi (byte) main::c#5 = (byte) main::c#3 [phi:main::@3->main::@3#0] -- register_copy + //SEG32 [14] phi (byte) main::c#5 = (byte) main::c#3 [phi:main::@3->main::@3#0] -- register_copy jmp b3 - //SEG32 main::@3 + //SEG33 main::@3 b3: - //SEG33 [15] (word~) main::$6 ← (word) main::line#1 + (byte) main::c#5 -- vwuz1=vwuz2_plus_vbuxx + //SEG34 [15] (word~) main::$6 ← (word) main::line#1 + (byte) main::c#5 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -573,7 +575,7 @@ main: { lda #0 adc line+1 sta _6+1 - //SEG34 [16] *((const byte*) main::screen#0 + (word~) main::$6) ← (byte) ' ' -- pbuc1_derefidx_vwuz1=vbuc2 + //SEG35 [16] *((const byte*) main::screen#0 + (word~) main::$6) ← (byte) ' ' -- pbuc1_derefidx_vwuz1=vbuc2 lda #@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label screen = $400 .label _0 = 4 .label _2 = 6 .label _6 = 4 .label line = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (word) main::line#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (word) main::line#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 lda #<0 sta line sta line+1 - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] - //SEG13 [5] phi (word) main::line#5 = (word) main::line#1 [phi:main::@4->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG14 [5] phi (word) main::line#5 = (word) main::line#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [6] phi (byte) main::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] - //SEG18 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@2->main::@2#0] -- register_copy - //SEG19 main::@2 + //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG19 [6] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG20 main::@2 b2: - //SEG20 [7] (word~) main::$0 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuxx + //SEG21 [7] (word~) main::$0 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -714,7 +717,7 @@ main: { lda #0 adc line+1 sta _0+1 - //SEG21 [8] (word~) main::$2 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuxx + //SEG22 [8] (word~) main::$2 ← (word) main::line#5 + (byte) main::c#4 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -722,7 +725,7 @@ main: { lda #0 adc line+1 sta _2+1 - //SEG22 [9] *((const byte*) main::screen#0 + (word~) main::$0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) main::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 + //SEG23 [9] *((const byte*) main::screen#0 + (word~) main::$0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 + (word~) main::$2) -- pbuc1_derefidx_vwuz1=pbuc2_derefidx_vwuz2 lda #$28 sta line+1 - //SEG27 [13] if((word) main::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto main::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG28 [13] if((word) main::line#1<(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24) goto main::@1 -- vwuz1_lt_vwuc1_then_la1 cmp #>$28*$18 bcc b1 bne !+ @@ -763,14 +766,14 @@ main: { cmp #<$28*$18 bcc b1 !: - //SEG28 [14] phi from main::@4 to main::@3 [phi:main::@4->main::@3] - //SEG29 [14] phi (byte) main::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@3#0] -- vbuxx=vbuc1 + //SEG29 [14] phi from main::@4 to main::@3 [phi:main::@4->main::@3] + //SEG30 [14] phi (byte) main::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@4->main::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG30 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] - //SEG31 [14] phi (byte) main::c#5 = (byte) main::c#3 [phi:main::@3->main::@3#0] -- register_copy - //SEG32 main::@3 + //SEG31 [14] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG32 [14] phi (byte) main::c#5 = (byte) main::c#3 [phi:main::@3->main::@3#0] -- register_copy + //SEG33 main::@3 b3: - //SEG33 [15] (word~) main::$6 ← (word) main::line#1 + (byte) main::c#5 -- vwuz1=vwuz2_plus_vbuxx + //SEG34 [15] (word~) main::$6 ← (word) main::line#1 + (byte) main::c#5 -- vwuz1=vwuz2_plus_vbuxx txa clc adc line @@ -778,7 +781,7 @@ main: { lda #0 adc line+1 sta _6+1 - //SEG34 [16] *((const byte*) main::screen#0 + (word~) main::$6) ← (byte) ' ' -- pbuc1_derefidx_vwuz1=vbuc2 + //SEG35 [16] *((const byte*) main::screen#0 + (word~) main::$6) ← (byte) ' ' -- pbuc1_derefidx_vwuz1=vbuc2 lda #@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .const b = 4 .label pos = $501 .label bgcol = $d021 .const w = b*$100 .const w2 = 1*$100+1+w+0 - //SEG9 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 + //SEG10 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 lda bs+1 sta w2 - //SEG10 [5] if(*((const byte*) main::pos#0)==(byte) 'm') goto main::@1 -- _deref_pbuc1_eq_vbuc2_then_la1 + //SEG11 [5] if(*((const byte*) main::pos#0)==(byte) 'm') goto main::@1 -- _deref_pbuc1_eq_vbuc2_then_la1 lda pos cmp #'m' beq b1 jmp b3 - //SEG11 main::@3 + //SEG12 main::@3 b3: - //SEG12 [6] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta bgcol jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [7] return + //SEG15 [7] return rts - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [8] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG17 [8] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta bgcol jmp breturn @@ -222,53 +223,54 @@ Uplifting [main] best 55 combination Uplifting [] best 55 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .const b = 4 .label pos = $501 .label bgcol = $d021 .const w = b*$100 .const w2 = 1*$100+1+w+0 - //SEG9 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 + //SEG10 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 lda bs+1 sta w2 - //SEG10 [5] if(*((const byte*) main::pos#0)==(byte) 'm') goto main::@1 -- _deref_pbuc1_eq_vbuc2_then_la1 + //SEG11 [5] if(*((const byte*) main::pos#0)==(byte) 'm') goto main::@1 -- _deref_pbuc1_eq_vbuc2_then_la1 lda pos cmp #'m' beq b1 jmp b3 - //SEG11 main::@3 + //SEG12 main::@3 b3: - //SEG12 [6] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG13 [6] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta bgcol jmp breturn - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [7] return + //SEG15 [7] return rts - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [8] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG17 [8] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta bgcol jmp breturn @@ -321,42 +323,43 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 37 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .const b = 4 .label pos = $501 .label bgcol = $d021 .const w = b*$100 .const w2 = 1*$100+1+w+0 - //SEG9 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 + //SEG10 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2 lda bs+1 sta w2 - //SEG10 [5] if(*((const byte*) main::pos#0)==(byte) 'm') goto main::@1 -- _deref_pbuc1_eq_vbuc2_then_la1 + //SEG11 [5] if(*((const byte*) main::pos#0)==(byte) 'm') goto main::@1 -- _deref_pbuc1_eq_vbuc2_then_la1 lda pos cmp #'m' beq b1 - //SEG11 main::@3 - //SEG12 [6] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG12 main::@3 + //SEG13 [6] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta bgcol - //SEG13 main::@return + //SEG14 main::@return breturn: - //SEG14 [7] return + //SEG15 [7] return rts - //SEG15 main::@1 + //SEG16 main::@1 b1: - //SEG16 [8] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG17 [8] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta bgcol jmp breturn diff --git a/src/test/ref/typeinference-problem.asm b/src/test/ref/typeinference-problem.asm index a275e4fde..1dc5bf4af 100644 --- a/src/test/ref/typeinference-problem.asm +++ b/src/test/ref/typeinference-problem.asm @@ -1,3 +1,4 @@ +// java.lang.NullPointerException during Pass2TypeInference.java .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" @@ -17,5 +18,4 @@ main: { bne b1 rts } - // java.lang.NullPointerException during Pass2TypeInference.java table: .fill $100, 0 diff --git a/src/test/ref/typeinference-problem.log b/src/test/ref/typeinference-problem.log index c6a12d075..0b3f96ff6 100644 --- a/src/test/ref/typeinference-problem.log +++ b/src/test/ref/typeinference-problem.log @@ -113,66 +113,67 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::$0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// java.lang.NullPointerException during Pass2TypeInference.java +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/2) and g(x) = f(1-x) main: { .label _0 = 3 .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte/word/signed word/dword/signed dword~) main::$0 ← (byte/word/signed word/dword/signed dword) 255 - (byte) main::i#2 -- vbuz1=vbuc1_minus_vbuz2 + //SEG16 [6] (byte/word/signed word/dword/signed dword~) main::$0 ← (byte/word/signed word/dword/signed dword) 255 - (byte) main::i#2 -- vbuz1=vbuc1_minus_vbuz2 lda #$ff sec sbc i sta _0 - //SEG16 [7] *((const byte[256]) table#0 + (byte/word/signed word/dword/signed dword~) main::$0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG17 [7] *((const byte[256]) table#0 + (byte/word/signed word/dword/signed dword~) main::$0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy _0 lda #0 sta table,y - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG18 [9] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 129) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 129) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$81 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } - // java.lang.NullPointerException during Pass2TypeInference.java table: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS @@ -192,62 +193,63 @@ Uplifting [main] best 363 combination reg byte x [ main::i#2 main::i#1 ] reg byt Uplifting [] best 363 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// java.lang.NullPointerException during Pass2TypeInference.java +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/2) and g(x) = f(1-x) main: { - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 jmp b1 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte/word/signed word/dword/signed dword~) main::$0 ← (byte/word/signed word/dword/signed dword) 255 - (byte) main::i#2 -- vbuaa=vbuc1_minus_vbuxx + //SEG16 [6] (byte/word/signed word/dword/signed dword~) main::$0 ← (byte/word/signed word/dword/signed dword) 255 - (byte) main::i#2 -- vbuaa=vbuc1_minus_vbuxx txa eor #$ff clc adc #$ff+1 - //SEG16 [7] *((const byte[256]) table#0 + (byte/word/signed word/dword/signed dword~) main::$0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuaa=vbuc2 + //SEG17 [7] *((const byte[256]) table#0 + (byte/word/signed word/dword/signed dword~) main::$0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuaa=vbuc2 tay lda #0 sta table,y - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 129) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 129) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$81 bne b1_from_b1 jmp breturn - //SEG19 main::@return + //SEG20 main::@return breturn: - //SEG20 [10] return + //SEG21 [10] return rts } - // java.lang.NullPointerException during Pass2TypeInference.java table: .fill $100, 0 ASSEMBLER OPTIMIZATIONS @@ -296,46 +298,47 @@ reg byte a [ main::$0 ] FINAL ASSEMBLER Score: 261 -//SEG0 Basic Upstart +//SEG0 File Comments +// java.lang.NullPointerException during Pass2TypeInference.java +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/2) and g(x) = f(1-x) 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) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte/word/signed word/dword/signed dword~) main::$0 ← (byte/word/signed word/dword/signed dword) 255 - (byte) main::i#2 -- vbuaa=vbuc1_minus_vbuxx + //SEG16 [6] (byte/word/signed word/dword/signed dword~) main::$0 ← (byte/word/signed word/dword/signed dword) 255 - (byte) main::i#2 -- vbuaa=vbuc1_minus_vbuxx txa eor #$ff clc adc #$ff+1 - //SEG16 [7] *((const byte[256]) table#0 + (byte/word/signed word/dword/signed dword~) main::$0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuaa=vbuc2 + //SEG17 [7] *((const byte[256]) table#0 + (byte/word/signed word/dword/signed dword~) main::$0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuaa=vbuc2 tay lda #0 sta table,y - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [9] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 129) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/word/signed word/dword/signed dword) 129) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$81 bne b1 - //SEG19 main::@return - //SEG20 [10] return + //SEG20 main::@return + //SEG21 [10] return rts } - // java.lang.NullPointerException during Pass2TypeInference.java table: .fill $100, 0 diff --git a/src/test/ref/unroll-loop-modifyvar.asm b/src/test/ref/unroll-loop-modifyvar.asm index 94baac5de..fcd624881 100644 --- a/src/test/ref/unroll-loop-modifyvar.asm +++ b/src/test/ref/unroll-loop-modifyvar.asm @@ -1,7 +1,7 @@ +// An unrolled loop modifying a var used later .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// An unrolled loop modifying a var used later main: { .label SCREEN = $400 lda #3 diff --git a/src/test/ref/unroll-loop-modifyvar.log b/src/test/ref/unroll-loop-modifyvar.log index cab087f67..5ea169ef6 100644 --- a/src/test/ref/unroll-loop-modifyvar.log +++ b/src/test/ref/unroll-loop-modifyvar.log @@ -360,107 +360,108 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// An unrolled loop modifying a var used later +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// An unrolled loop modifying a var used later +//SEG10 main main: { .label SCREEN = $400 jmp b1 - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+3 jmp b1_1 - //SEG12 main::@1_1 + //SEG13 main::@1_1 b1_1: - //SEG13 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+4 jmp b1_2 - //SEG14 main::@1_2 + //SEG15 main::@1_2 b1_2: - //SEG15 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+5 jmp b1_3 - //SEG16 main::@1_3 + //SEG17 main::@1_3 b1_3: - //SEG17 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG18 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+6 jmp b1_4 - //SEG18 main::@1_4 + //SEG19 main::@1_4 b1_4: - //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG20 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+7 jmp b1_5 - //SEG20 main::@1_5 + //SEG21 main::@1_5 b1_5: - //SEG21 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG22 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+8 jmp b1_6 - //SEG22 main::@1_6 + //SEG23 main::@1_6 b1_6: - //SEG23 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG24 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+9 jmp b1_7 - //SEG24 main::@1_7 + //SEG25 main::@1_7 b1_7: - //SEG25 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG26 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+$a jmp b1_8 - //SEG26 main::@1_8 + //SEG27 main::@1_8 b1_8: - //SEG27 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 + //SEG28 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 lda #$b sta SCREEN+$b jmp b1_9 - //SEG28 main::@1_9 + //SEG29 main::@1_9 b1_9: - //SEG29 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12) ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- _deref_pbuc1=vbuc2 + //SEG30 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12) ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- _deref_pbuc1=vbuc2 lda #$c sta SCREEN+$c jmp b1_10 - //SEG30 main::@1_10 + //SEG31 main::@1_10 b1_10: - //SEG31 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13) ← (byte/signed byte/word/signed word/dword/signed dword) 13 -- _deref_pbuc1=vbuc2 + //SEG32 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13) ← (byte/signed byte/word/signed word/dword/signed dword) 13 -- _deref_pbuc1=vbuc2 lda #$d sta SCREEN+$d jmp b2 - //SEG32 main::@2 + //SEG33 main::@2 b2: - //SEG33 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14) ← (byte/signed byte/word/signed word/dword/signed dword) 14 -- _deref_pbuc1=vbuc2 + //SEG34 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14) ← (byte/signed byte/word/signed word/dword/signed dword) 14 -- _deref_pbuc1=vbuc2 lda #$e sta SCREEN+$e jmp breturn - //SEG34 main::@return + //SEG35 main::@return breturn: - //SEG35 [17] return + //SEG36 [17] return rts } @@ -486,107 +487,108 @@ Uplifting [main] best 156 combination Uplifting [] best 156 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// An unrolled loop modifying a var used later +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// An unrolled loop modifying a var used later +//SEG10 main main: { .label SCREEN = $400 jmp b1 - //SEG10 main::@1 + //SEG11 main::@1 b1: - //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+3 jmp b1_1 - //SEG12 main::@1_1 + //SEG13 main::@1_1 b1_1: - //SEG13 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+4 jmp b1_2 - //SEG14 main::@1_2 + //SEG15 main::@1_2 b1_2: - //SEG15 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+5 jmp b1_3 - //SEG16 main::@1_3 + //SEG17 main::@1_3 b1_3: - //SEG17 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG18 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+6 jmp b1_4 - //SEG18 main::@1_4 + //SEG19 main::@1_4 b1_4: - //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG20 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+7 jmp b1_5 - //SEG20 main::@1_5 + //SEG21 main::@1_5 b1_5: - //SEG21 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG22 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+8 jmp b1_6 - //SEG22 main::@1_6 + //SEG23 main::@1_6 b1_6: - //SEG23 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG24 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+9 jmp b1_7 - //SEG24 main::@1_7 + //SEG25 main::@1_7 b1_7: - //SEG25 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG26 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+$a jmp b1_8 - //SEG26 main::@1_8 + //SEG27 main::@1_8 b1_8: - //SEG27 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 + //SEG28 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 lda #$b sta SCREEN+$b jmp b1_9 - //SEG28 main::@1_9 + //SEG29 main::@1_9 b1_9: - //SEG29 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12) ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- _deref_pbuc1=vbuc2 + //SEG30 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12) ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- _deref_pbuc1=vbuc2 lda #$c sta SCREEN+$c jmp b1_10 - //SEG30 main::@1_10 + //SEG31 main::@1_10 b1_10: - //SEG31 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13) ← (byte/signed byte/word/signed word/dword/signed dword) 13 -- _deref_pbuc1=vbuc2 + //SEG32 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13) ← (byte/signed byte/word/signed word/dword/signed dword) 13 -- _deref_pbuc1=vbuc2 lda #$d sta SCREEN+$d jmp b2 - //SEG32 main::@2 + //SEG33 main::@2 b2: - //SEG33 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14) ← (byte/signed byte/word/signed word/dword/signed dword) 14 -- _deref_pbuc1=vbuc2 + //SEG34 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14) ← (byte/signed byte/word/signed word/dword/signed dword) 14 -- _deref_pbuc1=vbuc2 lda #$e sta SCREEN+$e jmp breturn - //SEG34 main::@return + //SEG35 main::@return breturn: - //SEG35 [17] return + //SEG36 [17] return rts } @@ -660,72 +662,73 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 78 -//SEG0 Basic Upstart +//SEG0 File Comments +// An unrolled loop modifying a var used later +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// An unrolled loop modifying a var used later +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 - //SEG10 main::@1 - //SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG11 main::@1 + //SEG12 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+3 - //SEG12 main::@1_1 - //SEG13 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG13 main::@1_1 + //SEG14 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+4 - //SEG14 main::@1_2 - //SEG15 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG15 main::@1_2 + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+5 - //SEG16 main::@1_3 - //SEG17 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG17 main::@1_3 + //SEG18 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+6 - //SEG18 main::@1_4 - //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG19 main::@1_4 + //SEG20 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+7 - //SEG20 main::@1_5 - //SEG21 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG21 main::@1_5 + //SEG22 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+8 - //SEG22 main::@1_6 - //SEG23 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG23 main::@1_6 + //SEG24 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+9 - //SEG24 main::@1_7 - //SEG25 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG25 main::@1_7 + //SEG26 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+$a - //SEG26 main::@1_8 - //SEG27 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 + //SEG27 main::@1_8 + //SEG28 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11) ← (byte/signed byte/word/signed word/dword/signed dword) 11 -- _deref_pbuc1=vbuc2 lda #$b sta SCREEN+$b - //SEG28 main::@1_9 - //SEG29 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12) ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- _deref_pbuc1=vbuc2 + //SEG29 main::@1_9 + //SEG30 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12) ← (byte/signed byte/word/signed word/dword/signed dword) 12 -- _deref_pbuc1=vbuc2 lda #$c sta SCREEN+$c - //SEG30 main::@1_10 - //SEG31 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13) ← (byte/signed byte/word/signed word/dword/signed dword) 13 -- _deref_pbuc1=vbuc2 + //SEG31 main::@1_10 + //SEG32 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13) ← (byte/signed byte/word/signed word/dword/signed dword) 13 -- _deref_pbuc1=vbuc2 lda #$d sta SCREEN+$d - //SEG32 main::@2 - //SEG33 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14) ← (byte/signed byte/word/signed word/dword/signed dword) 14 -- _deref_pbuc1=vbuc2 + //SEG33 main::@2 + //SEG34 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14) ← (byte/signed byte/word/signed word/dword/signed dword) 14 -- _deref_pbuc1=vbuc2 lda #$e sta SCREEN+$e - //SEG34 main::@return - //SEG35 [17] return + //SEG35 main::@return + //SEG36 [17] return rts } diff --git a/src/test/ref/unroll-screenfill-for-double.asm b/src/test/ref/unroll-screenfill-for-double.asm index 3e2f35b4e..8940c2158 100644 --- a/src/test/ref/unroll-screenfill-for-double.asm +++ b/src/test/ref/unroll-screenfill-for-double.asm @@ -1,7 +1,7 @@ +// Fills the screen using two unrolled ranged for()-loops .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Fills the screen using two unrolled ranged for()-loops main: { .label SCREEN = $400 lda #0 diff --git a/src/test/ref/unroll-screenfill-for-double.log b/src/test/ref/unroll-screenfill-for-double.log index 9b2094daa..e6ea0aac1 100644 --- a/src/test/ref/unroll-screenfill-for-double.log +++ b/src/test/ref/unroll-screenfill-for-double.log @@ -1240,761 +1240,762 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using two unrolled ranged for()-loops +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Fills the screen using two unrolled ranged for()-loops +//SEG10 main main: { .label SCREEN = $400 jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) main::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN jmp b2_1 - //SEG12 main::@2_1 + //SEG13 main::@2_1 b2_1: - //SEG13 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+1*$28 jmp b2_2 - //SEG14 main::@2_2 + //SEG15 main::@2_2 b2_2: - //SEG15 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+2*$28 jmp b2_3 - //SEG16 main::@2_3 + //SEG17 main::@2_3 b2_3: - //SEG17 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG18 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+3*$28 jmp b2_4 - //SEG18 main::@2_4 + //SEG19 main::@2_4 b2_4: - //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG20 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+4*$28 jmp b2_5 - //SEG20 main::@2_5 + //SEG21 main::@2_5 b2_5: - //SEG21 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+5*$28 jmp b2_6 - //SEG22 main::@2_6 + //SEG23 main::@2_6 b2_6: - //SEG23 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+6*$28 jmp b2_7 - //SEG24 main::@2_7 + //SEG25 main::@2_7 b2_7: - //SEG25 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG26 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+7*$28 jmp b2_8 - //SEG26 main::@2_8 + //SEG27 main::@2_8 b2_8: - //SEG27 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG28 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+8*$28 jmp b2_9 - //SEG28 main::@2_9 + //SEG29 main::@2_9 b2_9: - //SEG29 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+9*$28 jmp b2_10 - //SEG30 main::@2_10 + //SEG31 main::@2_10 b2_10: - //SEG31 [15] *((const byte*) main::SCREEN#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) 0 -- _deref_pbuc1=vbuc2 + //SEG32 [15] *((const byte*) main::SCREEN#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) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+$a*$28 jmp b2_11 - //SEG32 main::@2_11 + //SEG33 main::@2_11 b2_11: - //SEG33 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG34 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+1 jmp b2_12 - //SEG34 main::@2_12 + //SEG35 main::@2_12 b2_12: - //SEG35 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG36 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+1*$28+1 jmp b2_13 - //SEG36 main::@2_13 + //SEG37 main::@2_13 b2_13: - //SEG37 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG38 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+2*$28+1 jmp b2_14 - //SEG38 main::@2_14 + //SEG39 main::@2_14 b2_14: - //SEG39 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG40 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+3*$28+1 jmp b2_15 - //SEG40 main::@2_15 + //SEG41 main::@2_15 b2_15: - //SEG41 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG42 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+4*$28+1 jmp b2_16 - //SEG42 main::@2_16 + //SEG43 main::@2_16 b2_16: - //SEG43 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG44 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+5*$28+1 jmp b2_17 - //SEG44 main::@2_17 + //SEG45 main::@2_17 b2_17: - //SEG45 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG46 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+6*$28+1 jmp b2_18 - //SEG46 main::@2_18 + //SEG47 main::@2_18 b2_18: - //SEG47 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG48 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+7*$28+1 jmp b2_19 - //SEG48 main::@2_19 + //SEG49 main::@2_19 b2_19: - //SEG49 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG50 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+8*$28+1 jmp b2_20 - //SEG50 main::@2_20 + //SEG51 main::@2_20 b2_20: - //SEG51 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG52 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+9*$28+1 jmp b2_21 - //SEG52 main::@2_21 + //SEG53 main::@2_21 b2_21: - //SEG53 [26] *((const byte*) main::SCREEN#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) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG54 [26] *((const byte*) main::SCREEN#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) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+$a*$28+1 jmp b2_22 - //SEG54 main::@2_22 + //SEG55 main::@2_22 b2_22: - //SEG55 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG56 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+2 jmp b2_23 - //SEG56 main::@2_23 + //SEG57 main::@2_23 b2_23: - //SEG57 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG58 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+1*$28+2 jmp b2_24 - //SEG58 main::@2_24 + //SEG59 main::@2_24 b2_24: - //SEG59 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG60 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+2*$28+2 jmp b2_25 - //SEG60 main::@2_25 + //SEG61 main::@2_25 b2_25: - //SEG61 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG62 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+3*$28+2 jmp b2_26 - //SEG62 main::@2_26 + //SEG63 main::@2_26 b2_26: - //SEG63 [31] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG64 [31] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+4*$28+2 jmp b2_27 - //SEG64 main::@2_27 + //SEG65 main::@2_27 b2_27: - //SEG65 [32] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG66 [32] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+5*$28+2 jmp b2_28 - //SEG66 main::@2_28 + //SEG67 main::@2_28 b2_28: - //SEG67 [33] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG68 [33] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+6*$28+2 jmp b2_29 - //SEG68 main::@2_29 + //SEG69 main::@2_29 b2_29: - //SEG69 [34] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG70 [34] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+7*$28+2 jmp b2_30 - //SEG70 main::@2_30 + //SEG71 main::@2_30 b2_30: - //SEG71 [35] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG72 [35] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+8*$28+2 jmp b2_31 - //SEG72 main::@2_31 + //SEG73 main::@2_31 b2_31: - //SEG73 [36] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG74 [36] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+9*$28+2 jmp b2_32 - //SEG74 main::@2_32 + //SEG75 main::@2_32 b2_32: - //SEG75 [37] *((const byte*) main::SCREEN#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) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG76 [37] *((const byte*) main::SCREEN#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) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+$a*$28+2 jmp b2_33 - //SEG76 main::@2_33 + //SEG77 main::@2_33 b2_33: - //SEG77 [38] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG78 [38] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+3 jmp b2_34 - //SEG78 main::@2_34 + //SEG79 main::@2_34 b2_34: - //SEG79 [39] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG80 [39] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+1*$28+3 jmp b2_35 - //SEG80 main::@2_35 + //SEG81 main::@2_35 b2_35: - //SEG81 [40] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG82 [40] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+2*$28+3 jmp b2_36 - //SEG82 main::@2_36 + //SEG83 main::@2_36 b2_36: - //SEG83 [41] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG84 [41] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+3*$28+3 jmp b2_37 - //SEG84 main::@2_37 + //SEG85 main::@2_37 b2_37: - //SEG85 [42] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG86 [42] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+4*$28+3 jmp b2_38 - //SEG86 main::@2_38 + //SEG87 main::@2_38 b2_38: - //SEG87 [43] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG88 [43] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+5*$28+3 jmp b2_39 - //SEG88 main::@2_39 + //SEG89 main::@2_39 b2_39: - //SEG89 [44] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG90 [44] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+6*$28+3 jmp b2_40 - //SEG90 main::@2_40 + //SEG91 main::@2_40 b2_40: - //SEG91 [45] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG92 [45] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+7*$28+3 jmp b2_41 - //SEG92 main::@2_41 + //SEG93 main::@2_41 b2_41: - //SEG93 [46] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG94 [46] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+8*$28+3 jmp b2_42 - //SEG94 main::@2_42 + //SEG95 main::@2_42 b2_42: - //SEG95 [47] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG96 [47] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+9*$28+3 jmp b2_43 - //SEG96 main::@2_43 + //SEG97 main::@2_43 b2_43: - //SEG97 [48] *((const byte*) main::SCREEN#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) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG98 [48] *((const byte*) main::SCREEN#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) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+$a*$28+3 jmp b2_44 - //SEG98 main::@2_44 + //SEG99 main::@2_44 b2_44: - //SEG99 [49] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG100 [49] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+4 jmp b2_45 - //SEG100 main::@2_45 + //SEG101 main::@2_45 b2_45: - //SEG101 [50] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG102 [50] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+1*$28+4 jmp b2_46 - //SEG102 main::@2_46 + //SEG103 main::@2_46 b2_46: - //SEG103 [51] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG104 [51] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+2*$28+4 jmp b2_47 - //SEG104 main::@2_47 + //SEG105 main::@2_47 b2_47: - //SEG105 [52] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG106 [52] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+3*$28+4 jmp b2_48 - //SEG106 main::@2_48 + //SEG107 main::@2_48 b2_48: - //SEG107 [53] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG108 [53] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+4*$28+4 jmp b2_49 - //SEG108 main::@2_49 + //SEG109 main::@2_49 b2_49: - //SEG109 [54] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG110 [54] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+5*$28+4 jmp b2_50 - //SEG110 main::@2_50 + //SEG111 main::@2_50 b2_50: - //SEG111 [55] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG112 [55] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+6*$28+4 jmp b2_51 - //SEG112 main::@2_51 + //SEG113 main::@2_51 b2_51: - //SEG113 [56] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG114 [56] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+7*$28+4 jmp b2_52 - //SEG114 main::@2_52 + //SEG115 main::@2_52 b2_52: - //SEG115 [57] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG116 [57] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+8*$28+4 jmp b2_53 - //SEG116 main::@2_53 + //SEG117 main::@2_53 b2_53: - //SEG117 [58] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG118 [58] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+9*$28+4 jmp b2_54 - //SEG118 main::@2_54 + //SEG119 main::@2_54 b2_54: - //SEG119 [59] *((const byte*) main::SCREEN#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) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG120 [59] *((const byte*) main::SCREEN#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) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+$a*$28+4 jmp b2_55 - //SEG120 main::@2_55 + //SEG121 main::@2_55 b2_55: - //SEG121 [60] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG122 [60] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+5 jmp b2_56 - //SEG122 main::@2_56 + //SEG123 main::@2_56 b2_56: - //SEG123 [61] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG124 [61] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+1*$28+5 jmp b2_57 - //SEG124 main::@2_57 + //SEG125 main::@2_57 b2_57: - //SEG125 [62] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG126 [62] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+2*$28+5 jmp b2_58 - //SEG126 main::@2_58 + //SEG127 main::@2_58 b2_58: - //SEG127 [63] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG128 [63] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+3*$28+5 jmp b2_59 - //SEG128 main::@2_59 + //SEG129 main::@2_59 b2_59: - //SEG129 [64] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG130 [64] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+4*$28+5 jmp b2_60 - //SEG130 main::@2_60 + //SEG131 main::@2_60 b2_60: - //SEG131 [65] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG132 [65] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+5*$28+5 jmp b2_61 - //SEG132 main::@2_61 + //SEG133 main::@2_61 b2_61: - //SEG133 [66] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG134 [66] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+6*$28+5 jmp b2_62 - //SEG134 main::@2_62 + //SEG135 main::@2_62 b2_62: - //SEG135 [67] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG136 [67] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+7*$28+5 jmp b2_63 - //SEG136 main::@2_63 + //SEG137 main::@2_63 b2_63: - //SEG137 [68] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG138 [68] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+8*$28+5 jmp b2_64 - //SEG138 main::@2_64 + //SEG139 main::@2_64 b2_64: - //SEG139 [69] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG140 [69] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+9*$28+5 jmp b2_65 - //SEG140 main::@2_65 + //SEG141 main::@2_65 b2_65: - //SEG141 [70] *((const byte*) main::SCREEN#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) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG142 [70] *((const byte*) main::SCREEN#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) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+$a*$28+5 jmp b2_66 - //SEG142 main::@2_66 + //SEG143 main::@2_66 b2_66: - //SEG143 [71] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG144 [71] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+6 jmp b2_67 - //SEG144 main::@2_67 + //SEG145 main::@2_67 b2_67: - //SEG145 [72] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG146 [72] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+1*$28+6 jmp b2_68 - //SEG146 main::@2_68 + //SEG147 main::@2_68 b2_68: - //SEG147 [73] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG148 [73] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+2*$28+6 jmp b2_69 - //SEG148 main::@2_69 + //SEG149 main::@2_69 b2_69: - //SEG149 [74] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG150 [74] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+3*$28+6 jmp b2_70 - //SEG150 main::@2_70 + //SEG151 main::@2_70 b2_70: - //SEG151 [75] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG152 [75] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+4*$28+6 jmp b2_71 - //SEG152 main::@2_71 + //SEG153 main::@2_71 b2_71: - //SEG153 [76] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG154 [76] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+5*$28+6 jmp b2_72 - //SEG154 main::@2_72 + //SEG155 main::@2_72 b2_72: - //SEG155 [77] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG156 [77] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+6*$28+6 jmp b2_73 - //SEG156 main::@2_73 + //SEG157 main::@2_73 b2_73: - //SEG157 [78] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG158 [78] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+7*$28+6 jmp b2_74 - //SEG158 main::@2_74 + //SEG159 main::@2_74 b2_74: - //SEG159 [79] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG160 [79] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+8*$28+6 jmp b2_75 - //SEG160 main::@2_75 + //SEG161 main::@2_75 b2_75: - //SEG161 [80] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG162 [80] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+9*$28+6 jmp b2_76 - //SEG162 main::@2_76 + //SEG163 main::@2_76 b2_76: - //SEG163 [81] *((const byte*) main::SCREEN#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) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG164 [81] *((const byte*) main::SCREEN#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) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+$a*$28+6 jmp b2_77 - //SEG164 main::@2_77 + //SEG165 main::@2_77 b2_77: - //SEG165 [82] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG166 [82] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+7 jmp b2_78 - //SEG166 main::@2_78 + //SEG167 main::@2_78 b2_78: - //SEG167 [83] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG168 [83] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+1*$28+7 jmp b2_79 - //SEG168 main::@2_79 + //SEG169 main::@2_79 b2_79: - //SEG169 [84] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG170 [84] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+2*$28+7 jmp b2_80 - //SEG170 main::@2_80 + //SEG171 main::@2_80 b2_80: - //SEG171 [85] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG172 [85] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+3*$28+7 jmp b2_81 - //SEG172 main::@2_81 + //SEG173 main::@2_81 b2_81: - //SEG173 [86] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG174 [86] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+4*$28+7 jmp b2_82 - //SEG174 main::@2_82 + //SEG175 main::@2_82 b2_82: - //SEG175 [87] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG176 [87] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+5*$28+7 jmp b2_83 - //SEG176 main::@2_83 + //SEG177 main::@2_83 b2_83: - //SEG177 [88] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG178 [88] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+6*$28+7 jmp b2_84 - //SEG178 main::@2_84 + //SEG179 main::@2_84 b2_84: - //SEG179 [89] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG180 [89] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+7*$28+7 jmp b2_85 - //SEG180 main::@2_85 + //SEG181 main::@2_85 b2_85: - //SEG181 [90] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG182 [90] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+8*$28+7 jmp b2_86 - //SEG182 main::@2_86 + //SEG183 main::@2_86 b2_86: - //SEG183 [91] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG184 [91] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+9*$28+7 jmp b2_87 - //SEG184 main::@2_87 + //SEG185 main::@2_87 b2_87: - //SEG185 [92] *((const byte*) main::SCREEN#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) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG186 [92] *((const byte*) main::SCREEN#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) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+$a*$28+7 jmp b2_88 - //SEG186 main::@2_88 + //SEG187 main::@2_88 b2_88: - //SEG187 [93] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG188 [93] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+8 jmp b2_89 - //SEG188 main::@2_89 + //SEG189 main::@2_89 b2_89: - //SEG189 [94] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG190 [94] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+1*$28+8 jmp b2_90 - //SEG190 main::@2_90 + //SEG191 main::@2_90 b2_90: - //SEG191 [95] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG192 [95] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+2*$28+8 jmp b2_91 - //SEG192 main::@2_91 + //SEG193 main::@2_91 b2_91: - //SEG193 [96] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG194 [96] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+3*$28+8 jmp b2_92 - //SEG194 main::@2_92 + //SEG195 main::@2_92 b2_92: - //SEG195 [97] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG196 [97] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+4*$28+8 jmp b2_93 - //SEG196 main::@2_93 + //SEG197 main::@2_93 b2_93: - //SEG197 [98] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG198 [98] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+5*$28+8 jmp b2_94 - //SEG198 main::@2_94 + //SEG199 main::@2_94 b2_94: - //SEG199 [99] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG200 [99] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+6*$28+8 jmp b2_95 - //SEG200 main::@2_95 + //SEG201 main::@2_95 b2_95: - //SEG201 [100] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG202 [100] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+7*$28+8 jmp b2_96 - //SEG202 main::@2_96 + //SEG203 main::@2_96 b2_96: - //SEG203 [101] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG204 [101] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+8*$28+8 jmp b2_97 - //SEG204 main::@2_97 + //SEG205 main::@2_97 b2_97: - //SEG205 [102] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG206 [102] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+9*$28+8 jmp b2_98 - //SEG206 main::@2_98 + //SEG207 main::@2_98 b2_98: - //SEG207 [103] *((const byte*) main::SCREEN#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) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG208 [103] *((const byte*) main::SCREEN#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) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+$a*$28+8 jmp b2_99 - //SEG208 main::@2_99 + //SEG209 main::@2_99 b2_99: - //SEG209 [104] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG210 [104] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+9 jmp b2_100 - //SEG210 main::@2_100 + //SEG211 main::@2_100 b2_100: - //SEG211 [105] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG212 [105] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+1*$28+9 jmp b2_101 - //SEG212 main::@2_101 + //SEG213 main::@2_101 b2_101: - //SEG213 [106] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG214 [106] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+2*$28+9 jmp b2_102 - //SEG214 main::@2_102 + //SEG215 main::@2_102 b2_102: - //SEG215 [107] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG216 [107] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+3*$28+9 jmp b2_103 - //SEG216 main::@2_103 + //SEG217 main::@2_103 b2_103: - //SEG217 [108] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG218 [108] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+4*$28+9 jmp b2_104 - //SEG218 main::@2_104 + //SEG219 main::@2_104 b2_104: - //SEG219 [109] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG220 [109] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+5*$28+9 jmp b2_105 - //SEG220 main::@2_105 + //SEG221 main::@2_105 b2_105: - //SEG221 [110] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG222 [110] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+6*$28+9 jmp b2_106 - //SEG222 main::@2_106 + //SEG223 main::@2_106 b2_106: - //SEG223 [111] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG224 [111] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+7*$28+9 jmp b2_107 - //SEG224 main::@2_107 + //SEG225 main::@2_107 b2_107: - //SEG225 [112] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG226 [112] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+8*$28+9 jmp b2_108 - //SEG226 main::@2_108 + //SEG227 main::@2_108 b2_108: - //SEG227 [113] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG228 [113] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+9*$28+9 jmp b2_109 - //SEG228 main::@2_109 + //SEG229 main::@2_109 b2_109: - //SEG229 [114] *((const byte*) main::SCREEN#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) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG230 [114] *((const byte*) main::SCREEN#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) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+$a*$28+9 jmp b2_110 - //SEG230 main::@2_110 + //SEG231 main::@2_110 b2_110: - //SEG231 [115] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG232 [115] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+$a jmp b2_111 - //SEG232 main::@2_111 + //SEG233 main::@2_111 b2_111: - //SEG233 [116] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG234 [116] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+1*$28+$a jmp b2_112 - //SEG234 main::@2_112 + //SEG235 main::@2_112 b2_112: - //SEG235 [117] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG236 [117] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+2*$28+$a jmp b2_113 - //SEG236 main::@2_113 + //SEG237 main::@2_113 b2_113: - //SEG237 [118] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG238 [118] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+3*$28+$a jmp b2_114 - //SEG238 main::@2_114 + //SEG239 main::@2_114 b2_114: - //SEG239 [119] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG240 [119] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+4*$28+$a jmp b2_115 - //SEG240 main::@2_115 + //SEG241 main::@2_115 b2_115: - //SEG241 [120] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG242 [120] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+5*$28+$a jmp b2_116 - //SEG242 main::@2_116 + //SEG243 main::@2_116 b2_116: - //SEG243 [121] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG244 [121] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+6*$28+$a jmp b2_117 - //SEG244 main::@2_117 + //SEG245 main::@2_117 b2_117: - //SEG245 [122] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG246 [122] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+7*$28+$a jmp b2_118 - //SEG246 main::@2_118 + //SEG247 main::@2_118 b2_118: - //SEG247 [123] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG248 [123] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+8*$28+$a jmp b2_119 - //SEG248 main::@2_119 + //SEG249 main::@2_119 b2_119: - //SEG249 [124] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG250 [124] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+9*$28+$a jmp b2_120 - //SEG250 main::@2_120 + //SEG251 main::@2_120 b2_120: - //SEG251 [125] *((const byte*) main::SCREEN#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) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG252 [125] *((const byte*) main::SCREEN#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) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+$a*$28+$a jmp breturn - //SEG252 main::@return + //SEG253 main::@return breturn: - //SEG253 [126] return + //SEG254 [126] return rts } @@ -2129,761 +2130,762 @@ Uplifting [main] best 1137 combination Uplifting [] best 1137 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using two unrolled ranged for()-loops +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Fills the screen using two unrolled ranged for()-loops +//SEG10 main main: { .label SCREEN = $400 jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) main::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN jmp b2_1 - //SEG12 main::@2_1 + //SEG13 main::@2_1 b2_1: - //SEG13 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG14 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+1*$28 jmp b2_2 - //SEG14 main::@2_2 + //SEG15 main::@2_2 b2_2: - //SEG15 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+2*$28 jmp b2_3 - //SEG16 main::@2_3 + //SEG17 main::@2_3 b2_3: - //SEG17 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG18 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+3*$28 jmp b2_4 - //SEG18 main::@2_4 + //SEG19 main::@2_4 b2_4: - //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG20 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+4*$28 jmp b2_5 - //SEG20 main::@2_5 + //SEG21 main::@2_5 b2_5: - //SEG21 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG22 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+5*$28 jmp b2_6 - //SEG22 main::@2_6 + //SEG23 main::@2_6 b2_6: - //SEG23 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+6*$28 jmp b2_7 - //SEG24 main::@2_7 + //SEG25 main::@2_7 b2_7: - //SEG25 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG26 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+7*$28 jmp b2_8 - //SEG26 main::@2_8 + //SEG27 main::@2_8 b2_8: - //SEG27 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG28 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+8*$28 jmp b2_9 - //SEG28 main::@2_9 + //SEG29 main::@2_9 b2_9: - //SEG29 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+9*$28 jmp b2_10 - //SEG30 main::@2_10 + //SEG31 main::@2_10 b2_10: - //SEG31 [15] *((const byte*) main::SCREEN#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) 0 -- _deref_pbuc1=vbuc2 + //SEG32 [15] *((const byte*) main::SCREEN#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) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN+$a*$28 jmp b2_11 - //SEG32 main::@2_11 + //SEG33 main::@2_11 b2_11: - //SEG33 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG34 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+1 jmp b2_12 - //SEG34 main::@2_12 + //SEG35 main::@2_12 b2_12: - //SEG35 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG36 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+1*$28+1 jmp b2_13 - //SEG36 main::@2_13 + //SEG37 main::@2_13 b2_13: - //SEG37 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG38 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+2*$28+1 jmp b2_14 - //SEG38 main::@2_14 + //SEG39 main::@2_14 b2_14: - //SEG39 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG40 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+3*$28+1 jmp b2_15 - //SEG40 main::@2_15 + //SEG41 main::@2_15 b2_15: - //SEG41 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG42 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+4*$28+1 jmp b2_16 - //SEG42 main::@2_16 + //SEG43 main::@2_16 b2_16: - //SEG43 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG44 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+5*$28+1 jmp b2_17 - //SEG44 main::@2_17 + //SEG45 main::@2_17 b2_17: - //SEG45 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG46 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+6*$28+1 jmp b2_18 - //SEG46 main::@2_18 + //SEG47 main::@2_18 b2_18: - //SEG47 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG48 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+7*$28+1 jmp b2_19 - //SEG48 main::@2_19 + //SEG49 main::@2_19 b2_19: - //SEG49 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG50 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+8*$28+1 jmp b2_20 - //SEG50 main::@2_20 + //SEG51 main::@2_20 b2_20: - //SEG51 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG52 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+9*$28+1 jmp b2_21 - //SEG52 main::@2_21 + //SEG53 main::@2_21 b2_21: - //SEG53 [26] *((const byte*) main::SCREEN#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) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG54 [26] *((const byte*) main::SCREEN#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) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+$a*$28+1 jmp b2_22 - //SEG54 main::@2_22 + //SEG55 main::@2_22 b2_22: - //SEG55 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG56 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+2 jmp b2_23 - //SEG56 main::@2_23 + //SEG57 main::@2_23 b2_23: - //SEG57 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG58 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+1*$28+2 jmp b2_24 - //SEG58 main::@2_24 + //SEG59 main::@2_24 b2_24: - //SEG59 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG60 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+2*$28+2 jmp b2_25 - //SEG60 main::@2_25 + //SEG61 main::@2_25 b2_25: - //SEG61 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG62 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+3*$28+2 jmp b2_26 - //SEG62 main::@2_26 + //SEG63 main::@2_26 b2_26: - //SEG63 [31] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG64 [31] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+4*$28+2 jmp b2_27 - //SEG64 main::@2_27 + //SEG65 main::@2_27 b2_27: - //SEG65 [32] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG66 [32] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+5*$28+2 jmp b2_28 - //SEG66 main::@2_28 + //SEG67 main::@2_28 b2_28: - //SEG67 [33] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG68 [33] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+6*$28+2 jmp b2_29 - //SEG68 main::@2_29 + //SEG69 main::@2_29 b2_29: - //SEG69 [34] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG70 [34] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+7*$28+2 jmp b2_30 - //SEG70 main::@2_30 + //SEG71 main::@2_30 b2_30: - //SEG71 [35] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG72 [35] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+8*$28+2 jmp b2_31 - //SEG72 main::@2_31 + //SEG73 main::@2_31 b2_31: - //SEG73 [36] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG74 [36] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+9*$28+2 jmp b2_32 - //SEG74 main::@2_32 + //SEG75 main::@2_32 b2_32: - //SEG75 [37] *((const byte*) main::SCREEN#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) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG76 [37] *((const byte*) main::SCREEN#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) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+$a*$28+2 jmp b2_33 - //SEG76 main::@2_33 + //SEG77 main::@2_33 b2_33: - //SEG77 [38] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG78 [38] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+3 jmp b2_34 - //SEG78 main::@2_34 + //SEG79 main::@2_34 b2_34: - //SEG79 [39] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG80 [39] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+1*$28+3 jmp b2_35 - //SEG80 main::@2_35 + //SEG81 main::@2_35 b2_35: - //SEG81 [40] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG82 [40] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+2*$28+3 jmp b2_36 - //SEG82 main::@2_36 + //SEG83 main::@2_36 b2_36: - //SEG83 [41] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG84 [41] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+3*$28+3 jmp b2_37 - //SEG84 main::@2_37 + //SEG85 main::@2_37 b2_37: - //SEG85 [42] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG86 [42] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+4*$28+3 jmp b2_38 - //SEG86 main::@2_38 + //SEG87 main::@2_38 b2_38: - //SEG87 [43] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG88 [43] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+5*$28+3 jmp b2_39 - //SEG88 main::@2_39 + //SEG89 main::@2_39 b2_39: - //SEG89 [44] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG90 [44] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+6*$28+3 jmp b2_40 - //SEG90 main::@2_40 + //SEG91 main::@2_40 b2_40: - //SEG91 [45] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG92 [45] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+7*$28+3 jmp b2_41 - //SEG92 main::@2_41 + //SEG93 main::@2_41 b2_41: - //SEG93 [46] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG94 [46] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+8*$28+3 jmp b2_42 - //SEG94 main::@2_42 + //SEG95 main::@2_42 b2_42: - //SEG95 [47] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG96 [47] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+9*$28+3 jmp b2_43 - //SEG96 main::@2_43 + //SEG97 main::@2_43 b2_43: - //SEG97 [48] *((const byte*) main::SCREEN#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) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG98 [48] *((const byte*) main::SCREEN#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) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+$a*$28+3 jmp b2_44 - //SEG98 main::@2_44 + //SEG99 main::@2_44 b2_44: - //SEG99 [49] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG100 [49] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+4 jmp b2_45 - //SEG100 main::@2_45 + //SEG101 main::@2_45 b2_45: - //SEG101 [50] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG102 [50] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+1*$28+4 jmp b2_46 - //SEG102 main::@2_46 + //SEG103 main::@2_46 b2_46: - //SEG103 [51] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG104 [51] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+2*$28+4 jmp b2_47 - //SEG104 main::@2_47 + //SEG105 main::@2_47 b2_47: - //SEG105 [52] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG106 [52] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+3*$28+4 jmp b2_48 - //SEG106 main::@2_48 + //SEG107 main::@2_48 b2_48: - //SEG107 [53] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG108 [53] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+4*$28+4 jmp b2_49 - //SEG108 main::@2_49 + //SEG109 main::@2_49 b2_49: - //SEG109 [54] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG110 [54] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+5*$28+4 jmp b2_50 - //SEG110 main::@2_50 + //SEG111 main::@2_50 b2_50: - //SEG111 [55] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG112 [55] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+6*$28+4 jmp b2_51 - //SEG112 main::@2_51 + //SEG113 main::@2_51 b2_51: - //SEG113 [56] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG114 [56] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+7*$28+4 jmp b2_52 - //SEG114 main::@2_52 + //SEG115 main::@2_52 b2_52: - //SEG115 [57] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG116 [57] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+8*$28+4 jmp b2_53 - //SEG116 main::@2_53 + //SEG117 main::@2_53 b2_53: - //SEG117 [58] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG118 [58] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+9*$28+4 jmp b2_54 - //SEG118 main::@2_54 + //SEG119 main::@2_54 b2_54: - //SEG119 [59] *((const byte*) main::SCREEN#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) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG120 [59] *((const byte*) main::SCREEN#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) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+$a*$28+4 jmp b2_55 - //SEG120 main::@2_55 + //SEG121 main::@2_55 b2_55: - //SEG121 [60] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG122 [60] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+5 jmp b2_56 - //SEG122 main::@2_56 + //SEG123 main::@2_56 b2_56: - //SEG123 [61] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG124 [61] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+1*$28+5 jmp b2_57 - //SEG124 main::@2_57 + //SEG125 main::@2_57 b2_57: - //SEG125 [62] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG126 [62] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+2*$28+5 jmp b2_58 - //SEG126 main::@2_58 + //SEG127 main::@2_58 b2_58: - //SEG127 [63] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG128 [63] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+3*$28+5 jmp b2_59 - //SEG128 main::@2_59 + //SEG129 main::@2_59 b2_59: - //SEG129 [64] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG130 [64] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+4*$28+5 jmp b2_60 - //SEG130 main::@2_60 + //SEG131 main::@2_60 b2_60: - //SEG131 [65] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG132 [65] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+5*$28+5 jmp b2_61 - //SEG132 main::@2_61 + //SEG133 main::@2_61 b2_61: - //SEG133 [66] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG134 [66] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+6*$28+5 jmp b2_62 - //SEG134 main::@2_62 + //SEG135 main::@2_62 b2_62: - //SEG135 [67] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG136 [67] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+7*$28+5 jmp b2_63 - //SEG136 main::@2_63 + //SEG137 main::@2_63 b2_63: - //SEG137 [68] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG138 [68] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+8*$28+5 jmp b2_64 - //SEG138 main::@2_64 + //SEG139 main::@2_64 b2_64: - //SEG139 [69] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG140 [69] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+9*$28+5 jmp b2_65 - //SEG140 main::@2_65 + //SEG141 main::@2_65 b2_65: - //SEG141 [70] *((const byte*) main::SCREEN#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) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG142 [70] *((const byte*) main::SCREEN#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) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+$a*$28+5 jmp b2_66 - //SEG142 main::@2_66 + //SEG143 main::@2_66 b2_66: - //SEG143 [71] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG144 [71] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+6 jmp b2_67 - //SEG144 main::@2_67 + //SEG145 main::@2_67 b2_67: - //SEG145 [72] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG146 [72] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+1*$28+6 jmp b2_68 - //SEG146 main::@2_68 + //SEG147 main::@2_68 b2_68: - //SEG147 [73] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG148 [73] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+2*$28+6 jmp b2_69 - //SEG148 main::@2_69 + //SEG149 main::@2_69 b2_69: - //SEG149 [74] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG150 [74] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+3*$28+6 jmp b2_70 - //SEG150 main::@2_70 + //SEG151 main::@2_70 b2_70: - //SEG151 [75] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG152 [75] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+4*$28+6 jmp b2_71 - //SEG152 main::@2_71 + //SEG153 main::@2_71 b2_71: - //SEG153 [76] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG154 [76] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+5*$28+6 jmp b2_72 - //SEG154 main::@2_72 + //SEG155 main::@2_72 b2_72: - //SEG155 [77] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG156 [77] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+6*$28+6 jmp b2_73 - //SEG156 main::@2_73 + //SEG157 main::@2_73 b2_73: - //SEG157 [78] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG158 [78] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+7*$28+6 jmp b2_74 - //SEG158 main::@2_74 + //SEG159 main::@2_74 b2_74: - //SEG159 [79] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG160 [79] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+8*$28+6 jmp b2_75 - //SEG160 main::@2_75 + //SEG161 main::@2_75 b2_75: - //SEG161 [80] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG162 [80] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+9*$28+6 jmp b2_76 - //SEG162 main::@2_76 + //SEG163 main::@2_76 b2_76: - //SEG163 [81] *((const byte*) main::SCREEN#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) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG164 [81] *((const byte*) main::SCREEN#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) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+$a*$28+6 jmp b2_77 - //SEG164 main::@2_77 + //SEG165 main::@2_77 b2_77: - //SEG165 [82] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG166 [82] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+7 jmp b2_78 - //SEG166 main::@2_78 + //SEG167 main::@2_78 b2_78: - //SEG167 [83] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG168 [83] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+1*$28+7 jmp b2_79 - //SEG168 main::@2_79 + //SEG169 main::@2_79 b2_79: - //SEG169 [84] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG170 [84] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+2*$28+7 jmp b2_80 - //SEG170 main::@2_80 + //SEG171 main::@2_80 b2_80: - //SEG171 [85] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG172 [85] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+3*$28+7 jmp b2_81 - //SEG172 main::@2_81 + //SEG173 main::@2_81 b2_81: - //SEG173 [86] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG174 [86] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+4*$28+7 jmp b2_82 - //SEG174 main::@2_82 + //SEG175 main::@2_82 b2_82: - //SEG175 [87] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG176 [87] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+5*$28+7 jmp b2_83 - //SEG176 main::@2_83 + //SEG177 main::@2_83 b2_83: - //SEG177 [88] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG178 [88] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+6*$28+7 jmp b2_84 - //SEG178 main::@2_84 + //SEG179 main::@2_84 b2_84: - //SEG179 [89] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG180 [89] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+7*$28+7 jmp b2_85 - //SEG180 main::@2_85 + //SEG181 main::@2_85 b2_85: - //SEG181 [90] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG182 [90] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+8*$28+7 jmp b2_86 - //SEG182 main::@2_86 + //SEG183 main::@2_86 b2_86: - //SEG183 [91] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG184 [91] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+9*$28+7 jmp b2_87 - //SEG184 main::@2_87 + //SEG185 main::@2_87 b2_87: - //SEG185 [92] *((const byte*) main::SCREEN#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) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG186 [92] *((const byte*) main::SCREEN#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) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+$a*$28+7 jmp b2_88 - //SEG186 main::@2_88 + //SEG187 main::@2_88 b2_88: - //SEG187 [93] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG188 [93] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+8 jmp b2_89 - //SEG188 main::@2_89 + //SEG189 main::@2_89 b2_89: - //SEG189 [94] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG190 [94] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+1*$28+8 jmp b2_90 - //SEG190 main::@2_90 + //SEG191 main::@2_90 b2_90: - //SEG191 [95] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG192 [95] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+2*$28+8 jmp b2_91 - //SEG192 main::@2_91 + //SEG193 main::@2_91 b2_91: - //SEG193 [96] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG194 [96] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+3*$28+8 jmp b2_92 - //SEG194 main::@2_92 + //SEG195 main::@2_92 b2_92: - //SEG195 [97] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG196 [97] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+4*$28+8 jmp b2_93 - //SEG196 main::@2_93 + //SEG197 main::@2_93 b2_93: - //SEG197 [98] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG198 [98] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+5*$28+8 jmp b2_94 - //SEG198 main::@2_94 + //SEG199 main::@2_94 b2_94: - //SEG199 [99] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG200 [99] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+6*$28+8 jmp b2_95 - //SEG200 main::@2_95 + //SEG201 main::@2_95 b2_95: - //SEG201 [100] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG202 [100] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+7*$28+8 jmp b2_96 - //SEG202 main::@2_96 + //SEG203 main::@2_96 b2_96: - //SEG203 [101] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG204 [101] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+8*$28+8 jmp b2_97 - //SEG204 main::@2_97 + //SEG205 main::@2_97 b2_97: - //SEG205 [102] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG206 [102] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+9*$28+8 jmp b2_98 - //SEG206 main::@2_98 + //SEG207 main::@2_98 b2_98: - //SEG207 [103] *((const byte*) main::SCREEN#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) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG208 [103] *((const byte*) main::SCREEN#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) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+$a*$28+8 jmp b2_99 - //SEG208 main::@2_99 + //SEG209 main::@2_99 b2_99: - //SEG209 [104] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG210 [104] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+9 jmp b2_100 - //SEG210 main::@2_100 + //SEG211 main::@2_100 b2_100: - //SEG211 [105] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG212 [105] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+1*$28+9 jmp b2_101 - //SEG212 main::@2_101 + //SEG213 main::@2_101 b2_101: - //SEG213 [106] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG214 [106] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+2*$28+9 jmp b2_102 - //SEG214 main::@2_102 + //SEG215 main::@2_102 b2_102: - //SEG215 [107] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG216 [107] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+3*$28+9 jmp b2_103 - //SEG216 main::@2_103 + //SEG217 main::@2_103 b2_103: - //SEG217 [108] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG218 [108] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+4*$28+9 jmp b2_104 - //SEG218 main::@2_104 + //SEG219 main::@2_104 b2_104: - //SEG219 [109] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG220 [109] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+5*$28+9 jmp b2_105 - //SEG220 main::@2_105 + //SEG221 main::@2_105 b2_105: - //SEG221 [110] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG222 [110] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+6*$28+9 jmp b2_106 - //SEG222 main::@2_106 + //SEG223 main::@2_106 b2_106: - //SEG223 [111] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG224 [111] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+7*$28+9 jmp b2_107 - //SEG224 main::@2_107 + //SEG225 main::@2_107 b2_107: - //SEG225 [112] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG226 [112] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+8*$28+9 jmp b2_108 - //SEG226 main::@2_108 + //SEG227 main::@2_108 b2_108: - //SEG227 [113] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG228 [113] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+9*$28+9 jmp b2_109 - //SEG228 main::@2_109 + //SEG229 main::@2_109 b2_109: - //SEG229 [114] *((const byte*) main::SCREEN#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) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG230 [114] *((const byte*) main::SCREEN#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) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+$a*$28+9 jmp b2_110 - //SEG230 main::@2_110 + //SEG231 main::@2_110 b2_110: - //SEG231 [115] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG232 [115] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+$a jmp b2_111 - //SEG232 main::@2_111 + //SEG233 main::@2_111 b2_111: - //SEG233 [116] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG234 [116] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+1*$28+$a jmp b2_112 - //SEG234 main::@2_112 + //SEG235 main::@2_112 b2_112: - //SEG235 [117] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG236 [117] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+2*$28+$a jmp b2_113 - //SEG236 main::@2_113 + //SEG237 main::@2_113 b2_113: - //SEG237 [118] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG238 [118] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+3*$28+$a jmp b2_114 - //SEG238 main::@2_114 + //SEG239 main::@2_114 b2_114: - //SEG239 [119] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG240 [119] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+4*$28+$a jmp b2_115 - //SEG240 main::@2_115 + //SEG241 main::@2_115 b2_115: - //SEG241 [120] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG242 [120] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+5*$28+$a jmp b2_116 - //SEG242 main::@2_116 + //SEG243 main::@2_116 b2_116: - //SEG243 [121] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG244 [121] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+6*$28+$a jmp b2_117 - //SEG244 main::@2_117 + //SEG245 main::@2_117 b2_117: - //SEG245 [122] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG246 [122] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+7*$28+$a jmp b2_118 - //SEG246 main::@2_118 + //SEG247 main::@2_118 b2_118: - //SEG247 [123] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG248 [123] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+8*$28+$a jmp b2_119 - //SEG248 main::@2_119 + //SEG249 main::@2_119 b2_119: - //SEG249 [124] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG250 [124] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+9*$28+$a jmp b2_120 - //SEG250 main::@2_120 + //SEG251 main::@2_120 b2_120: - //SEG251 [125] *((const byte*) main::SCREEN#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) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG252 [125] *((const byte*) main::SCREEN#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) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+$a*$28+$a jmp breturn - //SEG252 main::@return + //SEG253 main::@return breturn: - //SEG253 [126] return + //SEG254 [126] return rts } @@ -3396,398 +3398,399 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 512 -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using two unrolled ranged for()-loops +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Fills the screen using two unrolled ranged for()-loops +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 - //SEG10 main::@2 - //SEG11 [5] *((const byte*) main::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG11 main::@2 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SCREEN - //SEG12 main::@2_1 - //SEG13 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG13 main::@2_1 + //SEG14 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28 - //SEG14 main::@2_2 - //SEG15 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG15 main::@2_2 + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28 - //SEG16 main::@2_3 - //SEG17 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG17 main::@2_3 + //SEG18 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28 - //SEG18 main::@2_4 - //SEG19 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG19 main::@2_4 + //SEG20 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28 - //SEG20 main::@2_5 - //SEG21 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG21 main::@2_5 + //SEG22 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28 - //SEG22 main::@2_6 - //SEG23 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG23 main::@2_6 + //SEG24 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28 - //SEG24 main::@2_7 - //SEG25 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 main::@2_7 + //SEG26 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28 - //SEG26 main::@2_8 - //SEG27 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG27 main::@2_8 + //SEG28 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28 - //SEG28 main::@2_9 - //SEG29 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG29 main::@2_9 + //SEG30 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28 - //SEG30 main::@2_10 - //SEG31 [15] *((const byte*) main::SCREEN#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) 0 -- _deref_pbuc1=vbuc2 + //SEG31 main::@2_10 + //SEG32 [15] *((const byte*) main::SCREEN#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) 0 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28 - //SEG32 main::@2_11 - //SEG33 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG33 main::@2_11 + //SEG34 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN+1 - //SEG34 main::@2_12 - //SEG35 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG35 main::@2_12 + //SEG36 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+1 - //SEG36 main::@2_13 - //SEG37 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG37 main::@2_13 + //SEG38 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+1 - //SEG38 main::@2_14 - //SEG39 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG39 main::@2_14 + //SEG40 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+1 - //SEG40 main::@2_15 - //SEG41 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG41 main::@2_15 + //SEG42 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+1 - //SEG42 main::@2_16 - //SEG43 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG43 main::@2_16 + //SEG44 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+1 - //SEG44 main::@2_17 - //SEG45 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG45 main::@2_17 + //SEG46 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+1 - //SEG46 main::@2_18 - //SEG47 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG47 main::@2_18 + //SEG48 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+1 - //SEG48 main::@2_19 - //SEG49 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG49 main::@2_19 + //SEG50 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+1 - //SEG50 main::@2_20 - //SEG51 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG51 main::@2_20 + //SEG52 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+1 - //SEG52 main::@2_21 - //SEG53 [26] *((const byte*) main::SCREEN#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) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG53 main::@2_21 + //SEG54 [26] *((const byte*) main::SCREEN#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) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+1 - //SEG54 main::@2_22 - //SEG55 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG55 main::@2_22 + //SEG56 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+2 - //SEG56 main::@2_23 - //SEG57 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG57 main::@2_23 + //SEG58 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+2 - //SEG58 main::@2_24 - //SEG59 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG59 main::@2_24 + //SEG60 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+2 - //SEG60 main::@2_25 - //SEG61 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG61 main::@2_25 + //SEG62 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+2 - //SEG62 main::@2_26 - //SEG63 [31] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG63 main::@2_26 + //SEG64 [31] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+2 - //SEG64 main::@2_27 - //SEG65 [32] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG65 main::@2_27 + //SEG66 [32] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+2 - //SEG66 main::@2_28 - //SEG67 [33] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG67 main::@2_28 + //SEG68 [33] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+2 - //SEG68 main::@2_29 - //SEG69 [34] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG69 main::@2_29 + //SEG70 [34] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+2 - //SEG70 main::@2_30 - //SEG71 [35] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG71 main::@2_30 + //SEG72 [35] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+2 - //SEG72 main::@2_31 - //SEG73 [36] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 2 -- _deref_pbuc1=vbuc2 + //SEG73 main::@2_31 + //SEG74 [36] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+2 - //SEG74 main::@2_32 - //SEG75 [37] *((const byte*) main::SCREEN#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) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG75 main::@2_32 + //SEG76 [37] *((const byte*) main::SCREEN#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) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+2 - //SEG76 main::@2_33 - //SEG77 [38] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG77 main::@2_33 + //SEG78 [38] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #3 sta SCREEN+3 - //SEG78 main::@2_34 - //SEG79 [39] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG79 main::@2_34 + //SEG80 [39] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+3 - //SEG80 main::@2_35 - //SEG81 [40] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG81 main::@2_35 + //SEG82 [40] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+3 - //SEG82 main::@2_36 - //SEG83 [41] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG83 main::@2_36 + //SEG84 [41] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+3 - //SEG84 main::@2_37 - //SEG85 [42] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG85 main::@2_37 + //SEG86 [42] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+3 - //SEG86 main::@2_38 - //SEG87 [43] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG87 main::@2_38 + //SEG88 [43] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+3 - //SEG88 main::@2_39 - //SEG89 [44] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG89 main::@2_39 + //SEG90 [44] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+3 - //SEG90 main::@2_40 - //SEG91 [45] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG91 main::@2_40 + //SEG92 [45] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+3 - //SEG92 main::@2_41 - //SEG93 [46] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG93 main::@2_41 + //SEG94 [46] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+3 - //SEG94 main::@2_42 - //SEG95 [47] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG95 main::@2_42 + //SEG96 [47] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+3 - //SEG96 main::@2_43 - //SEG97 [48] *((const byte*) main::SCREEN#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) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + //SEG97 main::@2_43 + //SEG98 [48] *((const byte*) main::SCREEN#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) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+3 - //SEG98 main::@2_44 - //SEG99 [49] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG99 main::@2_44 + //SEG100 [49] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 lda #4 sta SCREEN+4 - //SEG100 main::@2_45 - //SEG101 [50] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG101 main::@2_45 + //SEG102 [50] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+4 - //SEG102 main::@2_46 - //SEG103 [51] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG103 main::@2_46 + //SEG104 [51] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+4 - //SEG104 main::@2_47 - //SEG105 [52] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG105 main::@2_47 + //SEG106 [52] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+4 - //SEG106 main::@2_48 - //SEG107 [53] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG107 main::@2_48 + //SEG108 [53] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+4 - //SEG108 main::@2_49 - //SEG109 [54] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG109 main::@2_49 + //SEG110 [54] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+4 - //SEG110 main::@2_50 - //SEG111 [55] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG111 main::@2_50 + //SEG112 [55] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+4 - //SEG112 main::@2_51 - //SEG113 [56] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG113 main::@2_51 + //SEG114 [56] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+4 - //SEG114 main::@2_52 - //SEG115 [57] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG115 main::@2_52 + //SEG116 [57] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+4 - //SEG116 main::@2_53 - //SEG117 [58] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG117 main::@2_53 + //SEG118 [58] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+4 - //SEG118 main::@2_54 - //SEG119 [59] *((const byte*) main::SCREEN#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) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 + //SEG119 main::@2_54 + //SEG120 [59] *((const byte*) main::SCREEN#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) 4) ← (byte/signed byte/word/signed word/dword/signed dword) 4 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+4 - //SEG120 main::@2_55 - //SEG121 [60] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG121 main::@2_55 + //SEG122 [60] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 lda #5 sta SCREEN+5 - //SEG122 main::@2_56 - //SEG123 [61] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG123 main::@2_56 + //SEG124 [61] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+5 - //SEG124 main::@2_57 - //SEG125 [62] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG125 main::@2_57 + //SEG126 [62] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+5 - //SEG126 main::@2_58 - //SEG127 [63] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG127 main::@2_58 + //SEG128 [63] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+5 - //SEG128 main::@2_59 - //SEG129 [64] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG129 main::@2_59 + //SEG130 [64] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+5 - //SEG130 main::@2_60 - //SEG131 [65] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG131 main::@2_60 + //SEG132 [65] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+5 - //SEG132 main::@2_61 - //SEG133 [66] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG133 main::@2_61 + //SEG134 [66] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+5 - //SEG134 main::@2_62 - //SEG135 [67] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG135 main::@2_62 + //SEG136 [67] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+5 - //SEG136 main::@2_63 - //SEG137 [68] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG137 main::@2_63 + //SEG138 [68] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+5 - //SEG138 main::@2_64 - //SEG139 [69] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG139 main::@2_64 + //SEG140 [69] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+5 - //SEG140 main::@2_65 - //SEG141 [70] *((const byte*) main::SCREEN#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) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 + //SEG141 main::@2_65 + //SEG142 [70] *((const byte*) main::SCREEN#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) 5) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+5 - //SEG142 main::@2_66 - //SEG143 [71] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG143 main::@2_66 + //SEG144 [71] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 lda #6 sta SCREEN+6 - //SEG144 main::@2_67 - //SEG145 [72] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG145 main::@2_67 + //SEG146 [72] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+6 - //SEG146 main::@2_68 - //SEG147 [73] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG147 main::@2_68 + //SEG148 [73] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+6 - //SEG148 main::@2_69 - //SEG149 [74] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG149 main::@2_69 + //SEG150 [74] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+6 - //SEG150 main::@2_70 - //SEG151 [75] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG151 main::@2_70 + //SEG152 [75] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+6 - //SEG152 main::@2_71 - //SEG153 [76] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG153 main::@2_71 + //SEG154 [76] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+6 - //SEG154 main::@2_72 - //SEG155 [77] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG155 main::@2_72 + //SEG156 [77] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+6 - //SEG156 main::@2_73 - //SEG157 [78] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG157 main::@2_73 + //SEG158 [78] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+6 - //SEG158 main::@2_74 - //SEG159 [79] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG159 main::@2_74 + //SEG160 [79] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+6 - //SEG160 main::@2_75 - //SEG161 [80] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG161 main::@2_75 + //SEG162 [80] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+6 - //SEG162 main::@2_76 - //SEG163 [81] *((const byte*) main::SCREEN#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) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 + //SEG163 main::@2_76 + //SEG164 [81] *((const byte*) main::SCREEN#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) 6) ← (byte/signed byte/word/signed word/dword/signed dword) 6 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+6 - //SEG164 main::@2_77 - //SEG165 [82] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG165 main::@2_77 + //SEG166 [82] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 lda #7 sta SCREEN+7 - //SEG166 main::@2_78 - //SEG167 [83] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG167 main::@2_78 + //SEG168 [83] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+7 - //SEG168 main::@2_79 - //SEG169 [84] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG169 main::@2_79 + //SEG170 [84] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+7 - //SEG170 main::@2_80 - //SEG171 [85] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG171 main::@2_80 + //SEG172 [85] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+7 - //SEG172 main::@2_81 - //SEG173 [86] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG173 main::@2_81 + //SEG174 [86] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+7 - //SEG174 main::@2_82 - //SEG175 [87] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG175 main::@2_82 + //SEG176 [87] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+7 - //SEG176 main::@2_83 - //SEG177 [88] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG177 main::@2_83 + //SEG178 [88] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+7 - //SEG178 main::@2_84 - //SEG179 [89] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG179 main::@2_84 + //SEG180 [89] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+7 - //SEG180 main::@2_85 - //SEG181 [90] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG181 main::@2_85 + //SEG182 [90] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+7 - //SEG182 main::@2_86 - //SEG183 [91] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG183 main::@2_86 + //SEG184 [91] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+7 - //SEG184 main::@2_87 - //SEG185 [92] *((const byte*) main::SCREEN#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) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 + //SEG185 main::@2_87 + //SEG186 [92] *((const byte*) main::SCREEN#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) 7) ← (byte/signed byte/word/signed word/dword/signed dword) 7 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+7 - //SEG186 main::@2_88 - //SEG187 [93] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG187 main::@2_88 + //SEG188 [93] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 lda #8 sta SCREEN+8 - //SEG188 main::@2_89 - //SEG189 [94] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG189 main::@2_89 + //SEG190 [94] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+8 - //SEG190 main::@2_90 - //SEG191 [95] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG191 main::@2_90 + //SEG192 [95] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+8 - //SEG192 main::@2_91 - //SEG193 [96] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG193 main::@2_91 + //SEG194 [96] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+8 - //SEG194 main::@2_92 - //SEG195 [97] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG195 main::@2_92 + //SEG196 [97] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+8 - //SEG196 main::@2_93 - //SEG197 [98] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG197 main::@2_93 + //SEG198 [98] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+8 - //SEG198 main::@2_94 - //SEG199 [99] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG199 main::@2_94 + //SEG200 [99] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+8 - //SEG200 main::@2_95 - //SEG201 [100] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG201 main::@2_95 + //SEG202 [100] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+8 - //SEG202 main::@2_96 - //SEG203 [101] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG203 main::@2_96 + //SEG204 [101] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+8 - //SEG204 main::@2_97 - //SEG205 [102] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG205 main::@2_97 + //SEG206 [102] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+8 - //SEG206 main::@2_98 - //SEG207 [103] *((const byte*) main::SCREEN#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) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 + //SEG207 main::@2_98 + //SEG208 [103] *((const byte*) main::SCREEN#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) 8) ← (byte/signed byte/word/signed word/dword/signed dword) 8 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+8 - //SEG208 main::@2_99 - //SEG209 [104] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG209 main::@2_99 + //SEG210 [104] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 lda #9 sta SCREEN+9 - //SEG210 main::@2_100 - //SEG211 [105] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG211 main::@2_100 + //SEG212 [105] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+9 - //SEG212 main::@2_101 - //SEG213 [106] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG213 main::@2_101 + //SEG214 [106] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+9 - //SEG214 main::@2_102 - //SEG215 [107] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG215 main::@2_102 + //SEG216 [107] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+9 - //SEG216 main::@2_103 - //SEG217 [108] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG217 main::@2_103 + //SEG218 [108] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+9 - //SEG218 main::@2_104 - //SEG219 [109] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG219 main::@2_104 + //SEG220 [109] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+9 - //SEG220 main::@2_105 - //SEG221 [110] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG221 main::@2_105 + //SEG222 [110] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+9 - //SEG222 main::@2_106 - //SEG223 [111] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG223 main::@2_106 + //SEG224 [111] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+9 - //SEG224 main::@2_107 - //SEG225 [112] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG225 main::@2_107 + //SEG226 [112] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+9 - //SEG226 main::@2_108 - //SEG227 [113] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG227 main::@2_108 + //SEG228 [113] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+9 - //SEG228 main::@2_109 - //SEG229 [114] *((const byte*) main::SCREEN#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) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 + //SEG229 main::@2_109 + //SEG230 [114] *((const byte*) main::SCREEN#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) 9) ← (byte/signed byte/word/signed word/dword/signed dword) 9 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+9 - //SEG230 main::@2_110 - //SEG231 [115] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG231 main::@2_110 + //SEG232 [115] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 lda #$a sta SCREEN+$a - //SEG232 main::@2_111 - //SEG233 [116] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG233 main::@2_111 + //SEG234 [116] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+1*$28+$a - //SEG234 main::@2_112 - //SEG235 [117] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG235 main::@2_112 + //SEG236 [117] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+2*$28+$a - //SEG236 main::@2_113 - //SEG237 [118] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG237 main::@2_113 + //SEG238 [118] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+3*$28+$a - //SEG238 main::@2_114 - //SEG239 [119] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG239 main::@2_114 + //SEG240 [119] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+4*$28+$a - //SEG240 main::@2_115 - //SEG241 [120] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG241 main::@2_115 + //SEG242 [120] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+5*$28+$a - //SEG242 main::@2_116 - //SEG243 [121] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG243 main::@2_116 + //SEG244 [121] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+6*$28+$a - //SEG244 main::@2_117 - //SEG245 [122] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG245 main::@2_117 + //SEG246 [122] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+7*$28+$a - //SEG246 main::@2_118 - //SEG247 [123] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG247 main::@2_118 + //SEG248 [123] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+8*$28+$a - //SEG248 main::@2_119 - //SEG249 [124] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 10 -- _deref_pbuc1=vbuc2 + //SEG249 main::@2_119 + //SEG250 [124] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(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) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+9*$28+$a - //SEG250 main::@2_120 - //SEG251 [125] *((const byte*) main::SCREEN#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) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 + //SEG251 main::@2_120 + //SEG252 [125] *((const byte*) main::SCREEN#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) 10) ← (byte/signed byte/word/signed word/dword/signed dword) 10 -- _deref_pbuc1=vbuc2 sta SCREEN+$a*$28+$a - //SEG252 main::@return - //SEG253 [126] return + //SEG253 main::@return + //SEG254 [126] return rts } diff --git a/src/test/ref/unroll-screenfill-for.asm b/src/test/ref/unroll-screenfill-for.asm index 184cf280b..3a2234a1c 100644 --- a/src/test/ref/unroll-screenfill-for.asm +++ b/src/test/ref/unroll-screenfill-for.asm @@ -1,7 +1,7 @@ +// Fills the screen using an unrolled inner ranged for()-loop .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Fills the screen using an unrolled inner ranged for()-loop main: { .label SCREEN = $400 ldx #0 diff --git a/src/test/ref/unroll-screenfill-for.log b/src/test/ref/unroll-screenfill-for.log index 024681b0f..d47444a14 100644 --- a/src/test/ref/unroll-screenfill-for.log +++ b/src/test/ref/unroll-screenfill-for.log @@ -664,232 +664,233 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::x#4 main::x#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using an unrolled inner ranged for()-loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Fills the screen using an unrolled inner ranged for()-loop +//SEG10 main main: { .label SCREEN = $400 .label x = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b2 - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG17 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN,y jmp b2_1 - //SEG17 main::@2_1 + //SEG18 main::@2_1 b2_1: - //SEG18 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG19 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+1*$28,y jmp b2_2 - //SEG19 main::@2_2 + //SEG20 main::@2_2 b2_2: - //SEG20 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG21 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+2*$28,y jmp b2_3 - //SEG21 main::@2_3 + //SEG22 main::@2_3 b2_3: - //SEG22 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG23 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+3*$28,y jmp b2_4 - //SEG23 main::@2_4 + //SEG24 main::@2_4 b2_4: - //SEG24 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG25 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+4*$28,y jmp b2_5 - //SEG25 main::@2_5 + //SEG26 main::@2_5 b2_5: - //SEG26 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG27 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+5*$28,y jmp b2_6 - //SEG27 main::@2_6 + //SEG28 main::@2_6 b2_6: - //SEG28 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG29 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+6*$28,y jmp b2_7 - //SEG29 main::@2_7 + //SEG30 main::@2_7 b2_7: - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+7*$28,y jmp b2_8 - //SEG31 main::@2_8 + //SEG32 main::@2_8 b2_8: - //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG33 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+8*$28,y jmp b2_9 - //SEG33 main::@2_9 + //SEG34 main::@2_9 b2_9: - //SEG34 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG35 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+9*$28,y jmp b2_10 - //SEG35 main::@2_10 + //SEG36 main::@2_10 b2_10: - //SEG36 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG37 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$a*$28,y jmp b2_11 - //SEG37 main::@2_11 + //SEG38 main::@2_11 b2_11: - //SEG38 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG39 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$b*$28,y jmp b2_12 - //SEG39 main::@2_12 + //SEG40 main::@2_12 b2_12: - //SEG40 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG41 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$c*$28,y jmp b2_13 - //SEG41 main::@2_13 + //SEG42 main::@2_13 b2_13: - //SEG42 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG43 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$d*$28,y jmp b2_14 - //SEG43 main::@2_14 + //SEG44 main::@2_14 b2_14: - //SEG44 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG45 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$e*$28,y jmp b2_15 - //SEG45 main::@2_15 + //SEG46 main::@2_15 b2_15: - //SEG46 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG47 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$f*$28,y jmp b2_16 - //SEG47 main::@2_16 + //SEG48 main::@2_16 b2_16: - //SEG48 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG49 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$10*$28,y jmp b2_17 - //SEG49 main::@2_17 + //SEG50 main::@2_17 b2_17: - //SEG50 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG51 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$11*$28,y jmp b2_18 - //SEG51 main::@2_18 + //SEG52 main::@2_18 b2_18: - //SEG52 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG53 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$12*$28,y jmp b2_19 - //SEG53 main::@2_19 + //SEG54 main::@2_19 b2_19: - //SEG54 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG55 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$13*$28,y jmp b2_20 - //SEG55 main::@2_20 + //SEG56 main::@2_20 b2_20: - //SEG56 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG57 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$14*$28,y jmp b2_21 - //SEG57 main::@2_21 + //SEG58 main::@2_21 b2_21: - //SEG58 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG59 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$15*$28,y jmp b2_22 - //SEG59 main::@2_22 + //SEG60 main::@2_22 b2_22: - //SEG60 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG61 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$16*$28,y jmp b2_23 - //SEG61 main::@2_23 + //SEG62 main::@2_23 b2_23: - //SEG62 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG63 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$17*$28,y jmp b2_24 - //SEG63 main::@2_24 + //SEG64 main::@2_24 b2_24: - //SEG64 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG65 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$18*$28,y jmp b3 - //SEG65 main::@3 + //SEG66 main::@3 b3: - //SEG66 [31] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuz1=_inc_vbuz1 + //SEG67 [31] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuz1=_inc_vbuz1 inc x - //SEG67 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG68 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b1_from_b3 jmp breturn - //SEG68 main::@return + //SEG69 main::@return breturn: - //SEG69 [33] return + //SEG70 [33] return rts } @@ -904,204 +905,205 @@ Uplifting [main] best 2723 combination reg byte x [ main::x#4 main::x#1 ] Uplifting [] best 2723 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using an unrolled inner ranged for()-loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Fills the screen using an unrolled inner ranged for()-loop +//SEG10 main main: { .label SCREEN = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG13 [5] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b2 - //SEG15 main::@2 + //SEG16 main::@2 b2: - //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG17 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x jmp b2_1 - //SEG17 main::@2_1 + //SEG18 main::@2_1 b2_1: - //SEG18 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG19 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+1*$28,x jmp b2_2 - //SEG19 main::@2_2 + //SEG20 main::@2_2 b2_2: - //SEG20 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG21 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+2*$28,x jmp b2_3 - //SEG21 main::@2_3 + //SEG22 main::@2_3 b2_3: - //SEG22 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG23 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+3*$28,x jmp b2_4 - //SEG23 main::@2_4 + //SEG24 main::@2_4 b2_4: - //SEG24 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG25 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+4*$28,x jmp b2_5 - //SEG25 main::@2_5 + //SEG26 main::@2_5 b2_5: - //SEG26 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG27 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+5*$28,x jmp b2_6 - //SEG27 main::@2_6 + //SEG28 main::@2_6 b2_6: - //SEG28 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG29 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+6*$28,x jmp b2_7 - //SEG29 main::@2_7 + //SEG30 main::@2_7 b2_7: - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+7*$28,x jmp b2_8 - //SEG31 main::@2_8 + //SEG32 main::@2_8 b2_8: - //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG33 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+8*$28,x jmp b2_9 - //SEG33 main::@2_9 + //SEG34 main::@2_9 b2_9: - //SEG34 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG35 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+9*$28,x jmp b2_10 - //SEG35 main::@2_10 + //SEG36 main::@2_10 b2_10: - //SEG36 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG37 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$a*$28,x jmp b2_11 - //SEG37 main::@2_11 + //SEG38 main::@2_11 b2_11: - //SEG38 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG39 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$b*$28,x jmp b2_12 - //SEG39 main::@2_12 + //SEG40 main::@2_12 b2_12: - //SEG40 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG41 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$c*$28,x jmp b2_13 - //SEG41 main::@2_13 + //SEG42 main::@2_13 b2_13: - //SEG42 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG43 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$d*$28,x jmp b2_14 - //SEG43 main::@2_14 + //SEG44 main::@2_14 b2_14: - //SEG44 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG45 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$e*$28,x jmp b2_15 - //SEG45 main::@2_15 + //SEG46 main::@2_15 b2_15: - //SEG46 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG47 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$f*$28,x jmp b2_16 - //SEG47 main::@2_16 + //SEG48 main::@2_16 b2_16: - //SEG48 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG49 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$10*$28,x jmp b2_17 - //SEG49 main::@2_17 + //SEG50 main::@2_17 b2_17: - //SEG50 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG51 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$11*$28,x jmp b2_18 - //SEG51 main::@2_18 + //SEG52 main::@2_18 b2_18: - //SEG52 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG53 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$12*$28,x jmp b2_19 - //SEG53 main::@2_19 + //SEG54 main::@2_19 b2_19: - //SEG54 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG55 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$13*$28,x jmp b2_20 - //SEG55 main::@2_20 + //SEG56 main::@2_20 b2_20: - //SEG56 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG57 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$14*$28,x jmp b2_21 - //SEG57 main::@2_21 + //SEG58 main::@2_21 b2_21: - //SEG58 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG59 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$15*$28,x jmp b2_22 - //SEG59 main::@2_22 + //SEG60 main::@2_22 b2_22: - //SEG60 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG61 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$16*$28,x jmp b2_23 - //SEG61 main::@2_23 + //SEG62 main::@2_23 b2_23: - //SEG62 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG63 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$17*$28,x jmp b2_24 - //SEG63 main::@2_24 + //SEG64 main::@2_24 b2_24: - //SEG64 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG65 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$18*$28,x jmp b3 - //SEG65 main::@3 + //SEG66 main::@3 b3: - //SEG66 [31] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuxx=_inc_vbuxx + //SEG67 [31] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuxx=_inc_vbuxx inx - //SEG67 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG68 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b3 jmp breturn - //SEG68 main::@return + //SEG69 main::@return breturn: - //SEG69 [33] return + //SEG70 [33] return rts } @@ -1229,137 +1231,138 @@ reg byte x [ main::x#4 main::x#1 ] FINAL ASSEMBLER Score: 1841 -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using an unrolled inner ranged for()-loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Fills the screen using an unrolled inner ranged for()-loop +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::x#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG13 [5] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy - //SEG14 main::@1 - //SEG15 main::@2 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi (byte) main::x#4 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 main::@1 + //SEG16 main::@2 b2: - //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG17 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG17 main::@2_1 - //SEG18 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG18 main::@2_1 + //SEG19 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+1*$28,x - //SEG19 main::@2_2 - //SEG20 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG20 main::@2_2 + //SEG21 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+2*$28,x - //SEG21 main::@2_3 - //SEG22 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG22 main::@2_3 + //SEG23 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+3*$28,x - //SEG23 main::@2_4 - //SEG24 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG24 main::@2_4 + //SEG25 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+4*$28,x - //SEG25 main::@2_5 - //SEG26 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG26 main::@2_5 + //SEG27 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+5*$28,x - //SEG27 main::@2_6 - //SEG28 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG28 main::@2_6 + //SEG29 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+6*$28,x - //SEG29 main::@2_7 - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG30 main::@2_7 + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+7*$28,x - //SEG31 main::@2_8 - //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG32 main::@2_8 + //SEG33 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+8*$28,x - //SEG33 main::@2_9 - //SEG34 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG34 main::@2_9 + //SEG35 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+9*$28,x - //SEG35 main::@2_10 - //SEG36 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG36 main::@2_10 + //SEG37 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$a*$28,x - //SEG37 main::@2_11 - //SEG38 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG38 main::@2_11 + //SEG39 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$b*$28,x - //SEG39 main::@2_12 - //SEG40 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG40 main::@2_12 + //SEG41 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$c*$28,x - //SEG41 main::@2_13 - //SEG42 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG42 main::@2_13 + //SEG43 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$d*$28,x - //SEG43 main::@2_14 - //SEG44 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG44 main::@2_14 + //SEG45 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$e*$28,x - //SEG45 main::@2_15 - //SEG46 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG46 main::@2_15 + //SEG47 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$f*$28,x - //SEG47 main::@2_16 - //SEG48 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG48 main::@2_16 + //SEG49 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$10*$28,x - //SEG49 main::@2_17 - //SEG50 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG50 main::@2_17 + //SEG51 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$11*$28,x - //SEG51 main::@2_18 - //SEG52 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG52 main::@2_18 + //SEG53 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$12*$28,x - //SEG53 main::@2_19 - //SEG54 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG54 main::@2_19 + //SEG55 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$13*$28,x - //SEG55 main::@2_20 - //SEG56 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG56 main::@2_20 + //SEG57 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$14*$28,x - //SEG57 main::@2_21 - //SEG58 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG58 main::@2_21 + //SEG59 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$15*$28,x - //SEG59 main::@2_22 - //SEG60 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG60 main::@2_22 + //SEG61 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$16*$28,x - //SEG61 main::@2_23 - //SEG62 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG62 main::@2_23 + //SEG63 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$17*$28,x - //SEG63 main::@2_24 - //SEG64 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG64 main::@2_24 + //SEG65 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#4) ← (byte) main::x#4 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$18*$28,x - //SEG65 main::@3 - //SEG66 [31] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuxx=_inc_vbuxx + //SEG66 main::@3 + //SEG67 [31] (byte) main::x#1 ← ++ (byte) main::x#4 -- vbuxx=_inc_vbuxx inx - //SEG67 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG68 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG68 main::@return - //SEG69 [33] return + //SEG69 main::@return + //SEG70 [33] return rts } diff --git a/src/test/ref/unroll-screenfill-while.asm b/src/test/ref/unroll-screenfill-while.asm index b1518f32e..67c273195 100644 --- a/src/test/ref/unroll-screenfill-while.asm +++ b/src/test/ref/unroll-screenfill-while.asm @@ -1,7 +1,7 @@ +// Fills the screen using an unrolled inner while()-loop .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Fills the screen using an unrolled inner while()-loop main: { .label SCREEN = $400 ldx #0 diff --git a/src/test/ref/unroll-screenfill-while.log b/src/test/ref/unroll-screenfill-while.log index 759fb4457..6598bafa7 100644 --- a/src/test/ref/unroll-screenfill-while.log +++ b/src/test/ref/unroll-screenfill-while.log @@ -739,232 +739,233 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::x#5 main::x#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using an unrolled inner while()-loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Fills the screen using an unrolled inner while()-loop +//SEG10 main main: { .label SCREEN = $400 .label x = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::x#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::x#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG13 [5] phi (byte) main::x#5 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::x#5 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b3 - //SEG15 main::@3 + //SEG16 main::@3 b3: - //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG17 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN,y jmp b3_1 - //SEG17 main::@3_1 + //SEG18 main::@3_1 b3_1: - //SEG18 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG19 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+1*$28,y jmp b3_2 - //SEG19 main::@3_2 + //SEG20 main::@3_2 b3_2: - //SEG20 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG21 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+2*$28,y jmp b3_3 - //SEG21 main::@3_3 + //SEG22 main::@3_3 b3_3: - //SEG22 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG23 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+3*$28,y jmp b3_4 - //SEG23 main::@3_4 + //SEG24 main::@3_4 b3_4: - //SEG24 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG25 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+4*$28,y jmp b3_5 - //SEG25 main::@3_5 + //SEG26 main::@3_5 b3_5: - //SEG26 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG27 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+5*$28,y jmp b3_6 - //SEG27 main::@3_6 + //SEG28 main::@3_6 b3_6: - //SEG28 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG29 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+6*$28,y jmp b3_7 - //SEG29 main::@3_7 + //SEG30 main::@3_7 b3_7: - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+7*$28,y jmp b3_8 - //SEG31 main::@3_8 + //SEG32 main::@3_8 b3_8: - //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG33 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+8*$28,y jmp b3_9 - //SEG33 main::@3_9 + //SEG34 main::@3_9 b3_9: - //SEG34 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG35 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+9*$28,y jmp b3_10 - //SEG35 main::@3_10 + //SEG36 main::@3_10 b3_10: - //SEG36 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG37 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$a*$28,y jmp b3_11 - //SEG37 main::@3_11 + //SEG38 main::@3_11 b3_11: - //SEG38 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG39 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$b*$28,y jmp b3_12 - //SEG39 main::@3_12 + //SEG40 main::@3_12 b3_12: - //SEG40 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG41 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$c*$28,y jmp b3_13 - //SEG41 main::@3_13 + //SEG42 main::@3_13 b3_13: - //SEG42 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG43 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$d*$28,y jmp b3_14 - //SEG43 main::@3_14 + //SEG44 main::@3_14 b3_14: - //SEG44 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG45 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$e*$28,y jmp b3_15 - //SEG45 main::@3_15 + //SEG46 main::@3_15 b3_15: - //SEG46 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG47 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$f*$28,y jmp b3_16 - //SEG47 main::@3_16 + //SEG48 main::@3_16 b3_16: - //SEG48 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG49 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$10*$28,y jmp b3_17 - //SEG49 main::@3_17 + //SEG50 main::@3_17 b3_17: - //SEG50 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG51 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$11*$28,y jmp b3_18 - //SEG51 main::@3_18 + //SEG52 main::@3_18 b3_18: - //SEG52 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG53 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$12*$28,y jmp b3_19 - //SEG53 main::@3_19 + //SEG54 main::@3_19 b3_19: - //SEG54 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG55 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$13*$28,y jmp b3_20 - //SEG55 main::@3_20 + //SEG56 main::@3_20 b3_20: - //SEG56 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG57 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$14*$28,y jmp b3_21 - //SEG57 main::@3_21 + //SEG58 main::@3_21 b3_21: - //SEG58 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG59 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$15*$28,y jmp b3_22 - //SEG59 main::@3_22 + //SEG60 main::@3_22 b3_22: - //SEG60 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG61 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$16*$28,y jmp b3_23 - //SEG61 main::@3_23 + //SEG62 main::@3_23 b3_23: - //SEG62 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG63 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$17*$28,y jmp b3_24 - //SEG63 main::@3_24 + //SEG64 main::@3_24 b3_24: - //SEG64 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG65 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuz1=vbuz1 ldy x tya sta SCREEN+$18*$28,y jmp b4 - //SEG65 main::@4 + //SEG66 main::@4 b4: - //SEG66 [31] (byte) main::x#1 ← ++ (byte) main::x#5 -- vbuz1=_inc_vbuz1 + //SEG67 [31] (byte) main::x#1 ← ++ (byte) main::x#5 -- vbuz1=_inc_vbuz1 inc x - //SEG67 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG68 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b1_from_b4 jmp breturn - //SEG68 main::@return + //SEG69 main::@return breturn: - //SEG69 [33] return + //SEG70 [33] return rts } @@ -979,204 +980,205 @@ Uplifting [main] best 2723 combination reg byte x [ main::x#5 main::x#1 ] Uplifting [] best 2723 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using an unrolled inner while()-loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Fills the screen using an unrolled inner while()-loop +//SEG10 main main: { .label SCREEN = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::x#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG12 [5] phi (byte) main::x#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG13 [5] phi (byte) main::x#5 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::x#5 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: jmp b3 - //SEG15 main::@3 + //SEG16 main::@3 b3: - //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG17 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x jmp b3_1 - //SEG17 main::@3_1 + //SEG18 main::@3_1 b3_1: - //SEG18 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG19 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+1*$28,x jmp b3_2 - //SEG19 main::@3_2 + //SEG20 main::@3_2 b3_2: - //SEG20 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG21 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+2*$28,x jmp b3_3 - //SEG21 main::@3_3 + //SEG22 main::@3_3 b3_3: - //SEG22 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG23 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+3*$28,x jmp b3_4 - //SEG23 main::@3_4 + //SEG24 main::@3_4 b3_4: - //SEG24 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG25 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+4*$28,x jmp b3_5 - //SEG25 main::@3_5 + //SEG26 main::@3_5 b3_5: - //SEG26 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG27 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+5*$28,x jmp b3_6 - //SEG27 main::@3_6 + //SEG28 main::@3_6 b3_6: - //SEG28 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG29 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+6*$28,x jmp b3_7 - //SEG29 main::@3_7 + //SEG30 main::@3_7 b3_7: - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+7*$28,x jmp b3_8 - //SEG31 main::@3_8 + //SEG32 main::@3_8 b3_8: - //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG33 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+8*$28,x jmp b3_9 - //SEG33 main::@3_9 + //SEG34 main::@3_9 b3_9: - //SEG34 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG35 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+9*$28,x jmp b3_10 - //SEG35 main::@3_10 + //SEG36 main::@3_10 b3_10: - //SEG36 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG37 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$a*$28,x jmp b3_11 - //SEG37 main::@3_11 + //SEG38 main::@3_11 b3_11: - //SEG38 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG39 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$b*$28,x jmp b3_12 - //SEG39 main::@3_12 + //SEG40 main::@3_12 b3_12: - //SEG40 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG41 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$c*$28,x jmp b3_13 - //SEG41 main::@3_13 + //SEG42 main::@3_13 b3_13: - //SEG42 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG43 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$d*$28,x jmp b3_14 - //SEG43 main::@3_14 + //SEG44 main::@3_14 b3_14: - //SEG44 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG45 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$e*$28,x jmp b3_15 - //SEG45 main::@3_15 + //SEG46 main::@3_15 b3_15: - //SEG46 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG47 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$f*$28,x jmp b3_16 - //SEG47 main::@3_16 + //SEG48 main::@3_16 b3_16: - //SEG48 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG49 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$10*$28,x jmp b3_17 - //SEG49 main::@3_17 + //SEG50 main::@3_17 b3_17: - //SEG50 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG51 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$11*$28,x jmp b3_18 - //SEG51 main::@3_18 + //SEG52 main::@3_18 b3_18: - //SEG52 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG53 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$12*$28,x jmp b3_19 - //SEG53 main::@3_19 + //SEG54 main::@3_19 b3_19: - //SEG54 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG55 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$13*$28,x jmp b3_20 - //SEG55 main::@3_20 + //SEG56 main::@3_20 b3_20: - //SEG56 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG57 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$14*$28,x jmp b3_21 - //SEG57 main::@3_21 + //SEG58 main::@3_21 b3_21: - //SEG58 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG59 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$15*$28,x jmp b3_22 - //SEG59 main::@3_22 + //SEG60 main::@3_22 b3_22: - //SEG60 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG61 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$16*$28,x jmp b3_23 - //SEG61 main::@3_23 + //SEG62 main::@3_23 b3_23: - //SEG62 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG63 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$17*$28,x jmp b3_24 - //SEG63 main::@3_24 + //SEG64 main::@3_24 b3_24: - //SEG64 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG65 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$18*$28,x jmp b4 - //SEG65 main::@4 + //SEG66 main::@4 b4: - //SEG66 [31] (byte) main::x#1 ← ++ (byte) main::x#5 -- vbuxx=_inc_vbuxx + //SEG67 [31] (byte) main::x#1 ← ++ (byte) main::x#5 -- vbuxx=_inc_vbuxx inx - //SEG67 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG68 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b4 jmp breturn - //SEG68 main::@return + //SEG69 main::@return breturn: - //SEG69 [33] return + //SEG70 [33] return rts } @@ -1304,137 +1306,138 @@ reg byte x [ main::x#5 main::x#1 ] FINAL ASSEMBLER Score: 1841 -//SEG0 Basic Upstart +//SEG0 File Comments +// Fills the screen using an unrolled inner while()-loop +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Fills the screen using an unrolled inner while()-loop +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::x#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::x#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] - //SEG13 [5] phi (byte) main::x#5 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy - //SEG14 main::@1 - //SEG15 main::@3 + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG14 [5] phi (byte) main::x#5 = (byte) main::x#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG15 main::@1 + //SEG16 main::@3 b3: - //SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG17 [6] *((const byte*) main::SCREEN#0 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN,x - //SEG17 main::@3_1 - //SEG18 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG18 main::@3_1 + //SEG19 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+1*$28,x - //SEG19 main::@3_2 - //SEG20 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG20 main::@3_2 + //SEG21 [8] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+2*$28,x - //SEG21 main::@3_3 - //SEG22 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG22 main::@3_3 + //SEG23 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+3*$28,x - //SEG23 main::@3_4 - //SEG24 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG24 main::@3_4 + //SEG25 [10] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+4*$28,x - //SEG25 main::@3_5 - //SEG26 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG26 main::@3_5 + //SEG27 [11] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+5*$28,x - //SEG27 main::@3_6 - //SEG28 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG28 main::@3_6 + //SEG29 [12] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+6*$28,x - //SEG29 main::@3_7 - //SEG30 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG30 main::@3_7 + //SEG31 [13] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+7*$28,x - //SEG31 main::@3_8 - //SEG32 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG32 main::@3_8 + //SEG33 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+8*$28,x - //SEG33 main::@3_9 - //SEG34 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG34 main::@3_9 + //SEG35 [15] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+9*$28,x - //SEG35 main::@3_10 - //SEG36 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG36 main::@3_10 + //SEG37 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 10*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$a*$28,x - //SEG37 main::@3_11 - //SEG38 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG38 main::@3_11 + //SEG39 [17] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 11*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$b*$28,x - //SEG39 main::@3_12 - //SEG40 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG40 main::@3_12 + //SEG41 [18] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 12*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$c*$28,x - //SEG41 main::@3_13 - //SEG42 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG42 main::@3_13 + //SEG43 [19] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 13*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$d*$28,x - //SEG43 main::@3_14 - //SEG44 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG44 main::@3_14 + //SEG45 [20] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$e*$28,x - //SEG45 main::@3_15 - //SEG46 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG46 main::@3_15 + //SEG47 [21] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 15*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$f*$28,x - //SEG47 main::@3_16 - //SEG48 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG48 main::@3_16 + //SEG49 [22] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$10*$28,x - //SEG49 main::@3_17 - //SEG50 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG50 main::@3_17 + //SEG51 [23] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 17*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$11*$28,x - //SEG51 main::@3_18 - //SEG52 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG52 main::@3_18 + //SEG53 [24] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 18*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$12*$28,x - //SEG53 main::@3_19 - //SEG54 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG54 main::@3_19 + //SEG55 [25] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$13*$28,x - //SEG55 main::@3_20 - //SEG56 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG56 main::@3_20 + //SEG57 [26] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$14*$28,x - //SEG57 main::@3_21 - //SEG58 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG58 main::@3_21 + //SEG59 [27] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 21*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$15*$28,x - //SEG59 main::@3_22 - //SEG60 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG60 main::@3_22 + //SEG61 [28] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 22*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$16*$28,x - //SEG61 main::@3_23 - //SEG62 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG62 main::@3_23 + //SEG63 [29] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 23*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$17*$28,x - //SEG63 main::@3_24 - //SEG64 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx + //SEG64 main::@3_24 + //SEG65 [30] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 24*(byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) main::x#5) ← (byte) main::x#5 -- pbuc1_derefidx_vbuxx=vbuxx txa sta SCREEN+$18*$28,x - //SEG65 main::@4 - //SEG66 [31] (byte) main::x#1 ← ++ (byte) main::x#5 -- vbuxx=_inc_vbuxx + //SEG66 main::@4 + //SEG67 [31] (byte) main::x#1 ← ++ (byte) main::x#5 -- vbuxx=_inc_vbuxx inx - //SEG67 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG68 [32] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b3 - //SEG68 main::@return - //SEG69 [33] return + //SEG69 main::@return + //SEG70 [33] return rts } diff --git a/src/test/ref/unused-method.log b/src/test/ref/unused-method.log index c3e892c5b..5badf52c1 100644 --- a/src/test/ref/unused-method.log +++ b/src/test/ref/unused-method.log @@ -71,35 +71,36 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -114,35 +115,36 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] +//SEG7 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -178,25 +180,26 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [3] phi from @2 to @end [phi:@2->@end] -//SEG7 @end -//SEG8 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main main: { .label screen = $400 - //SEG9 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) main::screen#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta screen - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/unused-vars.asm b/src/test/ref/unused-vars.asm index 2933a6946..3c1207f70 100644 --- a/src/test/ref/unused-vars.asm +++ b/src/test/ref/unused-vars.asm @@ -1,7 +1,7 @@ +// used vars .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - // used vars .label SCREEN = $400 main: { .const col = 2 diff --git a/src/test/ref/unused-vars.log b/src/test/ref/unused-vars.log index 4a6d67f14..8c9a9d0c2 100644 --- a/src/test/ref/unused-vars.log +++ b/src/test/ref/unused-vars.log @@ -325,76 +325,77 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// used vars +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // used vars +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const col = 2 .label COLS = $d800 .label i = 2 - //SEG10 [5] call s - //SEG11 [12] phi from main to s [phi:main->s] + //SEG11 [5] call s + //SEG12 [12] phi from main to s [phi:main->s] s_from_main: jsr s - //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: - //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG14 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG15 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] *((const byte*) main::COLS#0 + (byte) main::i#2) ← (const byte) main::col#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG18 [7] *((const byte*) main::COLS#0 + (byte) main::i#2) ← (const byte) main::col#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #col sta COLS,y - //SEG18 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ← ++++(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG19 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ← ++++(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #(2>>1)+1+1 sta SCREEN,y - //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG20 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG21 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$65 bne b1_from_b1 jmp breturn - //SEG21 main::@return + //SEG22 main::@return breturn: - //SEG22 [11] return + //SEG23 [11] return rts } -//SEG23 s +//SEG24 s s: { jmp breturn - //SEG24 s::@return + //SEG25 s::@return breturn: - //SEG25 [13] return + //SEG26 [13] return rts } @@ -416,71 +417,72 @@ Uplifting [s] best 375 combination Uplifting [] best 375 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// used vars +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels - // used vars +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .const col = 2 .label COLS = $d800 - //SEG10 [5] call s - //SEG11 [12] phi from main to s [phi:main->s] + //SEG11 [5] call s + //SEG12 [12] phi from main to s [phi:main->s] s_from_main: jsr s - //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: - //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG14 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG15 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [7] *((const byte*) main::COLS#0 + (byte) main::i#2) ← (const byte) main::col#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG18 [7] *((const byte*) main::COLS#0 + (byte) main::i#2) ← (const byte) main::col#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #col sta COLS,x - //SEG18 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ← ++++(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG19 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ← ++++(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuxx=vbuc2 lda #(2>>1)+1+1 sta SCREEN,x - //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG20 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG21 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1_from_b1 jmp breturn - //SEG21 main::@return + //SEG22 main::@return breturn: - //SEG22 [11] return + //SEG23 [11] return rts } -//SEG23 s +//SEG24 s s: { jmp breturn - //SEG24 s::@return + //SEG25 s::@return breturn: - //SEG25 [13] return + //SEG26 [13] return rts } @@ -550,53 +552,54 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 243 -//SEG0 Basic Upstart +//SEG0 File Comments +// used vars +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels - // used vars +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .const col = 2 .label COLS = $d800 - //SEG10 [5] call s - //SEG11 [12] phi from main to s [phi:main->s] + //SEG11 [5] call s + //SEG12 [12] phi from main to s [phi:main->s] jsr s - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG14 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG15 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG16 main::@1 + //SEG15 [6] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG16 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [7] *((const byte*) main::COLS#0 + (byte) main::i#2) ← (const byte) main::col#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG18 [7] *((const byte*) main::COLS#0 + (byte) main::i#2) ← (const byte) main::col#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #col sta COLS,x - //SEG18 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ← ++++(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG19 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ← ++++(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuc1_derefidx_vbuxx=vbuc2 lda #(2>>1)+1+1 sta SCREEN,x - //SEG19 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG20 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG20 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG21 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1 - //SEG21 main::@return - //SEG22 [11] return + //SEG22 main::@return + //SEG23 [11] return rts } -//SEG23 s +//SEG24 s s: { - //SEG24 s::@return - //SEG25 [13] return + //SEG25 s::@return + //SEG26 [13] return rts } diff --git a/src/test/ref/unusedblockproblem.asm b/src/test/ref/unusedblockproblem.asm index 2b3b3747e..19dcaeefc 100644 --- a/src/test/ref/unusedblockproblem.asm +++ b/src/test/ref/unusedblockproblem.asm @@ -1,7 +1,7 @@ +// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table) .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table) main: { .label SCREEN = $400 b2: diff --git a/src/test/ref/unusedblockproblem.log b/src/test/ref/unusedblockproblem.log index e879b1acc..db5e9ad57 100644 --- a/src/test/ref/unusedblockproblem.log +++ b/src/test/ref/unusedblockproblem.log @@ -126,35 +126,36 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table) +//SEG10 main main: { .label SCREEN = $400 jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) main::SCREEN#0) ← ++ *((const byte*) main::SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← ++ *((const byte*) main::SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN jmp b2 } @@ -169,35 +170,36 @@ Uplifting [main] best 132 combination Uplifting [] best 132 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table) +//SEG10 main main: { .label SCREEN = $400 jmp b2 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) main::SCREEN#0) ← ++ *((const byte*) main::SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← ++ *((const byte*) main::SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN jmp b2 } @@ -235,25 +237,26 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 90 -//SEG0 Basic Upstart +//SEG0 File Comments +// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table) +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label SCREEN = $400 - //SEG10 main::@2 + //SEG11 main::@2 b2: - //SEG11 [5] *((const byte*) main::SCREEN#0) ← ++ *((const byte*) main::SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG12 [5] *((const byte*) main::SCREEN#0) ← ++ *((const byte*) main::SCREEN#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN jmp b2 } diff --git a/src/test/ref/useglobal.asm b/src/test/ref/useglobal.asm index eadb2ce4e..7f08d6619 100644 --- a/src/test/ref/useglobal.asm +++ b/src/test/ref/useglobal.asm @@ -1,3 +1,4 @@ +// Tests procedures using global variables (should not fail) .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/useglobal.log b/src/test/ref/useglobal.log index 0465c50cd..bba0524d1 100644 --- a/src/test/ref/useglobal.log +++ b/src/test/ref/useglobal.log @@ -76,35 +76,37 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests procedures using global variables (should not fail) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -119,35 +121,37 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests procedures using global variables (should not fail) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -183,25 +187,27 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +// Tests procedures using global variables (should not fail) +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/var-forward-problem.asm b/src/test/ref/var-forward-problem.asm index 0b893497e..5dec9c503 100644 --- a/src/test/ref/var-forward-problem.asm +++ b/src/test/ref/var-forward-problem.asm @@ -1,9 +1,9 @@ +// Illustrates the problem with variable forward references not working .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" .label screen = $400 .const b = 'a' -// Illustrates the problem with variable forward references not working main: { lda #b sta screen diff --git a/src/test/ref/var-forward-problem.log b/src/test/ref/var-forward-problem.log index 75ced20de..c78f5b371 100644 --- a/src/test/ref/var-forward-problem.log +++ b/src/test/ref/var-forward-problem.log @@ -75,37 +75,38 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates the problem with variable forward references not working +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 .const b = 'a' -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Illustrates the problem with variable forward references not working +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (const byte) b#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (const byte) b#0 -- _deref_pbuc1=vbuc2 lda #b sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -120,37 +121,38 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates the problem with variable forward references not working +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 .const b = 'a' -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main -// Illustrates the problem with variable forward references not working +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (const byte) b#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (const byte) b#0 -- _deref_pbuc1=vbuc2 lda #b sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -188,27 +190,28 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +// Illustrates the problem with variable forward references not working +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 .const b = 'a' -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main -// Illustrates the problem with variable forward references not working +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (const byte) b#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (const byte) b#0 -- _deref_pbuc1=vbuc2 lda #b sta screen - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/var-init-problem.asm b/src/test/ref/var-init-problem.asm index 50225daec..f31b718b4 100644 --- a/src/test/ref/var-init-problem.asm +++ b/src/test/ref/var-init-problem.asm @@ -1,3 +1,4 @@ +// Variables without initialization causes problems when compiling .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/var-init-problem.log b/src/test/ref/var-init-problem.log index 5b20bee8c..fef94283d 100644 --- a/src/test/ref/var-init-problem.log +++ b/src/test/ref/var-init-problem.log @@ -87,35 +87,37 @@ Initial phi equivalence classes Complete equivalence classes INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// Variables without initialization causes problems when compiling +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 lda #'a' sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -130,35 +132,37 @@ Uplifting [main] best 27 combination Uplifting [] best 27 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Variables without initialization causes problems when compiling +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main +//SEG6 [2] call main jsr main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 lda #'a' sta screen jmp breturn - //SEG10 main::@return + //SEG11 main::@return breturn: - //SEG11 [5] return + //SEG12 [5] return rts } @@ -194,25 +198,27 @@ FINAL SYMBOL TABLE FINAL ASSEMBLER Score: 12 -//SEG0 Basic Upstart +//SEG0 File Comments +// Variables without initialization causes problems when compiling +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label screen = $400 -//SEG2 @begin -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] -//SEG4 @1 -//SEG5 [2] call main -//SEG6 [3] phi from @1 to @end [phi:@1->@end] -//SEG7 @end -//SEG8 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG9 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) screen#0) ← (byte) 'a' -- _deref_pbuc1=vbuc2 lda #'a' sta screen - //SEG10 main::@return - //SEG11 [5] return + //SEG11 main::@return + //SEG12 [5] return rts } diff --git a/src/test/ref/var-register.log b/src/test/ref/var-register.log index 1e1ffaf16..7cf4ccde8 100644 --- a/src/test/ref/var-register.log +++ b/src/test/ref/var-register.log @@ -268,119 +268,120 @@ Allocated zp ZP_BYTE:3 [ main::a#2 main::a#1 ] Allocated zp ZP_BYTE:4 [ print::val#0 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label a = 3 .label y = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::x#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG12 [5] phi (byte) main::x#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG13 [5] phi (byte) main::x#7 = (byte) main::x#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::x#7 = (byte) main::x#1 [phi:main::@5->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta y jmp b2 - //SEG17 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG18 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG18 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@4->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG21 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + //SEG22 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 lda #0 sta a jmp b3 - //SEG22 [7] phi from main::@7 to main::@3 [phi:main::@7->main::@3] + //SEG23 [7] phi from main::@7 to main::@3 [phi:main::@7->main::@3] b3_from_b7: - //SEG23 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@3#0] -- register_copy + //SEG24 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@3#0] -- register_copy jmp b3 - //SEG24 main::@3 + //SEG25 main::@3 b3: - //SEG25 [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#7 -- vbuaa=vbuz1_plus_vbuyy + //SEG26 [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#7 -- vbuaa=vbuz1_plus_vbuyy tya clc adc a - //SEG26 [9] (byte) print::idx#0 ← (byte) main::y#4 -- vbuxx=vbuz1 + //SEG27 [9] (byte) print::idx#0 ← (byte) main::y#4 -- vbuxx=vbuz1 ldx y - //SEG27 [10] (byte) print::val#0 ← (byte) main::val1#0 -- vbuz1=vbuaa + //SEG28 [10] (byte) print::val#0 ← (byte) main::val1#0 -- vbuz1=vbuaa sta print.val - //SEG28 [11] call print + //SEG29 [11] call print jsr print jmp b7 - //SEG29 main::@7 + //SEG30 main::@7 b7: - //SEG30 [12] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuz1=_inc_vbuz1 + //SEG31 [12] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuz1=_inc_vbuz1 inc a - //SEG31 [13] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG32 [13] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda a cmp #$65 bne b3_from_b7 jmp b4 - //SEG32 main::@4 + //SEG33 main::@4 b4: - //SEG33 [14] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuz1=_inc_vbuz1 + //SEG34 [14] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG34 [15] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG35 [15] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$65 bne b2_from_b4 jmp b5 - //SEG35 main::@5 + //SEG36 main::@5 b5: - //SEG36 [16] (byte) main::x#1 ← ++ (byte) main::x#7 -- vbuyy=_inc_vbuyy + //SEG37 [16] (byte) main::x#1 ← ++ (byte) main::x#7 -- vbuyy=_inc_vbuyy iny - //SEG37 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG38 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$65 bne b1_from_b5 jmp breturn - //SEG38 main::@return + //SEG39 main::@return breturn: - //SEG39 [18] return + //SEG40 [18] return rts } -//SEG40 print +//SEG41 print print: { .label SCREEN = $400 .label val = 4 - //SEG41 [19] *((const byte*) print::SCREEN#0 + (byte) print::idx#0) ← (byte) print::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG42 [19] *((const byte*) print::SCREEN#0 + (byte) print::idx#0) ← (byte) print::val#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda val sta SCREEN,x jmp breturn - //SEG42 print::@return + //SEG43 print::@return breturn: - //SEG43 [20] return + //SEG44 [20] return rts } @@ -411,112 +412,113 @@ Uplifting [main] best 44457 combination zp ZP_BYTE:3 [ main::a#2 main::a#1 ] Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::a#2 main::a#1 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] b2_from_bbegin: jmp b2 -//SEG4 @2 +//SEG5 @2 b2: -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] main_from_b2: jsr main -//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] bend_from_b2: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label a = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::x#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG12 [5] phi (byte) main::x#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG13 [5] phi (byte) main::x#7 = (byte) main::x#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::x#7 = (byte) main::x#1 [phi:main::@5->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG17 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG17 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG18 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG18 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@4->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG21 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + //SEG22 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 lda #0 sta a jmp b3 - //SEG22 [7] phi from main::@7 to main::@3 [phi:main::@7->main::@3] + //SEG23 [7] phi from main::@7 to main::@3 [phi:main::@7->main::@3] b3_from_b7: - //SEG23 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@3#0] -- register_copy + //SEG24 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@3#0] -- register_copy jmp b3 - //SEG24 main::@3 + //SEG25 main::@3 b3: - //SEG25 [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#7 -- vbuaa=vbuz1_plus_vbuyy + //SEG26 [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#7 -- vbuaa=vbuz1_plus_vbuyy tya clc adc a - //SEG26 [9] (byte) print::idx#0 ← (byte) main::y#4 - //SEG27 [10] (byte) print::val#0 ← (byte) main::val1#0 - //SEG28 [11] call print + //SEG27 [9] (byte) print::idx#0 ← (byte) main::y#4 + //SEG28 [10] (byte) print::val#0 ← (byte) main::val1#0 + //SEG29 [11] call print jsr print jmp b7 - //SEG29 main::@7 + //SEG30 main::@7 b7: - //SEG30 [12] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuz1=_inc_vbuz1 + //SEG31 [12] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuz1=_inc_vbuz1 inc a - //SEG31 [13] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG32 [13] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda a cmp #$65 bne b3_from_b7 jmp b4 - //SEG32 main::@4 + //SEG33 main::@4 b4: - //SEG33 [14] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuxx=_inc_vbuxx + //SEG34 [14] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuxx=_inc_vbuxx inx - //SEG34 [15] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG35 [15] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b2_from_b4 jmp b5 - //SEG35 main::@5 + //SEG36 main::@5 b5: - //SEG36 [16] (byte) main::x#1 ← ++ (byte) main::x#7 -- vbuyy=_inc_vbuyy + //SEG37 [16] (byte) main::x#1 ← ++ (byte) main::x#7 -- vbuyy=_inc_vbuyy iny - //SEG37 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG38 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$65 bne b1_from_b5 jmp breturn - //SEG38 main::@return + //SEG39 main::@return breturn: - //SEG39 [18] return + //SEG40 [18] return rts } -//SEG40 print +//SEG41 print print: { .label SCREEN = $400 - //SEG41 [19] *((const byte*) print::SCREEN#0 + (byte) print::idx#0) ← (byte) print::val#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG42 [19] *((const byte*) print::SCREEN#0 + (byte) print::idx#0) ← (byte) print::val#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x jmp breturn - //SEG42 print::@return + //SEG43 print::@return breturn: - //SEG43 [20] return + //SEG44 [20] return rts } @@ -606,81 +608,82 @@ reg byte a [ print::val#0 ] FINAL ASSEMBLER Score: 31452 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//SEG3 [1] phi from @begin to @2 [phi:@begin->@2] -//SEG4 @2 -//SEG5 [2] call main -//SEG6 [4] phi from @2 to main [phi:@2->main] -//SEG7 [3] phi from @2 to @end [phi:@2->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main +//SEG7 [4] phi from @2 to main [phi:@2->main] +//SEG8 [3] phi from @2 to @end [phi:@2->@end] +//SEG9 @end +//SEG10 main main: { .label a = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::x#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::x#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG13 [5] phi (byte) main::x#7 = (byte) main::x#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG14 [5] phi (byte) main::x#7 = (byte) main::x#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [6] phi (byte) main::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG17 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] - //SEG18 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@4->main::@2#0] -- register_copy - //SEG19 main::@2 + //SEG18 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG19 [6] phi (byte) main::y#4 = (byte) main::y#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG20 main::@2 b2: - //SEG20 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG21 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + //SEG21 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG22 [7] phi (byte) main::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 lda #0 sta a - //SEG22 [7] phi from main::@7 to main::@3 [phi:main::@7->main::@3] - //SEG23 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@3#0] -- register_copy - //SEG24 main::@3 + //SEG23 [7] phi from main::@7 to main::@3 [phi:main::@7->main::@3] + //SEG24 [7] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@3#0] -- register_copy + //SEG25 main::@3 b3: - //SEG25 [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#7 -- vbuaa=vbuz1_plus_vbuyy + //SEG26 [8] (byte) main::val1#0 ← (byte) main::a#2 + (byte) main::x#7 -- vbuaa=vbuz1_plus_vbuyy tya clc adc a - //SEG26 [9] (byte) print::idx#0 ← (byte) main::y#4 - //SEG27 [10] (byte) print::val#0 ← (byte) main::val1#0 - //SEG28 [11] call print + //SEG27 [9] (byte) print::idx#0 ← (byte) main::y#4 + //SEG28 [10] (byte) print::val#0 ← (byte) main::val1#0 + //SEG29 [11] call print jsr print - //SEG29 main::@7 - //SEG30 [12] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuz1=_inc_vbuz1 + //SEG30 main::@7 + //SEG31 [12] (byte) main::a#1 ← ++ (byte) main::a#2 -- vbuz1=_inc_vbuz1 inc a - //SEG31 [13] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG32 [13] if((byte) main::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda a cmp #$65 bne b3 - //SEG32 main::@4 - //SEG33 [14] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuxx=_inc_vbuxx + //SEG33 main::@4 + //SEG34 [14] (byte) main::y#1 ← ++ (byte) main::y#4 -- vbuxx=_inc_vbuxx inx - //SEG34 [15] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG35 [15] if((byte) main::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b2 - //SEG35 main::@5 - //SEG36 [16] (byte) main::x#1 ← ++ (byte) main::x#7 -- vbuyy=_inc_vbuyy + //SEG36 main::@5 + //SEG37 [16] (byte) main::x#1 ← ++ (byte) main::x#7 -- vbuyy=_inc_vbuyy iny - //SEG37 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG38 [17] if((byte) main::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 101) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #$65 bne b1 - //SEG38 main::@return - //SEG39 [18] return + //SEG39 main::@return + //SEG40 [18] return rts } -//SEG40 print +//SEG41 print print: { .label SCREEN = $400 - //SEG41 [19] *((const byte*) print::SCREEN#0 + (byte) print::idx#0) ← (byte) print::val#0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG42 [19] *((const byte*) print::SCREEN#0 + (byte) print::idx#0) ← (byte) print::val#0 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG42 print::@return - //SEG43 [20] return + //SEG43 print::@return + //SEG44 [20] return rts } diff --git a/src/test/ref/voronoi.asm b/src/test/ref/voronoi.asm index ab22aec4e..76354b30b 100644 --- a/src/test/ref/voronoi.asm +++ b/src/test/ref/voronoi.asm @@ -1,3 +1,4 @@ +// The screen .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" diff --git a/src/test/ref/voronoi.log b/src/test/ref/voronoi.log index 9966a136b..4ceda3a3d 100644 --- a/src/test/ref/voronoi.log +++ b/src/test/ref/voronoi.log @@ -1198,57 +1198,59 @@ Allocated zp ZP_BYTE:26 [ findcol::$8 ] Allocated zp ZP_BYTE:27 [ findcol::$10 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +// The screen +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label COLORS = $d800 .const FILL = $e6 .const numpoints = 6 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call initscreen - //SEG11 [76] phi from main to initscreen [phi:main->initscreen] + //SEG11 [5] call initscreen + //SEG12 [76] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen - //SEG12 [6] phi from main main::@4 to main::@1 [phi:main/main::@4->main::@1] + //SEG13 [6] phi from main main::@4 to main::@1 [phi:main/main::@4->main::@1] b1_from_main: b1_from_b4: jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [7] call render - //SEG15 [36] phi from main::@1 to render [phi:main::@1->render] + //SEG15 [7] call render + //SEG16 [36] phi from main::@1 to render [phi:main::@1->render] render_from_b1: jsr render - //SEG16 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG17 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG17 main::@4 + //SEG18 main::@4 b4: - //SEG18 [9] call animate + //SEG19 [9] call animate jsr animate jmp b1_from_b4 } -//SEG19 animate +//SEG20 animate animate: { .label _0 = $d .label _3 = $e @@ -1257,201 +1259,201 @@ animate: { .label _12 = $11 .label _15 = $12 .label _18 = $13 - //SEG20 [10] (byte/signed word/word/dword/signed dword~) animate::$0 ← *((const byte[]) XPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_plus_1 + //SEG21 [10] (byte/signed word/word/dword/signed dword~) animate::$0 ← *((const byte[]) XPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_plus_1 ldy XPOS iny sty _0 - //SEG21 [11] *((const byte[]) XPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$0 -- _deref_pbuc1=vbuz1 + //SEG22 [11] *((const byte[]) XPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$0 -- _deref_pbuc1=vbuz1 lda _0 sta XPOS - //SEG22 [12] if(*((const byte[]) XPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG23 [12] if(*((const byte[]) XPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 lda XPOS cmp #$28 bne b1 jmp b7 - //SEG23 animate::@7 + //SEG24 animate::@7 b7: - //SEG24 [13] *((const byte[]) XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte[]) XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta XPOS jmp b1 - //SEG25 animate::@1 + //SEG26 animate::@1 b1: - //SEG26 [14] (byte/signed word/word/dword/signed dword~) animate::$3 ← *((const byte[]) YPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_plus_1 + //SEG27 [14] (byte/signed word/word/dword/signed dword~) animate::$3 ← *((const byte[]) YPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_plus_1 ldy YPOS iny sty _3 - //SEG27 [15] *((const byte[]) YPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$3 -- _deref_pbuc1=vbuz1 + //SEG28 [15] *((const byte[]) YPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$3 -- _deref_pbuc1=vbuz1 lda _3 sta YPOS - //SEG28 [16] if(*((const byte[]) YPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG29 [16] if(*((const byte[]) YPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS cmp #$19 bne b2 jmp b8 - //SEG29 animate::@8 + //SEG30 animate::@8 b8: - //SEG30 [17] *((const byte[]) YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG31 [17] *((const byte[]) YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta YPOS jmp b2 - //SEG31 animate::@2 + //SEG32 animate::@2 b2: - //SEG32 [18] (byte/signed word/word/dword/signed dword~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_minus_1 + //SEG33 [18] (byte/signed word/word/dword/signed dword~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_minus_1 ldx XPOS+1 dex stx _6 - //SEG33 [19] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed word/word/dword/signed dword~) animate::$6 -- _deref_pbuc1=vbuz1 + //SEG34 [19] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed word/word/dword/signed dword~) animate::$6 -- _deref_pbuc1=vbuz1 lda _6 sta XPOS+1 - //SEG34 [20] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG35 [20] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda XPOS+1 cmp #$ff bne b3 jmp b9 - //SEG35 animate::@9 + //SEG36 animate::@9 b9: - //SEG36 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 40 -- _deref_pbuc1=vbuc2 + //SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 40 -- _deref_pbuc1=vbuc2 lda #$28 sta XPOS+1 jmp b3 - //SEG37 animate::@3 + //SEG38 animate::@3 b3: - //SEG38 [22] (byte/signed word/word/dword/signed dword~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_plus_1 + //SEG39 [22] (byte/signed word/word/dword/signed dword~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_plus_1 ldy YPOS+2 iny sty _9 - //SEG39 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed word/word/dword/signed dword~) animate::$9 -- _deref_pbuc1=vbuz1 + //SEG40 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed word/word/dword/signed dword~) animate::$9 -- _deref_pbuc1=vbuz1 lda _9 sta YPOS+2 - //SEG40 [24] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG41 [24] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+2 cmp #$19 bne b4 jmp b10 - //SEG41 animate::@10 + //SEG42 animate::@10 b10: - //SEG42 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+2 jmp b4 - //SEG43 animate::@4 + //SEG44 animate::@4 b4: - //SEG44 [26] (byte/signed word/word/dword/signed dword~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_minus_1 + //SEG45 [26] (byte/signed word/word/dword/signed dword~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=_deref_pbuc1_minus_1 ldx YPOS+3 dex stx _12 - //SEG45 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$12 -- _deref_pbuc1=vbuz1 + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$12 -- _deref_pbuc1=vbuz1 lda _12 sta YPOS+3 - //SEG46 [28] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@return -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG47 [28] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@return -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+3 cmp #$ff bne breturn jmp b11 - //SEG47 animate::@11 + //SEG48 animate::@11 b11: - //SEG48 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 + //SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 lda #$19 sta YPOS+3 - //SEG49 [30] (byte/signed word/word/dword/signed dword~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=_deref_pbuc1_plus_vbuc2 + //SEG50 [30] (byte/signed word/word/dword/signed dword~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=_deref_pbuc1_plus_vbuc2 lda XPOS+3 clc adc #7 sta _15 - //SEG50 [31] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$15 -- _deref_pbuc1=vbuz1 + //SEG51 [31] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$15 -- _deref_pbuc1=vbuz1 lda _15 sta XPOS+3 - //SEG51 [32] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)<(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@return -- _deref_pbuc1_lt_vbuc2_then_la1 + //SEG52 [32] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)<(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@return -- _deref_pbuc1_lt_vbuc2_then_la1 lda XPOS+3 cmp #$28 bcc breturn jmp b12 - //SEG52 animate::@12 + //SEG53 animate::@12 b12: - //SEG53 [33] (byte/signed word/word/dword/signed dword~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 40 -- vbuz1=_deref_pbuc1_minus_vbuc2 + //SEG54 [33] (byte/signed word/word/dword/signed dword~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 40 -- vbuz1=_deref_pbuc1_minus_vbuc2 lda XPOS+3 sec sbc #$28 sta _18 - //SEG54 [34] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$18 -- _deref_pbuc1=vbuz1 + //SEG55 [34] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$18 -- _deref_pbuc1=vbuz1 lda _18 sta XPOS+3 jmp breturn - //SEG55 animate::@return + //SEG56 animate::@return breturn: - //SEG56 [35] return + //SEG57 [35] return rts } -//SEG57 render +//SEG58 render render: { .label col = $17 .label x = 5 .label colline = 3 .label y = 2 - //SEG58 [37] phi from render to render::@1 [phi:render->render::@1] + //SEG59 [37] phi from render to render::@1 [phi:render->render::@1] b1_from_render: - //SEG59 [37] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 + //SEG60 [37] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 lda #COLORS sta colline+1 - //SEG60 [37] phi (byte) render::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 + //SEG61 [37] phi (byte) render::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG61 [37] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG62 [37] phi from render::@3 to render::@1 [phi:render::@3->render::@1] b1_from_b3: - //SEG62 [37] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy - //SEG63 [37] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy + //SEG63 [37] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG64 [37] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy jmp b1 - //SEG64 render::@1 + //SEG65 render::@1 b1: - //SEG65 [38] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG66 [38] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG66 [38] phi (byte) render::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 + //SEG67 [38] phi (byte) render::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG67 [38] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG68 [38] phi from render::@5 to render::@2 [phi:render::@5->render::@2] b2_from_b5: - //SEG68 [38] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy + //SEG69 [38] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy jmp b2 - //SEG69 render::@2 + //SEG70 render::@2 b2: - //SEG70 [39] (byte) findcol::x#0 ← (byte) render::x#2 -- vbuz1=vbuz2 + //SEG71 [39] (byte) findcol::x#0 ← (byte) render::x#2 -- vbuz1=vbuz2 lda x sta findcol.x - //SEG71 [40] (byte) findcol::y#0 ← (byte) render::y#4 -- vbuz1=vbuz2 + //SEG72 [40] (byte) findcol::y#0 ← (byte) render::y#4 -- vbuz1=vbuz2 lda y sta findcol.y - //SEG72 [41] call findcol - //SEG73 [51] phi from render::@2 to findcol [phi:render::@2->findcol] + //SEG73 [41] call findcol + //SEG74 [51] phi from render::@2 to findcol [phi:render::@2->findcol] findcol_from_b2: jsr findcol - //SEG74 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuz1=vbuz2 + //SEG75 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuz1=vbuz2 lda findcol.return_2 sta findcol.return jmp b5 - //SEG75 render::@5 + //SEG76 render::@5 b5: - //SEG76 [43] (byte) render::col#0 ← (byte) findcol::return#0 -- vbuz1=vbuz2 + //SEG77 [43] (byte) render::col#0 ← (byte) findcol::return#0 -- vbuz1=vbuz2 lda findcol.return sta col - //SEG77 [44] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG78 [44] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy x sta (colline),y - //SEG78 [45] (byte) render::x#1 ← ++ (byte) render::x#2 -- vbuz1=_inc_vbuz1 + //SEG79 [45] (byte) render::x#1 ← ++ (byte) render::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG79 [46] if((byte) render::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG80 [46] if((byte) render::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b2_from_b5 jmp b3 - //SEG80 render::@3 + //SEG81 render::@3 b3: - //SEG81 [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG82 [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda colline clc adc #$28 @@ -1459,19 +1461,19 @@ render: { bcc !+ inc colline+1 !: - //SEG82 [48] (byte) render::y#1 ← ++ (byte) render::y#4 -- vbuz1=_inc_vbuz1 + //SEG83 [48] (byte) render::y#1 ← ++ (byte) render::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG83 [49] if((byte) render::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG84 [49] if((byte) render::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b3 jmp breturn - //SEG84 render::@return + //SEG85 render::@return breturn: - //SEG85 [50] return + //SEG86 [50] return rts } -//SEG86 findcol +//SEG87 findcol findcol: { .label _8 = $1a .label _10 = $1b @@ -1490,189 +1492,189 @@ findcol: { .label mindiff = 7 .label mindiff_11 = $a .label mindiff_15 = $a - //SEG87 [52] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG88 [52] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG88 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuz1=vbuc1 + //SEG89 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuz1=vbuc1 lda #0 sta mincol - //SEG89 [52] phi (byte) findcol::mindiff#10 = (byte/word/signed word/dword/signed dword) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 + //SEG90 [52] phi (byte) findcol::mindiff#10 = (byte/word/signed word/dword/signed dword) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 lda #$ff sta mindiff - //SEG90 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1 + //SEG91 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG91 findcol::@1 + //SEG92 findcol::@1 b1: - //SEG92 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG93 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda XPOS,y sta xp - //SEG93 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG94 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda YPOS,y sta yp - //SEG94 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG95 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 lda x cmp xp bne b2 jmp b9 - //SEG95 findcol::@9 + //SEG96 findcol::@9 b9: - //SEG96 [56] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG97 [56] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 lda y cmp yp bne b2 - //SEG97 [57] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG98 [57] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG98 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuz1=vbuc1 + //SEG99 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG99 findcol::@return + //SEG100 findcol::@return breturn: - //SEG100 [58] return + //SEG101 [58] return rts - //SEG101 findcol::@2 + //SEG102 findcol::@2 b2: - //SEG102 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG103 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuz2_then_la1 lda x cmp xp bcc b4 jmp b12 - //SEG103 findcol::@12 + //SEG104 findcol::@12 b12: - //SEG104 [60] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG105 [60] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuz1=vbuz2_minus_vbuz3 lda x sec sbc xp sta diff - //SEG105 [61] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG106 [61] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] b5_from_b12: b5_from_b4: - //SEG106 [61] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy + //SEG107 [61] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy jmp b5 - //SEG107 findcol::@5 + //SEG108 findcol::@5 b5: - //SEG108 [62] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG109 [62] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@6 -- vbuz1_lt_vbuz2_then_la1 lda y cmp yp bcc b6 jmp b14 - //SEG109 findcol::@14 + //SEG110 findcol::@14 b14: - //SEG110 [63] (byte~) findcol::$8 ← (byte) findcol::y#0 - (byte) findcol::yp#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG111 [63] (byte~) findcol::$8 ← (byte) findcol::y#0 - (byte) findcol::yp#0 -- vbuz1=vbuz2_minus_vbuz3 lda y sec sbc yp sta _8 - //SEG111 [64] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$8 -- vbuz1=vbuz2_plus_vbuz3 + //SEG112 [64] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$8 -- vbuz1=vbuz2_plus_vbuz3 lda diff clc adc _8 sta diff_3 - //SEG112 [65] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG113 [65] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] b7_from_b14: b7_from_b6: - //SEG113 [65] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy + //SEG114 [65] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy jmp b7 - //SEG114 findcol::@7 + //SEG115 findcol::@7 b7: - //SEG115 [66] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuz1_ge_vbuz2_then_la1 + //SEG116 [66] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuz1_ge_vbuz2_then_la1 lda diff_6 cmp mindiff bcs b21 jmp b16 - //SEG116 findcol::@16 + //SEG117 findcol::@16 b16: - //SEG117 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG118 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda COLS,y sta mincol - //SEG118 [68] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG119 [68] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] b8_from_b16: b8_from_b21: - //SEG119 [68] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy - //SEG120 [68] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy + //SEG120 [68] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG121 [68] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy jmp b8 - //SEG121 findcol::@8 + //SEG122 findcol::@8 b8: - //SEG122 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuz1=_inc_vbuz1 + //SEG123 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG123 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuz1_lt_vbuc1_then_la1 + //SEG124 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #numpoints bcc b19 - //SEG124 [57] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG125 [57] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] breturn_from_b8: - //SEG125 [57] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy + //SEG126 [57] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn - //SEG126 findcol::@19 + //SEG127 findcol::@19 b19: - //SEG127 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuz2 + //SEG128 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuz2 lda mindiff_11 sta mindiff - //SEG128 [52] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG129 [52] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] b1_from_b19: - //SEG129 [52] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy - //SEG130 [52] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy - //SEG131 [52] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy + //SEG130 [52] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG131 [52] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG132 [52] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 - //SEG132 findcol::@21 + //SEG133 findcol::@21 b21: - //SEG133 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuz1=vbuz2 + //SEG134 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuz1=vbuz2 lda mindiff sta mindiff_15 jmp b8_from_b21 - //SEG134 findcol::@6 + //SEG135 findcol::@6 b6: - //SEG135 [73] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG136 [73] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 -- vbuz1=vbuz2_minus_vbuz3 lda yp sec sbc y sta _10 - //SEG136 [74] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$10 -- vbuz1=vbuz2_plus_vbuz3 + //SEG137 [74] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$10 -- vbuz1=vbuz2_plus_vbuz3 lda diff clc adc _10 sta diff_2 jmp b7_from_b6 - //SEG137 findcol::@4 + //SEG138 findcol::@4 b4: - //SEG138 [75] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG139 [75] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuz1=vbuz2_minus_vbuz3 lda xp sec sbc x sta diff jmp b5_from_b4 } -//SEG139 initscreen +//SEG140 initscreen initscreen: { .label screen = $b - //SEG140 [77] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG141 [77] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG141 [77] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 + //SEG142 [77] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 jmp b1 - //SEG142 [77] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG143 [77] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG143 [77] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG144 [77] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy jmp b1 - //SEG144 initscreen::@1 + //SEG145 initscreen::@1 b1: - //SEG145 [78] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 -- _deref_pbuz1=vbuc1 + //SEG146 [78] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 -- _deref_pbuz1=vbuc1 lda #FILL ldy #0 sta (screen),y - //SEG146 [79] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 -- pbuz1=_inc_pbuz1 + //SEG147 [79] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG147 [80] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto initscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [80] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto initscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -1682,9 +1684,9 @@ initscreen: { bcc b1_from_b1 !: jmp breturn - //SEG148 initscreen::@return + //SEG149 initscreen::@return breturn: - //SEG149 [81] return + //SEG150 [81] return rts } // Points to create the Voronoi from @@ -1822,232 +1824,234 @@ Allocated (was zp ZP_BYTE:24) zp ZP_BYTE:8 [ findcol::xp#0 ] Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:9 [ findcol::yp#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// The screen +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label COLORS = $d800 .const FILL = $e6 .const numpoints = 6 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] b5_from_bbegin: jmp b5 -//SEG4 @5 +//SEG5 @5 b5: -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] main_from_b5: jsr main -//SEG7 [3] phi from @5 to @end [phi:@5->@end] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] bend_from_b5: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { - //SEG10 [5] call initscreen - //SEG11 [76] phi from main to initscreen [phi:main->initscreen] + //SEG11 [5] call initscreen + //SEG12 [76] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen - //SEG12 [6] phi from main main::@4 to main::@1 [phi:main/main::@4->main::@1] + //SEG13 [6] phi from main main::@4 to main::@1 [phi:main/main::@4->main::@1] b1_from_main: b1_from_b4: jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [7] call render - //SEG15 [36] phi from main::@1 to render [phi:main::@1->render] + //SEG15 [7] call render + //SEG16 [36] phi from main::@1 to render [phi:main::@1->render] render_from_b1: jsr render - //SEG16 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG17 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG17 main::@4 + //SEG18 main::@4 b4: - //SEG18 [9] call animate + //SEG19 [9] call animate jsr animate jmp b1_from_b4 } -//SEG19 animate +//SEG20 animate animate: { - //SEG20 [10] (byte/signed word/word/dword/signed dword~) animate::$0 ← *((const byte[]) XPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_plus_1 + //SEG21 [10] (byte/signed word/word/dword/signed dword~) animate::$0 ← *((const byte[]) XPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_plus_1 ldx XPOS inx - //SEG21 [11] *((const byte[]) XPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$0 -- _deref_pbuc1=vbuxx + //SEG22 [11] *((const byte[]) XPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$0 -- _deref_pbuc1=vbuxx stx XPOS - //SEG22 [12] if(*((const byte[]) XPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG23 [12] if(*((const byte[]) XPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 lda XPOS cmp #$28 bne b1 jmp b7 - //SEG23 animate::@7 + //SEG24 animate::@7 b7: - //SEG24 [13] *((const byte[]) XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte[]) XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta XPOS jmp b1 - //SEG25 animate::@1 + //SEG26 animate::@1 b1: - //SEG26 [14] (byte/signed word/word/dword/signed dword~) animate::$3 ← *((const byte[]) YPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_plus_1 + //SEG27 [14] (byte/signed word/word/dword/signed dword~) animate::$3 ← *((const byte[]) YPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_plus_1 ldx YPOS inx - //SEG27 [15] *((const byte[]) YPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$3 -- _deref_pbuc1=vbuxx + //SEG28 [15] *((const byte[]) YPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$3 -- _deref_pbuc1=vbuxx stx YPOS - //SEG28 [16] if(*((const byte[]) YPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG29 [16] if(*((const byte[]) YPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS cmp #$19 bne b2 jmp b8 - //SEG29 animate::@8 + //SEG30 animate::@8 b8: - //SEG30 [17] *((const byte[]) YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG31 [17] *((const byte[]) YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta YPOS jmp b2 - //SEG31 animate::@2 + //SEG32 animate::@2 b2: - //SEG32 [18] (byte/signed word/word/dword/signed dword~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_minus_1 + //SEG33 [18] (byte/signed word/word/dword/signed dword~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_minus_1 lda XPOS+1 sec sbc #1 - //SEG33 [19] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed word/word/dword/signed dword~) animate::$6 -- _deref_pbuc1=vbuaa + //SEG34 [19] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed word/word/dword/signed dword~) animate::$6 -- _deref_pbuc1=vbuaa sta XPOS+1 - //SEG34 [20] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG35 [20] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda XPOS+1 cmp #$ff bne b3 jmp b9 - //SEG35 animate::@9 + //SEG36 animate::@9 b9: - //SEG36 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 40 -- _deref_pbuc1=vbuc2 + //SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 40 -- _deref_pbuc1=vbuc2 lda #$28 sta XPOS+1 jmp b3 - //SEG37 animate::@3 + //SEG38 animate::@3 b3: - //SEG38 [22] (byte/signed word/word/dword/signed dword~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_plus_1 + //SEG39 [22] (byte/signed word/word/dword/signed dword~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_plus_1 lda YPOS+2 clc adc #1 - //SEG39 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed word/word/dword/signed dword~) animate::$9 -- _deref_pbuc1=vbuaa + //SEG40 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed word/word/dword/signed dword~) animate::$9 -- _deref_pbuc1=vbuaa sta YPOS+2 - //SEG40 [24] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG41 [24] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+2 cmp #$19 bne b4 jmp b10 - //SEG41 animate::@10 + //SEG42 animate::@10 b10: - //SEG42 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+2 jmp b4 - //SEG43 animate::@4 + //SEG44 animate::@4 b4: - //SEG44 [26] (byte/signed word/word/dword/signed dword~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_minus_1 + //SEG45 [26] (byte/signed word/word/dword/signed dword~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_minus_1 ldx YPOS+3 dex - //SEG45 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$12 -- _deref_pbuc1=vbuxx + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$12 -- _deref_pbuc1=vbuxx stx YPOS+3 - //SEG46 [28] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@return -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG47 [28] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@return -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+3 cmp #$ff bne breturn jmp b11 - //SEG47 animate::@11 + //SEG48 animate::@11 b11: - //SEG48 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 + //SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 lda #$19 sta YPOS+3 - //SEG49 [30] (byte/signed word/word/dword/signed dword~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=_deref_pbuc1_plus_vbuc2 + //SEG50 [30] (byte/signed word/word/dword/signed dword~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=_deref_pbuc1_plus_vbuc2 lda XPOS+3 clc adc #7 - //SEG50 [31] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$15 -- _deref_pbuc1=vbuaa + //SEG51 [31] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$15 -- _deref_pbuc1=vbuaa sta XPOS+3 - //SEG51 [32] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)<(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@return -- _deref_pbuc1_lt_vbuc2_then_la1 + //SEG52 [32] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)<(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@return -- _deref_pbuc1_lt_vbuc2_then_la1 lda XPOS+3 cmp #$28 bcc breturn jmp b12 - //SEG52 animate::@12 + //SEG53 animate::@12 b12: - //SEG53 [33] (byte/signed word/word/dword/signed dword~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 40 -- vbuaa=_deref_pbuc1_minus_vbuc2 + //SEG54 [33] (byte/signed word/word/dword/signed dword~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 40 -- vbuaa=_deref_pbuc1_minus_vbuc2 lda XPOS+3 sec sbc #$28 - //SEG54 [34] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$18 -- _deref_pbuc1=vbuaa + //SEG55 [34] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$18 -- _deref_pbuc1=vbuaa sta XPOS+3 jmp breturn - //SEG55 animate::@return + //SEG56 animate::@return breturn: - //SEG56 [35] return + //SEG57 [35] return rts } -//SEG57 render +//SEG58 render render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG58 [37] phi from render to render::@1 [phi:render->render::@1] + //SEG59 [37] phi from render to render::@1 [phi:render->render::@1] b1_from_render: - //SEG59 [37] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 + //SEG60 [37] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 lda #COLORS sta colline+1 - //SEG60 [37] phi (byte) render::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 + //SEG61 [37] phi (byte) render::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG61 [37] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG62 [37] phi from render::@3 to render::@1 [phi:render::@3->render::@1] b1_from_b3: - //SEG62 [37] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy - //SEG63 [37] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy + //SEG63 [37] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG64 [37] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy jmp b1 - //SEG64 render::@1 + //SEG65 render::@1 b1: - //SEG65 [38] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG66 [38] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG66 [38] phi (byte) render::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 + //SEG67 [38] phi (byte) render::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG67 [38] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG68 [38] phi from render::@5 to render::@2 [phi:render::@5->render::@2] b2_from_b5: - //SEG68 [38] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy + //SEG69 [38] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy jmp b2 - //SEG69 render::@2 + //SEG70 render::@2 b2: - //SEG70 [39] (byte) findcol::x#0 ← (byte) render::x#2 - //SEG71 [40] (byte) findcol::y#0 ← (byte) render::y#4 - //SEG72 [41] call findcol - //SEG73 [51] phi from render::@2 to findcol [phi:render::@2->findcol] + //SEG71 [39] (byte) findcol::x#0 ← (byte) render::x#2 + //SEG72 [40] (byte) findcol::y#0 ← (byte) render::y#4 + //SEG73 [41] call findcol + //SEG74 [51] phi from render::@2 to findcol [phi:render::@2->findcol] findcol_from_b2: jsr findcol - //SEG74 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuaa=vbuxx + //SEG75 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuaa=vbuxx txa jmp b5 - //SEG75 render::@5 + //SEG76 render::@5 b5: - //SEG76 [43] (byte) render::col#0 ← (byte) findcol::return#0 - //SEG77 [44] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 -- pbuz1_derefidx_vbuz2=vbuaa + //SEG77 [43] (byte) render::col#0 ← (byte) findcol::return#0 + //SEG78 [44] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 -- pbuz1_derefidx_vbuz2=vbuaa ldy x sta (colline),y - //SEG78 [45] (byte) render::x#1 ← ++ (byte) render::x#2 -- vbuz1=_inc_vbuz1 + //SEG79 [45] (byte) render::x#1 ← ++ (byte) render::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG79 [46] if((byte) render::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG80 [46] if((byte) render::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b2_from_b5 jmp b3 - //SEG80 render::@3 + //SEG81 render::@3 b3: - //SEG81 [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG82 [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda colline clc adc #$28 @@ -2055,19 +2059,19 @@ render: { bcc !+ inc colline+1 !: - //SEG82 [48] (byte) render::y#1 ← ++ (byte) render::y#4 -- vbuz1=_inc_vbuz1 + //SEG83 [48] (byte) render::y#1 ← ++ (byte) render::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG83 [49] if((byte) render::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG84 [49] if((byte) render::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b3 jmp breturn - //SEG84 render::@return + //SEG85 render::@return breturn: - //SEG85 [50] return + //SEG86 [50] return rts } -//SEG86 findcol +//SEG87 findcol findcol: { .label x = 5 .label y = 2 @@ -2075,182 +2079,182 @@ findcol: { .label yp = 9 .label i = 6 .label mindiff = 7 - //SEG87 [52] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG88 [52] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG88 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuxx=vbuc1 + //SEG89 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG89 [52] phi (byte) findcol::mindiff#10 = (byte/word/signed word/dword/signed dword) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 + //SEG90 [52] phi (byte) findcol::mindiff#10 = (byte/word/signed word/dword/signed dword) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 lda #$ff sta mindiff - //SEG90 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1 + //SEG91 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG91 findcol::@1 + //SEG92 findcol::@1 b1: - //SEG92 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG93 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda XPOS,y sta xp - //SEG93 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG94 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda YPOS,y sta yp - //SEG94 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG95 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 lda x cmp xp bne b2 jmp b9 - //SEG95 findcol::@9 + //SEG96 findcol::@9 b9: - //SEG96 [56] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG97 [56] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 lda y cmp yp bne b2 - //SEG97 [57] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG98 [57] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG98 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuxx=vbuc1 + //SEG99 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG99 findcol::@return + //SEG100 findcol::@return breturn: - //SEG100 [58] return + //SEG101 [58] return rts - //SEG101 findcol::@2 + //SEG102 findcol::@2 b2: - //SEG102 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG103 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuz2_then_la1 lda x cmp xp bcc b4 jmp b12 - //SEG103 findcol::@12 + //SEG104 findcol::@12 b12: - //SEG104 [60] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuyy=vbuz1_minus_vbuz2 + //SEG105 [60] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuyy=vbuz1_minus_vbuz2 lda x sec sbc xp tay - //SEG105 [61] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG106 [61] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] b5_from_b12: b5_from_b4: - //SEG106 [61] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy + //SEG107 [61] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy jmp b5 - //SEG107 findcol::@5 + //SEG108 findcol::@5 b5: - //SEG108 [62] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG109 [62] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@6 -- vbuz1_lt_vbuz2_then_la1 lda y cmp yp bcc b6 jmp b14 - //SEG109 findcol::@14 + //SEG110 findcol::@14 b14: - //SEG110 [63] (byte~) findcol::$8 ← (byte) findcol::y#0 - (byte) findcol::yp#0 -- vbuaa=vbuz1_minus_vbuz2 + //SEG111 [63] (byte~) findcol::$8 ← (byte) findcol::y#0 - (byte) findcol::yp#0 -- vbuaa=vbuz1_minus_vbuz2 lda y sec sbc yp - //SEG111 [64] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$8 -- vbuyy=vbuyy_plus_vbuaa + //SEG112 [64] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$8 -- vbuyy=vbuyy_plus_vbuaa sty $ff clc adc $ff tay - //SEG112 [65] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG113 [65] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] b7_from_b14: b7_from_b6: - //SEG113 [65] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy + //SEG114 [65] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy jmp b7 - //SEG114 findcol::@7 + //SEG115 findcol::@7 b7: - //SEG115 [66] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuyy_ge_vbuz1_then_la1 + //SEG116 [66] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuyy_ge_vbuz1_then_la1 cpy mindiff bcs b21 jmp b16 - //SEG116 findcol::@16 + //SEG117 findcol::@16 b16: - //SEG117 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG118 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuxx=pbuc1_derefidx_vbuz1 ldx i lda COLS,x tax - //SEG118 [68] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG119 [68] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] b8_from_b16: b8_from_b21: - //SEG119 [68] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy - //SEG120 [68] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy + //SEG120 [68] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG121 [68] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy jmp b8 - //SEG121 findcol::@8 + //SEG122 findcol::@8 b8: - //SEG122 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuz1=_inc_vbuz1 + //SEG123 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG123 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuz1_lt_vbuc1_then_la1 + //SEG124 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #numpoints bcc b19 - //SEG124 [57] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG125 [57] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] breturn_from_b8: - //SEG125 [57] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy + //SEG126 [57] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn - //SEG126 findcol::@19 + //SEG127 findcol::@19 b19: - //SEG127 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuyy + //SEG128 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuyy sty mindiff - //SEG128 [52] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG129 [52] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] b1_from_b19: - //SEG129 [52] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy - //SEG130 [52] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy - //SEG131 [52] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy + //SEG130 [52] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG131 [52] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG132 [52] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 - //SEG132 findcol::@21 + //SEG133 findcol::@21 b21: - //SEG133 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuyy=vbuz1 + //SEG134 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuyy=vbuz1 ldy mindiff jmp b8_from_b21 - //SEG134 findcol::@6 + //SEG135 findcol::@6 b6: - //SEG135 [73] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 -- vbuaa=vbuz1_minus_vbuz2 + //SEG136 [73] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 -- vbuaa=vbuz1_minus_vbuz2 lda yp sec sbc y - //SEG136 [74] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$10 -- vbuyy=vbuyy_plus_vbuaa + //SEG137 [74] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$10 -- vbuyy=vbuyy_plus_vbuaa sty $ff clc adc $ff tay jmp b7_from_b6 - //SEG137 findcol::@4 + //SEG138 findcol::@4 b4: - //SEG138 [75] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuyy=vbuz1_minus_vbuz2 + //SEG139 [75] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuyy=vbuz1_minus_vbuz2 lda xp sec sbc x tay jmp b5_from_b4 } -//SEG139 initscreen +//SEG140 initscreen initscreen: { .label screen = 3 - //SEG140 [77] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG141 [77] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG141 [77] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 + //SEG142 [77] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 jmp b1 - //SEG142 [77] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG143 [77] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG143 [77] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG144 [77] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy jmp b1 - //SEG144 initscreen::@1 + //SEG145 initscreen::@1 b1: - //SEG145 [78] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 -- _deref_pbuz1=vbuc1 + //SEG146 [78] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 -- _deref_pbuz1=vbuc1 lda #FILL ldy #0 sta (screen),y - //SEG146 [79] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 -- pbuz1=_inc_pbuz1 + //SEG147 [79] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG147 [80] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto initscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [80] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto initscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -2260,9 +2264,9 @@ initscreen: { bcc b1_from_b1 !: jmp breturn - //SEG148 initscreen::@return + //SEG149 initscreen::@return breturn: - //SEG149 [81] return + //SEG150 [81] return rts } // Points to create the Voronoi from @@ -2515,181 +2519,183 @@ reg byte a [ findcol::$10 ] FINAL ASSEMBLER Score: 1628771 -//SEG0 Basic Upstart +//SEG0 File Comments +// The screen +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label COLORS = $d800 .const FILL = $e6 .const numpoints = 6 -//SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 -//SEG5 [2] call main -//SEG6 [4] phi from @5 to main [phi:@5->main] -//SEG7 [3] phi from @5 to @end [phi:@5->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @5 [phi:@begin->@5] +//SEG5 @5 +//SEG6 [2] call main +//SEG7 [4] phi from @5 to main [phi:@5->main] +//SEG8 [3] phi from @5 to @end [phi:@5->@end] +//SEG9 @end +//SEG10 main main: { - //SEG10 [5] call initscreen - //SEG11 [76] phi from main to initscreen [phi:main->initscreen] + //SEG11 [5] call initscreen + //SEG12 [76] phi from main to initscreen [phi:main->initscreen] jsr initscreen - //SEG12 [6] phi from main main::@4 to main::@1 [phi:main/main::@4->main::@1] - //SEG13 main::@1 + //SEG13 [6] phi from main main::@4 to main::@1 [phi:main/main::@4->main::@1] + //SEG14 main::@1 b1: - //SEG14 [7] call render - //SEG15 [36] phi from main::@1 to render [phi:main::@1->render] + //SEG15 [7] call render + //SEG16 [36] phi from main::@1 to render [phi:main::@1->render] jsr render - //SEG16 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] - //SEG17 main::@4 - //SEG18 [9] call animate + //SEG17 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG18 main::@4 + //SEG19 [9] call animate jsr animate jmp b1 } -//SEG19 animate +//SEG20 animate animate: { - //SEG20 [10] (byte/signed word/word/dword/signed dword~) animate::$0 ← *((const byte[]) XPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_plus_1 + //SEG21 [10] (byte/signed word/word/dword/signed dword~) animate::$0 ← *((const byte[]) XPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_plus_1 ldx XPOS inx - //SEG21 [11] *((const byte[]) XPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$0 -- _deref_pbuc1=vbuxx + //SEG22 [11] *((const byte[]) XPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$0 -- _deref_pbuc1=vbuxx stx XPOS - //SEG22 [12] if(*((const byte[]) XPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG23 [12] if(*((const byte[]) XPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 txa cmp #$28 bne b1 - //SEG23 animate::@7 - //SEG24 [13] *((const byte[]) XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG24 animate::@7 + //SEG25 [13] *((const byte[]) XPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta XPOS - //SEG25 animate::@1 + //SEG26 animate::@1 b1: - //SEG26 [14] (byte/signed word/word/dword/signed dword~) animate::$3 ← *((const byte[]) YPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_plus_1 + //SEG27 [14] (byte/signed word/word/dword/signed dword~) animate::$3 ← *((const byte[]) YPOS#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_plus_1 ldx YPOS inx - //SEG27 [15] *((const byte[]) YPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$3 -- _deref_pbuc1=vbuxx + //SEG28 [15] *((const byte[]) YPOS#0) ← (byte/signed word/word/dword/signed dword~) animate::$3 -- _deref_pbuc1=vbuxx stx YPOS - //SEG28 [16] if(*((const byte[]) YPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG29 [16] if(*((const byte[]) YPOS#0)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 txa cmp #$19 bne b2 - //SEG29 animate::@8 - //SEG30 [17] *((const byte[]) YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG30 animate::@8 + //SEG31 [17] *((const byte[]) YPOS#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta YPOS - //SEG31 animate::@2 + //SEG32 animate::@2 b2: - //SEG32 [18] (byte/signed word/word/dword/signed dword~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_minus_1 + //SEG33 [18] (byte/signed word/word/dword/signed dword~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_minus_1 lda XPOS+1 sec sbc #1 - //SEG33 [19] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed word/word/dword/signed dword~) animate::$6 -- _deref_pbuc1=vbuaa + //SEG34 [19] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed word/word/dword/signed dword~) animate::$6 -- _deref_pbuc1=vbuaa sta XPOS+1 - //SEG34 [20] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG35 [20] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 cmp #$ff bne b3 - //SEG35 animate::@9 - //SEG36 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 40 -- _deref_pbuc1=vbuc2 + //SEG36 animate::@9 + //SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 40 -- _deref_pbuc1=vbuc2 lda #$28 sta XPOS+1 - //SEG37 animate::@3 + //SEG38 animate::@3 b3: - //SEG38 [22] (byte/signed word/word/dword/signed dword~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_plus_1 + //SEG39 [22] (byte/signed word/word/dword/signed dword~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=_deref_pbuc1_plus_1 lda YPOS+2 clc adc #1 - //SEG39 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed word/word/dword/signed dword~) animate::$9 -- _deref_pbuc1=vbuaa + //SEG40 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed word/word/dword/signed dword~) animate::$9 -- _deref_pbuc1=vbuaa sta YPOS+2 - //SEG40 [24] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG41 [24] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2)!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto animate::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 cmp #$19 bne b4 - //SEG41 animate::@10 - //SEG42 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG42 animate::@10 + //SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+2 - //SEG43 animate::@4 + //SEG44 animate::@4 b4: - //SEG44 [26] (byte/signed word/word/dword/signed dword~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_minus_1 + //SEG45 [26] (byte/signed word/word/dword/signed dword~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=_deref_pbuc1_minus_1 ldx YPOS+3 dex - //SEG45 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$12 -- _deref_pbuc1=vbuxx + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$12 -- _deref_pbuc1=vbuxx stx YPOS+3 - //SEG46 [28] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@return -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG47 [28] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)!=(byte/word/signed word/dword/signed dword) 255) goto animate::@return -- _deref_pbuc1_neq_vbuc2_then_la1 txa cmp #$ff bne breturn - //SEG47 animate::@11 - //SEG48 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 + //SEG48 animate::@11 + //SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed byte/word/signed word/dword/signed dword) 25 -- _deref_pbuc1=vbuc2 lda #$19 sta YPOS+3 - //SEG49 [30] (byte/signed word/word/dword/signed dword~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=_deref_pbuc1_plus_vbuc2 + //SEG50 [30] (byte/signed word/word/dword/signed dword~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=_deref_pbuc1_plus_vbuc2 lda XPOS+3 clc adc #7 - //SEG50 [31] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$15 -- _deref_pbuc1=vbuaa + //SEG51 [31] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$15 -- _deref_pbuc1=vbuaa sta XPOS+3 - //SEG51 [32] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)<(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@return -- _deref_pbuc1_lt_vbuc2_then_la1 + //SEG52 [32] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3)<(byte/signed byte/word/signed word/dword/signed dword) 40) goto animate::@return -- _deref_pbuc1_lt_vbuc2_then_la1 cmp #$28 bcc breturn - //SEG52 animate::@12 - //SEG53 [33] (byte/signed word/word/dword/signed dword~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 40 -- vbuaa=_deref_pbuc1_minus_vbuc2 + //SEG53 animate::@12 + //SEG54 [33] (byte/signed word/word/dword/signed dword~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - (byte/signed byte/word/signed word/dword/signed dword) 40 -- vbuaa=_deref_pbuc1_minus_vbuc2 sec sbc #$28 - //SEG54 [34] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$18 -- _deref_pbuc1=vbuaa + //SEG55 [34] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte/signed word/word/dword/signed dword~) animate::$18 -- _deref_pbuc1=vbuaa sta XPOS+3 - //SEG55 animate::@return + //SEG56 animate::@return breturn: - //SEG56 [35] return + //SEG57 [35] return rts } -//SEG57 render +//SEG58 render render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG58 [37] phi from render to render::@1 [phi:render->render::@1] - //SEG59 [37] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 + //SEG59 [37] phi from render to render::@1 [phi:render->render::@1] + //SEG60 [37] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 lda #COLORS sta colline+1 - //SEG60 [37] phi (byte) render::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 + //SEG61 [37] phi (byte) render::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG61 [37] phi from render::@3 to render::@1 [phi:render::@3->render::@1] - //SEG62 [37] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy - //SEG63 [37] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy - //SEG64 render::@1 + //SEG62 [37] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG63 [37] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG64 [37] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy + //SEG65 render::@1 b1: - //SEG65 [38] phi from render::@1 to render::@2 [phi:render::@1->render::@2] - //SEG66 [38] phi (byte) render::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 + //SEG66 [38] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG67 [38] phi (byte) render::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG67 [38] phi from render::@5 to render::@2 [phi:render::@5->render::@2] - //SEG68 [38] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy - //SEG69 render::@2 + //SEG68 [38] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG69 [38] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy + //SEG70 render::@2 b2: - //SEG70 [39] (byte) findcol::x#0 ← (byte) render::x#2 - //SEG71 [40] (byte) findcol::y#0 ← (byte) render::y#4 - //SEG72 [41] call findcol - //SEG73 [51] phi from render::@2 to findcol [phi:render::@2->findcol] + //SEG71 [39] (byte) findcol::x#0 ← (byte) render::x#2 + //SEG72 [40] (byte) findcol::y#0 ← (byte) render::y#4 + //SEG73 [41] call findcol + //SEG74 [51] phi from render::@2 to findcol [phi:render::@2->findcol] jsr findcol - //SEG74 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuaa=vbuxx + //SEG75 [42] (byte) findcol::return#0 ← (byte) findcol::return#2 -- vbuaa=vbuxx txa - //SEG75 render::@5 - //SEG76 [43] (byte) render::col#0 ← (byte) findcol::return#0 - //SEG77 [44] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 -- pbuz1_derefidx_vbuz2=vbuaa + //SEG76 render::@5 + //SEG77 [43] (byte) render::col#0 ← (byte) findcol::return#0 + //SEG78 [44] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 -- pbuz1_derefidx_vbuz2=vbuaa ldy x sta (colline),y - //SEG78 [45] (byte) render::x#1 ← ++ (byte) render::x#2 -- vbuz1=_inc_vbuz1 + //SEG79 [45] (byte) render::x#1 ← ++ (byte) render::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG79 [46] if((byte) render::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG80 [46] if((byte) render::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b2 - //SEG80 render::@3 - //SEG81 [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG81 render::@3 + //SEG82 [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda colline clc adc #$28 @@ -2697,17 +2703,17 @@ render: { bcc !+ inc colline+1 !: - //SEG82 [48] (byte) render::y#1 ← ++ (byte) render::y#4 -- vbuz1=_inc_vbuz1 + //SEG83 [48] (byte) render::y#1 ← ++ (byte) render::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG83 [49] if((byte) render::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG84 [49] if((byte) render::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto render::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1 - //SEG84 render::@return - //SEG85 [50] return + //SEG85 render::@return + //SEG86 [50] return rts } -//SEG86 findcol +//SEG87 findcol findcol: { .label x = 5 .label y = 2 @@ -2715,152 +2721,152 @@ findcol: { .label yp = 9 .label i = 6 .label mindiff = 7 - //SEG87 [52] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] - //SEG88 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuxx=vbuc1 + //SEG88 [52] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG89 [52] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG89 [52] phi (byte) findcol::mindiff#10 = (byte/word/signed word/dword/signed dword) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 + //SEG90 [52] phi (byte) findcol::mindiff#10 = (byte/word/signed word/dword/signed dword) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 lda #$ff sta mindiff - //SEG90 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1 + //SEG91 [52] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1 txa sta i - //SEG91 findcol::@1 + //SEG92 findcol::@1 b1: - //SEG92 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG93 [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda XPOS,y sta xp - //SEG93 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG94 [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 lda YPOS,y sta yp - //SEG94 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG95 [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 lda x cmp xp bne b2 - //SEG95 findcol::@9 - //SEG96 [56] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG96 findcol::@9 + //SEG97 [56] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 -- vbuz1_neq_vbuz2_then_la1 lda y cmp yp bne b2 - //SEG97 [57] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] - //SEG98 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuxx=vbuc1 + //SEG98 [57] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG99 [57] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:findcol::@9->findcol::@return#0] -- vbuxx=vbuc1 ldx #0 - //SEG99 findcol::@return + //SEG100 findcol::@return breturn: - //SEG100 [58] return + //SEG101 [58] return rts - //SEG101 findcol::@2 + //SEG102 findcol::@2 b2: - //SEG102 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuz2_then_la1 + //SEG103 [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4 -- vbuz1_lt_vbuz2_then_la1 lda x cmp xp bcc b4 - //SEG103 findcol::@12 - //SEG104 [60] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuyy=vbuz1_minus_vbuz2 + //SEG104 findcol::@12 + //SEG105 [60] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 -- vbuyy=vbuz1_minus_vbuz2 sec sbc xp tay - //SEG105 [61] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] - //SEG106 [61] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy - //SEG107 findcol::@5 + //SEG106 [61] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG107 [61] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy + //SEG108 findcol::@5 b5: - //SEG108 [62] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG109 [62] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@6 -- vbuz1_lt_vbuz2_then_la1 lda y cmp yp bcc b6 - //SEG109 findcol::@14 - //SEG110 [63] (byte~) findcol::$8 ← (byte) findcol::y#0 - (byte) findcol::yp#0 -- vbuaa=vbuz1_minus_vbuz2 + //SEG110 findcol::@14 + //SEG111 [63] (byte~) findcol::$8 ← (byte) findcol::y#0 - (byte) findcol::yp#0 -- vbuaa=vbuz1_minus_vbuz2 sec sbc yp - //SEG111 [64] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$8 -- vbuyy=vbuyy_plus_vbuaa + //SEG112 [64] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$8 -- vbuyy=vbuyy_plus_vbuaa sty $ff clc adc $ff tay - //SEG112 [65] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] - //SEG113 [65] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy - //SEG114 findcol::@7 + //SEG113 [65] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG114 [65] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy + //SEG115 findcol::@7 b7: - //SEG115 [66] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuyy_ge_vbuz1_then_la1 + //SEG116 [66] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 -- vbuyy_ge_vbuz1_then_la1 cpy mindiff bcs b21 - //SEG116 findcol::@16 - //SEG117 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG117 findcol::@16 + //SEG118 [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) -- vbuxx=pbuc1_derefidx_vbuz1 ldx i lda COLS,x tax - //SEG118 [68] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] - //SEG119 [68] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy - //SEG120 [68] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy - //SEG121 findcol::@8 + //SEG119 [68] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG120 [68] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG121 [68] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy + //SEG122 findcol::@8 b8: - //SEG122 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuz1=_inc_vbuz1 + //SEG123 [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG123 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuz1_lt_vbuc1_then_la1 + //SEG124 [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #numpoints bcc b19 - //SEG124 [57] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] - //SEG125 [57] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy + //SEG125 [57] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG126 [57] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn - //SEG126 findcol::@19 + //SEG127 findcol::@19 b19: - //SEG127 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuyy + //SEG128 [71] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 -- vbuz1=vbuyy sty mindiff - //SEG128 [52] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] - //SEG129 [52] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy - //SEG130 [52] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy - //SEG131 [52] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy + //SEG129 [52] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG130 [52] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG131 [52] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG132 [52] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 - //SEG132 findcol::@21 + //SEG133 findcol::@21 b21: - //SEG133 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuyy=vbuz1 + //SEG134 [72] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 -- vbuyy=vbuz1 ldy mindiff jmp b8 - //SEG134 findcol::@6 + //SEG135 findcol::@6 b6: - //SEG135 [73] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 -- vbuaa=vbuz1_minus_vbuz2 + //SEG136 [73] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 -- vbuaa=vbuz1_minus_vbuz2 lda yp sec sbc y - //SEG136 [74] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$10 -- vbuyy=vbuyy_plus_vbuaa + //SEG137 [74] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$10 -- vbuyy=vbuyy_plus_vbuaa sty $ff clc adc $ff tay jmp b7 - //SEG137 findcol::@4 + //SEG138 findcol::@4 b4: - //SEG138 [75] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuyy=vbuz1_minus_vbuz2 + //SEG139 [75] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 -- vbuyy=vbuz1_minus_vbuz2 lda xp sec sbc x tay jmp b5 } -//SEG139 initscreen +//SEG140 initscreen initscreen: { .label screen = 3 - //SEG140 [77] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] - //SEG141 [77] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 + //SEG141 [77] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG142 [77] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 - //SEG142 [77] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] - //SEG143 [77] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy - //SEG144 initscreen::@1 + //SEG143 [77] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG144 [77] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG145 initscreen::@1 b1: - //SEG145 [78] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 -- _deref_pbuz1=vbuc1 + //SEG146 [78] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 -- _deref_pbuz1=vbuc1 lda #FILL ldy #0 sta (screen),y - //SEG146 [79] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 -- pbuz1=_inc_pbuz1 + //SEG147 [79] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG147 [80] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto initscreen::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [80] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto initscreen::@1 -- pbuz1_lt_pbuc1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1 @@ -2869,8 +2875,8 @@ initscreen: { cmp #@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Expressions based on bytes but resulting in words are as words - eg. b = b + 40*8; +//SEG10 main main: { .label b = 2 .label i = 4 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG12 [5] phi (word) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 + //SEG13 [5] phi (word) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 lda #<0 sta b lda #>0 sta b+1 jmp b1 - //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@1->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- vwuz1=vwuz1_plus_vwuc1 + //SEG18 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$28*8 @@ -178,16 +179,16 @@ main: { lda b+1 adc #>$28*8 sta b+1 - //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [9] return + //SEG22 [9] return rts } @@ -206,49 +207,50 @@ Uplifting [main] best 473 combination zp ZP_WORD:2 [ main::b#2 main::b#1 ] reg b Uplifting [] best 473 combination ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +// Expressions based on bytes but resulting in words are as words - eg. b = b + 40*8; +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main -// Expressions based on bytes but resulting in words are as words - eg. b = b + 40*8; +//SEG10 main main: { .label b = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [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 - //SEG12 [5] phi (word) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 + //SEG13 [5] phi (word) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 lda #<0 sta b lda #>0 sta b+1 jmp b1 - //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@1->main::@1#1] -- register_copy jmp b1 - //SEG16 main::@1 + //SEG17 main::@1 b1: - //SEG17 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- vwuz1=vwuz1_plus_vwuc1 + //SEG18 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$28*8 @@ -256,15 +258,15 @@ main: { lda b+1 adc #>$28*8 sta b+1 - //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1_from_b1 jmp breturn - //SEG20 main::@return + //SEG21 main::@return breturn: - //SEG21 [9] return + //SEG22 [9] return rts } @@ -317,35 +319,36 @@ reg byte x [ main::i#2 main::i#1 ] FINAL ASSEMBLER Score: 351 -//SEG0 Basic Upstart +//SEG0 File Comments +// Expressions based on bytes but resulting in words are as words - eg. b = b + 40*8; +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main -// Expressions based on bytes but resulting in words are as words - eg. b = b + 40*8; +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label b = 2 - //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 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [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 - //SEG12 [5] phi (word) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 + //SEG13 [5] phi (word) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 txa sta b sta b+1 - //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@1->main::@1#1] -- register_copy - //SEG16 main::@1 + //SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG16 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG17 main::@1 b1: - //SEG17 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- vwuz1=vwuz1_plus_vwuc1 + //SEG18 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$28*8 @@ -353,13 +356,13 @@ main: { lda b+1 adc #>$28*8 sta b+1 - //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG20 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b1 - //SEG20 main::@return - //SEG21 [9] return + //SEG21 main::@return + //SEG22 [9] return rts } diff --git a/src/test/ref/zpparammin.log b/src/test/ref/zpparammin.log index 1692e8bfe..c81e7e85a 100644 --- a/src/test/ref/zpparammin.log +++ b/src/test/ref/zpparammin.log @@ -361,113 +361,114 @@ Allocated zp ZP_BYTE:15 [ sum::$0 ] Allocated zp ZP_BYTE:16 [ sum::return#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = $400+$28 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label _2 = 7 .label _5 = $c .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG16 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy i iny sty sum.b - //SEG16 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_2 + //SEG17 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_2 lda i clc adc #2 sta sum.c - //SEG17 [8] (byte) sum::a#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG18 [8] (byte) sum::a#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta sum.a - //SEG18 [9] call sum + //SEG19 [9] call sum jsr sum - //SEG19 [10] (byte) sum::return#0 ← (byte) sum::return#1 -- vbuz1=vbuz2 + //SEG20 [10] (byte) sum::return#0 ← (byte) sum::return#1 -- vbuz1=vbuz2 lda sum.return_1 sta sum.return jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [11] (byte~) main::$2 ← (byte) sum::return#0 -- vbuz1=vbuz2 + //SEG22 [11] (byte~) main::$2 ← (byte) sum::return#0 -- vbuz1=vbuz2 lda sum.return sta _2 - //SEG22 [12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG23 [12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuz1=vbuz2 lda _2 ldy i sta SCREEN,y - //SEG23 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG24 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy i iny sty sum2.b - //SEG24 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_2 + //SEG25 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_2 lda i clc adc #2 sta sum2.c - //SEG25 [15] (byte) sum2::a#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG26 [15] (byte) sum2::a#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta sum2.a - //SEG26 [16] call sum2 + //SEG27 [16] call sum2 jsr sum2 - //SEG27 [17] (byte) sum2::return#0 ← (byte) sum2::return#1 -- vbuz1=vbuz2 + //SEG28 [17] (byte) sum2::return#0 ← (byte) sum2::return#1 -- vbuz1=vbuz2 lda sum2.return_1 sta sum2.return jmp b4 - //SEG28 main::@4 + //SEG29 main::@4 b4: - //SEG29 [18] (byte~) main::$5 ← (byte) sum2::return#0 -- vbuz1=vbuz2 + //SEG30 [18] (byte~) main::$5 ← (byte) sum2::return#0 -- vbuz1=vbuz2 lda sum2.return sta _5 - //SEG30 [19] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG31 [19] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuz1=vbuz2 lda _5 ldy i sta SCREEN2,y - //SEG31 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG32 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG32 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG33 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b4 jmp breturn - //SEG33 main::@return + //SEG34 main::@return breturn: - //SEG34 [22] return + //SEG35 [22] return rts } -//SEG35 sum2 +//SEG36 sum2 sum2: { .label _0 = $d .label a = $a @@ -475,23 +476,23 @@ sum2: { .label c = 9 .label return = $b .label return_1 = $e - //SEG36 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG37 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 -- vbuz1=vbuz2_plus_vbuz3 lda a clc adc b sta _0 - //SEG37 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG38 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 -- vbuz1=vbuz2_plus_vbuz3 lda _0 clc adc c sta return_1 jmp breturn - //SEG38 sum2::@return + //SEG39 sum2::@return breturn: - //SEG39 [25] return + //SEG40 [25] return rts } -//SEG40 sum +//SEG41 sum sum: { .label _0 = $f .label a = 5 @@ -499,20 +500,20 @@ sum: { .label c = 4 .label return = 6 .label return_1 = $10 - //SEG41 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG42 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 -- vbuz1=vbuz2_plus_vbuz3 lda a clc adc b sta _0 - //SEG42 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG43 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 -- vbuz1=vbuz2_plus_vbuz3 lda _0 clc adc c sta return_1 jmp breturn - //SEG43 sum::@return + //SEG44 sum::@return breturn: - //SEG44 [28] return + //SEG45 [28] return rts } @@ -568,126 +569,127 @@ Attempting to uplift remaining variables inzp ZP_BYTE:15 [ sum::$0 ] Uplifting [sum] best 1013 combination reg byte a [ sum::$0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = $400+$28 -//SEG2 @begin +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] b3_from_bbegin: jmp b3 -//SEG4 @3 +//SEG5 @3 b3: -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] main_from_b3: jsr main -//SEG7 [3] phi from @3 to @end [phi:@3->@end] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] bend_from_b3: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label i = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [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 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG16 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 lda i clc adc #1 - //SEG16 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuz1_plus_2 + //SEG17 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuz1_plus_2 ldx i inx inx - //SEG17 [8] (byte) sum::a#0 ← (byte) main::i#2 -- vbuyy=vbuz1 + //SEG18 [8] (byte) sum::a#0 ← (byte) main::i#2 -- vbuyy=vbuz1 ldy i - //SEG18 [9] call sum + //SEG19 [9] call sum jsr sum - //SEG19 [10] (byte) sum::return#0 ← (byte) sum::return#1 + //SEG20 [10] (byte) sum::return#0 ← (byte) sum::return#1 jmp b3 - //SEG20 main::@3 + //SEG21 main::@3 b3: - //SEG21 [11] (byte~) main::$2 ← (byte) sum::return#0 - //SEG22 [12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG22 [11] (byte~) main::$2 ← (byte) sum::return#0 + //SEG23 [12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuz1=vbuaa ldy i sta SCREEN,y - //SEG23 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG24 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 lda i clc adc #1 - //SEG24 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuz1_plus_2 + //SEG25 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuz1_plus_2 ldx i inx inx - //SEG25 [15] (byte) sum2::a#0 ← (byte) main::i#2 -- vbuyy=vbuz1 + //SEG26 [15] (byte) sum2::a#0 ← (byte) main::i#2 -- vbuyy=vbuz1 ldy i - //SEG26 [16] call sum2 + //SEG27 [16] call sum2 jsr sum2 - //SEG27 [17] (byte) sum2::return#0 ← (byte) sum2::return#1 + //SEG28 [17] (byte) sum2::return#0 ← (byte) sum2::return#1 jmp b4 - //SEG28 main::@4 + //SEG29 main::@4 b4: - //SEG29 [18] (byte~) main::$5 ← (byte) sum2::return#0 - //SEG30 [19] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG30 [18] (byte~) main::$5 ← (byte) sum2::return#0 + //SEG31 [19] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuz1=vbuaa ldy i sta SCREEN2,y - //SEG31 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG32 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG32 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG33 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1_from_b4 jmp breturn - //SEG33 main::@return + //SEG34 main::@return breturn: - //SEG34 [22] return + //SEG35 [22] return rts } -//SEG35 sum2 +//SEG36 sum2 sum2: { - //SEG36 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 -- vbuaa=vbuyy_plus_vbuaa + //SEG37 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 -- vbuaa=vbuyy_plus_vbuaa sty $ff clc adc $ff - //SEG37 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 -- vbuaa=vbuaa_plus_vbuxx + //SEG38 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 -- vbuaa=vbuaa_plus_vbuxx stx $ff clc adc $ff jmp breturn - //SEG38 sum2::@return + //SEG39 sum2::@return breturn: - //SEG39 [25] return + //SEG40 [25] return rts } -//SEG40 sum +//SEG41 sum sum: { - //SEG41 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 -- vbuaa=vbuyy_plus_vbuaa + //SEG42 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 -- vbuaa=vbuyy_plus_vbuaa sty $ff clc adc $ff - //SEG42 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 -- vbuaa=vbuaa_plus_vbuxx + //SEG43 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 -- vbuaa=vbuaa_plus_vbuxx stx $ff clc adc $ff jmp breturn - //SEG43 sum::@return + //SEG44 sum::@return breturn: - //SEG44 [28] return + //SEG45 [28] return rts } @@ -790,102 +792,103 @@ reg byte a [ sum::return#1 ] FINAL ASSEMBLER Score: 805 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels +//SEG2 Global Constants & labels .label SCREEN = $400 .label SCREEN2 = $400+$28 -//SEG2 @begin -//SEG3 [1] phi from @begin to @3 [phi:@begin->@3] -//SEG4 @3 -//SEG5 [2] call main -//SEG6 [4] phi from @3 to main [phi:@3->main] -//SEG7 [3] phi from @3 to @end [phi:@3->@end] -//SEG8 @end -//SEG9 main +//SEG3 @begin +//SEG4 [1] phi from @begin to @3 [phi:@begin->@3] +//SEG5 @3 +//SEG6 [2] call main +//SEG7 [4] phi from @3 to main [phi:@3->main] +//SEG8 [3] phi from @3 to @end [phi:@3->@end] +//SEG9 @end +//SEG10 main main: { .label i = 2 - //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] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG12 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] - //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG16 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 lda i clc adc #1 - //SEG16 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuz1_plus_2 + //SEG17 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuz1_plus_2 ldx i inx inx - //SEG17 [8] (byte) sum::a#0 ← (byte) main::i#2 -- vbuyy=vbuz1 + //SEG18 [8] (byte) sum::a#0 ← (byte) main::i#2 -- vbuyy=vbuz1 ldy i - //SEG18 [9] call sum + //SEG19 [9] call sum jsr sum - //SEG19 [10] (byte) sum::return#0 ← (byte) sum::return#1 - //SEG20 main::@3 - //SEG21 [11] (byte~) main::$2 ← (byte) sum::return#0 - //SEG22 [12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG20 [10] (byte) sum::return#0 ← (byte) sum::return#1 + //SEG21 main::@3 + //SEG22 [11] (byte~) main::$2 ← (byte) sum::return#0 + //SEG23 [12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 -- pbuc1_derefidx_vbuz1=vbuaa ldy i sta SCREEN,y - //SEG23 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG24 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 tya clc adc #1 - //SEG24 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuz1_plus_2 + //SEG25 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuz1_plus_2 ldx i inx inx - //SEG25 [15] (byte) sum2::a#0 ← (byte) main::i#2 -- vbuyy=vbuz1 - //SEG26 [16] call sum2 + //SEG26 [15] (byte) sum2::a#0 ← (byte) main::i#2 -- vbuyy=vbuz1 + //SEG27 [16] call sum2 jsr sum2 - //SEG27 [17] (byte) sum2::return#0 ← (byte) sum2::return#1 - //SEG28 main::@4 - //SEG29 [18] (byte~) main::$5 ← (byte) sum2::return#0 - //SEG30 [19] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG28 [17] (byte) sum2::return#0 ← (byte) sum2::return#1 + //SEG29 main::@4 + //SEG30 [18] (byte~) main::$5 ← (byte) sum2::return#0 + //SEG31 [19] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 -- pbuc1_derefidx_vbuz1=vbuaa ldy i sta SCREEN2,y - //SEG31 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG32 [20] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG32 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG33 [21] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b1 - //SEG33 main::@return - //SEG34 [22] return + //SEG34 main::@return + //SEG35 [22] return rts } -//SEG35 sum2 +//SEG36 sum2 sum2: { - //SEG36 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 -- vbuaa=vbuyy_plus_vbuaa + //SEG37 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 -- vbuaa=vbuyy_plus_vbuaa sty $ff clc adc $ff - //SEG37 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 -- vbuaa=vbuaa_plus_vbuxx + //SEG38 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 -- vbuaa=vbuaa_plus_vbuxx stx $ff clc adc $ff - //SEG38 sum2::@return - //SEG39 [25] return + //SEG39 sum2::@return + //SEG40 [25] return rts } -//SEG40 sum +//SEG41 sum sum: { - //SEG41 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 -- vbuaa=vbuyy_plus_vbuaa + //SEG42 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 -- vbuaa=vbuyy_plus_vbuaa sty $ff clc adc $ff - //SEG42 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 -- vbuaa=vbuaa_plus_vbuxx + //SEG43 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 -- vbuaa=vbuaa_plus_vbuxx stx $ff clc adc $ff - //SEG43 sum::@return - //SEG44 [28] return + //SEG44 sum::@return + //SEG45 [28] return rts } diff --git a/src/test/ref/zpptr.log b/src/test/ref/zpptr.log index d967535c5..21656d4b2 100644 --- a/src/test/ref/zpptr.log +++ b/src/test/ref/zpptr.log @@ -260,28 +260,29 @@ Allocated zp ZP_WORD:7 [ main::w#0 ] Allocated zp ZP_WORD:9 [ main::zpptr2#1 ] INITIAL ASM -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label zpptr = $1000 .label zpptr2 = 5 @@ -290,43 +291,43 @@ main: { .label k = 4 .label i = 3 .label j = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::j#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::j#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG13 [5] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG17 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG18 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG18 [6] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG21 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 + //SEG22 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuz1=vbuc1 lda #0 sta k jmp b3 - //SEG22 [7] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG23 [7] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: - //SEG23 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG24 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy jmp b3 - //SEG24 main::@3 + //SEG25 main::@3 b3: - //SEG25 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 -- pbuz1=pbuc1_plus_vbuz2 + //SEG26 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 -- pbuz1=pbuc1_plus_vbuz2 lda i clc adc #zpptr adc #0 sta zpptr2+1 - //SEG26 [9] (word) main::w#0 ← ((word)) (byte) main::j#6 -- vwuz1=_word_vbuz2 + //SEG27 [9] (word) main::w#0 ← ((word)) (byte) main::j#6 -- vwuz1=_word_vbuz2 lda j sta w lda #0 sta w+1 - //SEG27 [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 -- pbuz1=pbuz2_plus_vwuz3 + //SEG28 [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 -- pbuz1=pbuz2_plus_vwuz3 lda zpptr2 clc adc w @@ -347,38 +348,38 @@ main: { lda zpptr2+1 adc w+1 sta zpptr2_1+1 - //SEG28 [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 -- _deref_pbuz1=vbuz2 + //SEG29 [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 -- _deref_pbuz1=vbuz2 lda k ldy #0 sta (zpptr2_1),y - //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 + //SEG30 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 inc k - //SEG30 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG31 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda k cmp #$b bne b3_from_b3 jmp b4 - //SEG31 main::@4 + //SEG32 main::@4 b4: - //SEG32 [14] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 + //SEG33 [14] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG33 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b2_from_b4 jmp b5 - //SEG34 main::@5 + //SEG35 main::@5 b5: - //SEG35 [16] (byte) main::j#1 ← ++ (byte) main::j#6 -- vbuz1=_inc_vbuz1 + //SEG36 [16] (byte) main::j#1 ← ++ (byte) main::j#6 -- vbuz1=_inc_vbuz1 inc j - //SEG36 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG37 [17] 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 cmp #$b bne b1_from_b5 jmp breturn - //SEG37 main::@return + //SEG38 main::@return breturn: - //SEG38 [18] return + //SEG39 [18] return rts } @@ -419,70 +420,71 @@ Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ main::zpptr2#0 main::zpptr2#1 ] Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ main::w#0 ] ASSEMBLER BEFORE OPTIMIZATION -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(bbegin) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin +//SEG2 Global Constants & labels +//SEG3 @begin bbegin: -//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG9 @end bend: -//SEG9 main +//SEG10 main main: { .label zpptr = $1000 .label zpptr2 = 4 .label w = 6 .label i = 3 .label j = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::j#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG12 [5] phi (byte) main::j#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG13 [5] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG14 [5] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy jmp b1 - //SEG14 main::@1 + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG17 [6] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG17 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG18 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG18 [6] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG19 [6] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy jmp b2 - //SEG19 main::@2 + //SEG20 main::@2 b2: - //SEG20 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG21 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: - //SEG21 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuxx=vbuc1 + //SEG22 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG22 [7] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG23 [7] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: - //SEG23 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG24 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy jmp b3 - //SEG24 main::@3 + //SEG25 main::@3 b3: - //SEG25 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 -- pbuz1=pbuc1_plus_vbuz2 + //SEG26 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 -- pbuz1=pbuc1_plus_vbuz2 lda i clc adc #zpptr adc #0 sta zpptr2+1 - //SEG26 [9] (word) main::w#0 ← ((word)) (byte) main::j#6 -- vwuz1=_word_vbuz2 + //SEG27 [9] (word) main::w#0 ← ((word)) (byte) main::j#6 -- vwuz1=_word_vbuz2 lda j sta w lda #0 sta w+1 - //SEG27 [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 -- pbuz1=pbuz1_plus_vwuz2 + //SEG28 [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 -- pbuz1=pbuz1_plus_vwuz2 lda zpptr2 clc adc w @@ -503,37 +505,37 @@ main: { lda zpptr2+1 adc w+1 sta zpptr2+1 - //SEG28 [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 -- _deref_pbuz1=vbuxx + //SEG29 [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 -- _deref_pbuz1=vbuxx txa ldy #0 sta (zpptr2),y - //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx + //SEG30 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx inx - //SEG30 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG31 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b3_from_b3 jmp b4 - //SEG31 main::@4 + //SEG32 main::@4 b4: - //SEG32 [14] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 + //SEG33 [14] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG33 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b2_from_b4 jmp b5 - //SEG34 main::@5 + //SEG35 main::@5 b5: - //SEG35 [16] (byte) main::j#1 ← ++ (byte) main::j#6 -- vbuz1=_inc_vbuz1 + //SEG36 [16] (byte) main::j#1 ← ++ (byte) main::j#6 -- vbuz1=_inc_vbuz1 inc j - //SEG36 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG37 [17] 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 cmp #$b bne b1_from_b5 jmp breturn - //SEG37 main::@return + //SEG38 main::@return breturn: - //SEG38 [18] return + //SEG39 [18] return rts } @@ -614,49 +616,50 @@ zp ZP_WORD:6 [ main::w#0 ] FINAL ASSEMBLER Score: 68431 -//SEG0 Basic Upstart +//SEG0 File Comments +//SEG1 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" -//SEG1 Global Constants & labels -//SEG2 @begin -//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] -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG2 Global Constants & labels +//SEG3 @begin +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label zpptr = $1000 .label zpptr2 = 4 .label w = 6 .label i = 3 .label j = 2 - //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::j#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG12 [5] phi (byte) main::j#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG12 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG13 [5] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG14 main::@1 + //SEG13 [5] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG14 [5] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG15 main::@1 b1: - //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 [6] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [6] phi (byte) main::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG17 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] - //SEG18 [6] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy - //SEG19 main::@2 + //SEG18 [6] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG19 [6] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG20 main::@2 b2: - //SEG20 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG21 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuxx=vbuc1 + //SEG21 [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG22 [7] phi (byte) main::k#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@2->main::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG22 [7] phi from main::@3 to main::@3 [phi:main::@3->main::@3] - //SEG23 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy - //SEG24 main::@3 + //SEG23 [7] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG24 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG25 main::@3 b3: - //SEG25 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 -- pbuz1=pbuc1_plus_vbuz2 + //SEG26 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 -- pbuz1=pbuc1_plus_vbuz2 lda i clc adc #zpptr adc #0 sta zpptr2+1 - //SEG26 [9] (word) main::w#0 ← ((word)) (byte) main::j#6 -- vwuz1=_word_vbuz2 + //SEG27 [9] (word) main::w#0 ← ((word)) (byte) main::j#6 -- vwuz1=_word_vbuz2 lda j sta w lda #0 sta w+1 - //SEG27 [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 -- pbuz1=pbuz1_plus_vwuz2 + //SEG28 [10] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 -- pbuz1=pbuz1_plus_vwuz2 lda zpptr2 clc adc w @@ -677,31 +680,31 @@ main: { lda zpptr2+1 adc w+1 sta zpptr2+1 - //SEG28 [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 -- _deref_pbuz1=vbuxx + //SEG29 [11] *((byte*) main::zpptr2#1) ← (byte) main::k#2 -- _deref_pbuz1=vbuxx txa ldy #0 sta (zpptr2),y - //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx + //SEG30 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx inx - //SEG30 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG31 [13] if((byte) main::k#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #$b bne b3 - //SEG31 main::@4 - //SEG32 [14] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 + //SEG32 main::@4 + //SEG33 [14] (byte) main::i#1 ← ++ (byte) main::i#4 -- vbuz1=_inc_vbuz1 inc i - //SEG33 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$b bne b2 - //SEG34 main::@5 - //SEG35 [16] (byte) main::j#1 ← ++ (byte) main::j#6 -- vbuz1=_inc_vbuz1 + //SEG35 main::@5 + //SEG36 [16] (byte) main::j#1 ← ++ (byte) main::j#6 -- vbuz1=_inc_vbuz1 inc j - //SEG36 [17] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG37 [17] 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 cmp #$b bne b1 - //SEG37 main::@return - //SEG38 [18] return + //SEG38 main::@return + //SEG39 [18] return rts }